在Ubuntu20.04运行VINS-Fusion

准备工作:

虚拟机
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,然后解压


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分区

sudo dd if=/dev/zero of=/swapfile bs=1M count=8192

sudo mkswap /swapfile

sudo swapon /swapfile

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
#include
在CameraCalibration.h中添加
#include
#include

②报错:

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

④报错:

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和虚拟机都能访问的文件夹)

在Ubuntu20.04运行VINS-Fusion
在终端输入如下命令查看共享文件夹是否挂载成功
cd /mnt/hgfs
ls

在Ubuntu20.04运行VINS-Fusion
注:若已经设置共享文件夹,但进入mnt/hgfs中找不到文件夹,可以使用下述指令

vmware-hgfsclient

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

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:

在Ubuntu20.04运行VINS-Fusion

rviz:

在Ubuntu20.04运行VINS-Fusion

Original: https://blog.csdn.net/m0_52457734/article/details/125343557
Author: 饥饿的帕尼尼
Title: 在Ubuntu20.04运行VINS-Fusion

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/520286/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球