No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
kilted

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
lyrical

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
rolling

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

rko_slam package from rko_slam repo

rko_slam

ROS Distro
jazzy

Package Summary

Version 0.0.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/PRBonn/rko_slam.git
VCS Type git
VCS Version master
Last Updated 2026-09-29
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS2 LiDAR-inertial SLAM and multi-session alignment

Additional Links

Maintainers

  • Meher Malladi

Authors

No additional authors.

rko_slam

ROS2 LiDAR-inertial SLAM and multi-session alignment

[![Jazzy](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_jazzy.yaml) [![Kilted](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_kilted.yaml) [![Lyrical](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_lyrical.yaml) [![Rolling](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml/badge.svg)](https://github.com/PRBonn/rko_slam/actions/workflows/ros_rolling.yaml) [![Docs](https://img.shields.io/badge/docs-prbonn.github.io-blue)](https://prbonn.github.io/rko_slam/) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_slam)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_slam)](/)

Sub-maps of a drive placed by the odometry, doubling the road where the drive returns, then snapping into one road with rko_slam running on top
A drive that returns to 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

Quick start

rko_slam runs on rko_lio, my LiDAR-inertial odometry, or on your own odometry. Build it with rko_lio:

cd <ws>/src
git clone https://github.com/PRBonn/rko_lio
git clone https://github.com/PRBonn/rko_slam
cd <ws> && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select rko_lio rko_slam

What it needs

  • A LiDAR (sensor_msgs/PointCloud2 with per-point timestamps) and an IMU (sensor_msgs/Imu).
  • The LiDAR and IMU frames linked to your base frame on TF, e.g. by your URDF.

The TF tree: rko_slam publishes map from odom, your odometry odom from base_link, your URDF base_link from the LiDAR and, dashed as optional, the IMU frame

Run

odometry_and_slam.launch.py starts rko_lio and rko_slam together and finds the LiDAR and IMU topics and your base frame by itself. Start your robot, then:

ros2 launch rko_slam odometry_and_slam.launch.py rviz:=true

From a bag, in two terminals, bag first:

ros2 bag play <bag> --clock
ros2 launch rko_slam odometry_and_slam.launch.py use_sim_time:=true rviz:=true

If your setup differs:

Your setup Do this
Base frame named other than base_link, base_footprint or base base_frame:=<yours>
Several LiDAR or IMU topics, e.g. the LiDAR driver’s own IMU an rko_lio config file naming yours and your base frame, below
LiDAR and IMU messages share one frame_id and no TF links it to a base frame, e.g. a Livox with its built-in IMU an rko_lio config file with identity extrinsics, below
Topics or TF take over 10 s to appear autodetect_timeout:=<seconds>
Something else already publishes odom <- <your base frame>, e.g. robot_localization or the bag’s /tf turn it off, or run with your own odometry, below

An rko_lio config file, passed with rko_lio_config_file:=<file>, replaces the autodetection (all keys):

lidar_topic: /livox/lidar
imu_topic: /livox/imu
# LiDAR and IMU in one frame, no TF
base_frame: livox_frame
extrinsic_lidar2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
extrinsic_imu2base_quat_xyzw_xyz: [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]

With your own odometry

slam.launch.py starts rko_slam alone, on any locally consistent odometry that publishes odom <- base_link on TF:

```bash

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rko_slam at Robotics Stack Exchange