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


    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
    
    • 1

    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   //动捕真值无姿态
    
    • 1
    • 2
    • 3
    • 4

    2.2.2 单目相机+IMU融合

    ①打开rviz显示

    roslaunch vins vins_rviz.launch
    
    • 1

    在这里插入图片描述
    这三条曲线是显示的重点

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

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

    注意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 
    
    • 1

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

    rosbag play  YOUR_DATASET_FOLDER/MH_01_easy.bag
    
    • 1

    ⑤最终效果
    不加回环

    其中VIOGroup比较重要的话题就是 定位路径,当前点云,历史点云,现在图片及特征角点

    加回环在这里插入图片描述
    左下角是检测到回环对应的图片 右侧也可以看出来回环曲线和VIO曲线有一定区别。
    但是Globalgroup始终没有显示,我看了一下rqt_graph 确实是没有发布这个话题消息,在后边有GPS的part可能会用到

    2.2.3 双目相机+IMU

    ①启动rviz

    roslaunch vins vins_rviz.launch
    
    • 1

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

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

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

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

    ④运行代码包

    rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag
    
    • 1

    2.2.4 双目相机

    ①启动rviz

    roslaunch vins vins_rviz.launch
    
    • 1

    ②启动双目定位代码

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

    ③回环(可选)

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

    ④运行bag

    rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag
    
    • 1

    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
    
    • 1
    • 2
    • 3

    2.4.2 双目相机+IMU融合

    ①运行RVIZ

    roslaunch vins vins_rviz.launch
    
    • 1

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

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

    ③加入回环(可选)

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

    ④运行bag包

    rosbag play YOUR_DATASET_FOLDER/car.bag
    
    • 1

    3. 参考文献

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

    4.下篇预告

    1. 将VINS_Fusion 代码应用在自己设备上的修改流程
    2. 这两组实验的真值我都没获取成功,后续用在自己设备上做2.2.2~2.2.4的定位精度验证
  • 相关阅读:
    力扣(LeetCode)799. 香槟塔(C++)
    暄桐林曦老师的三个“知行”心得,帮你少走弯路
    页面展示多个svg时有时显示异常的问题
    K210基础实验——点亮LED灯
    能链科技获评中国最具投资价值企业榜单TOP10
    4步教你做一个煤气安全提示神器
    PTA 1064 朋友数(Python3)
    navicat无法连接mysql超详细处理方法
    十一、MySQL日志
    KingBase库模式表空间和客户端认证(kylin)
  • 原文地址:https://blog.csdn.net/weixin_44168457/article/details/127745121