从入门到放弃——VO小白学习VIO系列(1)VINS环境搭建

从入门到放弃——VO小白学习VIO系列(1)VINS环境搭建

  • 前言
  • 入门知识
  • VINS环境的搭建
    • 安装Ubuntu16.06
    • 安装ROS Kinetic
      • 添加ROS源(国内源)
      • 设置秘钥
      • 刷新源
      • 安装ROS Kinetic
      • 可能遇到的问题及解决方法
      • 初始化ROS Kinetic
      • 可能遇到的问题及解决方法
      • 配置环境变量
      • 测试ROS
      • 创建ROS空间
    • 安装opencv3.3.1
      • 安装opencv3.3.1依赖项
    • 安装Eigen3.3.3
    • 安装Ceres Solver
      • 安装Ceres Solver依赖项
      • 安装Ceres Solver
    • 在ROS上建立 VINS-Mono工程
      • 下载并编译VINS-Mono
      • 下载 EuRoC MAV数据集
      • 用VINS跑一下 EuRoC MAV数据集看看效果
    • 安装opencv3.3.1
      • 安装opencv依赖项
      • 下载OpenCV源代码压缩包
      • 解压OpenCV源代码压缩包
      • 下载ippicv
      • 编译OpenCV源代码
      • 验证测试

前言

这是我第一次写CSDN,首要目的是记录学习VIO的过程,其次这些年在网上看了这么多的技术分享,享受着知识共享的便利,觉得自己也是时候做出一些贡献了,再次顺便锻炼一下语言表述能力。
因为本系列文章是随做随写,记录的是本人从VO小白开始,学习VIO的一点一滴。由于本人没有受到过相关专业的系统教育,对于基础知识的学习可能不具备系统性、连贯性、徐徐渐进性,相反基本是遇到不懂的就要去翻翻书并记录在文章内,不过基础知识部分会以tips形式嵌入到文章主体框架中去,尽量不影响阅读的通顺。

入门知识

本人是惯性导航专业,对于VO知识一无所知,在开始本次学习之前先花了一周的时候把高博的《视觉SLAM十四讲》粗略的翻看了一遍,主要关注点在SLAM的理论框架,并没有详细去试验书中的代码。

VINS环境的搭建

闲话少叙,书归正传,下面咱们正式开始我们的VIO旅程。首先我们要做的工作是搭建VINS的环境。

安装Ubuntu16.06

本人Ubuntu使用的是虚拟机,关于虚拟机的安装请自行百度。
1.从阿里云的镜像下载64位系统镜像文件ubuntu-16.04.5-desktop-amd64.iso 链接如下
http://mirrors.aliyun.com/ubuntu-releases/16.04/
这里说一句,amd64不是指AMD公司的64位芯片,而是代指所有x64系统,关于该命名的历史渊源,有兴趣的同学可以自行百度 。

安装ROS Kinetic

Ubuntu版本和ROS版本有对应关系,Ubuntu14.04对应Indigo,Ubuntu16.04对应Kinetic,不要和博主一样蠢萌蠢萌的用16.04安Indigo,折腾了一晚上。。。。

添加ROS源(国内源)

sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/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 0xB01FA116

刷新源

sudo apt-get update

安装ROS Kinetic

sudo apt-get install ros-kinetic-desktop-full

可能遇到的问题及解决方法

1、unable to lock the administration directory (/var/lib/dpkg/) is another process using it
可以用 https://linux.cn/article-8040-1.html 方法解决。
2、Unable to locate package
可以用 http://www.cnblogs.com/pipci/p/8676313.html 方法解决。

初始化ROS Kinetic

sudo rosdep init
rosdep update

可能遇到的问题及解决方法

如果sudo rosdep init出现

ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

请参照rosdep init报错之网络不通解决办法或者rosdep init 或者rosdep update 连接错误的解决办法

如果rosdep update出现

ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml]:
	 (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml)

是网络问题,请多试几次rosdep update

配置环境变量

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

测试ROS

在当前Terminal输入以下命令,初始化ROS环境:

roscore

打开新的Termial,输入以下命令,弹出一个小乌龟窗口:

rosrun turtlesim turtlesim_node

如果能看到一个蓝色背景上的小龟,说明ROS已经正确安装了。
这里介绍一个命令用于查看ROS node信息,以后我们会用于查看VINS的节点信息

rosrun rqt_graph rqt_graph

创建ROS空间

只给出以下命令,详细解释可参考创建一个ROS工作空间(ROS Workspace)

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc  #配置环境变量
source ~/.bashrc

查看ROS环境变量

echo $ROS_PACKAGE_PATH

如输出/home/你的用户名/你的工作空间名/src:/opt/ros/kinetic/share则ROS工作空间已搭建好

安装opencv3.3.1

Kinetic自带opencv3.3.1,我们就不需要再安装了

安装opencv3.3.1依赖项

安装时多行命令请一行行执行,以免漏装,以后不再重复

sudo apt install git #安装git 

安装Eigen3.3.3

Kinetic自带Eigen3.2.92,我们需要重新安一下3.3.3
关于如何查看Eigen版本可以参考查看正在使用的Eigen版本

