A ROS wrapper for ORB-SLAM3. Based on this package. This is a modified version of ORB SLAM3, which includes a method in the API that returns all the map points in the active map.
Tested with ORB-SLAM3 V1.0, primarily on Ubuntu 20.04.
General guide: first, install all of ORB SLAM3 dependencies. Then, install this package in a catkin build
environment.
-
Install the prerequisites. Make sure to download Pangolin release (0.8), opencv 4.4.
-
Make sure that
libORB_SLAM3.so
is created in the ORB_SLAM3/lib folder. If not, check the issue list from the original repo and retry.
- Clone the package. Note that it should be a
catkin build
workspace.
cd ~/catkin_ws/src/
git clone https://github.com/emanuelenencioni/ORB_SLAM3_ROS.git
- Build ORB_SLAM3:
cd /ORB_SLAM3_ROS/ORB_SLAM3
chmod +x build.sh
./build.sh
- Build the package normally.
cd ~/catkin_ws/
catkin build
- (Optional) Install
hector-trajectory-server
to visualize the trajectory.
sudo apt install ros-[DISTRO]-hector-trajectory-server
- If everything works fine, you can now try the different launch files in the
launch
folder.
- In one terminal, launch the node:
roslaunch orb_slam3_ros_wrapper euroc_monoimu.launch
- In another terminal, playback the bag:
rosbag play MH_01_easy.bag
Similarly for other sensor types.
The following topics are published by each node:
/orb_slam3/map
(PointCloud2
): all point of the map./orb_slam3/camera_pose
(PoseStamped
): current left camera pose in world frame, as returned by ORB-SLAM3.tf
: transformation from camera frame to world frame.
P.S. There is also Italian documentation available that explains the code and includes evaluations of the system.