Ubuntu16.04下配置ORB-SLAM2与运行单目实例

  • 一、安装相关工具
  • 二、安装Pangolin
  • 三、安装opencv
  • 四、安装Eigen
  • 五、安装ORB_SLAM2
  • 六、安装usb_cam
  • 七、运行ORB_SLAM2单目实例
  • 八、实时运行ORB_SLAM2
  • 九、编译过程相关问题的解决办法

一、安装相关工具

在配置过程中我们需要用到cmake、gcc、g++、git工具,我们可以直接在终端使用相关命令进行下载安装。

  1. 安装camke,用于程序的编译
sudo apt-get install cmake
  1. 安装gcc与g++
sudo apt-get install gcc g++
  1. 安装git,用于从Github上克隆项目到本地
sudo apt-get install git

二、安装Pangolin

安装Pangolin 作为可视化和用户界面。Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug。

1.在安装Pangolin之前,先要安装必要的依赖项:

sudo apt-get install libglew-devsudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-devsudo apt-get install libpython2.7-dev

2.安装完依赖项后可以通过以下命令安装Pangolin:

git clone https://github.com/stevenlovegrove/Pangolin.git

下载速度跟网速相关,如果失败,多执行几次命令。
3.编译安装

cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOSR=1 ..
make –j
sudo make install


三、安装opencv

opencv的安装可以参考我另外的博客。
参考链接

四、安装Eigen

sudo apt-get install libeigen3-dev

Eigen头文件的默认位置在 “usr/include/eigen3” 中。如果不确定,可以输入以下命令查找:

sudo updatedb
locate eigen3

相比于其他库,Eigen的神奇之处在于,它是一个纯用头文件搭起建起来的库。这意味着你只能找到它的头文件,而没有.so或.a那样的二进制文件。在使用时只需引入Eigen的头文件即可,不需要链接库文件(因为它没有库文件)。要使用Eigen库,需要在cmake工程中的CMakeLists.txt文件中指定Eigen的头文件目录。

五、安装ORB_SLAM2

在安装之前我们需要选择放置ORB_SLAM工程的文件夹。如果需要在ROS环境下运行ORB_SLAM,最好将工程放在catkin_ws/src文件夹下。(因为我的ros工作空间为catkin_ws)进行我的src文件夹下,打开终端执行下面命令:

1.下载ORB_SLAM2

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2


2.编译ORB_SLAM2
进入ROB_SLAM2

cd ORB_SLAM2

赋予文件夹权限

chmod +x build.sh

编译build.sh文件

./build.sh

如果想要在ROS环境下运行ORB_SLAM,则需要编译build_ros.sh文件。
在当前终端修改文件权限

chmod +x build_ros.sh

添加环境变量

gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/自己的用户名/catkin_ws/src/ORB_SLAM2/Examples/ROS

接着运行

source ~/.bashrc

也可以使用下面命令来进行检查

echo $ROS_PACKAGE_PATH

出现/opt/ros/kinetic/share:/home/lizhongwan/catkin_ws/src/ORB_SLAM2/Examples/ROS,正常。

echo $ROS_ROOT

出现/opt/ros/kinetic/share/ros,正常。
编译build_ros.sh

./build_ros.sh

编译过程可能会有点慢,如果电脑性能可以,我们可以将上面相关编译文件中的make -j修改为make -j4或者make -j8。如果电脑性能不佳,我们可以将make j修改为make。
到这里我们的ROB_SLAM2就安装完成啦,下面可以进行实例运行。

六、安装usb_cam

1.下载usb_cam

cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git

2.编译工作空间

cd catkin_ws/src
ctakin_make

3.注册程序

source ./devel/setup.bash

4.创建编译文件夹并编译

cd src/usb_cam
mkdir build
cd build
cmake ..
make -j8

5.连接笔记本摄像头

6.新建终端运行ros

roscore

7.在其他终端进行工作空间的usb_cam下的launch文件夹,运行相机节点

