[学习笔记-SLAM篇]Ubuntu16.04下配置VINS-Mono

  • 安装环境
    Ubuntu16.04 + ROS kinect + OpenCV3.2.0

目录

  • 一、ROS kinect安装
    • 1. 安装ROS
    • 2. 工作空间建立
  • 二、OpenCV安装
  • 三、Eigen安装
  • 四、ceres安装
  • *五、Docker安装
  • 六、MYNT-EYE-VINS-Sample安装
  • 七、在MYNT上运行VINS-Mono
  • 八、标准数据集运行VINS-Mono
  • 九、保存轨迹

一、ROS kinect安装

注:不同版本的ubuntu系统安装的ros版本号也不同,参见下图进行选择。

[学习笔记-SLAM篇]Ubuntu16.04下配置VINS-Mono_第1张图片

1. 安装ROS

#先换源,阿里云或者清华都可以,然后把更新的三个框都选上
#在桌面打开终端
#设置sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
#设置key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
#更新package
sudo apt-get update
#安装ROS kinetic完整版
sudo apt-get install ros-kinetic-desktop-full
#初始化
sudo rosdep init
rosdep update
#配置ROS环境
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc #用gedit /.bashrc命令打开.bashrc文件后会看见,在最下面一行添加了""之间的语句
source ~/.bashrc
#测试ROS是否安装成功 
#在终端输入
roscore
#在打开一个终端输入
rosrun turtlesim turtlesim_node
#出现一个小乌龟的LOGO后,再 打开一个新的终端,输入
rosrun turtlesim turtle_teleop_key
#通过方向键可以控制小乌龟的移动
#打开新的Termial,输入以下命令,可以查看ROS节点信息
rosrun rqt_graph rqt_graph

2. 工作空间建立

#在桌面开一个终端
mkdir -p ~/catkin_ws/src #这里设置ros文件夹名称为catkin_ws,可以自己设置
cd ~/catkin_ws/src
catkin_init_workspace #在src文件夹中生成CMakeLists.txt文件
cd ..
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

二、OpenCV安装

可参见参考链接一。

三、Eigen安装

一般在终端直接输入下列指令即可,but,就是有but。

sudo apt-get install libeigen3-dev

注:直接用指令安装后面可能存在版本问题,ceres要求Eigen版本不低于3.3.4。因此要进行下列操作。

安装后可以使用如下指令查询Eigen版本号,若出现”权限不够“的问题,也可以直接打开下面的文件查看版本号。

/usr/include/eigen3/Eigen/src/Core/util/Macros.h

如果版本低于3.3,就会在配置ceres时(cmake ..的步骤)出现Could not find a configuration file for package "Eigen3" that is compatible with requested version "3.3".的问题,就需要卸载原版本,重新下载。

sudo updatedb
locate eigen3
sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums

手动安装新的版本。下载地址:https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz 。
安装依赖项,用如下指令。

sudo apt-get install libopenblas-dev
sudo apt-get install --no-install-recommends libboost1.58-all-dev
sudo apt-get install libx11-dev
sudo apt-get install libgl1-mesa-dev 
sudo apt-get install libglu1-mesa-dev 
sudo apt-get install freeglut3-dev
sudo apt-get install doxygen
sudo apt-get install cmake
sudo wget https://nchc.dl.sourceforge.net/project/glew/glew/2.1.0/glew-2.1.0.tgz --no-check-certificate
sudo tar -xzvf glew-2.1.0.tgz
cd glew-2.1.0/
sudo make 
sudo make install
sudo ldconfig -v

安装Eigen3.3.7。打开eigen-3.3.7文件夹,在终端输入下列指令。

mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig -v

apt-get安装eigen3的路径为 /usr/include/eigen3 ,这里也保持一直;此外,需使用下面命令将Eigen映射到 /usr/include 路径下,因为在很多程序中include时经常使用#include 而不是使用#include ,不映射的话一些程序在编译时会因找不到Eigen/Dense而报错。

sudo cp -r /usr/local/include/eigen3 /usr/include/eigen3 
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen

四、ceres安装

注:eigen和ceres版本存在兼容问题。这里选用eigen3.3.7和ceres-1.14.0。

  • github链接一般是最新版:https://github.com/ceres-solver/ceres-solver/tree/master。如果需要卸载以前的版本,参考ubuntu1604安装ceres库。所以用后面的指令安装1.4.0版。
  • 先安装依赖项。
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.4 libgflags-dev libgoogle-glog-dev libgtest-dev
sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev
sudo apt-get install libatlas-base-dev
#sudo apt-get install libeigen3-dev
  • SuiteSparse和CXSparse(可选)
    如果要将Ceres构建为static库(默认),直接输入下列指令。若构建为shared库,则参照参考链接一。
sudo apt-get install libsuitesparse-dev
  • 下载ceres-1.14.0。
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
  • 安装
    在下载ceres安装包的位置解压文件,进入文件后打开终端,输入以下指令。
