Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rko_lio at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rko_lio at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rko_lio at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rko_lio at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rko_lio at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rko_lio at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rko_lio at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rko_lio at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.6 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling |
Checkout URI | https://github.com/PRBonn/rko_lio.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-10-08 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | robotics mapping ros imu lidar inertial slam odometry ros2 lidar-inertial-odometry |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Meher Malladi
Authors
RKO LIO
Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling
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 inspect the results of our odometry system with the following two steps
pip install rko_lio rosbags rerun-sdk
Why these three packages?
-
rko_lio
-> our odometry package -
rosbags
-> required for our rosbag dataloader. Both ros1 and ros2 bags are supported! -
rerun-sdk
-> required for our optional visualizer (-v
flag)
Next, run
# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)
rko_lio -v /path/to/data
and you should be good to go!
Click here for some more details on how the above works and how to use RKO LIO!
The `-v` flag enables visualization. You can specify a dataloader to use with `-d`, but if you don't, we try to guess the format based on the layout of the data. Our rosbag dataloader works with either ROS1 or ROS2 bags. Place split ROS1 bags in a single folder and pass the folder as the data path. Note that we don't support running RKO LIO on partial or incomplete bags, though you can try (and maybe raise an issue if you think we should support this). ROS2 especially will need a `metadata.yaml` file. By default, we assume there is just one IMU topic and one LiDAR topic in the bag, in which case we automatically pick up the topic names and proceed further. If there are multiple topics per sensor, you will be prompted to select one via the `--imu` or `--lidar` flags, which you can pass to `rko_lio`. Next, we assume there is a (static) TF tree in the bag. If so, we take the frame ids from the message topics we just picked up, build a static TF tree, and then query it for the extrinsic from IMU to LiDAR. Our odometry estimates the robot pose with respect to a base frame, and by default, we assume the LiDAR frame to be the base frame. If you would like to use a different frame, you can pass the frame id with `--base_frame` (note the other options available with `--help`). The TF tree will be queried for the appropriate transformations (if they exist in the bag!). In case there is no TF tree in the bag, then you will have to manually specify the extrinsics for IMU to base frame and LiDAR to base frame, as these two are **required** parameters. Set one of the extrinsics to identity if you want that one to be the base frame (you will still have to specify both parameters). You can specify the extrinsics via a config YAML file with the keys `extrinsic_imu2base_quat_xyzw_xyz` and `extrinsic_lidar2base_quat_xyzw_xyz`. You can dump a config with all the options set to default values by running `rko_lio --dump_config`. Modify as you require, and pass this file to `rko_lio` using the `-c` flag. Please check `python/config` in the GitHub repository for example configurations. An example invocation would then be ```bash # the config should have the sensor extrinsics if the rosbag doesn't rko_lio -v -c config.yaml --imu imu_topic --lidar lidar_topic /path/to/rosbag_folder File truncated at 100 lines [see the full file](https://github.com/PRBonn/rko_lio/tree/master/./README.md)
Changelog for package rko_lio
0.1.6 (2025-10-07)
- make fPIC a property target ON instead of a global build flag
- drop cmake min version to 3.22.0
- clean up bonxai finding and mocking a bit
- force include bonxai code when not fetching
- Contributors: Meher Malladi
0.1.5 (2025-10-04)
- Drop cmake min version to 3.22.1 to support ros humble builds with
default toolchains
(#52)
- mock a find package file if cmake below version 3.24
- different sophus version compat for older cmake
- add compat target sources for cmake < 3.23
- missing include fix
- cmake policy to suppress warning on the older cmake
- fix the bonxai fetch problem for ubuntu 22.04 isolated builds
- Contributors: Meher Malladi
0.1.4 (2025-10-04)
-
Drop ros cmake min version to 3.26.5. (#50)
- Conditional fetchcontent flags to include exclude_from_all only if version > 3.28. Should fix rhel 9 builds for ros
-
Bump FetchContent dependencies (#49)
* bump Eigen FetchContent to 5.0 ---------Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Meher Malladi <<rm.meher97@gmail.com>>
-
Contributors: Meher Malladi, github-actions[bot]
0.1.3 (2025-10-02)
-
temp fix: ros builds when FETCHCONTENT_FULLY_DISABLED is ON, aka the ros build farm (#45)
- clean up ament target dependencies deprecation
- update bonxai version
- add bonxai core source to dependencies/bonxai with a check to include only on specific conditions
-
Change package layout to make ros package release easier (#44)
- move ros/cmake and package xml out. merge core cmake into root cmake
- build ros by default, but disable it for the python build
- makefile recipe disables ros build by default for cpp only build
- clean up ros workflows a bit
-
Bump pypa/cibuildwheel from 3.1.4 to 3.2.0 (#42) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v3.1.4...v3.2.0) ---updated-dependencies:
- dependency-name: pypa/cibuildwheel dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
Contributors: Meher Malladi, dependabot[bot]
0.1.2 (2025-09-26)
- Drop irregular lidar frames
(#35)
- if incoming lidar scan has a stamp with too big of a delta to the previous, we treat it as an error
- fix component registration so online node component shows up in ros2 component types (#34)
- Contributors: Meher Malladi
0.1.1 (2025-09-17)
- Fix logic error in offline node (ros) and interval imu stats compute
(core) (#29)
- cleaner error messages and log parsed imu and lidar frames for ros
- patch rviz config to change the global frame if a different odom frame is used
- revert offline node bag and buffer completion handling logic
- cannot compute accel mag variance if imu count is 1. modify the
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
sophus | |
rclcpp | |
std_msgs | |
tf2 | |
tf2_ros | |
sensor_msgs | |
nav_msgs | |
geometry_msgs | |
rosbag2_cpp | |
rosbag2_storage | |
rclcpp_components |
System Dependencies
Name |
---|
eigen |
tbb |
nlohmann-json-dev |