roslaunch usb_cam usb_cam-test.launch

运行效果展示:

到这里我们的usb_cam就安装成功啦!

七、运行ORB_SLAM2单目实例

1.下载数据集
有TUM、KITTI、EuRoC三种数据集,本实验使用TUM数据集,可以在下面链接进行下载:
下载地址
2.运行ORB_SLAM
官方给出的命令格式:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txtExamples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

其中PATH_TO_SEQUENCE_FOLDER为数据集的存储路径,并将tumx.yaml与下载的数据集对应,比如TUM1.yaml,TUM2.yaml 和TUM3.yaml 分别对应 freiburg1, freiburg2 和 freiburg3。
根据自己所保存的路径做适当修改:
在ORB_SLAM2文件夹下打开终端,执行以下命令来运行程序:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/lizhongwan/rgbd_dataset_freiburg1_xyz

运行效果如下:

八、实时运行ORB_SLAM2

1.启动ros

roscore

2.启动usb_cam节点

roslaunch usb_cam usb_cam-test.launch

3.ORB-SLAM默认订阅的话题为/camera/image_raw,而usb_cam节点发布的话题为/usb_cam/image_raw,因此需要在ros_mono.cc中修改订阅的话题.
可以先通过下面命令查看已发布的话题

rostopic list

找到在/home/lizhongwan/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src的目录下的ros_mono.cc文件

打开文件并修改成下面显示的代码:

因为修改了源文件,所以我们需要重新编译

./build_ros.sh

4.运行实时单目
命令格式如下:

rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

其中PATH_TO_VOCABULARY是词典的路径,一般为Vocabulary/ORBvoc.txt
PATH_TO_SETTINGS_FILE是记录摄像头参数的文件,比如之前用到的TUM1.yaml。
我用的命令为:

rosrun ORB_SLAM2 RGBD /home/lizhongwan/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/lizhongwan/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml

运行效果如下:

将摄像头缓慢的旋转,可以看到右边窗口在进行路线规划吗,左边窗口在捕捉RGB。

九、编译过程相关问题的解决办法

1.编译./build_ros.sh出现下面错误

/home/lizhongwan/ORB-SLAM2-Sample/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/se3quat.h:32:22: fatal error: Eigen/Core: 没有那个文件或目录
compilation terminated.
CMakeFiles/RGBD.dir/build.make:119: recipe for target 'CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o' failed
make[2]: *** [CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/RGBD.dir/all' failed
make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

解决办法:将相应的.h文件中,eigen的引用进行修改。
2.编译build_ros.sh文件时出现下面错误

CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/RGBD.dir/all' failed
make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2
make[2]: *** No rule to make target '/opt/ros/kinetic/lib/libopencv_calib3d3.so.3.2.0', needed by '../Stereo'. Stop.
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/Stereo.dir/all' failed
make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2
make[2]: *** No rule to make target '/opt/ros/kinetic/lib/libopencv_calib3d3.so.3.2.0', needed by '../MonoAR'. Stop.
CMakeFiles/Makefile2:820: recipe for target 'CMakeFiles/MonoAR.dir/all' failed
make[1]: *** [CMakeFiles/MonoAR.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

解决办法: 修改Examples/ROS/ORB_SLAM2/文件夹下的CMakeLists.txt文件。
将下面的代码修改:

set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
)

修改为:

set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
-lboost_system
)

到这里我们的整个安装与配置就完成啦,希望可以帮助到大家。

