本文共 6133 字,大约阅读时间需要 20 分钟。
目录
1 准备工作
在开始配置ORB-SLAM2之前,有若干工具是需要提前安装的,即vim、cmake、git、gcc、g++。
sudo apt-get install vim git cmake -ysudo apt-get install gcc g++ -y
一般地,完整版的Ubuntu都带有
-y
表示自动安装,不需要每项手动确认输入Yes
gcc
和g++
接下来将安装 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/UbuntuROS 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 perceptionsudo 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/
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-SLAM2
的make -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)打开新的终端,运行roscoreroscore
(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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!