【ORB-SLAM2】(一):Ubuntu16.04下配置ORB-SLAM2
发布日期:2021-06-29 06:24:58 浏览次数:2 分类:技术文章

本文共 6133 字,大约阅读时间需要 20 分钟。

目录


1 准备工作

在开始配置ORB-SLAM2之前,有若干工具是需要提前安装的,即vim、cmake、git、gcc、g++。

sudo apt-get install vim git cmake -ysudo apt-get install gcc g++ -y

-y表示自动安装,不需要每项手动确认输入 Yes

一般地,完整版的Ubuntu都带有gccg++

接下来将安装 ROS Kinetic Kame

2 ROS Kinetic Kame 的安装和配置

下面我将给出 ROS Kinetic Kame 在 Xenial (Ubuntu 16.04) 上的安装和测试过程。

点击[这里](http://wiki.ros.org/kinetic/Installation/Ubuntu"optional title here"),查看 ROS 官网的 ROS Kinetic Kame 安装手册。

2.1 配置Ubuntu软件中心

配置Ubuntu要求允许接受”restricted,” “universe,” and “multiverse.”的软件源,可以根据下面的链接配置:

https://help.ubuntu.com/community/Repositories/Ubuntu

ROS Kinetic ONLY supports Wily (Ubuntu 15.10), Xenial (Ubuntu 16.04) and Jessie (Debian 8) for debian packages.

一般地,这是系统默认设置,如下图所示:

2.2 设置sources.list(软件源)

设置你的计算机从packages.ros.org接收软件包。

添加ROS软件源:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

2.3 设置的密钥

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116

2.4 安装

首先,更新Debian包索引

sudo apt-get update

如果出现

解决方法:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

  注意:最后的码,根据不同的上面出错提示进行修改

重新执行:

sudo apt-get update

ROS含有多种库和工具。官网提供了4种默认配置的安装供你选择。你也可以依据自己需求进行个性化安装。

   (1) 桌面完整版(安装这种)

    Desktop-Full Install: (Recommended) : ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators and 2D/3D perception

sudo apt-get install ros-kinetic-desktop-full

 注意:安装ROS完整版后可能会导致 X server 损坏,在重新启动Ubuntu后出现The system is running in low-graphics mode的错误,导致无法进入Ubuntu桌面。(没有就忽略,我安装时没有出现这种问题)

这是由于使用 apt-get 的安装方式破坏了 X server 的包依赖关系。修复包依赖关系即可解决该问题。

如果出现上述问题,请尝试点击下面的链接,解决问题。

[answers.ros.org thread]( http://answers.ros.org/question/203610/ubuntu-14042-unmet-dependencies/“optional title here”) 或者

[launchpad issue](https://bugs.launchpad.net/ubuntu/trusty/+source/mesa/+bug/1424059/“optional title here”)

2.6 解决依赖

sudo rosdep init

 如果出现如下错误:

解决方法:

#打开hosts文件sudo gedit /etc/hosts#在文件末尾添加151.101.84.133  raw.githubusercontent.com#保存后退出再尝试

重新执行:

sudo rosdep initrosdep update

 

2.7 设置环境

使用apt-get方式在 Ubuntu上安装 ROS,在使用前需要激活/opt/ros/kinetic/目录下的setup.bash文件来添加 ROS 环境变量。

ROS Kinetic Kame,命令如下:

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrcsource ~/.bashrc #(使环境变量设置立即生效)

2.8 安装 rosinstall

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

2.8 测试 ROS

关闭所有终端,重新打开一个终端,输入如下命令,启动ROS环境:

roscore

2.9 测试 turtlesim功能包

  • 保持打开前面的 roscore 终端,重新打开一个终端,输入:
rosrun turtlesim turtlesim_node

  • 运行键盘控制命令:
rosrun turtlesim turtle_teleop_key

  • 鼠标点击第3个命令窗口,按“上下左右”四个按键,小乌龟可以正常行走,那么安装就比较成功了。

2.10 创建 ROS 工作空间

我们开始创建 catkin workspaces

mkdir -p ~/catkin_ws/srccd ~/catkin_ws/srccd ~/catkin_ws/catkin_makesource devel/setup.bash

要想保证工作空间已配置正确需确保ROS_PACKAGE_PATH环境变量包含你的工作空间目录,采用以下命令查看:

cd ~/catkin_wsecho $ROS_PACKAGE_PATH

显示如下:

/home/youruser/catkin_ws/src:/opt/ros/kinetic/share:/opt/ros/kinetic/stacks

出现上述结果,说明我们的 catkin workspaces 已经创建好了,并且 ROS_PACKAGE_PATH也已经配置好了。

    接下来的所有工作都在 ~/catkin_ws/src 目录下完成,即在 catkin workspaces

3 ORB-SLAM2依赖项的安装

3.1 安装Pangolin,用于可视化和用户接口

关闭所有终端,重新打开一个终端,安装依赖库

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

进入 /home/zqzy/software/

下载Pangolin并配置环境

cd /home/zqzy/software/git clone https://github.com/stevenlovegrove/Pangolin

编译并安装Pangolin

cd Pangolinmkdir buildcd buildcmake ..sudo make -j4sudo make install

3.2 安装OpenCV3.2.0

 参考

 其中安装opencv的步骤,注意里面写的是安装opencv3.1,安装时要仔细对照里面所说的每一步

 

3.3 安装Eigen3

Eigen下载地址:

安装的版本为3.3.7。在下载 Eigen3.3.7 压缩文件,并解压。

这里将Eigen3.3.7安装在了 /home/zqzy/software/ 中了(我自己的软件安装目录)

cd ~/softwaretar -zxvf eigen-3.3.7.tar.gz

编译安装eigen3.3.7

cd eigen-3.3.7/ mkdir build cd build cmake .. sudo make sudo make install

 

4 ORB SLAM2 的安装

注意:要安装在工作区的~/catkin_ws/src文件夹下。

cd catkin_ws/srcgit clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2cd ORB_SLAM2

打开build.sh文件,将最后一行编译连接ORB-SLAM2make -j改为make -j4 或者 make -j16 #16线程,编译更快

sudo gedit build.sh

执行build.sh

./build.sh

 待编译完成,在ROS工作空间中就成功安装配置好了ORG-SLAM2项目。下面使用**非实时单目SLAM实例(不需要ROS平台也能运行)**测试ORB-SLAM2是否正确安装。

在编译过程中出现错误:

【SLAM编译错误】ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000);

解决方法:

找到对应的System.cc加入  #include<unistd.h>

需要增加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

( 你需要根据实际情况,提示哪个文件usleep有问题,就去加这个头文件)

参考:https://blog.csdn.net/qq_15698613/article/details/98453592

 

5 运行单目SLAM实例

  在http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载一个序列,并解压。转到ORBSLAM2文件夹下,执行下面的命令。根据下载的视频序列freiburg1, freiburg2 和 freiburg3将TUMX.yaml分别转换为TUM1.yaml,TUM2.yaml,TUM3.yaml。将PATH_TO_SEQUENCE_FOLDER更改为解压的视频序列文件夹。

GitHub上给出的命令执行格式:

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

在我的Ubuntu里命令样例如下:

(将rgbd_dataset_freiburg1_xyz,放到   /home/zqzy/Documents/DataSet/SLAM_DataSet 目录下,执行下面这条命令即可

cd /home/zqzy/catkin_ws/src/ORB_SLAM2./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/zqzy/Documents/DataSet/SLAM_DataSet/rgbd_dataset_freiburg1_xyz

    因为我使用的是 rgbd_dataset_freiburg1_xyz 序列,所以将 TUMX.yaml 改为 TUM1.yaml

    我的序列存储路径为:
    PATH_TO_SEQUENCE_FOLDER =  /home/zqzy/Documents/DataSet/SLAM_DataSet/rgbd_dataset_freiburg1_xyz 

运行结果如下:

6 usb_cam安装

同样地,注意:要安装在工作区的~/catkin_ws/src文件夹下。

1.下载usb_cam源码并配置环境

cd catkin_ws/srcgit clone https://github.com/bosch-ros-pkg/usb_cam.gitcd ..catkin_make #如果报错,就执行 catkin_make_isolatedcd ~/catkin-ws/develsource setup.bash

2.编译usb_cam

cd usb_cammkdir buildcd buildcmake ..make

3.更新ros环境

source ~/catkin-ws/devel/setup.bash

4.测试usb摄像头

(1)打开新的终端,运行roscore

roscore

(2)回到原终端,先进入launch文件夹,再运行usb_cam中的launch文件,如果可以成功运行看到图像则安装成功。

cd launchroslaunch usb_cam usb_cam-test.launch

图像显示如下

该usb_cam-test.launch是usb_cam中自带的launch文件,打开之后内容如下:

其中video_device的默认设备为video0,可以根据情况更改。

如果不了解自己的usb摄像头为video几,可以运行如下命令查看:

ls /dev/video*

usb_cam用于实时SLAM,配合ROS平台使用

 

参考:

转载地址:https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/107233049 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:关于Ubuntu16.04中WPS不能输入中文的问题
下一篇:SLAM 整体性总结

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月08日 02时39分26秒