一、基本介绍
1. what is vins
HUKST Aerial Robotics Group 开发的 visual-inertial slam 算法,覆盖了预积分,边缘化,FEJ 等理论,是学习 VIO 很好的学习资料
vins-mono 是初始版本,支持单目相机和IMU融合,后来在2019开源了支持双目版本的 VINS-Fusion 版本
2. github
二、简单上手
1. 必备软件
(1). ROS (Ubuntu 16.04. ROS Kinetic)
(2). Ceres Solver (安装至标准路径,/usr/local/)
(3). Others: Eigen, OpenCV
2. catkin_make
ROS (常见步骤)
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ../
catkin_make
source ./devel/setup.bash
编译成功截图
3. 数据集下载
网上有人整理了百度云链接,参考 SLAM中常用数据集下载链接(TUM KITTI DSO Mono EuRoC)
4. 运行示例
roscore &
roslaunch vins_estimator vins_rviz.launch # rviz 可视化
roslaunch vins_estimator euroc.launch # 开启 vins
rosbag play xxx/MH_01_easy.bag # play rosbag
5. 问题修复
(1). eigen 版本不对
`sudo apt-get install libeigen3-dev` 安装的是eigen3.2.x, ceres 要求安装 eigen3.3.+
ubuntu安装eigen3.3.7_reason的博客-CSDN博客_ubuntu安装eigen3
(2). error: ‘integer_sequence’ is not a member of ‘std’
需要安装 ceres 1.14.0
(3). can't locate node
ERROR: cannot launch node of type [feature_tracker/feature_tracker]: can't locate node [feature_tracker] in package [feature_tracker]
ERROR: cannot launch node of type [vins_estimator/vins_estimator]: can't locate node [vins_estimator] in package [vins_estimator]
ERROR: cannot launch node of type [pose_graph/pose_graph]: can't locate node [pose_graph] in package [pose_graph]
<1>. 可能原因1: opencv 版本问题,can't roslaunch vins_estimator euroc.launch · Issue #75 · HKUST-Aerial-Robotics/VINS-Mono · GitHub
<2>. 可能原因2: ~/catkin_ws/src 目录下有其他非 ros 工程,编译时使用的是 "catkin_make_isolated" 命令,将该 非 ros工程移除到 catkin_ws 外,然后 “catkin_make” 编译即可 (我的就是这种情况)
最终的运行结果如下:
三、高级进阶
Vins-Mono 论文 && Coding 系列教程,持续更新中~,欢迎阅读