Ubuntu16.04下配置ORB-SLAM2与运行单目实例相关推荐

  1. vscode linux新建c语言,Ubuntu16.04下配置VScode的C/C++开发环境

    1. Vscode安装 Visual studio code是微软发布的一个运行于 Mac OS X.Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器.第一种 ...

  2. linux arm移远重启4g,如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组)

    如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组) 如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组) 最近由于工作原因入手了移远的5G(RM500H工业模 ...

  3. ubuntu16.04下配置caffe无GPU

    1. 安装依赖项  1 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5- ...

  4. Ubuntu16.04下配置caffe(亲测成功)

    前言: 历经一个国庆的折腾,终于成功在Ubuntu下搭建好了caffe,过程中遇到的坑真的是数不胜数,最大的一次坑是本来已经配置好了结果手残命令行一阵不知名命令之后电脑崩溃又得重装系统,结果装好系统再 ...

  5. 如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组)

    最近由于工作原因入手了移远的5G(RM500H工业模组)通信开发板,由于手头上没有树莓派等原装Linux内核系统,又需要使用ROS,因此使用了Vmware虚拟机安装了Ubuntu16.04进行调试.最 ...

  6. Ubuntu16.04下配置nginx + RTMP流媒体服务器

    目录 前言 1.安装nginx需要的环境 1.1 查看gcc版本 gcc -v 1.2 pcre.pcre-devel安装 1.3 zlib安装 1.4 安装openssl 2.开始安装 2.1 创建 ...

  7. Ubuntu16.04下配置最新Vs Code的C/C++开发环境

    1. Vscode安装 Visual studio code是微软发布的一个运行于 Mac OS X.Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器. 安装 ...

  8. Ubuntu16.04下配置pip国内镜像源加速安装

    问题描述 基于国内网速的问题,我们直接pip安装包通常速度非常慢,而且经常会出现装到一半失败了的问题,既然这样,我们就要充分利用国内镜像的力量,节省时间,明显提高pip安装的效率.以下是我的操作分享, ...

  9. Ubuntu16.04下配置laravel

    参考 http://tecadmin.net/install-laravel-framework-on-ubuntu/# 本人亲试,完全正确 注意: Step 4 – Set Encryption K ...

最新文章

  1. SpringBoot配置文件YAML配置注入(详解)
  2. .NET 指南:枚举的设计
  3. 树莓派~Ubuntu~OpenCV
  4. matplotlib 和 pandas 两个包的安装
  5. 多进程爬虫(爬取小说)Python实现
  6. ElasticSearch优化系列三:机器设置(内存)
  7. VC控件 Check Box
  8. QT乱码总结7.编码测试和总结二
  9. Builder 模式
  10. Dotnet中Span, Memory和ReadOnlySequence之浅见
  11. c#.winform,datagridview,数组,绑定,字符串,字符串数组绑定datagridview显示,长度,显示数组内容...
  12. 河南王牌计算机专业,河南计算机专业实力突出的7所大学,郑大位列次席,榜首实至名归...
  13. html 地址 点击召唤高德,高德地图api 点聚合+海量点+点击事件(根据地区或坐标进行定位)...
  14. 手势UITapGestureRecognizer的tag
  15. 我与“顶级工程师”距离有多远?
  16. Linux服务笔记之一:Telnet远程登录
  17. RAID10和RAID01的区别
  18. Linux命令整理-Kali
  19. BZOJ 3689: 异或之 可持久化trie+堆
  20. jupyter离线包_[伟哥艾路]jupyter实验室包的离线安装,小,AI,之路,Jupyter,jupyterlab

热门文章

  1. c语言中rand是什么意思,c语言中Random是什么意思 random()的头文件是什么 - 云骑士一键重装系统...
  2. delphi xe10.2 shelllistview的使用及安装
  3. 不愧是京东大牛!用Java实现黄金分割数的示例详解(附代码)
  4. 十进制转化为八进制(计算机组成原理)
  5. vs2017单步调试光标乱蹦
  6. 中国针织行业市场深度分析及发展规划咨询综合研究报告
  7. 如何让右键菜单出现“命令行在这里”,即cmd here
  8. jupyter notebook 运行不出结果,没报错,不是[*]或者[ ]
  9. 40-65w/年,陌陌招聘多岗位安全工程师(地点:北京 · 望京SOHO)
  10. 简单学生成绩查询系统 按成绩排序 按姓名排序