VINS-Fusion的编译与使用

Mar 22,2021   2297 words   9 min

Tags: SLAM

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

本文作者原创,未经许可不得转载,谢谢配合

返回顶部