← Open Source
PRBonn

rko_lio

A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling.

ApplicationsSpecialistsC++
Open on GitHub
Momentum
+0stars in 24 hours0.0%
677
Stars
79
Forks
+2
This week
11
Contributors
Created 2025-09-03 · Updated 2026-10-14 · #15125 today
Top developers
mehermvrgistrecanthonytec2

PRBonn/rko_lio is ranked 15,125 with 677 stars.

Same-category comparison

PRBonn/rko_lio is ranked 15,125 among these 8 peers; CloudOrc/SolidUI is ranked 15,121.

Same-category comparison
NameRankMetrics
cloud804d/mirrors-pengzhile-pandora15,112
Language:
Python
Stars:
678
Forks:
332
Description:
Pandora, a ChatGPT that helps you breathe smoothly.
mem0ai/mem0-chrome-extension15,115
Language:
TypeScript
Stars:
678
Forks:
109
Description:
OpenMemory Chrome Extension: Long-term memory for ChatGPT, Claude, Perplexity, Grok etc.
netaart/comfyui-browser15,117
Language:
Svelte
Stars:
678
Forks:
73
Description:
An image/video/workflow browser and manager for ComfyUI.
CloudOrc/SolidUI15,121
Language:
TypeScript
Stars:
677
Forks:
80
Description:
one sentence generates any graph.
kerlomz/captcha_platform15,131
Language:
Python
Stars:
677
Forks:
239
Description:
This projeccode identificat is only for deployment models.
kijai/ComfyUI-DynamiCrafterWrapper15,132
Language:
Python
Stars:
677
Forks:
33
Description:
Wrapper to use DynamiCrafter models in ComfyUI.
pfrankov/obsidian-local-gpt15,140
Language:
TypeScript
Stars:
676
Forks:
63
Description:
Local Ollama and OpenAI-like GPT's assistance for maximum privacy and offline access.
AlexZhangji/Twitter-Insight-LLM15,144
Language:
Jupyter Notebook
Stars:
675
Forks:
76
Description:
Twitter data scraping, embedding based image search and more.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguageC++
CategoryApplications
SubcategorySpecialists
Keywords3D, Autonomous vehicles, Data processing, Robotics
Stars677
Forks79
Contributors11
Created date2025-09-03
Updated date2026-10-14
Stars in 1 day0
Stars in 7 days2
Rank15,125
Previous rank14,950
Rank change-175
7-day stars rank8,634
Previous 7-day stars rank8,698
7-day stars rank change64
Total stars rank15,264
Previous total stars rank15,237
Total stars rank change-27
CountryGermany
README summary

RKO-LIO Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling Four different platforms, four different environments, one odometry system Still early days, but if you want drift correction on top of the odometry, have a look at rko_slam . Quick Start Following is for the python version, see ROS for that. Assuming you have a rosbag (ros1/ros2) which contains a TF tree, you can run RKO-LIO through Why those three packages? -> the odometry package -> required for the rosbag

dataloader. -> required for the optional visualizer ( flag) fetches the other optional dependencies as well. Check further options for the CLI through . To dump a default config you can edit and pass with , run . More details are available in the Python 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 This file needs two keys: and , which must each be a list. Throughout this package, I refer to transformations using . By this, I mean a transformation that converts a vector expressed in the coordinate system to the 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 . ROS Supported distros: Humble, Jazzy, Kilted, Lyrical, Rolling. Or if you'd like to build from source, clone the repo into your colcon workspace and In case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO A launch file is provided: The topics and frames are autodetected (experimental). To set them yourself instead

: Those three are then the minimum you need to specify. You can specify them and other options all at once in a config file passed with . Check further launch configuration options through More details are available in the ROS 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 (RA-L | arXiv): The paper supplementary material page collects extra figures and explanations pertaining to the same paper. You can check out the branch for the version of the code used for submission to RA-L. Please note that that branch is meant to be an as-is reproduction of the code used during submission and is not supported. The and release versions are vastly improved, supported, and are the recommended way

to use this system. Contributing My goal with this project is to have a simple LiDAR-Inertial odometry system that

Frequently asked questions

How many stars and forks are recorded?

PRBonn/rko_lio has 677 stars and 79 forks.

What is the repository rank?

PRBonn/rko_lio is ranked 15,125.

What language and category are recorded?

PRBonn/rko_lio has 677 stars, uses C++ and belongs to Applications.

Which repository is closest in rank?

PRBonn/rko_lio is compared with CloudOrc/SolidUI, ranked 15,121 with 677 stars.

README

RKO-LIO

Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling

Four different platforms, four different environments, one odometry system

Still early days, but if you want drift correction on top of the odometry, have a look at rko_slam.

Quick Start

Following is for the python version, see ROS for that.

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

pip install "rko_lio[all]"
# or
pip install rko_lio rosbags "rerun-sdk>=0.31"
# 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)

pip install "rko_lio[all]" fetches the other optional dependencies as well.

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

To dump a default config you can edit and pass with --config, run rko_lio --dump_config.

More details are available in the Python 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_2. By this, I mean a transformation that converts a vector expressed in the coordinate system to the 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__to_.

ROS

Supported distros: Humble, Jazzy, Kilted, Lyrical, 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

The topics and frames are autodetected (experimental). To set them yourself instead:

ros2 launch rko_lio odometry.launch.py autodetect:=false \
    imu_topic:= lidar_topic:= base_frame:=base_link

Those three are then the minimum you need to specify. 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 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 (RA-L | arXiv):

@article{malladi2026ral,
  author      = {M.V.R. Malladi and T. Guadagnino and L. Lobefaro and C. Stachniss},
  title       = {A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modeling},
  journal     = {IEEE Robotics and Automation Letters},
  year        = {2026},
  volume      = {11},
  number      = {6},
  pages       = {7420--7427},
  doi         = {10.1109/LRA.2026.3685966},
}

The paper supplementary material page collects extra figures and explanations pertaining to the same paper.

You can check out the branch ral_submission for the version of the code used for submission to RA-L. Please note that that branch is meant to be an as-is reproduction of the code used during submission and is not supported. The master and release versions are vastly improved, supported, and are the recommended way to use this system.

Contributing

My goal with this project is to have a simple LiDAR-Inertial odometry system that can work with minimal friction, in the lines of "it just works". I gladly welcome any contribution or feedback you think would help in this direction. Performance improvements or bug fixes are of course always appreciated.

Thanks to the following contributors

Acknowledgements

KISS-ICP, Kinematic-ICP, PlotJuggler, Rerun

This package is inspired by and would not be possible without the work of KISS-ICP and Kinematic-ICP. Additionally, we use and rely heavily on, either in the package itself or during development, PlotJuggler, Rerun, and of course ROS itself.

A special mention goes out to Rerun for providing an extremely easy-to-use but highly performative visualization system. Without this, I probably would not have made a python interface at all.

License

This project is free software made available under the MIT license. For details, see the LICENSE file.

Nearby in the ranking
Similar items