失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 笔记本 Ubuntu 16.04 单目ORB_SLAM2 + ROS + usb_cam 环境的搭建与实现(地图的构建)

笔记本 Ubuntu 16.04 单目ORB_SLAM2 + ROS + usb_cam 环境的搭建与实现(地图的构建)

时间:2020-12-31 07:43:00

相关推荐

笔记本 Ubuntu 16.04 单目ORB_SLAM2 + ROS + usb_cam  环境的搭建与实现(地图的构建)

文章目录:

1 系统和摄像头准备

1.1 首先更新apt库

1.2 安装git

1.3 安装cmake

2 安装Eigen

3 安装Pangolin

3.1 安装OpenGL的依赖

3.2 别的一些库

3.3 下载Pangolin

4 安装OpenCV

5 安装BLAS and LAPACK库

6 下载ORB_SLAM2

7 下载数据集(Monocular Examples)

8 测试ORB_SLAM2

9 ROS的安装

10安装usb_cam驱动

11 接收摄像头消息

12 运行ROS实例

13单眼增强现实

14错误总结

14.1找不到链接目录

14.2 usleep未定义

14.3 OpenCV 编译报错(1)

14.4 OpenCV 编译报错(2)

14.5 执行实例报错

14.6打开摄像头报错

15百度云文件地址

最近研究了一个ORB_SLAM2,即时定位与地图构建,跑了一下代码,

在环境的搭建的过程当中遇到了很多的问题,我会在文章的最后记录出来。

git上也有比较详细的实现过程,地址。

此外安装环境等软件的时候,有的是国外的服务器,下载会很慢,我将我用到的一些安装包上传至我的百度云盘。

1 系统和摄像头准备

摄像头没过多要求,我用的是罗技(Logitech)罗技C1000e

系统环境Ubuntu16.04,这里不再叙述Ubuntu的安装过程,

双系统或者虚拟机都可以,网上有很多教程。在桌面创建一个文件夹SLAM的文件夹。

1.1 首先更新apt库

sudo apt-get update

1.2 安装git

sudo apt-get install git

1.3 安装cmake

sudo apt-get install cmake

2 安装Eigen

Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。

Download and install instructions can be found at:Required at least 3.1.0.

从官网下载,至少3.1以上版本。解压出来进行安装。在Eigen文件夹下

mkdir buildcd buildcmake ..makesudo make install

3 安装Pangolin

3.1 安装OpenGL的依赖

可以参考这篇文章,文章地址。

3.2 别的一些库

//GLEW:sudo apt-get install libglew-dev//Boost:sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev//Python2/Python3:sudo apt-get install libpython2.7-dev//编译基础库sudo apt-get install build-essential

3.3 下载Pangolin

cd SLAM 打开终端

git clone /stevenlovegrove/Pangolin.gitcd Pangolinmkdir buildcd buildcmake -DCPP11_NO_BOOST=1 ..make -j//make(建议不要使用make -j,使用make。如果用make -j是使用多处理器编译,可能造成死机)

4 安装OpenCV

相关依赖:

a、必须依赖

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-devlibavformat-dev libswscale-dev

b、可选依赖,最好也装上

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

安装OpenCV

从官网下载OpenCV,选择对应的版本,我这里下载的是opencv-3.2.0。

进入OpenCV文件夹,打开终端

mkdir releasecd releasecmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..//编译安装makesudo make install

编译过程很慢,耐心等待吧。

sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到。

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

执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加

/usr/local/lib

执行如下命令使得刚才的配置路径生效

sudo ldconfig

OpenCV安装好了之后,进行测试一下。

找到 安装的文件夹

cd 到 /home/qiuhao/software/opencv-3.2.0/samples/cpp/example_cmake 的目录下

我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下

make buildcd buildcmake ..make ./opencv_example

详尽安装可参考该文章。

5 安装BLAS and LAPACK库

sudo apt-get install libblas-devsudo apt-get install liblapack-dev

6 下载ORB_SLAM2

cd SLAM 打开终端

git clone /raulmur/ORB_SLAM2.git ORB_SLAM2

cd ORB_SLAM2chmod +x build.sh //使其可执行

等待编译。=======================================

7 下载数据集(Monocular Examples)

TUM Dataset、KITTI Dataset、EuRoC Dataset 三种数据集

kitti 数据集 比较麻烦,得全部下载,这里选择TUM数据集中的一个。下载地址

也可以试试别的数据集,国外的服务器,数据集下载比较慢,漫长的等待开始。

=================================================================================

下载好了之后,将其解压到SLAM里,接下来进行测试。

8 测试ORB_SLAM2

此时SLAM下有这三个文件夹

cd ORB_SLAM2 打开终端执行以下命令。

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

TUMX.yaml 中的X要替换掉, 最后一个为数据集的文件夹。

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ../rgbd_dataset_freiburg1_360/

运行后的效果是:

接下来我们用自己的摄像头来跑SLAM2。

9 ROS的安装

参考链接:/qq_39397000/article/details/83753968

10安装usb_cam驱动

在桌面建创建catkin_ws/src 文件夹。

在catkin_ws 目录下,执行命令

catkin_make

下面安装 usb_cam

cd catkin_ws/srcgit clone /bosch-ros-pkg/usb_cam usb_camcd usb_cammkdir build cd build cmake ..make

安装好了后,将以下命令 添加到 home下 的.bashrc 文件(ctrl + h 可取消隐藏) 里

source /home/qiuhao/Desktop/catkin_ws/devel/setup.bash

source ~/.bashrc//之后 source以下

安装完ros和usb_cam后,home下 的.bashrc 文件

更改摄像头:在目录 catkin_ws/src/usb_cam/launch 下 。

