Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble
Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble
Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble
Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble
Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble ros2_orb_slam3

Repository Summary

Description A ROS2 Humble package natively implementing ORB-SLAM3 V1.0 VSLAM framework
Checkout URI https://github.com/mechazo11/ros2_orb_slam3.git
VCS Type git
VCS Version main
Last Updated 2025-06-21
Dev Status UNKNOWN
Released UNRELEASED
Tags ros2 vslam ros2-humble
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ros2_orb_slam3 1.5.0

README

License Build Status ROS2 Version

ROS2 ORB SLAM3 V1.0 package

A ROS2 package for ORB SLAM3 V1.0. Focus is on native integration with ROS2 ecosystem. This is the main/humble branch which only supports ROS 2 Humble. Switch over to jazzy branch to use with ROS 2 Jazzy.

My goal is to provide a “bare-bones” starting point for developers in using ORB SLAM3 framework in their ROS 2 projects. Hence, this package will not use any advanced features of ROS 2 such as rviz, tf, launch files etc. The project structure is heavily influenced by the excellent ROS1 port of ORB SLAM3 by thien94.

If you find this work useful please consider citing the original ORB-SLAM3 paper and my recent paper that uses this package in solving short-term relocalization (kidnapped robot problem) as shown below

@INPROCEEDINGS{kamal2024solving,
  author={Kamal, Azmyin Md. and Dadson, Nenyi Kweku Nkensen and Gegg, Donovan and Barbalata, Corina},
  booktitle={2024 IEEE International Conference on Advanced Intelligent Mechatronics (AIM)}, 
  title={Solving Short-Term Relocalization Problems In Monocular Keyframe Visual SLAM Using Spatial And Semantic Data}, 
  year={2024},
  volume={},
  number={},
  pages={615-622},
  keywords={Visualization;Simultaneous localization and mapping;Accuracy;Three-dimensional displays;Semantics;Robot vision systems;Pipelines},
  doi={10.1109/AIM55361.2024.10637187}}

@article{ORBSLAM3_TRO,
  title={{ORB-SLAM3}: An Accurate Open-Source Library for Visual, Visual-Inertial 
           and Multi-Map {SLAM}},
  author={Campos, Carlos AND Elvira, Richard AND G\´omez, Juan J. AND Montiel, 
          Jos\'e M. M. AND Tard\'os, Juan D.},
  journal={IEEE Transactions on Robotics}, 
  volume={37},
  number={6},
  pages={1874-1890},
  year={2021}
 }

0. Preamble

  • This package builds ORB-SLAM3 V1.0 as a shared internal library. Comes included with a number of Thirdparty libraries [DBoW2, g2o, Sophus]
  • g2o used is an older version and is incompatible with the latest release found here g2o github page.
  • This package differs from other ROS1 wrappers, thien94`s ROS 1 port and ROS 2 wrappers in GitHub by supprting/adopting the following
    • A separate python node to send data to the ORB-SLAM3 cpp node. This is purely a design choice.
    • At least C++17 and Cmake>=3.8
    • Eigen 3.3.0, OpenCV 4.2, latest release of Pangolin
  • Comes with a small test image sequence from EuRoC MAV dataset (MH05) to quickly test installation
  • For newcomers in ROS2 ecosystem, this package serves as an example of building a shared cpp library and also a package with both cpp and python nodes.
  • May not build or work correctly in resource constrainted hardwares such as Raspberry Pi 4, Jetson Nano

Testing platforms

  1. Intel i5-9300H, x86_64 bit architecture , Ubuntu 22.04 LTS (Jammy Jellyfish) and RO2 Humble Hawksbill (LTS)
  2. AMD Ryzen 5600X, x86_64 bit architecture, Ubuntu 22.04 LTS (Jammy Jellyfish) and RO2 Humble Hawksbill (LTS)

1. Prerequisitis

Start with installing the following prerequisits

Eigen3

sudo apt install libeigen3-dev

Pangolin and configuring dynamic library path

We install Pangolin system wide and configure the dynamic library path so the necessary .so from Pangolin can be found by ros2 package during run time. More info here https://robotics.stackexchange.com/questions/105973/ros2-port-of-orb-slam3-can-copy-libdow2-so-and-libg2o-so-using-cmake-but-gettin

Install Pangolin

cd ~/Documents
git clone https://github.com/stevenlovegrove/Pangolin
cd Pangolin
./scripts/install_prerequisites.sh --dry-run recommended # Check what recommended softwares needs to be installed
./scripts/install_prerequisites.sh recommended # Install recommended dependencies
cmake -B build
cmake --build build -j4
sudo cmake --install build

Configure dynamic library

Check if

``` is in the LIBRARY PATH


```bash
echo $LD_LIBRARY_PATH

If not, then perform the following

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/local
sudo ldconfig

Then open the .bashrc file in \home directory and add these lines at the very end

File truncated at 100 lines see the full file

Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble
Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble
Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble
Repo symbol

ros2_orb_slam3 repository

ros2 vslam ros2-humble