Skip to content

klintan/vo-survey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 

Repository files navigation

A survey of ROS enabled Visual odometry (and VSLAM)

I've been trying to find a ROS2 package for visual odometry that publishes an odometry topic, and it turned out to be quite difficult. I decided to to this little write-up for others interested in the same thing, perhaps it'll make it easier for someone.

Contributions and updates are appreciated! Preferably a PR, if not create an issue if you see any problems.

Beware and avoid the GPL and CC Non-commercial licensed stuff, mostly just there for reference and for people in research.

Definitions of terms:

  • Odometry - in ROS twist (rotation) and pose (translation) of the robot
  • Visual Inertial SLAM (VI-SLAM) - is SLAM based on both visual (camera) sensor information and IMU (inertial information) fused.
  • Monocular visual odometry - Odometry based on a single (mono) camera.
  • Wheel odometry - using the size and angular motion (rotation) of the robots wheels calculate how the robot is moving.

Other Surveys/Paper

Title Year Link
Comparison of modern open-source Visual SLAM approaches 2023 https://arxiv.org/abs/2108.01654
Deep Learning Techniques for Visual SLAM: A Survey 2023 https://ieeexplore.ieee.org/abstract/document/10054007
The list of vision-based SLAM / Visual Odometry open source projects, libraries, dataset, tools, and studies 2022 https://github.com/tzutalin/awesome-visual-slam
Another list of Visual-SLAM algorithms 2022 https://github.com/marknabil/SFM-Visual-SLAM
A Comparison of Modern General-Purpose Visual SLAM Approaches 2021 https://arxiv.org/abs/2107.07589
List of SLAM / VO algorithms 2017 https://nbviewer.jupyter.org/github/kafendt/List-of-SLAM-VO-algorithms/blob/master/SLAM_table.pdf

Packages and code

SLAM

  • cartographer - Real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations. cartographer

Visual Odometry

Active

Package Active License  Topics published Stereo/Mono SLAM ROS version Year (last update) Paper
ORB-SLAM3 (somewhat*) GPLv3 N/A Yes / Yes Yes N/A 2020 (2022-02) https://ieeexplore.ieee.org/abstract/document/9440682
XIVO XIVO Yes GPLv3/CC BY-NC 3.0-like None Yes / Yes N/A 1 2019 (2023-03) http://vision.ucla.edu/papers/tsotsosCS15.pdf
VINS-Mono VINS-Mono Yes GPLv3 None Yes / Yes No 1 2017 (2022-09) https://ieeexplore.ieee.org/document/8421746/?arnumber=8421746&source=authoralert
OpenVINS OpenVINS Yes GPLv3 None Yes / Yes N/A 1 2019 (2023-04) https://udel.edu/~ghuang/iros19-vins-workshop/papers/06.pdf
Maplab Maplab Yes GPLv3 N/A Yes / Yes Yes 1 2018 (2023-04) https://arxiv.org/abs/1711.10250
LIMO LIMO Yes GPLv3 ? ? / ? 1 2018 (2022-09) https://books.google.de/books?hl=en&lr=&id=cZW8DwAAQBAJ&oi
R-VIO R-VIO Yes GPLv3 ? ? / Yes 1 2018 (2023-04) https://journals.sagepub.com/doi/10.1177/0278364919853361
Momo Momo Yes LGPLv3 ? No / Yes No N/A 2017 (2022-09) -

Inactive