更改 usb_cam-test.launch 文件夹里的 摄像头序号。

11 接收摄像头消息

将之前编译的SLAM里的文件夹拷贝到 catkin_ws/src 下

将 需要运行的 窗口 改为 摄像头的 窗口:

/usb_cam/image_raw 替换掉 /camera/image_raw

在.bashrc 最后 添加 以下路径:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

此时 .bashrc 下 是这样的:

source ~/.bashrc//之后 source以下

重新编译ORB_SLAM2, 在ORB_SLAM2 目录下执行:

chmod +x build_ros.sh./build_ros.sh

12 运行ROS实例

首先启动ROS,再打开usb_cam , 在 catkin_ws/src 打开终端,运行以下命令。

roscore

同级目录下,打开另一个终端:

roslaunch usb_cam usb_cam-test.launch

在 catkin_ws/src/ORB_SLAM2 目录下 运行ROS实例

rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml

效果如下

试了以下走动的效果,摄像头最好前后移动:

如果过程中发生了别的错误,解决不了的话就重做系统再来几遍吧! @_@

13单眼增强现实

Running Monocular Augmented Reality Demo

This is a demo of augmented reality where you can use an interface to insert virtual cubes in planar regions of the scene. The node reads images from topic /camera/image_raw.

rosrun ORB_SLAM2 MonoAR PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

rosrun ORB_SLAM2 MonoAR Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml

当然这个实例也需要让摄像头发消息,更改 /camera/image_raw。 运行实例效果如图:

14错误总结

14.1找不到链接目录

出错原因为:libboost_system.so 与libboost_filesystem.so找不到链接目录 ,可参考文章

查找目录

将libboost_system.so与libboost_filesystem.so等复制到ORB_SLAM2/lib下,并且将ORBSLAM2/Examples/ROS/ORBSLAM2下的Cmakelists.txt中加入库目录,具体为

之后在重新编译。

14.2 usleep未定义

not declared in this scope

usleep(3000);

^

/home/qiuhao/Desktop/SLAM/ORB_SLAM2/src/: In member function ‘void ORB_SLAM2::LocalMapping::Run()’:

/home/qiuhao/Desktop/SLAM/ORB_SLAM2/src/:94:28: error: ‘usleep’ was not declared in this scope

usleep(3000);

^

/home/qiuhao/Desktop/SLAM/ORB_SLAM2/src/:108:20: error: ‘usleep’ was not declared in this scope

usleep(3000);

^

/home/qiuhao/Desktop/SLAM/ORB_SLAM2/src/: In member function ‘void ORB_SLAM2::LocalMapping::RequestReset()’:

/home/qiuhao/Desktop/SLAM/ORB_SLAM2/src/:719:20: error: ‘usleep’ was not declared in this scope

usleep(3000);

解决办法:文章可参考

在以下文件的开头增加头文件

#include <unistd.h>

需要增加unistd.h的文件有:

Examples/Monocular/

Examples/Monocular/

Examples/Monocular/

Examples/RGB-D/

Examples/Stereo/

Examples/Stereo/

src/

src/

src/

src/

src/

14.3 OpenCV 编译报错(1)

1、OpenCVError: Unspecified error (The function is not implemented. Rebuildthe library with Windows, GTK+ 2.x or Carbon support. If you are onUbuntu or Debian, install libgtk2.0-dev and pkg-config, then re-runcmake or configure script) in cvShowImage, file/home/lynn/soft/opencv/modules/highgui/src/window.cpp, line293

terminate called after throwing an instance of'cv::Exception'

what():/home/lynn/soft/opencv/modules/highgui/src/window.cpp:293:error: (-2) The function is not implemented. Rebuild the library withWindows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian,install libgtk2.0-dev and pkg-config, then re-run cmake or configurescript in function cvShowImage

缺少库导致,解决办法:可参考文章

sudo apt-get install build-essential cmake libgtk2.0-dev libtiff4-dev libjasper-dev libavformat-dev libswscale-dev libavcodec-dev libjpeg62-dev pkg-config ffmpeg

再重新编译OpenCV。

14.4 OpenCV 编译报错(2)

编译OpenCV3.2的时候 缺少ippicv 。

解决办法,可参考文章

下载新的ippicv 包 替换掉

/home/qiuhao/software/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e 目录下压缩包。

14.5 执行实例报错

执行./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ../rgbd_dataset_freiburg1_360/

报错

./Examples/Monocular/mono_tum: error while loading shared libraries: libpangolin.so: cannot open shared object file: No such file or directory

======================解决办法============================

首先检查一下 这些库文件还在不

不在的话复制到 usr/lib

之后在ORB_SLAM2目录下,重新编译./build.sh 和 ./builc_ros.sh

14.6打开摄像头报错

ERROR: cannot launch node of type [image_view/image_view]: image_view

ROS path [0]=/opt/ros/kinetic/share/ros

ROS path [1]=/home/qiuhao/Desktop/catkin_ws/src

ROS path [2]=/opt/ros/kinetic/share

ROS path [3]=...........................................................

原因是不能够打开image_view

解决办法,安装一下ros对应版本的image_view 我的是kinetic

sudo apt-get install ros-indigo-image-view

参考文章文章

15百度云文件地址

程序有的需要下载的东西很慢,我上传至云盘。

链接:/s/1CP3t1muVz1kzx8ISM7AASg 提取码:gn8e

以上内容主要参考

1、/u79501/article/details/68942174

2、/u010128736/article/details/52808650

3、/u013066730/article/details/79411767 opencv安装

4、/mrphd/article/details/79989569

如果觉得《笔记本 Ubuntu 16.04 单目ORB_SLAM2 + ROS + usb_cam 环境的搭建与实现(地图的构建)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。