Ubuntu18.04下 ORB_SLAM2的安装与配置

一、安装的工具

配置过程中所需要cmake、gcc、g++和git工具。

安装所需的工具在终端运行的命令
cmakesudo apt-get install cmake
gitsudo apt-get install git
g++ ,g++sudo apt-get install gcc g++

二、安装Pangolin

  • 安装依赖项
    sudo apt-get install libglew-dev libpython2.7-dev
  • 从Github下载Pangolin
    git clone https://github.com/stevenlovegrove/Pangolin.git
    在这里插入图片描述
  • 下载好后,进入Pangolin所在的目录 ~/Pongolin
cd Pangolin
  • 在Pangolin下创建文件夹build
mkdir build
  • 将目录切换到 ~/Pangolin/build
cd build
  • 进行编译
cmake .. 

对于一个大项目,编写这个makefile是非常复杂的,所以出现了cmake工具,他能够生成makefile。

make -j

make工具的出现就是为了使用一条命令实现编译,但是需要一个规则文件,也就是makefile,make依靠这个文件来进行批处理编译;
make -j4 与make -j8的意思就是多线程运行,即4个进程去竞争多核cpu,或者8个线程去竞争cpu,可以提高执行速度。
在这里插入图片描述

sudo make install

将编译成功的可执行文件移动到make编译时填写的目录,依据生成的makefile文件,一般默认系统目录 /usr/local/bin。
在这里插入图片描述

三、安装OpenCV

方法一:下载OpenCV的链接:OpenCV-3.4.1.zip
提取码:v4uw
直接点击打开百度网盘下载OpenCV,操作更方便哦!
在这里插入图片描述
方法二:用命令下载

wget -O opencv-3.4.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip官网

方法三:点击下面的opencv官网自己去官网下载,然后自己解压缩到相应的目录即可
opencv官网

  • 为OpenCV安装依赖库
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev  

  • 编译
    在opencv-4.3.1文件夹的目录下创建编译文件夹build,进入~/opencv-4.3.1/build,执行cmake
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local ..

效果如下
在这里插入图片描述

  • 执行make
sudo make

结果如下
在这里插入图片描述

  • 执行make install命令,结果如下图
    sudo make install
    在这里插入图片描述
    OpenCV编译过程完成!

  • 配置OpenCV的编译环境,目的是让系统找到OpenCV的库的路径
    打开编写一个空白的文件opencv.conf

sudo gedit /etc/ld.so.conf.d/opencv.conf 

在opencv.conf中添加如下内容

/usr/local/lib  

效果如下图
在这里插入图片描述

  • 使刚配置路径生效
sudo ldconfig  
  • 打开bash文件,配置bash
sudo gedit /etc/bash.bashrc  
  • 在打开的bash.bashrc的最末尾添加如下代码
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

如图所示
在这里插入图片描述

  • 保存关闭文件,使刚才的配置生效
source /etc/bash.bashrc  

在这里插入图片描述
opencv配置完成!

四、安装Eigen

  • 使用命令
    sudo apt-get install libeigen3-dev
    结果如图
    在这里插入图片描述
    Eigen官网

五、安装ORB_SLAM2

  • 进入ROS工作区间catkin_ws下的src
cd ~/catkin_ws/src/
  • 使用 git clone ***来得到ORB_SLAM2
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

结果如下图
在这里插入图片描述

  • 进入ORB_SLAM2目录,给build.sh文件可执行权限,编译ORB-SLAM2,运行如下命令
cd ORB_SLAM2
chmod +x build.sh
./build.sh

如图
在这里插入图片描述
结果如下
在这里插入图片描述

  • 编辑bash文件
sudo  gedit ~/.bashrc
  • 将包含Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。打开.bashrc文件并在最后添加的内容如图所示
    在这里插入图片描述

六、运行单目SLAM实例

  • 下载数据集
    有TUM、KITTI、EuRoC三种数据集,本实验使用TUM数据集,从下载序列并解压缩。
    在这里插入图片描述
    在这里插入图片描述
  • 编译
    PATH_TO_SEQUENCE_FOLDER为数据集的存储路径,并将tumx.yaml与下载的数据集对应,比如TUM1.yaml,TUM2.yaml 和TUM3.yaml 分别对应 freiburg1, freiburg2 和 freiburg3
    我的数据集放在/home/mango/catkin_ws/ros目录下
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/mango/catkin_ws/src/rgbd_dataset_freiburg1_xyz

在这里插入图片描述
出现运行结果:
在这里插入图片描述
在这里插入图片描述

七、运行kitti数据集

我的数据集放置的路径
在这里插入图片描述

  • 相关数据集下载路径

数据集下载

  • 编译执行命令
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml /home/hadoop/test

该命令的数据集路径,这个根据自己下载的kitti数据集路径修改
在这里插入图片描述
运行结果显示
在这里插入图片描述
根据摄像头移动路径绘制的地图如下
在这里插入图片描述

八、实验遇见的问题与解决方法

问题一:运行时出现如下错误
在这里插入图片描述
解决办法:在~/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/文件夹下修改CMakeLists.txt文件,在set(LIBS…)后面添加如下的一句话,井使它生效

-lboost_system

如图所示
在这里插入图片描述问题二:install cimpiler error:killed(program cciplus)
在这里插入图片描述
解决办法:我好像直接关机重启就好了。
问题三:
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.

在这里插入图片描述
解决办法:
1.直接运行sudo chmod 777 /etc,避免出现mkdir无法创建该包的错误.,如下图在这里插入图片描述
2.自己相应文件夹下/etc/ros/rosdep/sources.list.d去创建目录 20-default.list
在这里插入图片描述
3.在etc/ros/rosdep/sources.list.d目录下打开终端,运行
sudo gedit 20-default.list

4.编辑 20-default.list文件,将里面的内容替换为如下

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

效果如下图
在这里插入图片描述

5.在home打开终端继续执行命令,会出现另外的错
ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize

在这里插入图片描述
解决办法:sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
在这里插入图片描述
终于对了
在这里插入图片描述

问题四:
/src/ros_rgbd.cc:35:
/home/mango/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/…/…/…/Thirdparty/g2o/g2o/types/…/core/jacobian_workspace.h:30:10: fatal error: Eigen/Core: No such file or directory
#include <Eigen/Core>
^~~~~~~~~~~~
compilation terminated.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分别将se3_ops.h、se3quat.h…等等出现问题的XXX.h文件找到,打开将里面的

#include <Eigen/Core>

修改为

#include <eigen3/Eigen/Core>

如图所示
在这里插入图片描述
问题五:出现error:'usleep’问题在这里插入图片描述
在这里插入图片描述
解决办法:根据提示哪个文件有这个问题,将它找到,在引入头文件地方添加如下

#include<unistd.h>

问题六:在编译ORB-SLAM2时,出现cpp项目编译时报错: c++: internal compiler error: Killed
原因是内存不够,并且没swap,增加swap
解决办法

sudo -s
dd if=/dev/zero of=/tmp/newdisk bs=1M count=8000
du -sh /tmp/newdisk
mkswap -f /tmp/newdisk 
free -m
chmod 0600 /tmp/newdisk
swapon /tmp/newdisk
free -m

在这里插入图片描述

  • 参考文献
  1. https://blog.csdn.net/qq_42585108/article/details/105519029
  2. https://blog.csdn.net/weixin_44436677/article/details/105587986

加油!
在这里插入图片描述

  • 29
    点赞
  • 211
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值