#下载后看情况选用不同的解压指令,或者直接右键解压也可以
mkdir build
cd build
cmake ..
make
sudo make install

*五、Docker安装

注:这里只是额外讲述另一种配置方法,可以跳过此步。

由于直接基于ROS和小觅进行测试,因此在这里讲一下如何安装docker,如果是基于小觅相机进行测试,此前还需要下载 MYNT-EYE-S-SDK 及安装 mynt_eye_ros_wrapper。
如果只是用标准数据集测试,可以跳过这一步,直接配置VINS,参考链接一或二。
安装docker时,在终端输入如下指令。

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

将账号加到 docker 组,避免每次运行docker命令的时候都需要输入sudo。在终端输入如下指令,$YOUR_USER_NAME处输入自己的用户名。

sudo usermod -aG docker $YOUR_USER_NAME

退出当前用户登陆状态,然后重新登录,以便让权限生效,或重启docker-daemon。

sudo systemctl restart docker
docker info

可能会出现ERROR: Got permission denied while trying to connect to the Docker daemon socket at unix的问题,在终端输入下列指令即可。

sudo chmod a+rw /var/run/docker.sock

六、MYNT-EYE-VINS-Sample安装

如果不是要基于小觅运行,也可以直接安装VINS-Mono,可以参照参考链接二。

  • 先安装额外的ROS pacakge
sudo apt-get install ros-kinetic-cv-bridge ros-kinetic-tf ros-kinetic-message-filters ros-kinetic-image-transport
  • 安装VINS-Mono

安装时,在创建的ros工作空间中的src文件中打开终端。

注:

  1. 网络是个很大的问题,建议自己开热点执行git clone
  2. 如果直接安装ROS然后安装docker,那么需要执行下面所有语句。这里要求内存空间足够大,至少16G。
git clone -b docker_feat https://github.com/slightech/MYNT-EYE-VINS-Sample.git
cd MYNT-EYE-VINS-Sample/docker
make build

make build时可能会出现一些红色字体,如debconf: delaying package configuration, since apt-utils is not installed,这些是可忽视的。

注:
如果从前面的步骤一直执行到第4步,则只需要执行git clone语句,然后在catkin_ws中执行catkin_make语句对src中所有文件重新编译,或者单独编译新添加的软件包。这里可以参考这个链接catkin_make的时候发生了什么学习一下catkin_make的知识。

git clone -b docker_feat https://github.com/slightech/MYNT-EYE-VINS-Sample.git
cd ..
catkin_make -DCATKIN_WHITELIST_PACKAGES=""

注:上面的处要查找对应的待编译的包的名字,具体查找方法见上面的那个链接。

  • 最后运行一下下面的指令。
source ~/catkin_ws/devel/setup.bash

七、在MYNT上运行VINS-Mono

  • 运行mynteye节点
    打开mynt的sdk文件,打开终端,输入如下指令。
source ./wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper vins_mono.launch
  • 运行VINS
    打开MYNT-EYE-VINS-Sample/docker,打开另一个终端,输入如下指令。
source ~/ROS_ws/devel/setup.bash
roslaunch vins_estimator mynteye_s.launch

八、标准数据集运行VINS-Mono

打开三个终端分别运行如下命令

  • 第一个终端
source ~/ROS_ws/devel/setup.bash
roslaunch vins_estimator euroc.launch
  • 第二个终端
source ~/ROS_ws/devel/setup.bash
roslaunch vins_estimator vins_rviz.launch
  • 第三个终端
source ~/ROS_ws/devel/setup.bash
rosbag play <数据集的路径>/MH_01_easy.bag
  • 若想看到groundtruth,则再打开一个终端,输入下面指令
roslaunch benchmark_publisher publish.launch sequence_name:=MH_01_easy

九、保存轨迹

这里也只能保存euroc数据集的运行结果。
打开MYNT-EYE-VINS-Sample/config/euroc中的euroc_config.yaml文件。将其中的pose_graph_save_pathoutput_path后面的内容更改为自己设定的保存轨迹的路径。
要保存的时候,只需要在运行完euroc数据集后,在运行roslaunch vins_estimator euroc.launch的终端中输入s,并按下回车键Enter,等待地图保存。

参考
Ubuntu16.04系统运行vins mono(完整版环境配置及编译)
unbuntu运行VINS-MONO实验总结
eigen3 版本信息查看
安装ceres提示“找不到要求版本3.3的Eigen3”解决办法
Ceres安装报错“找不到要求版本3.3的Eigen3”解决方法
【Docker】非root用户加入docker用户组省去sudo (三)
(20200328已解决)[dockerfile] debconf: delaying package configuration, since apt-utils is not installed
catkin_make的时候发生了什么
ubuntu1604安装ceres库
vins-mono保存、重载地图、evo工具测试

你可能感兴趣的:(SLAM篇)