从入门到放弃——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
sudo apt-get install ros-kinetic-rqt*

上面第二行命令是安装rqt,这是ros中一个非常实用的工具,这里因为篇幅原因不多做介绍,请读者自行百度。

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

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]:<urlopen error timed out> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml)

是网络问题,请多试几次rosdep update或者参照解决ROS系统 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
版权声明:本文为博主原创文章,转载请附上博文链接!

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

  1. 小白学习Flink系列--第一篇(知识图谱)

    小白学习Flink系列–第一篇(知识图谱) 如何学习Flink? ​ 对于一门计算机技术来说,如何快速学习上手呢?具体的逻辑是什么呢?我认为有以下几条 了解技术的应用场景 技术的基本概念,如何使用,以 ...

  2. Hadoop学习之整体介绍及环境搭建

    Hadoop学习之整体介绍及环境搭建 1 大数据概述 1.1 什么是大数据 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加 工的的原始素材. 大数据:传统处理方 ...

  3. Java从入门到实战总结-1.1、Java基础之环境搭建和eclipse安装

    Java从入门到实战总结-1.1.Java基础之环境搭建和eclipse安装 文章目录 Java从入门到实战总结-1.1.Java基础之环境搭建和eclipse安装 1.Hello Java 1.1. ...

  4. 迪文屏幕T5L平台学习笔记一:开发环境搭建注意事项

    前面一直用T5UID3平台的屏幕开发,但是吐槽下<DWIN C Compiler 1>编译器bug太多,项目能不能做好,全靠运气:售后说T5L平台支持keil开发,我感觉挺好,于是从新学习 ...

  5. 华芯微特SWM181学习笔记--GPIO应用与环境搭建

    华芯微特SWM181 系列 32 位 MCU(以下简称 SWM181)内嵌 ARM® CortexTM-M0 内核, SWM181 支持片上包含精度为 1%以内的 24MHz.48MHz 时钟,并提供 ...

  6. 小白的渗透之旅1-DVWA环境搭建

    小白的渗透之旅1-DVWA环境搭建 注意:DVWA需要依赖httpd.PHP.MySQL.php-mysql等应用或组件,最简单的方法是安装wampserver(http://www.wampserv ...

  7. 强化学习——蛇棋游戏gym环境搭建

    强化学习--蛇棋游戏gym环境搭建   学习强化学习精要核心算法与Tensorflow实现这本书中,关于蛇棋游戏利用gym搭建.游戏的规则非常简单,详细请参考冯超的书<<强化学习精要核心算 ...

  8. cl.zk0.info/index.php,兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建

    原标题:兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建 btcpool矿池-测试环境搭建及使用cgminer测试 本文档基于Ubuntu 16.04 LTS, 64 Bits. 安装Bi ...

  9. 强化学习快餐教程(1) - gym环境搭建

    强化学习快餐教程(1) - gym环境搭建 欲练强化学习神功,首先得找一个可以操练的场地. 两大巨头OpenAI和Google DeepMind都不约而同的以游戏做为平台,比如OpenAI的长处是DO ...

最新文章

  1. mac java web_mac os安装java web开发环境配置
  2. Web应用开发技术(1)-html
  3. 图文具体解释 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)
  4. Java当中的IO一
  5. 前端学习(1425):同步异步概述
  6. 论文推荐|Mask TextSpotter:An End-to-End Trainable Neural Network
  7. 创建和销毁对象(1)
  8. [Erlang 0125] Know a little Erlang opcode
  9. 快读快写模板【附O2优化】
  10. 在GNU/Linux下将CD音乐转为mp3
  11. 如何在自己电脑上设php网站,怎么在自己电脑上建网站
  12. 计算机utf-8/gbk/utf-16对照表
  13. 营养学和计算机交叉,营养配餐系统综述
  14. 【查缺补漏】工作中遇到的问题集锦01
  15. Synergy问题收录
  16. 【C语言】实现两个字符串的连接(不使用库函数),即把字符串b连接到字符串a后面。
  17. 夫唯不争——世赛网络系统管理赛项小记
  18. 剑走偏锋之ICMP隧道
  19. BMS(电池管理系统)第四课 ——核心!!!SOC算法开发
  20. 手机上的磁性传感技术

热门文章

  1. jstree设置不可选中
  2. 关于AD绘制驱动板如何设置电气间距
  3. 早报八点半:5月12日Web3加密行业每日新闻汇总
  4. 选择偏好_网站如何记住您的偏好(以及关于Cookie的选择)?
  5. CentOS7下实现E9000 + KS3200存储扩容
  6. STM32F103C8+VS1838+有刷直流电机位置PID
  7. HDMI-CEC 控制服务
  8. CNN与RNN的详细介绍
  9. Vue-基本语法和系统指令
  10. 记录CentOS中解压zip