VINS-Fusion 简介、安装、编译、数据集/相机实测

目录

[VINS-Fusion 简介](#VINS-Fusion 简介)

安装

[VINS-Fusion 源码安装](#VINS-Fusion 源码安装)

运行数据集

双目模式

[单目+IMU 模式](#单目+IMU 模式)

[双目+IMU 模式](#双目+IMU 模式)

[D455 相机实际运行](#D455 相机实际运行)

[双目+IMU 模式](#双目+IMU 模式)


VINS-Fusion 简介

VINS-Fusion 是继 VINS-Mono 和 VINS-Mobile(单目视觉惯导 SLAM 方案)后,香港科
技大学沈劭劼老师团队开源的双目视觉惯导 SLAM 方案,VINS-Fusion 是一种基于优化的
多传感器状态估计器,可实现自主应用(无人机,汽车和 AR / VR)的精确自定位。 VINS
Fusion 是 VINS-Mono 的扩展,支持多种视觉惯性传感器类型(单目摄像机+ IMU,双目摄
像机+ IMU,甚至仅限双目摄像机)。开源项目组还展示了将 VINS 与 GPS 融合的模组示例。

安装

安装好 Ubuntu 及其对应的 ROS 版本,这里我们使用的是 Ubuntu18.04,ROS melodic
ceres 安装
1、先安装所有的依赖项
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install libsuitesparse-dev
2、再下载、安装 Ceres
建议下载稳定版本 ceres
不要追求下载最新版本,因为最新版对编译器要求较高。比如 Ceres Solver 2.2 需要 C++17
编译器。我这里使用的是 ceres-solver-1.14.0
tar zxf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
make -j3
make test # 可选,用于测试
sudo make install
3、测试是否正常
Ceres 自带有测试数据,我们在 build 目录输入
bin/simple_bundle_adjuster ../data/problem-16-22106-pre.txt
功能是用 DENSE_SCHUR 线性优化器迭代优化
成功运行后,输出如下所示,表示成功安装 ceres

VINS-Fusion 源码安装

cd ~/vins_catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
cd ../
catkin_make
将工作空间添加到环境变量,这样就不用每次打开一个终端都要 source 一次了,可以一劳
永逸的解决环境问题
打开终端,执行
echo "source ~/vins_catkin_ws/devel/setup.bash" >> ~/.bashrc
#这样就不用每次打开一个新终端都要 source 一次了
相当于打开 gedit ~/.bashrc 在文件末尾添加
source ~/vins_catkin_ws/devel/setup.bash
然后在终端,输入 source ~/.bashrc

运行数据集

双目模式

ROS 模式运行双目数据集,以 EuROC 为例

启动

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_stereo_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_stereo_config.yaml # 带闭环检测,可选
rosbag play ~/SLAM/DataSets/EuRoC/MH_03_medium.bag

单目+IMU 模式

ROS 模式运行单目数据集,以 EuROC 为例

启动

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_mono_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_mono_imu_config.yaml # 带闭环检测,可选
rosbag play ~/SLAM/DataSets/EuRoC/MH_03_medium.bag

双目+IMU 模式

ROS 模式运行单目数据集,以 EuROC 为例

启动

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_stereo_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins_catkin_ws/src/VINS
Fusion/config/euroc/euroc_stereo_imu_config.yaml # 带闭环检测,可选
rosbag play ~/SLAM/DataSets/EuRoC/MH_03_medium.bag

D455 相机实际运行

首先需要利用前面介绍的相机-IMU 标定方法提前标定好相机。
VINS-Fusion/config 文件夹下面有作者提供的很多配置文件,包括 realsense_d435i,我们复
制后改名为 realsense_d455 并修改其中的配置文件

cam0:T_cam_imu 表示的是 IMU 到相机 0 的变换矩阵,
body_T_cam0 表示相机 0 到 IMU 矩阵,所以它的值应该是 T_cam_imu 矩阵取逆
可以使用在线计算矩阵的逆 http://www.yunsuan.info/cgi-bin/matrix_inverse.py

source ~/realsense_catkin_ws/devel/setup.bash
标定参数数字和逗号之间不要有空格,否则可能会报错误 OpenCV Error: Parsing
error
准备好标定文件,路径改好,topic 改好

双目+IMU 模式

启动相机
roslaunch realsense2_camera rs_camera.launch
#启动 rviz
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins_catkin_ws/src/VINS
Fusion/config/realsense_d455/realsense_stereo_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins_catkin_ws/src/VINS
Fusion/config/realsense_d455/realsense_stereo_imu_config.yaml # 带闭
环检测,可选
参考:https://blog.csdn.net/qq_40186909/article/details/113104595

相关推荐
格林威2 天前
常规点光源在工业视觉检测上的应用
大数据·人工智能·数码相机·计算机视觉·视觉检测·制造·视觉光源
lxmyzzs2 天前
成功解决NVIDIA Jetson docker环境下Opencv+Gstreamer 无法对rtsp相机拉流问题
人工智能·数码相机·opencv
猫林老师3 天前
HarmonyOS多媒体开发:自定义相机与音频播放器实战
数码相机·音视频·harmonyos
黄卷青灯773 天前
标定参数从相机模组读出来
数码相机·相机内参
黄卷青灯773 天前
标定系数为什么会存储在相机模组里面,在标定的时候,算法是在割草机的X3板上运行的啊?
数码相机·算法·相机内参
黄卷青灯773 天前
相机模组,模组是什么意思?
数码相机·相机模组
格林威3 天前
近红外工业相机的简单介绍和场景应用
人工智能·深度学习·数码相机·计算机视觉·视觉检测·制造·工业相机
格林威4 天前
偏振相机在半导体制造的领域的应用
人工智能·深度学习·数码相机·计算机视觉·视觉检测·制造
学slam的小范4 天前
【Ubuntu18.04 D435i RGB相机与IMU标定详细版(一)】
数码相机
学slam的小范4 天前
【Ubuntu18.04 D435i RGB相机与IMU标定详细版(三)】
数码相机