ORB-SLAM2 算法安装
前言
本篇博客将详细讲述我是如何在裸机状态下安装 Ubuntu16.04 双系统, 并安装对应版本的 ROSkinetic 系统. 外加在安装了这两个系统之后, 如何成功安装调试 INDEMIND 双目摄像头并实现 ORB-SLAM 算法.
该文章是我本科期间实验室工作的工作笔记, 正式记录于 2020 年 01 月- 02 月, 现记录于此博客网站.
硬件准备
我使用的是 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 的网址使用阿里云的链接最为有效(如图中所示).
设置 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
提示
如果无法连接上述服务器, 可以尝试
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
问题还有可能出现一些 package 找不到的错误, 只需要按照提示去安装相应的包即可. 在安装包完成之后重新执行下面两行代码即可:
cmake -DCPP11_NO_BOOST=1 .. make -j
我在 Ubuntu18.04 下遇到如下问题, 仅供参考
ERROR1:
解决方法:
ERROR2:
解决方法:
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
如果能够调用自己电脑的摄像头, 说明安装成功!
- 安装 cmake 和其他依赖项
安装 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 进行编译, 否则可能链接失败.
参考资料
- https://indemind-sdk.readthedocs.io/zh_CN/latest/src/sdk/ros SDK anzhuang.html
- INDEMIND微信公众号上ORB-SLAM的教程
下载 SDK 和源码 下载地址: SDK: https://github.com/INDEMIND/SDK-Linux ORB-SLAM: https://github.com/INDEMINDtech/run.ORB
进行 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 算法 🎉 🎉
变更历史
最后更新于: 查看全部变更历史
docs: update docs
于 2024/11/19整理图片和文章
于 2024/11/7整理文章格式
于 2024/11/1整理文章格式
于 2024/11/1整理文章格式
于 2024/10/29update
于 2024/10/17新增文字+CRLF全部替换为LF
于 2024/10/17升级主题+新增文章+修改格式
于 2024/10/14升级版本+规整文档中的格式
于 2024/10/11整理图片格式和名称(not finished)
于 2024/9/30给予文件夹顺序
于 2024/9/24first commit
于 2024/9/20