目录
VINS-Fusion 简介
安装
VINS-Fusion 源码安装
运行数据集
双目模式
单目+IMU 模式
双目+IMU 模式
D455 相机实际运行
双目+IMU 模式
VINS-Fusion 简介
VINS-Fusion 是继 VINS-Mono 和 VINS-Mobile(单目视觉惯导 SLAM 方案)后,香港科
技大学沈劭劼老师团队开源的双目视觉惯导 SLAM 方案,VINS-Fusion 是一种基于优化的
多传感器状态估计器,可实现自主应用(无人机,汽车和 AR / VR)的精确自定位。 VINS
Fusion 是 VINS-Mono 的扩展,支持多种视觉惯性传感器类型(单目摄像机+ IMU,双目摄
像机+ IMU,甚至仅限双目摄像机)。开源项目组还展示了将 VINS 与 GPS 融合的模组示例。
安装
安装好 Ubuntu 及其对应的 ROS 版本,这里我们使用的是 Ubuntu18.04,ROS melodic
ceres 安装
1、先安装所有的依赖项
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install libsuitesparse-dev
2、再下载、安装 Ceres
建议下载稳定版本 ceres
不要追求下载最新版本,因为最新版对编译器要求较高。比如 Ceres Solver 2.2 需要 C++17
编译器。我这里使用的是 ceres-solver-1.14.0
tar zxf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
make -j3
make test # 可选,用于测试
sudo make install
3、测试是否正常
Ceres 自带有测试数据,我们在 build 目录输入
bin/simple_bundle_adjuster ../data/problem-16-22106-pre.txt
功能是用 DENSE_SCHUR 线性优化器迭代优化
成功运行后,输出如下所示,表示成功安装 ceres

VINS-Fusion 源码安装
cd ~/vins_catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
cd ../
catkin_make
将工作空间添加到环境变量,这样就不用每次打开一个终端都要 source 一次了,可以一劳
永逸的解决环境问题
打开终端,执行
echo "source ~/vins_catkin_ws/devel/setup.bash" >> ~/.bashrc
#这样就不用每次打开一个新终端都要 source 一次了
相当于打开 gedit ~/.bashrc 在文件末尾添加
source ~/vins_catkin_ws/devel/setup.bash
然后在终端,输入 source ~/.bashrc
运行数据集
双目模式
ROS 模式运行双目数据集,以 EuROC 为例
# 启动
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_stereo_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_stereo_config.yaml # 带闭环检测,可选
rosbag play ~/SLAM/DataSets/EuRoC/MH_03_medium.bag
单目+IMU 模式
ROS 模式运行单目数据集,以 EuROC 为例
# 启动
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_mono_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_mono_imu_config.yaml # 带闭环检测,可选
rosbag play ~/SLAM/DataSets/EuRoC/MH_03_medium.bag
双目+IMU 模式
ROS 模式运行单目数据集,以 EuROC 为例
# 启动
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_stereo_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_stereo_imu_config.yaml # 带闭环检测,可选
rosbag play ~/SLAM/DataSets/EuRoC/MH_03_medium.bag
D455 相机实际运行
首先需要利用前面介绍的相机-IMU 标定方法提前标定好相机。
VINS-Fusion/config 文件夹下面有作者提供的很多配置文件,包括 realsense_d435i,我们复
制后改名为 realsense_d455 并修改其中的配置文件

cam0:T_cam_imu 表示的是 IMU 到相机 0 的变换矩阵,
body_T_cam0 表示相机 0 到 IMU 矩阵,所以它的值应该是 T_cam_imu 矩阵取逆
可以使用在线计算矩阵的逆 http://www.yunsuan.info/cgi-bin/matrix_inverse.py

source ~/realsense_catkin_ws/devel/setup.bash
标定参数数字和逗号之间不要有空格,否则可能会报错误 OpenCV Error: Parsing
error
准备好标定文件,路径改好,topic 改好
双目+IMU 模式
启动相机
roslaunch realsense2_camera rs_camera.launch
#启动 rviz
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins_catkin_ws/src/VINS
Fusion/config/realsense_d455/realsense_stereo_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins_catkin_ws/src/VINS
Fusion/config/realsense_d455/realsense_stereo_imu_config.yaml # 带闭
环检测,可选
参考:https://blog.csdn.net/qq_40186909/article/details/113104595