Skip to content

A ROS wrapper for ORB-SLAM-3 framework. The aim of this wrapper is to subscribe and publish the needed topics in ROS for downstream aglorithms.

Notifications You must be signed in to change notification settings

OatmealLiu/orb_slam3_ros_tube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

orb_slam3_ros_tube ROS Package

This is a middle tube between ORB-SLAM-3 and ROS

To-do

  • Develop Monocular only node for VO
  • Develop Monocular + IMU node for VIO (debugging)
  • Write launch files for each node and dataset
  • Develop ROS publishers for pose, velocity, pointcloud and path
  • Create .yaml file for the camera param, IMU param and ORB hyperparam for SAM
  • Develop two-camera + IMU fusion mode
  • Fine-tuning the hyperparam for SAM

Installation

1. Install ORB-SLAM3

  • Install the prerequisites.
  • Use cmake combo to install ORB-SLAM-3 source code
cd ~
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
cd ORB_SLAM3
chmod +x build.sh
./build.sh

2. Install orb_slam3_ros_tube ROS Package

Clone the package. Note that it should be a catkin build workspace.

cd ~/catkin_ws/src/ # Or the name of your workspace
git clone https://github.com/OatmealLiu/orb_slam3_ros_tube.git

Build the package normally.

cd ~/catkin_ws/
catkin build

Unzip the ORB vocabulary

cd ~/catkin_ws/src/orb_slam3_ros_tube/config
tar -xf ORBvoc.txt.tar.gz

Run and Outputs

1. Run with different datasets and mode

EuRoC dataset

  • VO
Terminal 1
roslaunch orb_slam3_ros_tube orb_slam3_mono_euroc.launch

Terminal 2
rosbag play MH_01_easy.bag
  • VIO
Terminal 1
roslaunch orb_slam3_ros_tube orb_slam3_mono_inertial_euroc.launch

Terminal 2
rosbag play MH_01_easy.bag

Underwater dataset

  • VO
Terminal 1
roslaunch orb_slam3_ros_tube orb_slam3_mono_underwater.launch

Terminal 2
rosbag play sparus_camera.bag

SAM Simulator dataset

  • VO
Terminal 1
roslaunch orb_slam3_ros_tube sam_simulator_mono.launch

Terminal 2
rosbag play sam_side_cruise.bag
  • VIO
Terminal 1
roslaunch orb_slam3_ros_tube sam_simulator_mono_inertial.launch

Terminal 2
rosbag play sam_side_cruise.bag

Run on real SAM

# Use the front LEFT Camera on SAM
## Terminal 1
cd /opt/ros/melodic/lib/image_transport
rosrun  image_transport republish compressed in:=/csi_cam_1/camera/image_raw  raw  out:=/csi_cam_1/camera/image_raw

## Terminal 2-a: if you want to use VO mode
roslaunch orb_slam3_ros_tube sam_real_mono_left.launch
or
## Terminal 2-a: if you want to use VIO mode
roslaunch orb_slam3_ros_tube sam_real_mono_inertial_left.launch

# Use the front DOWN Camera on SAM
## Terminal 1
cd /opt/ros/melodic/lib/image_transport
rosrun  image_transport republish compressed in:=/csi_cam_0/camera/image_raw  raw  out:=/csi_cam_0/camera/image_raw

## Terminal 2-a: if you want to use VO mode
roslaunch orb_slam3_ros_tube sam_real_mono_down.launch
or
## Terminal 2-a: if you want to use VIO mode
roslaunch orb_slam3_ros_tube sam_real_mono_inertial_down.launch

alt text alt text

2. Topics you can subscribe

This middle tube will provide you with the following topics that you can subscribe:

  • /orb_slam3_ros/camera: geometry_msgs/PoseStamped Message, where you can find the estimated pose of the robot.
  • /orb_slam3_ros/camera_odom: nav_msgs/Odometry Message, where you can find the pose, linear velocity and angular velocity of the robot
  • tf: transformation from the camera frame to the world frame.
  • /orb_slam3_ros/map_points: sensor_msgs/PointCloud2 Message, where you can find the keypoints are being tracked.

About

A ROS wrapper for ORB-SLAM-3 framework. The aim of this wrapper is to subscribe and publish the needed topics in ROS for downstream aglorithms.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published