一、安装
首先感谢站内大佬的博文,在debug方面有帮助,以及感谢在百度网盘提供数据集,官网是真的难下Ubuntu20.04——一篇文章让你从零配置VINS_Mono环境以及运行(2023年最新)_ubuntu20.04 vins mono-CSDN博客
我这里使用的是ubantu18.04和20.04两个版本,流程是一样的,但是ros版本不同,18.04适配melodic,而20.04版本适配noetic。
首先是新建一个工作空间catwin_ws并打开:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
然后进入src目录下,git vins-mono(我这里选择直接在git官网下,把下好的文件拖到src目录下,直接git开了vpn也下不来)
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
安装依赖:OpenCV、ceres和engin(18.04我装的OpenCV是3.4.14,而20.04装的OpenCV是4,注意甄别)
可以先检查一下当前OpenCV版本:
pkg-config --modversion opencv #适合4以下版本
pkg-config --modversion opencv4 #适合4版本
没有的话就补一下,有的话看看版本适不适配,不适配就升级/降级。
安装eigen:
sudo apt-get install libeigen3-dev
安装ceres(好像18.04和20.04有的不太一样,记不太清了,如果遇到问题看报错提示再解决):
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev libsuitesparse-dev
sudo apt-get install libcxsparse3
sudo apt-get install libceres-dev
ros安装官网:https://wiki.ros.org/Installation/Ubuntu
因为ros官网有详细的安装方法,这边也贴一下,以melodic为例,如果你版本是20.04的话自行修改为noetic即可:
sudo sh -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' # 这边建议使用镜像源,否则下载会很慢
sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -sudo apt update
sudo apt install ros-melodic-desktop-full
# 安装完无误后添加路径、环境
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
source /opt/ros/melodic/setup.bash
安装期间如果发现有报错缺少什么库,直接按提示安装缺少的即可;如果是有链式反应的库(比如缺a库,装a库时候发现又缺了b,以此类推),这种建议使用aptitude查找:
# 安装aptitude
sudo apt install aptitude -y
# 使用aptitude安装melodic,本人是在安装ros-melodic-desktop-full时候报错缺少链路库,所以这里这样安装
sudo aptitude install ros-melodic-desktop-full
# 如果依赖层级太多(比如 perception-pcl 依赖 A,A 依赖 B,B 依赖 C...),手动安装效率低
sudo aptitude install ros-melodic-perception-pcl # 本人安装时候缺这个,就以此举例
看到报错信息如下:
The following packages have unmet dependencies:
libpq-dev : Depends: libpq5 (= 10.23-0ubuntu0.18.04.2) but 14.0-1.pgdg18.04+1 is installed
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) libgdal-dev [Not Installed]
2) libpcl-dev [Not Installed]
3) libpq-dev [Not Installed]
4) libvtk6-dev [Not Installed]
5) libvtk6-qt-dev [Not Installed]
6) ros-melodic-pcl-conversions [Not Installed]
7) ros-melodic-pcl-ros [Not Installed]
8) ros-melodic-perception-pcl [Not Installed]
Accept this solution? [Y/n/q/?]
libpq-dev依赖的libpq5版本与当前系统已安装的版本不匹配,导致依赖冲突,需要降级libpq5到官方指定版本,aptitude最后交互界面输入n拒绝当前方案(当前方案是 “不安装所有依赖”),aptitude自动提供下一个解决方案:降级到libpq5并安装libpq-dev及其他依赖,此时再选择y。
安装完后再执行下面命令,发现不再出现缺库报错,正常安装ros-melodic-desktop-full。
sudo aptitude install ros-melodic-desktop-full
以上都确定无误后,在src目录下执行:
catkin_make
等待一段时间,没有报错且看到有vins_estimator说明安装完成。
如果看到报错类似于
c++: fatal error: 已杀死 signal terminated program cc1plus
这个时候先检查一下显存够不够,如果是8g显存跑不动j8,在make时候选择j2或者j1(最保险)
catkin_make -j2 # 8g显存
catkin_make -j4 # 16g显存
catkin_make -j1 # 最保险但是也最慢
二、运行
先打开终端一,激活roscore:
roscore
新建终端,在终端二里面输入:
source devel/setup.bash
roslaunch vins_estimator euroc.launch
这个里面会有一个waiting for,这很正常,因为还没有执行包,程序没有任何可以处理的图像。
新开一个终端,此目录为src下,输入:
source devel/setup.bash
rosbag play MH_01_easy.bag #实际应该是rosbag play YOUR_PATH_TO_DATASET.bag,但我这包放在catkin_ws目录下
我们可以看到开始解析包了,duration是持续更新的,此时我们返回第二个终端,可以发现imu初始化完成,position也在动态更新:
至此,我们可以认为环境配置完成。