PRBonn/rko_lio
A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling
RKO‑LIO – Robust LiDAR‑Inertial Odometry
What it is – RKO‑LIO is an open‑source library that fuses a 3‑D LiDAR scanner with an IMU to estimate a robot’s pose (odometry) without needing sensor‑specific calibration models. It works on raw ROS bags (ROS 1 or ROS 2) and can also be run as a pure‑Python package.
Key features
- Sensor‑agnostic: No hand‑tuned models for a particular LiDAR or IMU; only the extrinsic transform between the two frames is required.
- Multi‑platform: Demonstrated on four different robots and environments with a single code base.
- Python & ROS interfaces: Install via
pipfor quick experiments or as a ROS 2 package (apt install ros-<distro>-rko-lio). - Visualization: Optional real‑time visualizer using the Rerun SDK (
-vflag). - Configurable: Extrinsics are supplied via a tiny YAML file; all other parameters have sensible defaults.
- Published research: Accompanies a peer‑reviewed IEEE RA‑L paper (2026) and an arXiv pre‑print.
How to get started (Python)
pip install "rko_lio[all]" # pulls rko_lio, rosbags, rerun-sdk
rko_lio -v /path/to/rosbag_folder # run with visualizer
- Use
rko_lio --dump_config > config.yamlto create a template. - Edit
config.yamlto setextrinsic_imu2base_quat_xyzw_xyzandextrinsic_lidar2base_quat_xyzw_xyz(identity example:[0,0,0,1,0,0,0]). - Run with
rko_lio --config config.yaml.
How to get started (ROS 2)
sudo apt install ros-$ROS_DISTRO-rko-lio # binary install for Humble, Jazzy, …
# or build from source in a colcon workspace
colcon build --packages-select rko_lio
ros2 launch rko_lio odometry.launch.py # autodetect topics & frames
- If autodetection fails, provide
imu_topic,lidar_topic, andbase_frame(or a full config file) via launch arguments.
Typical workflow
- Record a ROS bag containing LiDAR scans, IMU data, and a TF tree.
- Ensure the IMU‑to‑base and LiDAR‑to‑base extrinsics are either in the TF tree or supplied in a YAML file.
- Run the package (Python CLI or ROS launch) to obtain a continuous pose estimate.
- Visualize live with Rerun (
-v) or replay later with PlotJuggler.
Why it matters – Traditional LiDAR‑Inertial odometry often requires per‑sensor calibration (e.g., noise models, bias parameters). RKO‑LIO removes that burden, making it easier to deploy on new hardware or in rapid‑prototyping scenarios while still delivering accurate, drift‑reduced pose estimates.
Documentation & support
- Python API docs: https://prbonn.github.io/rko_lio/pages/python.html
- ROS integration guide: https://prbonn.github.io/rko_lio/pages/ros.html
- Video demo (click the image in the README) shows the system running on four platforms.
Citation If you use RKO‑LIO in research, cite the accompanying IEEE RA‑L paper (2026) – the README provides the full BibTeX entry.
TL;DR – RKO‑LIO is a ready‑to‑use, sensor‑agnostic LiDAR‑Inertial odometry library for robotics, available both as a pip‑installable Python package and a ROS 2 package, with optional real‑time visualization via Rerun.
Related
- Project
- Project
- Project
- Project
- Project