All Projects → KumarRobotics → Msckf_vio

KumarRobotics / Msckf_vio

Licence: other
Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight

Labels

Projects that are alternatives of or similar to Msckf vio

Gibsonenv
Gibson Environments: Real-World Perception for Embodied Agents
Stars: ✭ 666 (-30.19%)
Mutual labels:  ros
Ros Teensy
🚧 Extension to build code for the teensy boards from catkin
Stars: ✭ 16 (-98.32%)
Mutual labels:  ros
Joctomap
Java/Android wrapper for Octomap: an octree-based mapping library
Stars: ✭ 11 (-98.85%)
Mutual labels:  ros
Carla
Open-source simulator for autonomous driving research.
Stars: ✭ 7,012 (+635.01%)
Mutual labels:  ros
Ros best practices
Best practices, conventions, and tricks for ROS. Do you want to become a robotics master? Then consider graduating or working at the Robotics Systems Lab at ETH in Zürich!
Stars: ✭ 799 (-16.25%)
Mutual labels:  ros
Pepper plymouth ros
A set of launch files and configuration files for Plymouth University's Pepper robot
Stars: ✭ 22 (-97.69%)
Mutual labels:  ros
Apollo Platform
Collections of Apollo Platform Software
Stars: ✭ 611 (-35.95%)
Mutual labels:  ros
Hdl graph slam
3D LIDAR-based Graph SLAM
Stars: ✭ 945 (-0.94%)
Mutual labels:  ros
Fourth robot pkg
4号機(KIT-C4)用リポジトリ
Stars: ✭ 7 (-99.27%)
Mutual labels:  ros
Tianbot racecar
DISCONTINUED - MIGRATED TO TIANRACER - A Low cost Autonomous Driving Car Educational and Competition Kit
Stars: ✭ 26 (-97.27%)
Mutual labels:  ros
Turtlebot3
ROS packages for Turtlebot3
Stars: ✭ 673 (-29.45%)
Mutual labels:  ros
Behaviortree.cpp
Behavior Trees Library in C++. Batteries included.
Stars: ✭ 793 (-16.88%)
Mutual labels:  ros
Champ setup assistant
CHAMP Package Config Generator
Stars: ✭ 24 (-97.48%)
Mutual labels:  ros
Ardupilot
ArduPlane, ArduCopter, ArduRover, ArduSub source
Stars: ✭ 6,637 (+595.7%)
Mutual labels:  ros
Ros Academy For Beginners
中国大学MOOC《机器人操作系统入门》代码示例 ROS tutorial
Stars: ✭ 861 (-9.75%)
Mutual labels:  ros
Depth clustering
🚕 Fast and robust clustering of point clouds generated with a Velodyne sensor.
Stars: ✭ 657 (-31.13%)
Mutual labels:  ros
Upboard ros
ROS nodes for upboard usage
Stars: ✭ 22 (-97.69%)
Mutual labels:  ros
Navigator
NaviGator ASV on-board software
Stars: ✭ 29 (-96.96%)
Mutual labels:  ros
Ds4 driver
DualShock 4 driver for ROS
Stars: ✭ 28 (-97.06%)
Mutual labels:  ros
Quickmcl
QuickMCL - Monte Carlo localisation for ROS
Stars: ✭ 24 (-97.48%)
Mutual labels:  ros

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

EuRoC and UPenn Fast flight dataset example usage

First obtain either the EuRoC or the UPenn fast flight dataset.

Recommended EuRoC ROS Bags:

Once the msckf_vio is built and sourced (via source <path to catkin_ws>/devel/setup.bash), there are two launch files prepared for the EuRoC and UPenn fast flight dataset named msckf_vio_euroc.launch and msckf_vio_fla.launch respectively. Each launch files instantiates two ROS nodes:

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

These launch files can be executed via

roslaunch msckf_vio msckf_vio_euroc.launch

or

roslaunch msckf_vio msckf_vio_fla.launch

Once the nodes are running you need to run the dataset rosbags (in a different terminal), for example:

rosbag play V1_01_easy.bag

As mentioned in the previous section, The robot is required to start from a stationary state in order to initialize the VIO successfully.

To visualize the pose and feature estimates you can use the provided rviz configurations found in msckf_vio/rviz folder (EuRoC: rviz_euroc_config.rviz, Fast dataset: rviz_fla_config.rviz).

ROS Nodes

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].