从入门到放弃——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
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环境搭建相关推荐
- 小白学习Flink系列--第一篇(知识图谱)
小白学习Flink系列–第一篇(知识图谱) 如何学习Flink? 对于一门计算机技术来说,如何快速学习上手呢?具体的逻辑是什么呢?我认为有以下几条 了解技术的应用场景 技术的基本概念,如何使用,以 ...
- Hadoop学习之整体介绍及环境搭建
Hadoop学习之整体介绍及环境搭建 1 大数据概述 1.1 什么是大数据 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加 工的的原始素材. 大数据:传统处理方 ...
- Java从入门到实战总结-1.1、Java基础之环境搭建和eclipse安装
Java从入门到实战总结-1.1.Java基础之环境搭建和eclipse安装 文章目录 Java从入门到实战总结-1.1.Java基础之环境搭建和eclipse安装 1.Hello Java 1.1. ...
- 迪文屏幕T5L平台学习笔记一:开发环境搭建注意事项
前面一直用T5UID3平台的屏幕开发,但是吐槽下<DWIN C Compiler 1>编译器bug太多,项目能不能做好,全靠运气:售后说T5L平台支持keil开发,我感觉挺好,于是从新学习 ...
- 华芯微特SWM181学习笔记--GPIO应用与环境搭建
华芯微特SWM181 系列 32 位 MCU(以下简称 SWM181)内嵌 ARM® CortexTM-M0 内核, SWM181 支持片上包含精度为 1%以内的 24MHz.48MHz 时钟,并提供 ...
- 小白的渗透之旅1-DVWA环境搭建
小白的渗透之旅1-DVWA环境搭建 注意:DVWA需要依赖httpd.PHP.MySQL.php-mysql等应用或组件,最简单的方法是安装wampserver(http://www.wampserv ...
- 强化学习——蛇棋游戏gym环境搭建
强化学习--蛇棋游戏gym环境搭建 学习强化学习精要核心算法与Tensorflow实现这本书中,关于蛇棋游戏利用gym搭建.游戏的规则非常简单,详细请参考冯超的书<<强化学习精要核心算 ...
- cl.zk0.info/index.php,兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建
原标题:兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建 btcpool矿池-测试环境搭建及使用cgminer测试 本文档基于Ubuntu 16.04 LTS, 64 Bits. 安装Bi ...
- 强化学习快餐教程(1) - gym环境搭建
强化学习快餐教程(1) - gym环境搭建 欲练强化学习神功,首先得找一个可以操练的场地. 两大巨头OpenAI和Google DeepMind都不约而同的以游戏做为平台,比如OpenAI的长处是DO ...
最新文章
- mac java web_mac os安装java web开发环境配置
- Web应用开发技术(1)-html
- 图文具体解释 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)
- Java当中的IO一
- 前端学习(1425):同步异步概述
- 论文推荐|Mask TextSpotter:An End-to-End Trainable Neural Network
- 创建和销毁对象(1)
- [Erlang 0125] Know a little Erlang opcode
- 快读快写模板【附O2优化】
- 在GNU/Linux下将CD音乐转为mp3
- 如何在自己电脑上设php网站,怎么在自己电脑上建网站
- 计算机utf-8/gbk/utf-16对照表
- 营养学和计算机交叉,营养配餐系统综述
- 【查缺补漏】工作中遇到的问题集锦01
- Synergy问题收录
- 【C语言】实现两个字符串的连接(不使用库函数),即把字符串b连接到字符串a后面。
- 夫唯不争——世赛网络系统管理赛项小记
- 剑走偏锋之ICMP隧道
- BMS(电池管理系统)第四课 ——核心!!!SOC算法开发
- 手机上的磁性传感技术