rko_slam#

ROS2 LiDAR-inertial SLAM and multi-session alignment.

rko_lio
a drive with the odometry alonea drive with the odometry alone
rko_slam
the same drive with rko_slam running on topthe same drive with rko_slam running on top

Part of a 20 km drive that ends where it started, with rko_lio, and with rko_slam running on top of it.

Three closed maps: a vehicle run, a backpack run on Oxford Spires, and a backpack run in a DigiForests forest Three closed maps: a vehicle run, a backpack run on Oxford Spires, and a backpack run in a DigiForests forest

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#

as recorded
three sessions, each in its own framethree sessions, each in its own frame
aligned
the same three sessions in one framethe same three sessions in one frame

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}
}