见前文
GitHub地址:
GitHub - ceres-solver/ceres-solver: A large scale non-linear optimization library
#14.04
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libeigen3-dev libgtest-dev
#18.04
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libeigen3-dev libgtest-dev
git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver/
mkdir build
cd build
cmake ..
make
sudo make install
记得安装依赖项,记得最后的make install
18.04报错“无法定位软件包 libcxsparse3.1.2”改成: libcxsparse3
(参考https://blog.csdn.net/weixin_42744670/article/details/82797586)
创建ros空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
安装VINS_Fusion
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
编译
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
catkin_make的时候遇到报错: c++ internal compiler error program cc1plus
之前报错查找catkin_make的原因找了好久,以为是各种相关项版本的问题,结果是因为虚拟机分配的内存不足,采用博文提到的https://blog.csdn.net/fenquegong2126/article/details/80988452的方法,报错前用的4G内存,改成8G内存,跑通了。
[XXX] is neither a launch file in package [XXX] nor is [XXX] a launch file name报错信息解决方法
catkin_make
source ~/catkin_ws/devel/setup.bash
跑通实例:使用EuRoc数据集MH_01_easy.bag
下载EuRoC MAV数据集到YOUR_DATASET_FOLDER。以MH_01为例,可以使用三种传感器类型(单目相机+ IMU、立体声相机+ IMU和立体声相机)运行VINS-Fusion。打开四个终端,分别运行vins里程计、可视闭环(可选)、rviz和播放包文件。绿色路径为VIO里程计;红色路径为目视闭环下的里程计。下载EuRoC MAV数据集到YOUR_DATASET_FOLDER。以MH_01为例,可以使用三种传感器类型(单目相机+ IMU、立体声相机+ IMU和立体声相机)运行VINS-Fusion。打开四个终端,分别运行vins里程计、可视闭环(可选)、rviz和播放包文件。绿色路径为VIO里程计;红色路径为目视闭环下的里程计。
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
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
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
报错opencv没有安装
报错缺少cv_bridge,补充安装包 sudo apt-get install ros-melodic-cv-bridge
1.查看自己的OPENCV版本
pkg-config --modversion opencv
2、修改报错代码目录上一层的CMakelist opencv包的版本
将这个:find_package( OpenCV REQUIRED )
替换为(自己的版本):find_package( OpenCV 3 REQUIRED )
http://www.cvlibs.net/datasets/kitti/raw_data.php
国外源打不开,感谢这个博主提供的国内源下载:https://blog.csdn.net/weixin_43599336/article/details/86533572
泡泡链接(百度网盘):https://www.sohu.com/a/219232053_715754
或者
https://www.dalipan.com/detail/40c8f99ba2120a493a148f8332094668
下载KITTI里程表数据集到YOUR_DATASET_FOLDER。以序列08为例,打开两个终端,分别运行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/08/
ps:本人使用的是虚拟机,rviz有时会莫名其妙的退出,出现
[rvizvisualisation-2] process has died [pid 28370, exit code -11, cmd /opt/r
建议关掉虚拟机的加速3d图形(关机状态下操作)
下载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
下载汽车包到YOUR_DATASET_FOLDER。打开四个终端,分别运行vins里程计、可视闭环(可选)、rviz和播放包文件。绿色路径为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
VIO不仅是一种软件算法,它严重依赖于硬件质量。对于初学者,我们建议您使用专业设备运行VIO,其中包含全局快门相机和硬件同步。
为你的设备写一个配置文件。可以以EuRoC和KITTI的配置文件为例。
VINS-Fusion支持多种相机模型(针孔,mei,等距)。您可以使用相机模型校准您的相机。我们将一些示例数据放在/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
为了进一步简化构建过程,我们在代码中添加了docker。Docker环境就像一个沙盒,因此使我们的代码与环境无关。要运行docker,首先确保在您的机器上安装了ros和docker。然后通过sudo usermod -aG docker $YOUR_USER_NAME将您的帐户添加到docker组。如果出现权限拒绝错误,请重新启动终端或注销并重新登录,输入:
cd ~/catkin_ws/src/VINS-Fusion/docker
make build
注意,构建docker的过程可能需要一段时间,这取决于您的网络和机器。成功构建vins - fusion后,可以使用run.sh脚本运行vins估计器。脚本run.sh可以接受多个标志和参数。Flag -k表示KITTI, -l表示环路融合,-g表示全局融合。您可以通过./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即可。