Package Active License  Topics published Stereo/Mono SLAM ROS version Year (last update) Paper
Learn VI-ORB Learn VI-ORB No GPLv3 None Yes / Yes Yes 1 2016 (2017)
ORB-SLAM2 ORB-SLAM2 No GPLv3 None Yes / Yes Yes 1 2016 (2017) https://arxiv.org/abs/1610.06475
OpenVSLAM OpenVSLAM No MIT None Yes / Yes Yes 1 / 2 2019 (2020) https://arxiv.org/abs/1910.01122
VISO2 VISO2 No GPLv3 nav_msgs/Odometry / geometry_msgs/Pose Yes / Yes No 1 2011 (2019) http://t.cvlibs.net/publications/Geiger2011IV.pdf
Rovio Rovio No BSD-3 None Yes / Yes N/A 1 2017 (2019) https://www.research-collection.ethz.ch/handle/20.500.11850/263423
Kimera-Semantics Kimera-Semantics No BSD-2 None Yes / Yes N/A 1 2019 (2021) https://arxiv.org/pdf/1910.02490.pdf
LSD-SLAM LSD-SLAM No GPLv3 None No / Yes N/A 1 2014 (2014) https://vision.in.tum.de/_media/spezial/bib/caruso2015_omni_lsdslam.pdf
CubeSLAM CubeSLAM No BSD-3 None Yes / Yes Yes 1 2019 (2020) https://arxiv.org/abs/1806.00557
VINS-Fusion VINS-Fusion No GPLv3 None Yes / Yes Yes 1 2019 (2021) https://ieeexplore.ieee.org/abstract/document/8593603
SE2SLAM SE2SLAM No MIT geometry_msgs::Pose / geometry_msgs::PoseStamped Yes / Yes Yes 1 2019 (2020) https://fzheng.me/icra/2019.pdf
SE2CLAM SE2CLAM No MIT geometry_msgs::PoseStamped Yes / Yes Yes 1 2018 (2020) https://ieeexplore.ieee.org/document/8357438
VINS-FusionGPU VINS-FusionGPU No GPLv3 ? Yes / Yes Yes 1 2019 (2019) -
DSO DSO No GPLv3 None Yes / Yes No No 1 2016 (2018)
DSO Ros2 No GPLv3 ? ? / ? 2 2019 (2019) -
Edge Direct VO No N/A N/A Yes / No No  None 2019 (2019) https://arxiv.org/abs/1906.04838
ORB_SLAM2 Ros2 ORB_SLAM2 Ros2 No GPLv3 visualization_msgs::msg::Marker
SVO SVO No GPLv3
SVO 2.0 No N/A (GPLv3?)
ROS Mono VO ROS Mono VO No BSD-2 
SIVO SIVO No GPLv3
dslam open No GPLv3
Stereo DSO Stereo DSO No GPLv3
VISO2 Python VISO2 Python No GPLv3 contamination
MonoVO Python MonoVO Python No N/A
DPPTAM No GPLv3
StVO-PL StVO-PL No GPLv3
PL-SLAM PL-SLAM No GPLv3
MSCKF_VIO MSCKF_VIO No GPLv3/CC BY-NC 3.0-like
REBiVO REBiVO No GPLv3
DeepVO Tensorflow DeepVO TF No MIT N/A Yes / Yes No 2017 https://arxiv.org/abs/1709.08429
DeepVO PyTorch DeepVO PyTorch No N/A N/A Yes / Yes No 2017 https://arxiv.org/abs/1709.08429
DF-VO DF-VO No MIT None  Yes / No No N/A 2019 (2022-03) https://arxiv.org/abs/1909.09803v2
okvis okvis No BSD-3
geomapnet geomapnet No CC BY-NC-SA 4.0
Mono-VO No MIT

Additional information

Active is used loosely and subjectively, pretty much if I see that either some PR has been merged, commit has been made or even some maintainer/author has addressed an issue the past 12 month I consider it active.

somewhat for ORB-SLAM3 means that people are working on it but the main author is not reacting to pull requests, but its SOTA.

Some libraries are addded that do not have a ROS-wrapper, however they might be there because it would be fairly straightforward to write a wrapper, or because the implementation is interesting for inspiration or similar.

I'm mostly interested in ROS2, so I do not break down the version on different release, neither for ROS1 or ROS2, but I see that that might be valuable as well.

VO tools and calibration

Package Active Topics published Stereo Mono Omni SLAM ROS version Year Paper License
kalibr Yes N/A Yes
VIO Data simulation No N/A N/A N/A N/A N/A N/A N/A
VSLAM evaluation No
vicalib No
https://github.com/vislearn/LessMore No
Time Autosync No
CRISP No GPLv3

Other VO resources

Link Descritpion
https://github.com/KopanevPavel/SLAM-Dockers Docker-container for different SLAM-algorithms
https://github.com/gaoxiang12/slambook Code written for a book about visual SLAM called "14 lectures on visual SLAM" which was released in April 2017.
https://github.com/AtsushiSakai/PythonRobotics Python code collection of robotics algorithms (basics, without V-SLAM or VO)
https://github.com/openMVG/awesome_3DReconstruction_list A curated list of papers & resources linked to 3D reconstruction from images.

About

Visual Odometry and SLAM survey for ROS and ROS2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •