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

前言

 

前言

这是我第一次写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'
  • 1

设置秘钥

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116
  • 1

刷新源

sudo apt-get update
  • 1

安装ROS Kinetic

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

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

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
  • 1
  • 2

配置环境变量

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

测试ROS

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

roscore
  • 1

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

rosrun turtlesim turtlesim_node
  • 1

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

rosrun rqt_graph rqt_graph
  • 1

创建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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

查看ROS环境变量

echo $ROS_PACKAGE_PATH
  • 1

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

安装opencv3.3.1

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

安装opencv3.3.1依赖项

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

sudo apt install git #安装git 
  • 1

安装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/ 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

安装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
  • 1
  • 2
  • 3

安装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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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 
  • 1
  • 2
  • 3
  • 4
  • 5

下载 EuRoC MAV数据集

建立数据集文件夹

mkdir -p ~/datasets
  • 1

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

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

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

终端1

roslaunch vins_estimator euroc.launch 
  • 1

终端2

roslaunch vins_estimator vins_rviz.launch
  • 1

终端3

rosbag play ~/datasets/MH_05_difficult.bag 
  • 1

一直出现[ 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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

下载OpenCV源代码压缩包

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

解压OpenCV源代码压缩包

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

下载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/"
  • 1

改为

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

编译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 ..
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

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

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

which python
  • 1

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

sudo make -j7
  • 1

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

执行安装命令

sudo make install
  • 1

加入到动态链接库

sudo ldconfig
  • 1

验证测试

执行如下命令:

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

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

3.3.1
  • 1

至此opencv3.3.1安装成功


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值