Skip to content

Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight

License

Notifications You must be signed in to change notification settings

cumtchenchang/msckf_vio

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TODO

因图像提取特征较少,在后期特征丢失或不足后依赖IMU定位,整体漂移较严重。 尝试提高特征点数量;或采用混合特征; 调整前端和后端的机制,进行改进。

if you do not know how to use, follow this setps:

rviz -d rviz_euroc_config.rviz

roslaunch msckf_vio msckf_vio_euroc.launch

rosbag play V1_02_medium.bag

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=OXSB8Bze0cY
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. Kalibr can be used to calibrate the transformantion between the stereo cameras and IMU. The yaml file generated by Kalibr can be directly used in this software with slight modifications. 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 filter requires 200 IMU messages to initialize gyro bias, acc bias, and initial orientation. Therefore, the robot is required to start from static 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.

About

Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 95.6%
  • CMake 4.4%