目錄
VINS-Fusion 簡介
安裝
VINS-Fusion 源碼安裝
運行數據集
雙目模式
單目+IMU 模式
雙目+IMU 模式
D455 相機實際運行
雙目+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