前言
作为一名才接触视觉SLAM的菜鸟,除了捧着高翔老师的书看着那晦涩难懂的代码与理论,就是跟着高翔老师的课程囫囵吞枣地学着。但是似乎总不见成效,时常想象着何时可以像大佬们一样建图。
Vins-mono可算的上好好地满足了一把我的虚荣心吧。这篇文章也是简单地分享一下我在配置Vins-mono上的一点小小的经验吧。
ROS系统的配置
在GitHUb
上,官方给出了推荐的配置
Ubuntu and ROS Ubuntu 16.04. ROS Kinetic.
但是作为一个感受野只局限于顶部标题的憨憨,我果断选择下载了代码,并开开心心地下载 ROS Kinetic,结果显然失败了,我的系统版本为18.04.1(在终端中输入uname -a 查看),无法下载ROS Kinetic.好吧,那就下载适配的版本吧。
1.建议首先换源,步骤如下:
1.备份相关配置 cp /etc/apt/source.list /etc/apt/source.list.bak
2.vim /etc/apt/source.list
在弹出的窗口中输入国内镜像的相关配置。
清华源相关配置如下:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
阿里源配置如下:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
接下来更新一下
sudo apt-get update
sudo apt-get upgrade
现在就可以安装ROS了,首先根据自己的系统选择相应的ROS系统(这里可以查看ROS版本,)
换源并添加密钥,密钥可以在ROS官网免费获取
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
再次更新
sudo apt-get update
下载对应版本的ROS,这里下载的是melodic
sudo apt-get install ros-melodic-desktop-full
安装完成后,初始化
sudo rosdep init
但可能会遇到rosdep command not found的错误
此时,首先使用
sude apt-get rospack-tools
再使用初始化
报错Website may be down
这是因为http://raw.githubusercontent.com被墙了,因此采用以下方法
#打开hosts文件
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133 raw.githubusercontent.com
#保存后退出再尝试
sudo rosdep init
再使用
rosdep update
配置ROS环境
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装依赖项
sudo apt-get install ros-melodic-cv-bridge ros-melodic-tf ros-melodic-message-filters ros-melodic-image-transport
注意,此时依赖项对应了Vins-mono中的,因此在后续Vins-mono的配置中不必再重复使用
sudo apt-get install ros-YOUR_DISTRO-cv-bridge ros-YOUR_DISTRO-tf ros-YOUR_DISTRO-message-filters ros-YOUR_DISTRO-image-transport
完成上述步骤后,输入roscore,查看ros的布置是否成功
ROS配置真是个大坑,但好在有各位大佬的理论指导,在历时多次失败后,我终于成功了,放张图表示一下我激动的心情。
依赖库的配置
在配置好ROS系统后,我们终于可以进行到Vins-mono配置的第二步了,
1.安装Eigen,按照高翔老师书中的方法
输入
sudo apt-get install libeigen3-dev
完成安装
2.安装opencv,
从github上下载oepncv
与opencv-contrib
Vins-mono推荐配置为3.3.1版本,我选的是3.4版本。
下载下来opencv的zip文件包后,解压
unzip opencv-3.4.0.zip
进入到解压后的文件包中,由于我已经安装好cmake了,在此不多叙述
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
创建文件夹
mkdir build
cd build
cmake
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
完成后输入
sudo make
等待完成后再输入
sudo make install
完成编译,后续以及Opencv的编译环境具体可参考博客
3.安装Ceres
安装依赖
sudo apt-get install liblapack-dev
sudo apt-get install libsuitesparse-dev
sudo apt-get install libcxsparse3.1.2
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev libgtest-dev
下载Ceres
进入Ceres的文件夹下
编译Ceres
mkdir build
cd build
cmake ..
sudo make install
关于这些依赖的配置十分费时,还是应该耐心等待的。
Vins_mono的编译
终于到了最后的步骤了,激动激动。
首先下载EuRoC数据集
,按照官方的实例,我选择下载Machine Hall 01的bag包,这也是官方教程里的,下载时可能要费些时间。
下载完成后,创建ROS工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
编译VINS
首先将前面下载的Vins-mono的代码移动到src文件夹下
再输入以下命令
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
运行VINS
首先在一个终端中启动ROS核心
roscore
打开三个终端,分别输入
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play YOUR_PATH_TO_DATASET/MH_01_easy.bag
如果报错,可能是因为需要每次运行前都要用source指定包,为了方便我们的使用,可以采用以下方式再运行上述代码
打开一终端,输入
sudo gedit ~/.bashrc
在弹出窗口中输入
source ~/catkin_ws/devel/setup.bas
保存并退出
再运行以上代码,运行成功!!!!
终于可以好好地装模做样地炫耀一番了,激动啊!!!!
但是,朋友突然泼了一盆冷水:“你这不行啊,只运行起来他们的数据集连入门都算不上啊!”
我先抑郁一两秒,不管怎么说,这距离我的目标还差的很远呢,下一步简单实现一下用自己的摄像头吧,Fighting!!!
本次参考的资料有:
Ubuntu16.04系统运行vins mono
ubuntu18.04换清华源
ubuntu18安装ROS关于解决E: Unable to locate package ors-kinetic-desktop-full问题
错误ERROR: cannot download default sources list from
NX入门教程软件篇-安装VINS-Mono
ubuntu16.04安装opencv3.4
Ubuntu16.04上配置安装ceres
ROS path问题解决方案
哦,原来我“借鉴”了这么多大佬的经验啊,老缝合怪了…