{"id":20837423,"url":"https://github.com/rpng/r-vio","last_synced_at":"2025-04-04T08:09:28.270Z","repository":{"id":37735321,"uuid":"170187321","full_name":"rpng/R-VIO","owner":"rpng","description":"Robocentric Visual-Inertial Odometry","archived":false,"fork":false,"pushed_at":"2023-04-23T19:05:30.000Z","size":75039,"stargazers_count":787,"open_issues_count":4,"forks_count":175,"subscribers_count":36,"default_branch":"master","last_synced_at":"2025-03-28T07:09:00.045Z","etag":null,"topics":["ijrr","iros","kalman-filtering","localization","msckf","robocentric","vins","vio","visual-inertial-odometry"],"latest_commit_sha":null,"homepage":"https://journals.sagepub.com/doi/10.1177/0278364919853361","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rpng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-02-11T19:21:14.000Z","updated_at":"2025-03-25T03:24:32.000Z","dependencies_parsed_at":"2023-01-17T17:00:48.759Z","dependency_job_id":"47763070-84b8-42c8-967b-ca1a20d2e23f","html_url":"https://github.com/rpng/R-VIO","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpng%2FR-VIO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpng%2FR-VIO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpng%2FR-VIO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpng%2FR-VIO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rpng","download_url":"https://codeload.github.com/rpng/R-VIO/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247142074,"owners_count":20890653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ijrr","iros","kalman-filtering","localization","msckf","robocentric","vins","vio","visual-inertial-odometry"],"created_at":"2024-11-18T01:07:30.011Z","updated_at":"2025-04-04T08:09:28.248Z","avatar_url":"https://github.com/rpng.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# R-VIO\n\nR-VIO is an efficient, lightweight, **robocentric** visual-inertial navigation algorithm for consistent 3D motion tracking using only a monocular camera and a single IMU. Different from the standard world-centric algorithms which directly estimate absolute motion of the mobile platform with respect to a fixed, gravity-aligned, global frame of reference, R-VIO i) estimates relative motion of higher accuracy with respect to a moving, local frame (the IMU frame here), and ii) incrementally updates global pose (orientation and position) through a composition step. This code implements our robocentric sliding-window filtering-based VIO formulation that was originally proposed in our *IROS2018* paper and presented in detail in our recent *IJRR* paper:\n\n- Zheng Huai and Guoquan Huang, **Robocentric visual-inertial odometry**, *The International Journal of Robotics Research (IJRR)*, 2022: [download](https://journals.sagepub.com/doi/10.1177/0278364919853361).\n```\n@article{huai2022robocentric,\n  title={Robocentric visual-inertial odometry},\n  author={Huai, Zheng and Huang, Guoquan},\n  journal={The International Journal of Robotics Research},\n  volume={41},\n  number={7},\n  pages={667--689},\n  year={2022},\n  publisher={SAGE Publications Sage UK: London, England}\n}\n```\n\n- Zheng Huai and Guoquan Huang, **Robocentric visual-inertial odometry**, *IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)*, Madrid, Spain, Oct 1-5, 2018: [download](https://ieeexplore.ieee.org/document/8593643).\n```\n@inproceedings{huai2018robocentric,\n  title     = {Robocentric visual-inertial odometry},\n  author    = {Huai, Zheng and Huang, Guoquan},\n  booktitle = {IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},\n  pages     = {6319--6326},\n  year      = {2018},\n  address   = {Madrid, Spain}\n}\n```\n\nThis work has been further extended in our *IEEE RA-L* paper below, and the proposed [R-VIO2](https://github.com/rpng/R-VIO2) is also open sourced.\n- Zheng Huai and Guoquan Huang, **Square-Root Robocentric Visual-Inertial Odometry with Online Spatiotemporal Calibration**, *IEEE Robotics and Automation Letters (RA-L)*, 2022: [download](https://ieeexplore.ieee.org/document/9830847).\n```\n@article{huai2022square,\n  title={Square-root robocentric visual-inertial odometry with online spatiotemporal calibration},\n  author={Huai, Zheng and Huang, Guoquan},\n  journal={IEEE Robotics and Automation Letters},\n  volume={7},\n  number={4},\n  pages={9961--9968},\n  year={2022},\n  publisher={IEEE}\n}\n```\n\n![](https://media.giphy.com/media/RMecOYlfxEcy4T8JdS/giphy.gif)\n\nIROS video (**EuRoC MAV** dataset): [YouTube](https://www.youtube.com/watch?v=UtiZ0EKa55M).\n\n![](rvio.gif)\n\nIJRR video (9.8km **Urban Driving** test): [YouTube](https://www.youtube.com/watch?v=l9IC2ddBEYQ).\n\n## 1. Prerequisites\n\nWe have tested this code under Ubuntu **16.04** and ROS **Kinetic**.\n\n### ROS\nDownload and install instructions can be found at: http://wiki.ros.org/kinetic/Installation/Ubuntu.\n\nAdditional ROS packages needed: tf, sensor_msgs, geometry_msgs, nav_msgs, cv_bridge, eigen_conversions.\n\n### Eigen\nDownload and install instructions can be found at: http://eigen.tuxfamily.org. **Required at least 3.1.0**.\n\n### OpenCV\nDownload and install instructions can be found at: http://opencv.org. **Required at leat 2.4.3**. **Tested with 2.4.11 and 3.3.1**.\n\n## 2. Build and Run\nFirst, `git clone` the repository and `catkin_make` it. Then, to run `rvio` with single camera/IMU inputs from the ROS topics `/camera/image_raw` and `/imu`, a config file in *config* folder and the corresponding launch file in *launch* folder (for example, `rvio_euroc.yaml` and `euroc.launch` are for [EuRoC](https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets) dataset) are needed, and to visualize the outputs of R-VIO please use `rviz` with the settings file `rvio_rviz.rviz` in *config* folder.\n  ```\n  Terminal 1: roscore\n  ```\n  ```\n  Terminal 2: rviz (AND OPEN rvio_rviz.rviz IN THE CONFIG FOLDER)\n  ```\n  ```\n  Terminal 3: roslaunch rvio euroc.launch\n  ```\n  ```\n  Terminal 4: rosbag play --pause V1_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu\n  ```\n\nNote that when testing the `Machine Hall` sequences, you should skip the data in the first few seconds (e.g., 40s for `MH_01_easy`) which are used for initializing the map for SLAM-based algorithms.\n\nYou can also run R-VIO with your own sensors (data) by creating a config file `rvio_NAME_OF_YOUR_DATA.yaml` in *config* folder and the corresponding launch file `NAME_OF_YOUR_DATA.launch` in *launch* folder, referring to our EuRoC example.\n\n## 3. License\n\nThis code is released under [GNU General Public License v3 (GPL-3.0)](https://www.gnu.org/licenses/gpl-3.0.en.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frpng%2Fr-vio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frpng%2Fr-vio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frpng%2Fr-vio/lists"}