sudo wget https://github.com/eigenteam/eigen-git-mirror/archive/3.3.3.tar.gz #下载Eigen3.3.3
sudo tar -xzvf 3.3.3.tar.gz 
sudo mv eigen-git-mirror-3.3.3/ eigen-3.3.3/
cd eigen-3.3.3/
sudo mkdir build
cd build
sudo cmake ..
sudo make install 
sudo ldconfig -v
sudo rm -r ~/3.3.3.tar.gz ~/eigen-3.3.3/ 

安装Ceres Solver

安装Ceres Solver依赖项

这里libcxsparse3.1.4的版本,我们用的Ubuntu16.04 对应于3.1.4

sudo sh -c 'echo "deb http://cz.archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe" > /etc/apt/sources.list'   #添加源
sudo apt-get update  #更新源
sudo apt-get install libsuitesparse-dev libcxsparse3.1.4 libgflags-dev libgoogle-glog-dev

安装Ceres Solver

sudo wget http://ceres-solver.org/ceres-solver-1.14.0.tar.gz #下载ceres-solver-1.14.0
sudo tar -xzvf ceres-solver-1.14.0.tar.gz 
cd ceres-solver-1.14.0/
sudo mkdir build && cd build
sudo cmake .. 
sudo make -j8 #-jx 是使用CPU的多线程,x是要使用的线程数量。
sudo make install

Ceres库的头文件安装在"/usr/local/include/ceres/"目录下,库文件安装在"/usr/local/lib/"目录下。安装完成后查看是否有对应的文件,如果有则说明安装成功。

在ROS上建立 VINS-Mono工程

下面终于接触到VINS了

下载并编译VINS-Mono

cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ..
catkin_make
source ~/catkin_ws/devel/setup.bash 

下载 EuRoC MAV数据集

建立数据集文件夹

mkdir -p ~/datasets

从EuRoC MAV Dataset手动下载数据集放到新建立的datasets文件夹中

用VINS跑一下 EuRoC MAV数据集看看效果

打开三个终端, 分别输入the vins_estimator , rviz 和运行包文件. 例如MH_05

终端1

roslaunch vins_estimator euroc.launch 

终端2

roslaunch vins_estimator vins_rviz.launch

终端3

rosbag play ~/datasets/MH_05_difficult.bag 

一直出现[ INFO] [1543765321.506212846]: IMU excitation not enouth!
[ INFO] [1543765321.506681148]: Not enough features or parallax; Move device around
[vins_estimator-2] process has died

尝试了安装AMCL 还是不行
sudo apt-get install ros-kinetic-amcl
以下是其他尝试列表
sudo apt-get install libatlas-base-dev
sudo apt-get install libdc1394-22-dev
sudo apt-get install libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev

git clone https://github.com/ros-planning/navigation.git

按照这篇记录VINS-Mono环境配置与测试笔记安装也是出现同样问题,难道不能用虚拟机????

将Ceres Solver由静态库改为动态库 依然不行
Linux下安装glog和gflags

可能遇到的问题
1、Could NOT find Bullet
解决办法ROS编译时(catkin_make)找不到bullet

安装opencv3.3.1

安装opencv依赖项

请一步一步执行

sudo apt-get install git libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg8-dev libtiff5-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包 
sudo apt-get install libv4l-dev liblapacke-dev 
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包 
sudo apt-get install libatlas-base-dev  # 优化opencv功能 
sudo apt-get install libgtk-3-dev 

下载OpenCV源代码压缩包

wget https://github.com/opencv/opencv/archive/3.3.1.zip

解压OpenCV源代码压缩包

unzip 3.3.1.zip
cd opencv-3.3.1
mkdir build && cd build#创建编译目录并进入

下载ippicv

从Ubuntu图形界面手动下载 ippicv_2017u3_lnx_intel64_general_20170822.tgz并将下载好的文件放在~/Downloads文件夹中
修改~/opencv-3.3.1/3rdparty/ippicv/ippicv.cmake中第将47行的

 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"

改为

 "file:~/Downloads/" #(如果没有按照我上面说的做,需要根据自己的路径填写)

编译OpenCV源代码

回到命令行来

 cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/user \
    -D PYTHON_INCLUDE_DIR=/usr/include/python2.7 \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D PYTHON_EXCUTABLE=/usr/bin/python2.7 \
    -D WITH_TBB=ON \
    -D WITH_V4L=ON \
    -D WITH_QT=ON \
    -D WITH_GTK=ON \
    -D WITH_OPENGL=ON \
    -D BUILD_EXAMPLES=ON ..

其中:
CMAKE_INSTALL_PREFIX:安装的python目录前缀,其实就是指定了python模块的安装路径。如下命令的输出即是该路径:

python -c "import sys; print(sys.prefix)"

PYTHON_EXCUTABLE:指定python的执行文件路径。如下命令的输出即是该路径

which python

上述配置命令执行成功后,继续执行编译命令

sudo make -j7

其中 -jx 是使用CPU的多线程,x是要使用的线程数量。

执行安装命令

sudo make install

加入到动态链接库

sudo ldconfig

验证测试

执行如下命令:

python -c "import cv2; print (cv2.__version__)"

正常会输出已经安装的opencv版本号

3.3.1

至此opencv3.3.1安装成功


作者:pkokocl
来源:CSDN
原文:https://blog.csdn.net/pkokocl/article/details/78777651
版权声明:本文为博主原创文章,转载请附上博文链接!

作者:weixin_40494464
来源:CSDN
原文:https://blog.csdn.net/weixin_40494464/article/details/80135983
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(VIO学习系列)