单目视觉惯导 SLAM 方案基于优化和滑动窗口的 VIO ,使用 IMU 预积分构建紧耦合框架,同时还有自动初始化,在线外参标定,重定位,闭环检测,以及全局位姿图优化功能。
VINS-Fusion is an extension of , which supports multiple visual-inertial sensor types (mono camera + IMU, stereo cameras + IMU, even stereo cameras only).
VINS-Fusion基于 vins-mono, 但能支持除了单目+imu, 还能支持双目+imu, 以及之后双目.
效果还是可以的, 在室内室外,
视频中通过 室外汽车car (30km/h) 室内机器人(麦克纳姆轮, 双目 + IMU), 无人机, AR中测试效果
支持ROS, Ubuntu 64-bit 16.04 or 18.04. ROS Kinetic or Melodic
1. 需要ceres 支持.
点击(此处)折叠或打开
-
git clone https://ceres-solver.googlesource.com/ceres-solver
-
# ceres 依赖 Eigen 3.2.2 以及更高.
-
# glog 0.3.1更高.
-
# 参见 http://ceres-solver.org/installation.html
-
-
我直接用的是ubuntu-1604自带版本
-
ii libceres-dev 1.12.0+dfsg0-1~ubuntu16.04.1 amd64 nonlinear least squares minimizer (development files)
- ii libceres1 1.12.0+dfsg0-1~ubuntu16.04.1 amd64 nonlinear least squares minimizer (shared library)
2. 安装
点击(此处)折叠或打开
- git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
VIO is not only a software algorithm, it heavily relies on hardware quality. For beginners, we recommend you to run VIO with professional equipment, which contains global shutter cameras and hardware synchronization.VIO不仅是一个软件算法,它还严重依赖于硬件质量。对于初学者,我们建议您使用专业的设备运行VIO,其中包含全局快门相机和硬件同步。
3.1 为你的设备写个配置文件.
例如: catkin_ws/src/VINS-Fusion/config/vi_car/vi_car.yaml3.2 校准设备.
VINS-Fusion support several camera models (pinhole, mei, equidistant). You can use to calibrate your cameras. 目前支持一些针孔,等距相机, 目前提供了一些 校准的脚本例子, 来校准摄像头.
点击(此处)折叠或打开
-
cd ~/catkin_ws/src/VINS-Fusion/camera_models/camera_calib_example/
- rosrun camera_models Calibrations -w 12 -h 8 -s 80 -i calibrationdata --camera-model pinhole #例如校准针孔相机.
3.3 执行
点击(此处)折叠或打开
-
双目 + IMU
-
roslaunch vins vins_rviz.launch
-
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
-
(可选) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
- # rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag 如果你有自己的录像
点击(此处)折叠或打开
- 或者直接双目
-
roslaunch vins vins_rviz.launch
-
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
-
(optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
- ### rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag
点击(此处)折叠或打开
-
单目 + IMU
-
roslaunch vins vins_rviz.launch
-
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
-
(optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
- rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag
此部分可以在docker中使用. 不过我机器多, 不怕装环境麻烦, 都是出错时, 倒是可直接使用 VINS-Fusion/docker 环境.
点击(此处)折叠或打开
-
To further facilitate the building process, we add docker in our code. Docker environment is like a sandbox, thus makes our code environment-independent. To run with docker, first make sure ros and docker are installed on your machine. Then add your account to docker group by sudo usermod -aG docker $YOUR_USER_NAME. Relaunch the terminal or logout and re-login if you get Permission denied error, type:
-
-
cd ~/catkin_ws/src/VINS-Fusion/docker
-
make build
-
-
Note that the docker building process may take a while depends on your network and machine. After VINS-Fusion successfully built, you can run vins estimator with script run.sh. Script run.sh can take several flags and arguments. Flag -k means KITTI, -l represents loop fusion, and -g stands for global fusion. You can get the usage details by ./run.sh -h. Here are some examples with this script:
-
-
# Euroc Monocualr camera + IMU
-
./run.sh ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
-
-
# Euroc Stereo cameras + IMU with loop fusion
-
./run.sh -l ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
-
-
# KITTI Odometry (Stereo)
-
./run.sh -k ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/
-
-
# KITTI Odometry (Stereo) with loop fusion
-
./run.sh -kl ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/
-
-
# KITTI GPS Fusion (Stereo + GPS)
- ./run.sh -kg ~/catkin_ws/src/VINS-Fusion/config/kitti_raw/kitti_10_03_config.yaml YOUR_DATASET_FOLDER/2011_10_03_drive_0027_sync/