Skip to content

Master thesis project that aims to evaluate and compare V-SLAM methods for UAV-imagery at Maxar Technologies.

Notifications You must be signed in to change notification settings

FredrikErikJohansson/VI-SLAM-UAV

Repository files navigation

VI-SLAM-UAV

Master thesis project that aims to evaluate and compare VI-SLAM methods for UAV-imagery at Maxar Technologies. This repository contains all the necessary steps to install and build ORB-SLAM3 and LDSO for usage with either TUM-VI/-MONO, KITTI and EuroC as well as your own drone data. The drone used for this thesis was a DJI Mavic 2 Enterprise Dual. If a different drone is used, be sure to update the respective camera parameters in DJI.yaml (for ORB-SLAM3) and the camera.txt (for LDSO).

1. Install

git clone https://github.com/FredrikErikJohansson/VI-SLAM-UAV.git
cd VI-SLAM-UAV
git submodule update --init

2. Dependencies

sudo apt install libsuitesparse-dev \
    libeigen3-dev \
    libboost-all-dev \
    libopencv-dev \
    libgl1-mesa-dev \
    libglew-dev \
    cmake \
    pkg-config \
    zlib1g-dev \
    libssl-dev \
    libpython2.7-dev

3. Build

chmod +x build.sh
./build.sh

4. Usage

Datasets:

LSDO provides examples for TUM-Mono, Kitti and EuRoC but the datasets can easily be extended in the examples folder.

Own Drone Footage

To run LDSO on your own footage you have to run the procLDSO.sh script from ./utils using

cd utils
./procLDSO.sh /absolute/path/to/dataset nameofmp4

The dataset folder should contain a .MP4 file and a sidecar .SRT file containing the timestamps and the exposure time. This script will extract all frames from the video, zip them and put them in the /images folder and also create a times.txt file containing image names, timestamps and exposure time.

Run the footage with LDSO using run_dso_tum_mono with desired DSO options.

./bin/run_dso_tum_mono \
    preset=0 \ 
    mode=1 \ 
    files=XXXXX/TUMmono/sequences/sequence_34/images.zip \
    calib=XXXXX/TUMmono/sequences/sequence_34/camera.txt 

AGZ

To run AGZ some manual work is needed. The dataset is recorded on a GoPro Hero 4 but lacks a pcalib.txt file containing the calibrated inverse response function. This is generated by installing and following the instructions given in this repository using the given calibration images in ./MAV Images Calib/. In order to run the calibration, a camera.txt file, a times.txt (similar to the one described in the DJI section) and a zipped folder of all frames following the naming convention 00001.jpg - xxxxx.jpg. After the calibration, AGZ can be run using the same command from the below TUM-Mono section (without the vignette image).

TUM-Mono:

To run LDSO on TUM-Mono dataset sequence 34, execute:

./bin/run_dso_tum_mono \
    preset=0 \
    files=XXXXX/TUMmono/sequences/sequence_34/images.zip \
    vignette=XXXXX/TUMmono/sequences/sequence_34/vignette.png \
    calib=XXXXX/TUMmono/sequences/sequence_34/camera.txt \
    gamma=XXXXX/TUMmono/sequences/sequence_34/pcalib.txt

Kitti:

To run LDSO on Kitti dataset sequence 00, execute:

./bin/run_dso_kitti \
    preset=0 \
    files=XXXXX/Kitti/odometry/dataset/sequences/00/ \
    calib=./examples/Kitti/Kitti00-02.txt

EuRoC:

To run LDSO on EuRoC dataset sequence MH_01_easy, execute:

./bin/run_dso_euroc \
    preset=0 \
    files=XXXX/EuRoC/MH_01_easy/mav0/cam0/

ORB-SLAM3 provides examples for the EuRoC and TUM-VI and we have extended it to include AGZ and our own drone footage.

Own Drone Footage

To run ORB-SLAM3 on your own footage you have to run the procORB script from ./utils using

cd utils
./procORB.sh /absolute/path/to/dataset nameofmp4

The dataset folder should contain a .MP4 file and a sidecar .SRT file containing the timestamps. This script will extract all frames from the video, put them in the /images folder and also create a nameofmp4.txt file containing timestamps and image names separated by a comma.

Open the script DJI_examples.sh and change pathDatasetDJI to point to the directory where the dataset has been uncompressed. Change which sequences to process (default is set to all). Execute the following script:

./DJI_examples.sh

AGZ:

Open the script AGZ_examples.sh and change pathDatasetAGZ to point to the directory where the dataset has been uncompressed. Change which sequences to process (default is set to all). Execute the following script:

./AGZ_examples.sh

EuRoC:

Open the script euroc_examples.sh and change pathDatasetEuroc to point to the directory where the dataset has been uncompressed. Change which sequences to process (default is set to all). Execute the following script:

./euroc_examples.sh

Execute the following script to process sequences and compute the RMS ATE:

./euroc_eval_examples.sh

TUM-VI

Open the script tum_vi_examples.sh and change pathDatasetTUM_VI to point to the directory where the dataset has been uncompressed. Change which sequences to process (default is set to all). Execute the following script:

./tum_vi_examples

Execute the following script to process sequences and compute the RMS ATE:

./tum_vi_eval_examples

About

Master thesis project that aims to evaluate and compare V-SLAM methods for UAV-imagery at Maxar Technologies.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published