Coder Social home page Coder Social logo

msckf_vio's Introduction

MSCKF_VIO

The MSCKF_VIO package is a stereo version of MSCKF. The software takes in synchronized stereo images and IMU messages and generates real-time 6DOF pose estimation of the IMU frame.

The software is tested on Ubuntu 16.04 with ROS Kinetic.

Video: https://www.youtube.com/watch?v=jxfJFgzmNSw&t=3s Paper Draft: https://arxiv.org/abs/1712.00036

License

Penn Software License. See LICENSE.txt for further details.

Dependencies

Most of the dependencies are standard including Eigen, OpenCV, and Boost. The standard shipment from Ubuntu 16.04 and ROS Kinetic works fine. One special requirement is suitesparse, which can be installed through,

sudo apt-get install libsuitesparse-dev

Compling

The software is a standard catkin package. Make sure the package is on ROS_PACKAGE_PATH after cloning the package to your workspace. And the normal procedure for compiling a catkin package should work.

cd your_work_space
catkin_make --pkg msckf_vio --cmake-args -DCMAKE_BUILD_TYPE=Release

Calibration

An accurate calibration is crucial for successfully running the software. To get the best performance of the software, the stereo cameras and IMU should be hardware synchronized. Note that for the stereo calibration, which includes the camera intrinsics, distortion, and extrinsics between the two cameras, you have to use a calibration software. Manually setting these parameters will not be accurate enough. Kalibr can be used for the stereo calibration and also to get the transformation between the stereo cameras and IMU. The yaml file generated by Kalibr can be directly used in this software. See calibration files in the config folder for details. The two calibration files in the config folder should work directly with the EuRoC and fast flight datasets. The convention of the calibration file is as follows:

camx/T_cam_imu: takes a vector from the IMU frame to the camx frame. cam1/T_cn_cnm1: takes a vector from the cam0 frame to the cam1 frame.

The filter uses the first 200 IMU messages to initialize the gyro bias, acc bias, and initial orientation. Therefore, the robot is required to start from a stationary state in order to initialize the VIO successfully.

Example Usage

There are launch files prepared for the EuRoC and fast flight dataset separately. Upon launching the msckf_vio_*.launch, two ros nodes are created:

  • image_processor takes the stereo images to detect and track features.
  • vio takes the feature measurements and tightly fuses them with the IMU messages to estimate pose.

image_processor node

Subscribed Topics

imu (sensor_msgs/Imu)

IMU messages is used for compensating rotation in feature tracking, and 2-point RANSAC.

cam[x]_image (sensor_msgs/Image)

Synchronized stereo images.

Published Topics

features (msckf_vio/CameraMeasurement)

Records the feature measurements on the current stereo image pair.

tracking_info (msckf_vio/TrackingInfo)

Records the feature tracking status for debugging purpose.

debug_stereo_img (sensor_msgs::Image)

Draw current features on the stereo images for debugging purpose. Note that this debugging image is only generated upon subscription.

vio node

Subscribed Topics

imu (sensor_msgs/Imu)

IMU measurements.

features (msckf_vio/CameraMeasurement)

Stereo feature measurements from the image_processor node.

Published Topics

odom (nav_msgs/Odometry)

Odometry of the IMU frame including a proper covariance.

feature_point_cloud (sensor_msgs/PointCloud2)

Shows current features in the map which is used for estimation.

msckf_vio's People

Contributors

ke-sun avatar kartikmohta avatar

Watchers

James Cloos avatar  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.