This repository is ROS2 wrapping to use ORB_SLAM3
I have tested on below version.
Build ORB_SLAM3
Install related ROS2 package
$ sudo apt install ros-$ROS_DISTRO-vision-opencv && sudo apt install ros-$ROS_DISTRO-message-filters
Clone repository to your ROS workspace
$ mkdir -p colcon_ws/src
$ cd ~/colcon_ws/src
$ git clone https://github.com/zang09/ORB_SLAM3_ROS2.git orbslam3_ros2
Change this line to your own python site-packages
path
Change this line to your own ORB_SLAM3
path
Now, you are ready to build!
$ cd ~/colcon_ws
$ colcon build --symlink-install --packages-select orbslam3
If you cannot find sophus/se3.hpp
:
Go to your ORB_SLAM3_ROOT_DIR
and install sophus library.
$ cd ~/{ORB_SLAM3_ROOT_DIR}/Thirdparty/Sophus/build
$ sudo make install
Please compile with OpenCV 4.2.0
version.
Refer this #issue
Source the workspace
$ source ~/colcon_ws/install/local_setup.bash
Run orbslam mode, which you want.
This repository only support MONO, STEREO, RGBD, STEREO-INERTIAL
mode now.
You can find vocabulary file and config file in here. (e.g. orbslam3_ros2/vocabulary/ORBvoc.txt
, orbslam3_ros2/config/monocular/TUM1.yaml
for monocular SLAM).
MONO
mode
$ ros2 run orbslam3 mono PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE
STEREO
mode
$ ros2 run orbslam3 stereo PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE BOOL_RECTIFY
RGBD
mode
$ ros2 run orbslam3 rgbd PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE
STEREO-INERTIAL
mode
$ ros2 run orbslam3 stereo-inertial PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE BOOL_RECTIFY [BOOL_EQUALIZE]
To play ros1 bag file, you should install ros1 noetic
& ros1 bridge
.
Here is a link to demonstrate example of ros1-ros2 bridge
procedure.
If you have ros1 noetic
and ros1 bridge
already, open your terminal and follow this:
(Shell A, B, C, D is all different terminal, e.g. stereo-inertial
mode)
Download EuRoC Dataset (V1_02_medium.bag
)
$ wget -P ~/Downloads http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/vicon_room1/V1_02_medium/V1_02_medium.bag
Launch Terminal
(e.g. ROS1_INSTALL_PATH
=/opt/ros/noetic
, ROS2_INSTALL_PATH
=/opt/ros/foxy
)
#Shell A:
source ${ROS1_INSTALL_PATH}/setup.bash
roscore
source ${ROS1_INSTALL_PATH}/setup.bash source ${ROS2_INSTALL_PATH}/setup.bash export ROS_MASTER_URI=http://localhost:11311 ros2 run ros1_bridge dynamic_bridge
source ${ROS1_INSTALL_PATH}/setup.bash rosbag play ~/Downloads/V1_02_medium.bag --pause /cam0/image_raw:=/camera/left /cam1/image_raw:=/camera/right /imu0:=/imu
source ${ROS2_INSTALL_PATH}/setup.bash ros2 run orbslam3 stereo-inertial PATH_TO_VOCABULARY PATH_TO_YAML_CONFIG_FILE BOOL_RECTIFY [BOOL_EQUALIZE]
3. Press `spacebar` in `Shell C` to resume bag file.
## Acknowledgments
This repository is modified from [this](https://github.com/curryc/ros2_orbslam3) repository.
To add `stereo-inertial` mode and improve build difficulites.