[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11704":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":14,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":37,"discoverSource":38},11704,"rko_lio","PRBonn\u002Frko_lio","PRBonn","A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modelling",null,"https:\u002F\u002Fgithub.com\u002FPRBonn\u002Frko_lio","C++",578,60,15,2,0,1,5,3,9.36,false,"main",[24,25,26,27,28,29,30,31,32,33],"inertial","lidar","mapping","odometry","slam","lidar-inertial-odometry","robotics","ros","ros2","imu","2026-06-12 02:02:33","\u003Ch1 align=\"center\">\n  RKO-LIO\n\u003C\u002Fh1>\n\u003Ch3 align=\"center\">Robust LiDAR-Inertial Odometry Without Sensor-Specific Modelling\u003C\u002Fh3>\n\n\u003Cdiv align=\"center\">\n\n[![IEEE RA-L](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FIEEE_RA--L-10.1109%2FLRA.2026.3685966-00629B.svg)](https:\u002F\u002Fdoi.org\u002F10.1109\u002FLRA.2026.3685966) [![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-2509.06593-b31b1b.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2509.06593) [![GitHub License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FPRBonn\u002Frko_lio)](\u002FLICENSE) [![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FPRBonn\u002Frko_lio)](\u002F)\n\n[![PyPI - Version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Frko_lio?color=blue)](https:\u002F\u002Fpypi.org\u002Fproject\u002Frko-lio\u002F) [![ROS Package Index](https:\u002F\u002Fimg.shields.io\u002Fros\u002Fv\u002Fhumble\u002Frko_lio?color=blue)](https:\u002F\u002Findex.ros.org\u002Fp\u002Frko_lio\u002F#humble) [![ROS Package Index](https:\u002F\u002Fimg.shields.io\u002Fros\u002Fv\u002Fjazzy\u002Frko_lio?color=blue)](https:\u002F\u002Findex.ros.org\u002Fp\u002Frko_lio\u002F#jazzy) [![ROS Package Index](https:\u002F\u002Fimg.shields.io\u002Fros\u002Fv\u002Fkilted\u002Frko_lio?color=blue)](https:\u002F\u002Findex.ros.org\u002Fp\u002Frko_lio\u002F#kilted) [![ROS Package Index](https:\u002F\u002Fimg.shields.io\u002Fros\u002Fv\u002Frolling\u002Frko_lio?color=blue)](https:\u002F\u002Findex.ros.org\u002Fp\u002Frko_lio\u002F#rolling)\n\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=NNpzXdf9XmU\" target=\"_blank\">\n    \u003Cimg src=\"\u002Fdocs\u002F_static\u002Fexample_multiple_platforms_shadow.png\" alt=\"Visualization of odometry system running on data from four different platforms in four different environments\" style=\"max-width: 100%; height: auto;\" width=\"800\"\u002F>\n  \u003C\u002Fa>\n  \u003Cbr \u002F>\n  \u003Cem>Four different platforms, four different environments, one odometry system\u003C\u002Fem>\n\u003C\u002Fp>\n\n## Quick Start\n\n\u003C!-- [demo video here] -->\n\nFollowing is for the python version, see [ROS](#ros) for that.\n\nAssuming you have a rosbag (ros1\u002Fros2) which contains a TF tree, you can run RKO-LIO through\n\n```bash\npip install \"rko_lio[all]\"\n# or\npip install rko_lio rosbags \"rerun-sdk>=0.31\"\n# data path should be a directory with *.bag files (ROS1) or a metadata.yaml (ROS2)\nrko_lio -v \u002Fpath\u002Fto\u002Fdata\n```\n\nWhy `pip install` those three packages?\n- `rko_lio` -> the odometry package\n- `rosbags` -> required for the rosbag dataloader. Both ros1 and ros2 bags are supported!\n- `rerun-sdk` -> required for the optional visualizer (`-v` flag)\n\n`pip install \"rko_lio[all]\"` fetches the other optional dependencies as well.\n\nCheck further options for the CLI through `rko_lio --help`.\n\nTo dump a default config you can edit and pass with `--config`, run `rko_lio --dump_config`.\n\nMore details are available in the [Python docs](https:\u002F\u002Fprbonn.github.io\u002Frko_lio\u002Fpages\u002Fpython.html).\n\n### Extrinsics and convention\n\nPlease 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).\nPass the config file with\n\n```bash\nrko_lio --config config_file.yaml\n```\n\nThis 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.\n\nThroughout this package, I refer to transformations using `transform_\u003Cfrom-frame>2\u003Cto-frame>`. By this, I mean a transformation that converts a vector expressed in the `\u003Cfrom-frame>` coordinate system to the `\u003Cto-frame>` coordinate system. Mathematically, this translates to:\n\n$$ \\mathbf{v}^{\\mathrm{to}} = {}^{\\mathrm{to}}\\mathbf{T}_{\\mathrm{from}} \\mathbf{v}^{\\mathrm{from}} $$\n\nThe superscript on the vector indicates the frame in which the vector is expressed, and $^{ \\mathrm{to} }\\mathbf{T}_{\\mathrm{from}}$ corresponds to `transform_\u003Cfrom-frame>_to_\u003Cto-frame>`.\n\n## ROS\n\nSupported distros: Humble, Jazzy, Kilted, Rolling.\n\n```bash\nsudo apt install ros-$ROS_DISTRO-rko-lio\n```\n\nOr if you'd like to build from source, clone the repo into your colcon workspace and\n\n```bash\nrosdep install --from-paths src --ignore-src -r -y\ncolcon build --packages-select rko_lio  # --symlink-install --event-handlers console_direct+\n```\n\nIn case you cannot system install the necessary dependencies through rosdep, you can also build the dependencies while building RKO-LIO\n\n```bash\ncolcon build --packages-select rko_lio --cmake-args -DRKO_LIO_FETCH_CONTENT_DEPS=ON\n```\n\nA launch file is provided:\n\n```bash\nros2 launch rko_lio odometry.launch.py imu_topic:=\u003Ctopic> lidar_topic:=\u003Ctopic> base_frame:=base_link\n```\n\nThe 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`.\n\nCheck further launch configuration options through `ros2 launch rko_lio odometry.launch.py -s`\n\nMore details are available in the [ROS docs](https:\u002F\u002Fprbonn.github.io\u002Frko_lio\u002Fpages\u002Fros.html).\n\nThe same note [above about extrinsics](#extrinsics-and-convention) applies here as well. Though you probably have a well defined TF tree and need not concern yourself with this (I hope).\n\n## Citation\n\nIf you found this work useful, please consider leaving a star :star: on this repository and citing our paper ([RA-L](https:\u002F\u002Fdoi.org\u002F10.1109\u002FLRA.2026.3685966) | [arXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2509.06593)):\n\n```bib\n@article{malladi2026ral,\n  author      = {M.V.R. Malladi and T. Guadagnino and L. Lobefaro and C. Stachniss},\n  title       = {A Robust Approach for LiDAR-Inertial Odometry Without Sensor-Specific Modeling},\n  journal     = {IEEE Robotics and Automation Letters},\n  year        = {2026},\n  volume      = {11},\n  number      = {6},\n  pages       = {7420--7427},\n  doi         = {10.1109\u002FLRA.2026.3685966},\n}\n```\n\nThe [paper supplementary material](https:\u002F\u002Fprbonn.github.io\u002Frko_lio\u002Fsuppl.html) page collects extra figures and explanations pertaining to the same paper.\n\nYou 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.\n\n## Contributing\n\nMy 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\"](https:\u002F\u002Fyoutu.be\u002FnVqcxarP9J4?si=LvTfV4m0NkNC62Tf&t=6). I gladly welcome any contribution or feedback you think would help in this direction. Performance improvements or bug fixes are of course always appreciated.\n\nThanks to the following contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPRBonn\u002Frko_lio\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=PRBonn\u002Frko_lio\" \u002F>\n\u003C\u002Fa>\n\n## Acknowledgements\n\n\u003Cdetails>\n\u003Csummary>KISS-ICP, Kinematic-ICP, Bonxai, PlotJuggler, Rerun\u003C\u002Fsummary>\n\nThis package is inspired by and would not be possible without the work of [KISS-ICP](https:\u002F\u002Fgithub.com\u002FPRBonn\u002Fkiss-icp) and [Kinematic-ICP](https:\u002F\u002Fgithub.com\u002FPRBonn\u002Fkinematic-icp).\nAdditionally, we use and rely heavily on, either in the package itself or during development, [Bonxai](https:\u002F\u002Fgithub.com\u002Ffacontidavide\u002FBonxai), [PlotJuggler](https:\u002F\u002Fgithub.com\u002Ffacontidavide\u002FPlotJuggler), [Rerun](https:\u002F\u002Fgithub.com\u002Frerun-io\u002Frerun), and of course ROS itself.\n\nA special mention goes out to [Rerun](https:\u002F\u002Frerun.io\u002F) 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.\n\n\u003C\u002Fdetails>\n\n## License\n\nThis project is free software made available under the MIT license. For details, see the [LICENSE](LICENSE) file.\n","RKO-LIO 是一个无需特定传感器建模的鲁棒激光雷达-惯性里程计系统。该项目使用C++开发，支持ROS和ROS2，通过融合激光雷达和IMU数据实现高精度的位姿估计与地图构建，具备良好的跨平台兼容性及环境适应能力。其核心优势在于采用了一种不依赖于具体传感器特性的算法框架，从而提高了系统的通用性和鲁棒性。适用于需要在复杂多变环境下进行精准定位导航的机器人应用场合，如自动驾驶、无人机以及各类移动机器人等。","2026-06-11 03:32:21","trending"]