1.背景简介
VINS-Fusion自然不用多说,作为视觉与IMU融合的代表作之一广为人知。这篇博客不会涉及理论或者论文相关内容。而是介绍如何把VINS-Fusion跑起来,便于直观、感性地了解VINS-Fusion。
2.依赖安装
VINS-Fusion的依赖其实很少(相比于ORB-SLAM3而言),Ubuntu、ROS以及Ceres。Ubuntu自然不用多说,但如果你真的还没装的话,参考这篇博客进行分区、这篇博客进行安装、这篇博客进行常用软件安装。ROS也不用多说,Kinetic或者Melodic都可以,如果你也没安装的话,参考这篇博客。最后是Ceres,一个优化库。如果没有安装,可以参考这篇博客或者这篇博客进行安装。总体而言,都非常简单。
3.下载编译
由于VINS-Fusion是基于ROS开发的,因此免不了用catkin_make
等工具进行编译,如果对Catkin不了解,可以参考这篇博客。这里就涉及到Catkin工作空间的问题。你当然可以在现有的工作空间下编译VINS,也可以选择新建一个工作空间再编译。这里我就选择使用电脑上已有的工作空间进行演示,我的工作空间路径是/root/catkin_ws
。因此根据VINS-Fusion给的Build命令,在终端中输入如下命令进行编译。如果你的工作空间路径和我的不一样,记得修改。
cd /root/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
cd ..
catkin_make
source /root/catkin_Ws/devel/setup.bash
不出意外应该很顺利,就可以编译好了。
4.测试使用
运行其实很简单,注意下面需要将文件路径改成你自己的。
(1) EuRoC Mono+IMU
首先打开终端,输入如下命令,运行RViz进行可视化。
roslaunch vins vins_rviz.launch
然后,打开新终端,输入如下命令,运行VINS节点。
rosrun vins vins_node /root/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
(可选)如果需要视觉回环的话,再打开终端,输入如下命令,运行回环节点。
rosrun loop_fusion loop_fusion_node /root/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
最后,再打开终端,输入如下命令,播放ROS Bag数据包。
rosbag play /root/Datasets/EuRoC/MH_03_medium/MH_03_medium.bag
这样,VINS-Fusion就可以成功运行了,效果如下。其中,绿色是由VIO得到的轨迹,红色是视觉回环下得到的轨迹。下面都一样。
(2) EuRoC Stereo+IMU
双目+IMU其实和刚刚的单目运行起来基本是一模一样的,唯一的不同点在于传入的配置文件。
# 运行RViz可视化
roslaunch vins vins_rviz.launch
# 运行VINS节点
rosrun vins vins_node /root/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
# 可选,运行回环节点
rosrun loop_fusion loop_fusion_node /root/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
# 播放ROS Bag数据
rosbag play /root/Datasets/EuRoC/MH_03_medium/MH_03_medium.bag
运行界面如下。
(3) EuRoC Stereo
同理,纯双目也是一样的。
# 运行RViz可视化
roslaunch vins vins_rviz.launch
# 运行VINS节点
rosrun vins vins_node /root/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
# 可选,运行回环节点
rosrun loop_fusion loop_fusion_node /root/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
# 播放ROS Bag数据
rosbag play /root/Datasets/EuRoC/MH_03_medium/MH_03_medium.bag
运行效果如下。
至此,VINS-Fusion下载、编译、运行的基本操作就介绍完了。
另外,经过实际测试发现,VINS-Fusion对于传感器参数是比较敏感的。而且,利用官方提供的D435i的参数,并不能很好地运行,其原因就在于参数不太对。在网上找了很多博客,大家都提到了这个问你题,说VINS如果参数设置不好容易漂。在这个网页中给出了他标定的参数,经过测试,是可以正常使用的。
5.参考资料
- [1] https://github.com/HKUST-Aerial-Robotics/VINS-Fusion
本文作者原创,未经许可不得转载,谢谢配合