• Stars
    star
    653
  • Rank 68,968 (Top 2 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

DSO with SIM(3) pose graph optimization and loop closure

LDSO: Direct Sparse Odometry with Loop Closure

Related Publications

  • LDSO: Direct Sparse Odometry with Loop Closure, X. Gao, R. Wang, N. Demmel, D. Cremers, In International Conference on Intelligent Robots and Systems (IROS), 2018.
  • Direct Sparse Odometry, J. Engel, V. Koltun, D. Cremers, In IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 2018
  • A Photometrically Calibrated Benchmark For Monocular Visual Odometry, J. Engel, V. Usenko, D. Cremers, In arXiv:1607.02555, 2016

Dependencies

System dependencies

There is a convenience script that will help you install the needed libraries in Ubuntu 16.04 and later, including Eigen, glog, gtest, Suitesparse, OpenCV, libzip.

./install_dependencies.sh

On OSX you can install these via Homebrew.

Other libraries

Compile and install Pangolin for visualization.

Compile

./make_project.sh

This will build the thirdparty library and also ldso library for you. You can also follow the steps in this script manually (will compile DBoW3 and g2o first, and the ldso).

Run

We provide examples on three datasets.

You can easily extend them in the examples folder or add your own executables for your camera or dataset.

After compilation, in the bin directory there will be three executables like run_dso_xxx. You can either specify the directories in the source file like examples/run_dso_xxx.cc, or pass them as command line parameters. When running LDSO, you will see a window showing an visualization of camera trajectory and tracked points.

Make sure your working directory is at the root of LDSO code, to ensure that files like the BoW vocabulary file are found.

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/

Notes

  • LDSO is a monocular VO based on DSO with Sim(3) loop closing function. Note we still cannot know the real scale of mono-slam. We only make it more consistent in long trajectories.

  • The red line in pangolin windows shows the trajectory before loop closing, and the yellow line shows the trajectory after optimization.

  • If you are looking for code instructions, take a look at doc/notes_on_ldso.pdf and see if it can help you.

  • Set setting_enableLoopClosing to true/false to turn on/off loop closing function. setting_fastLoopClosing will record less data and make the loop closing faster.

  • If you need loop closing, please set setting_pointSelection=1 to make the program compute feature descriptors. If setting_pointSelection=0, the program acts just like DSO, and setting_pointSelection=2 means random point selection, which is faster but unstable.

  • Some of the GUI buttons may not work.

  • You might also want to have a look DSO's README: https://github.com/JakobEngel/dso/blob/master/README.md

License

LDSO, like DSO, is licensed under GPLv3. It makes use of several third-party libraries. Among other's it comes with the source of:

More Repositories

1

lsd_slam

LSD-SLAM
C++
2,486
star
2

tandem

[CoRL 21'] TANDEM: Tracking and Dense Mapping in Real-time using Deep Multi-view Stereo
C++
911
star
3

dvo_slam

Dense Visual Odometry and SLAM
C++
607
star
4

fastfusion

Volumetric 3D Mapping in Real-Time on a CPU
C++
543
star
5

online_photometric_calibration

Implementation of online photometric calibration (https://vision.in.tum.de/research/vslam/photometric-calibration)
C++
306
star
6

mono_dataset_code

Code for Monocular Visual Odometry Dataset - https://vision.cs.tum.edu/data/datasets/mono-dataset
C++
261
star
7

tum_ardrone

Repository for the tum_ardrone ROS package, implementing autonomous flight with PTAM-based visual navigation for the Parrot AR.Drone.
C++
221
star
8

dvo

Dense Visual Odometry
C++
148
star
9

fusenet

This repository is the official release of the code for the following paper "FuseNet: Incorporating Depth into Semantic Segmentation via Fusion-based CNN Architecture" which is published at the 13th Asian Conference on Computer Vision (ACCV 2016).
C++
126
star
10

pnec

[CVPR 2022] README.md The Probabilistic Normal Epipolar Constraint for Frame-To-Frame Rotation Optimization under Uncertain Feature Positions
C++
117
star
11

captcha_recognition

Python
71
star
12

intrinsic-neural-fields

[ECCV '22] Intrinsic Neural Fields: Learning Functions on Manifolds
Jupyter Notebook
66
star
13

dbatk

Distributed Bundle Adjustment Toolkit
59
star
14

fastms

Real-Time Minimization of the Piecewise Smooth Mumford-Shah Functional
C++
57
star
15

ardrone_autonomy

This is a slightly modified version of the official ardrone_autonomy package, which You can find here: https://github.com/AutonomyLab/ardrone_autonomy
C
53
star
16

learn_prox_ops

Implementation of "Learning Proximal Operators: Using Denoising Networks for Regularizing Inverse Imaging Problems"
Python
43
star
17

tum_simulator

C++
40
star
18

prost

A fast and flexible convex optimization framework based on proximal splitting
C++
35
star
19

afs

Automatic Feature Selection
C++
31
star
20

rgbd_scribble_benchmark

RGB-D Scribble-based Segmentation Benchmark
Python
26
star
21

autonavx_ardrone

Code for AR.Drone Exercises
C++
24
star
22

autonavx_web

interactive exercises for AUTONAVx course
JavaScript
24
star
23

sublabel_relax

Code for sublabel-accurate multi-labeling papers (published at CVPR '16, ECCV '16)
C++
20
star
24

csd_lmnn

Combined Spectral Descriptors and LMNN for non-rigid 3D shape retrieval
MATLAB
19
star
25

rgbd_demo

Simple ROS demo for processing RGB-D data
C++
17
star
26

mem

Masked Event Modeling: Self-Supervised Pretraining for Event Cameras (WACV '24)
Python
15
star
27

kfusion_ros

ROS integration for kfusion
C++
11
star
28

openni2_camera

OpenNI2 camera node for ROS
C++
9
star
29

articulation

articulation models
C++
6
star
30

nnascg

Source code for experiments in paper "Deriving Neural Network Design and Learning from the Probabilistic Framework of Chain Graphs" by Yuesong Shen and Daniel Cremers.
Python
4
star
31

lgm

Implementation of Layered Graphical Model with demo code
Python
4
star
32

dca

Source code for the NeurIPS 2022 paper "Deep Combinatorial Aggregation"
Python
4
star
33

flbo

2
star
34

hierahyp

1
star