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
- 打开新的 Termial, 输入以下命令, 弹出新的窗口查看 ROS 节点信息:
rosrun rqt_graph rqt_graph
安装 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.
解决方法
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 和源码
SDK: https://github.com/INDEMIND/SDK-Linux\
ORB-SLAM: https://github.com/INDEMINDtech/run.ORB
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 算法 🎉 🎉
变更历史
最后更新于: 查看全部变更历史
first commit
于 2024/9/20给予文件夹顺序
于 2024/9/24整理图片格式和名称(not finished)
于 2024/9/30升级版本+规整文档中的格式
于 2024/10/11升级主题+新增文章+修改格式
于 2024/10/14新增文字+CRLF全部替换为LF
于 2024/10/17update
于 2024/10/17整理文章格式
于 2024/10/29整理文章格式
于 2024/11/1整理文章格式
于 2024/11/1整理图片和文章
于 2024/11/7docs: update docs
于 2024/11/19modify(docs): remanage folders and rename files
于 2024/12/17fix(docs): fix text typo
于 2024/12/26fix(docs): fix text typo
于 2024/12/26fix(docs): fix text typo
于 2024/12/27fix(docs): fix text typo
于 2024/12/27