Code Monkey home page Code Monkey logo

r-vio's Introduction

R-VIO

R-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 is developed with the robocentric sliding-window filtering-based VIO framework that was originally proposed in our IROS2018 paper and further extended in our recent IJRR paper:

  • Zheng Huai and Guoquan Huang, Robocentric visual-inertial odometry, The International Journal of Robotics Research (IJRR), July 2019: download.
@article{huai2019robocentric,
  title     = {Robocentric visual-inertial odometry},
  author    = {Huai, Zheng and Huang, Guoquan},
  journal   = {The International Journal of Robotics Research},
  publisher = {SAGE Publications Sage UK: London, England},
  year      = {2019},
  url       = {https://journals.sagepub.com/doi/10.1177/0278364919853361}
}
  • 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.
@inproceedings{huai2018robocentric,
  title     = {Robocentric visual-inertial odometry},
  author    = {Huai, Zheng and Huang, Guoquan},
  booktitle = {IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages     = {6319--6326},
  year      = {2018},
  address   = {Madrid, Spain}
}

IROS video (ETH EuRoC MAV dataset): YouTube.

IJRR video (Our 9.8km Urban Driving dataset): YouTube.

1. Prerequisites

We have tested this code under Ubuntu 16.04 and ROS Kinetic.

ROS

Download and install instructions can be found at: http://wiki.ros.org/kinetic/Installation/Ubuntu.

Additional ROS packages needed: tf, sensor_msgs, geometry_msgs, nav_msgs, cv_bridge, eigen_conversions.

Eigen

Download and install instructions can be found at: http://eigen.tuxfamily.org. Required at least 3.1.0.

OpenCV

Download 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.

2. Build and Run

First, 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 dataset) are needed, and to visualize the outputs of R-VIO please use rviz with the settings file rvio_rviz.rviz in config folder.

Terminal 1: roscore
Terminal 2: rviz (AND OPEN rvio_rviz.rviz IN THE CONFIG FOLDER)
Terminal 3: roslaunch rvio euroc.launch
Terminal 4: rosbag play --pause V1_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu

Note 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.

You 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.

3. License

This code is released under GNU General Public License v3 (GPL-3.0).

r-vio's People

Contributors

huaizheng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.