Skip to content

IRVLab/SOS-SLAM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scale Optimized Spline SLAM (SOS-SLAM)

Related Publications

  • Direct Sparse Odometry, J. Engel, V. Koltun, D. Cremers, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018.
  • Extending Monocular Visual Odometry to Stereo Camera Systems by Scale Optimization, J. Mo and J. Sattar, IEEE/RSJ International Conference on Intelligent Robots and Systems, 2019.
  • A Fast and Robust Place Recognition Approach for Stereo Visual Odometry Using LiDAR Descriptors, J. Mo and J. Sattar, IEEE/RSJ International Conference on Intelligent Robots and Systems, 2020.
  • Fast Direct Stereo Visual SLAM, J. Mo, Md Jahidul Islam, and J. Sattar, IEEE Robotics and Automation Letters, 2022.
  • Continuous-Time Spline Visual-Inertial Odometry, J. Mo and J. Sattar, IEEE International Conference on Robotics and Automation, 2022.

Installation

  1. Dependencies: ROS (middleware), DSO dependencies (OpenCV, Pangolin), and PCL (for 3D loop closure).

  2. Build g2o library (for global pose optimization when loop closure is enabled):

cd thirdparty/g2o
bash build.sh
  1. Build SOS-SLAM:
cd catkin_ws/src
git clone https://github.com/IRVLab/SOS-SLAM.git
cd ..
catkin_make

Usage

  1. Preparation (examples of popular datasets are provided)
  • Calibrate your stereo visual-inertial rig and convert to this format:
    • Refer to DSO for more details of intrisic parameters (cameraX.txt).
    • Put a small number in T_cam1_cam0[2,2] for numerical stability if images are stereo pre-rectified.
  • Create a launch file:
    • scale_opt_thres: scale optimization accept threshold (e.g., 15.0), set -1 to disable scale optimization.
    • weight_imu_dso: relative weight between inertial and visual systems (e.g., 6.0), set -1 to ignore IMU measurements.
    • loop_lidar_range: imitated LiDAR scan range (e.g., 40.0 meters), set -1 to disable place recognition.
    • check ROS parameter acquisition (getParam() and param()) in main.cpp and settings.cpp for more optional parameters.
  1. Run
roslaunch sos_slam [YOUR_LAUNCH_FILE]

Outputs

  • Published ROS Topics:
    • pose_cam0_in_world/current: pose of the most recent frame (not final, minimal lagging).
    • pose_cam0_in_world/marginalized: pose of the most recently marginalized frame (final, several keyframes behind).
  • poses.txt will also be written to ~/.ros for pose evaluation once done.