LICENSE.txt | ||
README.md |
MSCKF_VIO
The MSCKF_VIO
package is a stereo implementation of the MSCKF algorithm introduced in [1] with modifications. The software takes in synchronized stereo image pairs 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: The paper will be available soon.
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 compling a catkin package will 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 example_calib.yaml
in the config
folder for the modifications.
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.
camx_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 may be used for estimation.
[1] Mourikis, Anastasios I., and Stergios I. Roumeliotis. "A multi-state constraint Kalman filter for vision-aided inertial navigation." Robotics and automation, 2007 IEEE international conference on. IEEE, 2007.