Repo symbol

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

Repo symbol

rko_lio repository

rko_lio

ROS Distro
jazzy

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

Repo symbol

rko_lio repository

rko_lio

ROS Distro
kilted

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

Repo symbol

rko_lio repository

rko_lio

ROS Distro
rolling

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file

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

rko_lio repository

rko_lio

ROS Distro
humble

Repository Summary

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

Packages

Name Version
rko_lio 0.2.0

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

[![arXiv](https://img.shields.io/badge/arXiv-2509.06593-b31b1b.svg)](https://arxiv.org/abs/2509.06593) [![GitHub License](https://img.shields.io/github/license/PRBonn/rko_lio)](/LICENSE) [![GitHub last commit](https://img.shields.io/github/last-commit/PRBonn/rko_lio)](/) [![PyPI - Version](https://img.shields.io/pypi/v/rko_lio?color=blue)](https://pypi.org/project/rko-lio/) [![ROS Package Index](https://img.shields.io/ros/v/humble/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#humble) [![ROS Package Index](https://img.shields.io/ros/v/jazzy/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#jazzy) [![ROS Package Index](https://img.shields.io/ros/v/kilted/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#kilted) [![ROS Package Index](https://img.shields.io/ros/v/rolling/rko_lio?color=blue)](https://index.ros.org/p/rko_lio/#rolling)

Visualization of odometry system running on data from four different platforms in four different environments
Four different platforms, four different environments, one odometry system

Quick Start

Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through

pip install rko_lio rosbags rerun-sdk
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data

Why pip install those three packages?

  • rko_lio -> the odometry package
  • rosbags -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!
  • rerun-sdk -> required for the optional visualizer (-v flag)

Check further options for the CLI through rko_lio --help.

More details are available in the Python usage docs.

Extrinsics and convention

Please note that the system needs the extrinsic to be specified between IMU and LiDAR. Either your data includes this in some format, and then the dataloaders try to automatically read it, or otherwise you can specify it in a config file (required if it’s missing in the data). Pass the config file with

rko_lio --config config_file.yaml

This file needs two keys: extrinsic_imu2base_quat_xyzw_xyz and extrinsic_lidar2base_quat_xyzw_xyz, which must each be a list. For example: [0,0,0,1,0,0,0] for identity. Both keys are required.

Throughout this package, I refer to transformations using transform_<from-frame>2<to-frame>. By this, I mean a transformation that converts a vector expressed in the <from-frame> coordinate system to the <to-frame> coordinate system. Mathematically, this translates to:

\[\mathbf{v}^{\mathrm{to}} = {}^{\mathrm{to}}\mathbf{T}_{\mathrm{from}} \mathbf{v}^{\mathrm{from}}\]

The superscript on the vector indicates the frame in which the vector is expressed, and $^{ \mathrm{to} }\mathbf{T}_{\mathrm{from}}$ corresponds to transform_<from-frame>_to_<to-frame>.

ROS

Supported distros: Humble, Jazzy, Kilted, Rolling.

sudo apt install ros-$ROS_DISTRO-rko-lio

Or if you’d like to build from source, clone the repo into your colcon workspace and

rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+

In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO

colcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON

A launch file is provided:

ros2 launch rko_lio odometry.launch.py imu_topic:=<topic> lidar_topic:=<topic> base_frame:=base_link

The three parameters imu_topic, lidar_topic, and base_frame are the minimum you need to specify for the launch file. You can specify them and other options all at once in a config file passed with config_file:=file.yaml.

Check further launch configuration options through ros2 launch rko_lio odometry.launch.py -s

More details are available in the ROS usage docs.

The same note above about extrinsics applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).

Citation

If you found this work useful, please consider leaving a star :star: on this repository and citing our paper:

```bib @article{malladi2025arxiv,

File truncated at 100 lines see the full file