记录ORB_SLAM2配置安装过程
涉及opencv, Pangolin, Eigen3, ROS
对配置过程中遇到的问题,做了个简单总结,其中Pangolin在配置时,需要注意使用v0.5版本, 当前的v0.6版本在后续过程中会出现/usr/bin/ld: 找不到 -lEigen3::Eigen问题
1 准备
- cmake
- gcc g++
- git
sudo apt-get install cmake gcc g++ git
2 Pangolin
2.1 介绍
Pangolin是一个轻量、便携的管理OpenGl显示、交互和提取的视频输入的快速开发库。其核心是一个简单的OpenGl视口管理器,它能帮助模块化3D可视化,不增加复杂性,提供一个先进且直接的3D导航处理器。Pangolin也提供一个操作程序的机制,这个机制通过配置文件和UI集成,有一个灵活的实时绘图仪,用于可视图形图像数据。
穿山甲的宗旨是在不影响性能的前提下,减少通常用于可视化和与(典型的图像和3D的)系统交互的样板代码。它还允许在许多平台上编写一次代码,目前包括Windows、Linux、OSX、Android和IOS。
原文链接:
https://blog.csdn.net/baidu_38505667/article/details/108715627
2.2 安装(v0.5)
a.安装Pangolin 可视化和用户界面及其依赖项(逐行输入一行一回车)
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev
sudo apt-get install libboost-filesystem-dev
sudo apt-get install libpython2.7-dev
sudo apt-get install build-essential
b.从github下载pangolin(v0.5版本,否则后面会报错)
git clone https://github.com/stevenlovegrove/Pangolin.git
!不建议,会安装v0.6版本
或去https://github.com/stevenlovegrove/Pangolin下载zip压缩包解压(v0.5版本)
c.解压后进入该文件
cd Pangolin
mkdir build
cd build
cmake ..
d.camke完成后输入make,出现进度%
make
e.继续输入
sudo make install
3 安装Eigen3——开源线性库
sudo apt-get install libeigen3-dev
4 ROS
4.1 ROS的安装
在它的官方网站: http://wiki.ros.org/ROS/Installation 中有详细说明
参考链接:https://blog.csdn.net/Leslie___Cheung/article/details/109591426
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop-full
若出现问题参考3.2.1
完成后进入下一步
sudo rosdep init
若报错参考3.2.2, 3.2.3
rosdep update
出现箭头那句话表示成功了,若有问题参考3.2.4
安装rosinstall
sudo apt-get install python-rosinstall
加载环境设置文件
source /opt/ros/melodic/setup.bash
创建并初始化工作目录ROS使用一个名为catkin的ROS专用构建系统。为了使用它,用户需要创建并初始化catkin工作目录,如下所示。除非用户创建新的工作目录,否则此设置只需设置一次。
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
使用catkin_make命令来构建
cd ~/catkin_ws/
catkin_make
```3.2.3
设置环境变量:
```bash
sudo apt install net-tools
gedit ~/.bashrc
在弹出的文本中最后末尾出添加下边两行代码:
source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash
完成后保存关闭,在终端输入:
source ~/.bashrc
4.2 问题参考
4.2.1 报错无法下载 连接失败 [IP: 91.189.91.38 80] 有几个软件包无法下载
a. 更换下载源(未验证)
b. 按提示进行操作
sudo apt-get update
sudo apt-get upgrade --fix-missing
c. 若无法解决(一般都解决不了),则手动下载(验证可行,就是有点麻烦)
在浏览器中尝试打开无法下载的这个deb链接,自动弹出了下载页面,如下图所示:
d. 进入下载文件所在目录
将下载文件移动到ubuntu apt-get下载文件存放的目录(即/var/cache/apt/archives)下
例:
sudo mv libflite1_2.1-release-3_amd64.deb /var/cache/apt/archives
再次执行安装命令
sudo apt install ros-melodic-desktop-full
4.2.2 若报错找不到命令rosdep,执行
sudo apt-get install python-rosdep
4.2.3 若执行sudo rosdep init时显示ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/m
需要解决GitHub的raw.githubusercontent.com无法连接问题,通过IPAddress.com首页,输入raw.githubusercontent.com查询到真实IP地址
修改hosts Ubuntu,
sudo vi /etc/hosts
添加以下内容保存即可(玄学问题,输下面这个就行,不用输4个)
185.199.110.133 raw.githubusercontent.com
然后输入sudo rosdep init就可以了
$ rosdep update
4.2.4 出现一个或多个timeout超时(玄学问题,早上成功率高,失败多试几次)
更换网络科学上网可以解决
4.3 测试ROS
打开三个终端,在每个终端依次输入
roscore
可能出现roscore命令not found问题
解决方案:
若没有安装包,输入
cd /opt/ros/melodic/bin
sudo apt-get install ros-melodic-desktop
成功后再重新输入roscore,若无问题,在另一个终端输入:
rosrun turtlesim turtlesim_node
在第三个终端输入:
rosrun turtlesim turtle_teleop_key
5 OpenCV
参考链接:https://blog.csdn.net/weixin_44436677/article/details/105586820
源码文件链接: https://pan.baidu.com/s/1WGHyAklQnKMxZcPSAZ8I8g?pwd=4cyc 提取码: 4cyc
6 ORB_SLAM2
6.1 安装
进入ROS工作区的src文件夹
cd ~/catkin_ws/src/
执行下列命令下载安装ORB_SLAM2
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
进入ORB_SLAM2文件夹
cd ORB_SLAM2
chmod +x build.sh
./build.sh
在ROS环境下运行ORB_SLAM
chmod +x build_ros.sh
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
./build_ros.sh
6.2 问题参考
6.2.1 ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000);
解决方案:
找到对应的System.cc文件的首部加入 头文件
#include<unistd.h>
需要根据实际情况,提示哪个文件usleep有问题,就去加这个头文件。
需要增加unistd.h的文件还有:
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc
Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.cc
参考链接:https://blog.csdn.net/qq_15698613/article/details/98453592
6.2.2 CMakeFiles/RGBD.dir/build.make:197: recipe for target ‘…/RGBD’ failed
解决方案:
修改home/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/文件夹下的CMakeLists.txt文件。
在set(LIBS xxxxx 的后面加上下列这一句代码
-lboost_system
6.2.3 每次编译失败后记得删除build文件夹
解决方案:
删除build文件夹
6.2.4 /usr/bin/ld: 找不到 -lEigen3::Eigen
解决方案:
是Pangolin版本太高导致的,ORB-SLAM 2只支持v0.5版本的Pangolin。卸载之前安装的Pangolin库,安装v0.5版本的即可
6.3 测试运行
从TUM Dataset下载数据集,链接如下:
Computer Vision Group - Dataset Download
选择fr1/xyz tgz
在ORB_SLAM2文件夹内新建data(名字随意)文件夹,用于存放数据集,将刚刚解压缩后的文件夹拷贝至data文件夹内
由于是RGBD数据集,还有深度信息,所以需要再另外下载一个associate.py文件,链接如下:
https://svncvpr.in.tum.de/cvpr-ros-pkg/trunk/rgbd_benchmark/rgbd_benchmark_tools/src/rgbd_benchmark_tools/
下载好以后拷贝associate.py至ORB_SLAM2主文件夹内。在associate.py所在的目录执行:
(将RGB信息和深度信息链接到一起)
python associate.py data/rgbd_dataset_freiburg1_xyz/rgb.txt data/rgbd_dataset_freiburg1_xyz/depth.txt > data/rgbd_dataset_freiburg1_xyz/associations.txt
然后执行:
./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/TUM1.yaml data/rgbd_dataset_freiburg1_xyz data/rgbd_dataset_freiburg1_xyz/associations.txt
6.3.1成功界面
出现以下界面,说明ORB-SLAM 2安装成功