默认电脑已经安装好ROS
在ROS下运行ORB_SLAM2 主要包括以下几步:
一、创建ROS工作空间
二、下载usb_cam
三、下载ORB_SLAM2
四、运行
接下来讲解具体的步骤
一、创建ROS空间
1.创建工作空间:打开终端输入以下命令
mkdir catkin_slam
cd catkin_slam/
mkdir src
cd src/
catkin_init_workspace
如下图所示:catkin_slam文件夹下,存在src
2.编译工作空间:编译完成会出现build devel
注意:编译的时候要回到 catkin_slam 目录下
catkin_make
如下图所示:
以上的步骤就是创建ROS空间
二、下载usb_cam
注意:usb_cam 功能包存放的位置 ,应该将其放在 src 文件夹下
1.首先我们先进入到 src 的目录下,然后通过命令下载 usb_cam
cd src/
git clone https://github.com/bosch-ros-pkg/usb_cam.git usb_cam
如下图所示
2.接下来回到 catkin_slam 目录下, 对下载好的usb_cam进行编译
cd ..
catkin_make
如下图所示:
3.上面的步骤算是完成了功能包的安装,接下来我们需要将电脑上的摄像头接在虚拟机上
点击 虚拟机——可移动设备——“找到摄像头”——断开与主机的连接,连接虚拟机
此外需要:虚拟机——设置——USB控制器——将USB改成USB3.1
以上就是摄像头调用的全部内容,我们可以先测试一下:
在终端输入以下代码:
roslaunch usb_cam usb_cam-test.launch
即测试成功
三、下载ORB_SLAM2
1.同样需要将 ORB_SLAM2 存放在 src 目录下
github链接https://github.com/raulmur/ORB_SLAM2
2.因为我们使用的是电脑上的摄像头,所以需要修改ros_mono.cc 文件的内容:
找到 ros_mono.cc 所在的位置 /home/fan/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src
打开文件,将
ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);
修改为:
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);
3.还需要修改文件 CMakeLists.txt
文件所在的位置:/home/fan/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2
添加:
-lboost_system
4.编译 (即我们常用的操作)
先编译总的 ORB_SLAM2
cd ~/catkin_slam/src/ORB_SLAM2/
mkdir build
cd build
cmake ..
make
然后单独编译ROS
注意:在编译ROS前,需要先打开 .bashrc 文件添加以下内容:
sudo gedit ~/.bashrc //打开./bashrc
添加以下内容:其中 /home/fan/catkin_orb 根据自己实际的位置修改
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/fan/catkin_slam/src/ORB_SLAM2/Examples/ROS
source /home/fan/catkin_slam/devel/setup.sh
修改完成之后,保存,
在终端输入
source ~/.bashrc
即如下图所示
设置完上面的,就可以对ROS进行编译
cd //回到主目录
cd ~/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/
mkdir build
cd build
cmake ..
make
我在make的过程中遇到了一个错误,如下所示:
错误的原因:缺少一个头文件:
打开文件:
/home/fan/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.cc
添加:
#include <unistd.h>
四、运行
1.打开一个终端,输入:
roscore
2.重新打开一个终端,开启摄像头,输入:
roslaunch usb_cam usb_cam-test.launch
3.再重新打开一个终端,输入:
rosrun ORB_SLAM2 Mono ~/catkin_slam/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_slam/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
其中的词袋的位置根据自己的存放的位置进行修改
其中的Asus.yaml的位置根据自己的存放的位置进行修改
4.运行结果图