VINS学习01——VINS_Fusion官方教程翻译解读

1.简介

VINS_Fusion 是一个基于优化的多传感器融合定位算法,由港科大开源,在VINS_Mono基础上改进。
融合传感器包括:IMU,双目相机,GPS
融合方式:IMU+单目,IMU+双目,纯双目

2. 算法演示

2.1 前期准备

1)安装ros
2)安装ceres
3)下载[VINS-Fusio](https://github.com/HKUST-Aerial-Robotics/VINS-Fusion)n 功能包到你的工作空间

git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git

4)数据集
一共用到两个常用的数据集 无人机的数据集EuRoc,无人车的数据集Kitti
都是以G为单位的数据集
我会在每个demo前加上数据集链接、数据集名称、数据集大小、数据集内话题

2.2 无人机demo演示

2.2.1 数据集

链接
数据包下载名称:MH_01_easy.bag
数据包大小 2.7GB

topics:      /cam0/image_raw    3682 msgs    : sensor_msgs/Image    //相机1      
             /cam1/image_raw    3682 msgs    : sensor_msgs/Image    //相机2
             /imu0             36820 msgs    : sensor_msgs/Imu      //imu
             /leica/position    3099 msgs    : geometry_msgs/PointStamped   //动捕真值无姿态

2.2.2 单目相机+IMU融合

①打开rviz显示

roslaunch vins vins_rviz.launch

VINS学习01——VINS_Fusion官方教程翻译解读_第1张图片
这三条曲线是显示的重点

②启动数据融合(单目相机和IMU)的核心算法

 rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 

注意catkin_ws改成自己工作空间名字
可以看到终端输出image的图片格式,以及初始化参数 相机外参和重力环境(这个是针对我们一会要用的数据包MH_01_easy.bag)
③回环代码(可选)*

rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 

建议加不加回环分别运行一次 做个对比
④运行bag包

rosbag play  YOUR_DATASET_FOLDER/MH_01_easy.bag

⑤最终效果
不加回环
VINS学习01——VINS_Fusion官方教程翻译解读_第2张图片
其中VIOGroup比较重要的话题就是 定位路径,当前点云,历史点云,现在图片及特征角点

加回环VINS学习01——VINS_Fusion官方教程翻译解读_第3张图片
左下角是检测到回环对应的图片 右侧也可以看出来回环曲线和VIO曲线有一定区别。
但是Globalgroup始终没有显示,我看了一下rqt_graph 确实是没有发布这个话题消息,在后边有GPS的part可能会用到

2.2.3 双目相机+IMU

①启动rviz

roslaunch vins vins_rviz.launch

②启动双目+IMU的融合代码

rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

③回环检测(可选)
开着回环观察红绿曲线的区别,还是可以对整体算法的理解有一些加深的

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

2.2.4 双目相机

①启动rviz

roslaunch vins vins_rviz.launch

②启动双目定位代码

rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 

③回环(可选)

rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 

④运行bag

rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

2.2.5 定位精度

这个数据集真值获取有障碍,先放一放

2.3 无人车KITTI数据集

官方教程上给了两个KITTI数据集的运行demo,但是我的虚拟机放不开17GB的包,所以没有运行

2.4 无人车demo演示

2.4.1 数据集

链接
数据包名:car.bag
数据包大小:3.9GB
数据包话题(没有真值)

topics:      /cam0/image_raw    5702 msgs    : sensor_msgs/Image
             /cam1/image_raw    5703 msgs    : sensor_msgs/Image
             /imu0             57030 msgs    : sensor_msgs/Imu

2.4.2 双目相机+IMU融合

①运行RVIZ

roslaunch vins vins_rviz.launch

②启动双目+IMU融合定位算法

rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/vi_car/vi_car.yaml 

③加入回环(可选)

rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/vi_car/vi_car.yaml

④运行bag包

rosbag play YOUR_DATASET_FOLDER/car.bag

3. 参考文献

VINS_Fusion官方教程 https://github.com/HKUST-Aerial-Robotics/VINS-Fusion

4.下篇预告

  1. 将VINS_Fusion 代码应用在自己设备上的修改流程
  2. 这两组实验的真值我都没获取成功,后续用在自己设备上做2.2.2~2.2.4的定位精度验证

你可能感兴趣的:(相机SLAM,学习)