在Ubuntu20.04运行VINS-Fusion

2023-05-16

准备工作:

虚拟机
ubuntu:20.04
ROS:Neotic

Ubuntu20.04+ROS Noetic的安装与配置可以参考这篇文章,以下步骤在完成上述安装的基础上进行。

一、 安装ceres solver1.14.0

目前官网最新的版本是2.1.0,但是我安装这个版本时编译较慢,会出现一些莫名的问题,于是选择安装1.14.0。

1.安装相关依赖

sudo apt install libgoogle-glog-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev liblapack-dev libcxsparse3.1.2 libgflags-dev libgtest-dev

2.下载ceres-solver-1.14.0,然后解压

#点击上面的链接,或者直接使用如下命令行都可以安装ceres-solver-1.14.0
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
#在压缩包在的目录下打开终端,输入如下命令解压
tar zxf ceres-solver-1.14.0.tar.gz

3.在解压后的同级目录下,编译安装

mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.14.0
make -j2
sudo make install

PS:make速度较慢的问题——考虑是内存不足(我给虚拟机分配的内存只有2G),于是增加swap 分区,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。

  • 创建swap分区
#count的大小就是增加的swap空间块,bs是块大小,所以空间大小是bs*count=8192MB
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192
#把刚才空间格式化成swap格式
sudo mkswap /swapfile
#使用刚才创建的swap空间
sudo swapon /swapfile
#重新make
make
#释放临时加的内存空间
sudo swapoff /swapfile
sudo rm /swapfile

二、下载编译Vins-Fusion

1.创建工作空间vins/src,在src目录下下载Vins-Fusion

git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git

2.在vins目录下编译

catkin_make

解决编译时的错误:

①ROS noetic版本中自带的OpenCV4和VINS-mono中需要使用的OpenCV3冲突的问题。

修改camera_model文件包:

在camera_model包中的头文件Chessboard.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>
在CameraCalibration.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>

②报错:

error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

将报错文件上的CV_FONT_HERSHEY_SIMPLEX参数改为cv::FONT_HERSHEY_SIMPLEX

③报错:

error: ‘CV_RGB2GRAY’ was not declared in this scope

在报错头文件里添加

#include <opencv2/imgproc/types_c.h>

④报错:

error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope

将报错文件上的CV_LOAD_IMAGE_GRAYSCALE改为cv::IMREAD_GRAYSCALE

3.下载EuroC数据集的MH_01_easy.bag(常用slam数据集)

官网下载速度较慢,于是通过百度云下载,在上文链接中选择对应的文件即可下载,将下载后的文件保存到设置的共享文件夹F:\Shared中的EuroC文件夹中(共享文件夹路径在虚拟机的设置中进行配置,即windows和虚拟机都能访问的文件夹)
在这里插入图片描述
在终端输入如下命令查看共享文件夹是否挂载成功

cd /mnt/hgfs
ls

在这里插入图片描述
注:若已经设置共享文件夹,但进入mnt/hgfs中找不到文件夹,可以使用下述指令

# 查看设置共享文件夹是否成功
vmware-hgfsclient
# 安装open-vm-tools
sudo apt-get install open-vm-tools
# 挂载共享文件夹
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o allow_other
# 再次查看是否挂载成功
cd /mnt/hgfs
ls

4.在vins目录下打开五个终端,分别输入如下指令
单目+IMU:

roscore
source ./devel/setup.bash
roslaunch vins vins_rviz.launch
source ./devel/setup.bash
rosrun vins vins_node ./src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
source ./devel/setup.bash
rosrun loop_fusion loop_fusion_node ./src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
source ./devel/setup.bash
# 以下路径需要根据你保存EuroC的路径进行修改(保留/mnt/hgfs/)
rosbag play /mnt/hgfs/Shared/EuroC/MH_01_easy.bag

双目+IMU:

roscore
source ./devel/setup.bash
roslaunch vins vins_rviz.launch
source ./devel/setup.bash
rosrun vins vins_node ./src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
source ./devel/setup.bash
rosrun loop_fusion loop_fusion_node ./src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
source ./devel/setup.bash
rosbag play /mnt/hgfs/Shared/EuroC/MH_01_easy.bag

双目:

roscore
source ./devel/setup.bash
roslaunch vins vins_rviz.launch
source ./devel/setup.bash
rosrun vins vins_node ./src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
source ./devel/setup.bash
rosrun loop_fusion loop_fusion_node ./src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
source ./devel/setup.bash
rosbag play /mnt/hgfs/Shared/EuroC/MH_01_easy.bag

注:若出现错误[rviz-3] process has died,则输入如下指令

export LIBGL_ALWAYS_SOFTWARE=1

三、最终效果

单目+IMU:
rqt_graph:
在这里插入图片描述

rviz:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Ubuntu20.04运行VINS-Fusion 的相关文章

随机推荐