ORB-SLAM2 算法安装
前言
本篇博客将详细讲述我是如何在裸机状态下安装 Ubuntu16.04 双系统,并安装对应版本的 ROSkinetic 系统。外加在安装了这两个系统之后,如何成功安装调试 INDEMIND 双目摄像头并实现 ORB-SLAM 算法。
该文章是我本科期间实验室工作的工作笔记,正式记录于 2020 年 01 月,现记录于此博客网站。
硬件准备
我使用的是 DELL-inspirion 5488,对于摄像头配有 3.0 的 USB 接口。请各位在安装过程中不要低于这个配置,以免安装之后算法无法执行。
整个安装过程包含以下几个大的环节。如果你某些模块已经安装过,可以跳过该部分。
安装 Ubuntu16.04
IDEMIND 这款双目摄像头可以匹配 Ubuntu18.04 和 Ubuntu16.04 两个版本的 Ubuntu,但是最好使用 Ubuntu16.04 版本。
由于我安装了太多遍,忘记截图,详细过程还请参考这篇文章:Ubuntu-16.04 详细安装教程(图文)附下载地址。
安装 ROS
关于版本
在安装过程中请注意 ROS 的版本,一定要与自己 Ubuntu 的版本相匹配。 Ubuntu16.04 对应的 ROS 版本是 kinetic。如果不清楚自己的 Ubuntu 对应什么版本的 ROS 可以自行百度。
有能力的朋友可以直接去 ROS kinetic 官网上面跟着官方的安装指南走,网上多数的安装过程都是官网上的翻译。而且官网上面能够保证使用的是最新的 key。
安装过程中一定要使用稳定的网络!绝大部分的错误都是因为网络不稳定导致的。
配置 Ubuntu 的资源库。
提示
Download from
的网址使用阿里云的链接最为有效。http://mirrors.aliyun.com/ubuntu
设置 Ubuntu 的
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://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
提示
如果无法连接上述服务器,可以尝试将 keyserver 替换为
hkp://pgp.mit.edu:80
或者hkp://keyserver.Ubuntu.com:80
。更新 package。
sudo apt-get update
安装 ROS kinetic 完整版。
sudo apt-get install ros-kinetic-desktop-full
提示
安装完可以通过下面的命令查看可用的 package:
apt-cache search ros-kinetic
初始化 rosdep。
在使用 ROS 之前必须要初始化,使用下面的命令:
sudo rosdep init rosdep update
配置环境。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc
其中:
sourc ~/.bashrc
是更新配置文件的代码,每次更改 bash 文件之后都要执行该命令才能生效。安装 building package 的依赖。
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
测试 ROS 安装成功。
- 打开 Termial,输入以下命令,初始化 ROS 环境:
roscore
- 打开新的 Termial,输入以下命令,弹出一个小乌龟窗口:
rosrun turtlesim turtlesim_node
- 打开新的 Termial,输入以下命令,可以在 Termial 中通过方向键控制小乌龟的移动:
rosrun turtlesim turtle_teleop_key
turtlesim 运行成功 - 打开新的 Termial,输入以下命令,弹出新的窗口查看 ROS 节点信息:
rosrun rqt_graph rqt_graph
ROS 节点信息
安装 INDEMIND 中 ORB-SLAM 算法
以下过程多为 Ubuntu18.04 版本下的安装操作过程记录。第二次 Ubuntu16.04 版本的安装稍有不同,不同之处以标注的形式体现,没有截图记录。
安装该摄像头的算法分为以下几个主要步骤:
配置环境
安装 Pangolin
在安装 Pangolin 之前请确保以下环境已经正确安装。
Glew
sudo apt-get install libglew-dev
CMake
sudo apt-get install cmake
Boost
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
Python
Ubuntu16.04 和 18.04 自带 Python2,无需重新安装。
在确保以上前置环境安装完毕后,执行以下命令安装 Pangolin。
git clone https://github.com/stevenlovegrove/pangolin.git
cd pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j
安装过程中可能遇到的问题
网络问题。 安装过程中一定要注意网络的问题,如果可能请尽量使用热点。
若中间报错不是 'XXX package not found' 这种错误,多半是网络不稳定造成的,多次重新执行失败的命令即可成功。
Package Not Found
问题。只需要按照提示去安装相应的包即可。注意在安装包完成之后重新执行下面两行代码以生效:
cmake -DCPP11_NO_BOOST=1 .. make -j
我遇到的问题。
ERROR 1:libpng12-dev 安装失败。 在执行
sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev
时出现:E: Package 'libpng12-dev' has no installation candidate
解决方法
这个错误时由于 libpng12-dev 在 Ubuntu16.04 之后就被丢弃,需要更换为 libpng-dev。
sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev
ERROR 2:xkbcommon not found。
xkbcommon not found 解决方法
sudo apt-get install libxkbcommon-dev
安装 OpenCV3.4.3
关于安装的版本
opencv 一定要安装 3.4.3 版本,否则 INDEMIND 无法运行。 本文虽然是 18.04 的安装教程,但是用于 16.04 也完全没有问题。
安装 cmake 和其他依赖项。
sudo apt-get update sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
在 opencv 官网上下载对应的版本:https://opencv.org/releases/。
下载完之后对文件进行解压。
进入解压后的文件夹并创建
build
文件夹,并进入build
。mkdir build cd build
cmake。
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译。
sudo make
执行安装命令。
sudo make install
配置环境。
sudo gedit /etc/ld.so.conf.d/opencv.conf
在打开的空白文档中添加:
/usr/local/lib
之后执行下面的命令使得修改生效:
sudo ldconfig
配置 bash。
sudo gedit /etc/bash.bashrc
在打开的文件末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
之后执行以下命令进行更新:
source /etc/bash.bashrc sudo updatedb
配置完成!
测试。
进入
opencv-3.4.3/samples/cpp/example_cmake
,这里面是一些 cmake 官方程序,执行调用摄像头程序:cmake . make ./opencv_example
如果能够调用自己电脑的摄像头,说明安装成功!
安装 Eigen3
sudo apt-get install libeigen3-dev
安装 DBoW2
安装 DBoW2 的时候需要 OpenCV 的支持。
git clone https://github.com/dorian3d/DBoW2
cd DBow2
mkdir build
cd build
cmake ..
make
sudo make install
安装 g2o。
到官网下载压缩包。
安装依赖项。
sudo apt-get install cmake libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev
可能会出现其中
linqglviewer-dev
安装不了的现象。如果不需要 g2o 的 viewer 模块,则不必装该依赖项。如果需要可以去官网直接下载,然后执行以下命令单独安装:mkdir build cd build cmake … make sudo make install
编译。
mkidr build cd build cmake .. make
安装。
sudo make install
安装 SDK 依赖环境
安装 google-glog 和 gflags。
sudo apt-get install libgoogle-glog-dev
安装 BLAS & LAPACK。
sudo apt-get install libatlas-base-dev
安装 SuiteSparse 和 CXSparse。
sudo apt-get install libsuitesparse-dev
安装 SDK
重要
Ubuntu16.04 必须使用 GCC5.4 进行编译,否则可能链接失败。
参考资料
- ROS SDK 安装。
- INDEMIND 微信公众号上 ORB-SLAM 的教程。
1. 下载 SDK 和源码
2. 进行 SDK 的安装
下载好 SDK 后,进入
SDK-Linux/demo_ros/src
目录。将下载好的 ORB-SLAM2 放在该目录下。将下载的
CMakeList.txt
替换到...SDK/demo_ros/src
目录下。进入
sdk/demo_ros/src/ORB_SLAM2/Vocabulary
目录下执行:tar -xf ORBvoc.txt.tar.gz
在 Linux SDK 的
demo_ros
文件夹下打开终端使用命令来进行编译:catkin_make
执行成功之后会在
demo_ros
文件夹之下生成两个执行文件:- module_driver
- stereo_euroc
打开一个新的终端,执行:
roscore
将
module_driver
拷贝到SDK/lib/1604
下,打开终端执行:sudo -s sudo chmod 777 ./run.sh ./run.sh
进入
SDK/demo_ros
目录下,打开终端,执行:./stereo_euroc
总结
🎉 🎉 当你完成上述的所有步骤,你此时应该能够得到一个实时的 ORM-SLAM 算法! 🎉 🎉
贡献者
更新日志
876bb
-improve(docs): use chinese punctuation于42218
-fix(docs): text typo于1289a
-improve(docs): delete extra whitespace and blank lines于2b054
-fix(docs): fix text typo于63022
-fix(docs): fix text typo于fae19
-fix(docs): fix text typo于819cb
-fix(docs): fix text typo于c2111
-modify(docs): remanage folders and rename files于96e66
-docs: update docs于8f99a
-整理图片和文章于