VINS_Fusion 是一个基于优化的多传感器融合定位算法,由港科大开源,在VINS_Mono基础上改进。
融合传感器包括:IMU,双目相机,GPS
融合方式:IMU+单目,IMU+双目,纯双目
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前加上数据集链接、数据集名称、数据集大小、数据集内话题
链接
数据包下载名称: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 //动捕真值无姿态
①打开rviz显示
roslaunch vins vins_rviz.launch
②启动数据融合(单目相机和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
⑤最终效果
不加回环
其中VIOGroup比较重要的话题就是 定位路径,当前点云,历史点云,现在图片及特征角点
加回环
左下角是检测到回环对应的图片 右侧也可以看出来回环曲线和VIO曲线有一定区别。
但是Globalgroup始终没有显示,我看了一下rqt_graph 确实是没有发布这个话题消息,在后边有GPS的part可能会用到
①启动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
①启动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
这个数据集真值获取有障碍,先放一放
官方教程上给了两个KITTI数据集的运行demo,但是我的虚拟机放不开17GB的包,所以没有运行
链接
数据包名: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
①运行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
VINS_Fusion官方教程 https://github.com/HKUST-Aerial-Robotics/VINS-Fusion
- 将VINS_Fusion 代码应用在自己设备上的修改流程
- 这两组实验的真值我都没获取成功,后续用在自己设备上做2.2.2~2.2.4的定位精度验证