rko_slam#
ROS2 LiDAR-inertial SLAM and multi-session alignment.




Part of a 20 km drive that ends where it started, with rko_lio, and with rko_slam running on top of it.
rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry, and
publishes map <- odom on TF. With a LiDAR with per-point timestamps, an IMU, and a TF tree from both to your base
frame:
ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true
Multi-session alignment#




Three sessions of the same place, recorded on different days, and the one frame they end up in.
Run each session with dump_results:=true run_name:=day_1 (day_2, …), then:
ros2 launch rko_slam align.launch.py run_dirs:="[results/day_1_0, results/day_2_0]"
Where to go#
Build and run: build it, run it online or on a bag, read what it publishes, use what it writes.
Configuration: every parameter and what it does.
How it works: sub-maps, closure detection, the pose graph, and how sessions are aligned.
Citation#
If rko_slam is useful to you, leave a star on GitHub.
rko_slam is part of my PhD thesis. Until the thesis is published, please cite rko_lio, which it shares its core with:
@article{malladi2026ral,
author = {M.V.R. Malladi and T. Guadagnino and L. Lobefaro and C. Stachniss},
title = {A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modeling},
journal = {IEEE Robotics and Automation Letters},
year = {2026},
volume = {11},
number = {6},
pages = {7420--7427},
doi = {10.1109/LRA.2026.3685966},
}
rko_slam builds on KISS-SLAM; its first version was a reimplementation for ROS2. Closure detection reimplements MapClosures. Please cite KISS-SLAM as well:
@INPROCEEDINGS{kiss2025iros,
author = {Guadagnino, Tiziano and Mersch, Benedikt and Gupta, Saurabh and Vizzo, Ignacio and Grisetti, Giorgio and Stachniss, Cyrill},
booktitle = {2025 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
title = {{KISS-SLAM: A Simple, Robust, and Accurate 3D LiDAR SLAM System With Enhanced Generalization Capabilities}},
year = {2025},
pages = {5363-5370},
doi = {10.1109/IROS60139.2025.11246613}
}