开源
VINS-Fusion:基于优化的多传感器状态估计器
来源:元经纪     阅读:840
网站管理员
发布于 2023-03-20 07:25
查看主页

概述

VINS-Fusion 是一种基于优化的多传感器状态估计器,可为自主应用(无人机、汽车和 AR/VR)实现准确的自定位。VINS-Fusion 是VINS-Mono的扩展,它支持多种视觉惯性传感器类型(单摄像头 + IMU、立体摄像头 + IMU,甚至仅立体摄像头)。

1.先决条件

1.1 UbuntuROS

Ubuntu 64 位 16.04 或 18.04。ROS 动力学或旋律。ROS安装

1.2. Ceres 求解器

按照Ceres 安装。

2. 构建 VINS-Fusion

克隆存储库和 catkin_make:

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

    cd ~/catkin_ws/src
    git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

(如果这一步失败,请尝试找另一台系统干净的电脑或重装Ubuntu和ROS)

3. EuRoC 示例

将EuRoC MAV 数据集下载到 YOUR_DATASET_FOLDER。以 MH_01 为例,您可以使用三种传感器类型(单目相机 + IMU、立体相机 + IMU 和立体相机)运行 VINS-Fusion。打开四个终端,分别运行vins odometry、visual loop closure(optional)、rviz和play包文件。绿色路径是VIO里程计;红色路径是视觉闭环下的里程计。

3.1 单目相机+IMU

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
    (optional) 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

3.2 立体相机+IMU

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml 
    rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

3.3 立体相机

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 
    rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

4. KITTI 例子

4.1 KITTI 里程计(立体声)

将KITTI 里程计数据集下载到 YOUR_DATASET_FOLDER。以序列00为例,打开两个终端,分别运行vins和rviz。(我们在没有闭环功能的情况下在 KITTI 基准测试中评估了里程计)

    roslaunch vins vins_rviz.launch
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml
    rosrun vins kitti_odom_test ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/ 

4.2 KITTI GPS 融合(立体声+GPS)

将KITTI 原始数据集下载到 YOUR_DATASET_FOLDER。以2011_10_03_drive_0027_synced为例。打开三个终端,分别运行vins、global fusion和rviz。绿色路径是VIO里程计;蓝色路径是GPS全球融合下的里程计。

    roslaunch vins vins_rviz.launch
    rosrun vins kitti_gps_test ~/catkin_ws/src/VINS-Fusion/config/kitti_raw/kitti_10_03_config.yaml YOUR_DATASET_FOLDER/2011_10_03_drive_0027_sync/ 
    rosrun global_fusion global_fusion_node

5. VINS-Fusion上车演示

将汽车包下载到 YOUR_DATASET_FOLDER。打开四个终端,分别运行vins odometry、visual loop closure(optional)、rviz和play包文件。绿色路径是VIO里程计;红色路径是视觉闭环下的里程计。

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/vi_car/vi_car.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/vi_car/vi_car.yaml 
    rosbag play YOUR_DATASET_FOLDER/car.bag

6. 使用你的设备运行

VIO 不仅仅是一种软件算法,它非常依赖硬件质量。对于初学者,我们建议您使用专业设备运行 VIO,其中包含全局快门相机和硬件同步。

6.1 配置文件

为您的设备编写配置文件。可以以 EuRoC 和 KITTI 的配置文件为例。

6.2 相机标定

VINS-Fusion 支持多种相机模型(针孔、梅、等距)。您可以使用相机模型来校准相机。我们将一些示例数据放在 /camera_models/calibrationdata 下,告诉您如何校准。

cd ~/catkin_ws/src/VINS-Fusion/camera_models/camera_calib_example/
rosrun camera_models Calibrations -w 12 -h 8 -s 80 -i calibrationdata --camera-model pinhole

7. 码头支持

为了进一步促进构建过程,我们在代码中添加了 docker。Docker环境就像一个沙箱,从而使我们的代码环境无关。要使用 docker 运行,首先要确保你的机器上安装了ros和docker 。然后将您的帐户添加到docker分组依据sudo usermod -aG docker $YOUR_USER_NAME如果出现错误,请重新启动终端或注销并重新登录Permission denied,键入:

cd ~/catkin_ws/src/VINS-Fusion/docker
make build

请注意,docker 构建过程可能需要一段时间,具体取决于您的网络和机器。VINS-Fusion 成功构建后,您可以使用脚本运行 vins estimator run.sh。脚本run.sh可以采用多个标志和参数。Flag-k意为KITTI,-l代表loop fusion,-g代表global fusion。您可以通过 获取使用详情./run.sh -h。以下是此脚本的一些示例:

# Euroc Monocualr camera + IMU
./run.sh ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

# Euroc Stereo cameras + IMU with loop fusion
./run.sh -l ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

# KITTI Odometry (Stereo)
./run.sh -k ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/

# KITTI Odometry (Stereo) with loop fusion
./run.sh -kl ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/

#  KITTI GPS Fusion (Stereo + GPS)
./run.sh -kg ~/catkin_ws/src/VINS-Fusion/config/kitti_raw/kitti_10_03_config.yaml YOUR_DATASET_FOLDER/2011_10_03_drive_0027_sync/

在 Euroc 情况下,您需要打开另一个终端并播放您的包文件。如果您需要修改代码,只需./run.sh在更改后使用适当的 augments 重新运行即可。

[/hidecontent]

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 开源
爱上数字人是否是爱情?全球首次数字人智辩大赛举行
苏州工业园区首个人工智能体验馆正式启用
首发骁龙8Gen4!小米15发布时间曝光:雷军把配置拉满 跟3999元说再见
欧洲自行车展推介绿色出行新品

首页

分类

定制方案

消息

我的