CompSLAM: Complementary Hierarchical Multi-Modal Localization and Mapping for Robot Autonomy in Underground Environments
Authors: Shehryar Khattak, Timon Homberger, Lukas Bernreiter, Julian Nubert, Olov Andersson, Roland Siegwart, Kostas Alexis, Marco Hutter
This repository contains the complementary SLAM code. It consists of the following packages:
- compslam: Meta package that builds the entire codestack and can be used to launch the contained components.
- compslam_lio: LiDAR Odometry package based on LOAM with improved robustness for field missions and the incorporation of IMU.
- compslam_vtio: Visual-thermal odometry that builds on top of ROVIO. It also includes the possibility to use LiDAR for scale estimation as well as thermal camera support.
CompSLAM has been heavily used during the DARPA SubT challenge as the main SLAM solution for team Cerberus. Moreover, over the past years, it has been used as a major SLAM solution during research projects conducted at the Robotic Systems Lab at ETH Zurich.
Disclaimer: The framework is still under development and will be updated, extended, and more generalized in the future.
Create a catkin workspace:
mkdir compslam_ws
cd compslam_ws
mkdir src
catkin init
catkin config -DCMAKE_BUILD_TYPE=Release
cd srcThen pull the required repositories:
git clone https://github.com/leggedrobotics/compslam_subt.git
vcs import < compslam_subt/repos.vcs
cd compslam_subt && git submodule update --initTo install Compslam, simply execute:
catkin build compslam
source devel/setup.bashPull the dataset from the DARPA SubT finals as described in the main paper from here.
The approximate GT used for the evaluation, generated by this repository, can be downloaded here.
To run the complete example, in Terminal 1 simply run the code:
roslaunch compslam compslam.launchThen, in a separate terminal, execute the corresponding rosbag file downloaded above:
rosbag play subt_finals_loop_dataset.bag --clockIf you want to run the same without VTIO, disable the flag run_compslam_vtio inside ./compslam/launch/compslam.launch.
The expected output should roughly look like this:
If you find this code useful or use it in your work, please consider citing:
@inproceedings{khattak2025compslam,
title={CompSLAM: Complementary Hierarchical Multi-Modal Localization and Mapping for Robot Autonomy in Underground Environments},
author={Shehryar Khattak, Timon Homberger, Lukas Bernreiter, Julian Nubert, Olov Andersson, Roland Siegwart, Kostas Alexis, Marco Hutter},
booktitle={IEEE ICRA Workshop Robots in the Wild},
year={2025},
organization={IEEE}
}
The authors thank
- the authors of LOAM,
- the authors of loam_velodyne,
- the authors of ROVIO, for their valuable contributions.
Moreover, we thank all colleagues from the Robotic Systems Lab at ETH Zurich, and the colleagues from the DARPA SubT Cerberus team for heavily testing and using the framework.


