ROS(三):使用ROS跑通ORB_SLAM2

ORB_SLAM2小伙伴们应该相当熟悉了,但是怎么在ROS下来跑ORB_SLAM2呢?下面是LZ的一点心得,也许可以帮助一些小伙伴减少点弯路(⊙o⊙)?

1.安装依赖项
主要的依赖项有eigen3,Pangolin,OpenCV, c++ or c++0x Compiler这些在之前slam安装大全中基本上都已经描述过了,这里就不在赘述了。

DBoW2和g2o在下来的源文件中就有,也不用单独安装。

因为LZ是要跑ROS的,所以ROS还是要安装的,具体请参考http://wiki.ros.org/indigo/Installation/Ubuntu,这个也不是很困难的事情,当然第一次接触肯定会跌跌撞撞的,但是摸爬滚打久了,速度也就上来了。

2.编译ORB_SLAM2
安装好所有的依赖项后,只要运行如下的命令就行了:

cd ORB_SLAM2
chmod +x build.sh
./build.sh

到这里,如果小伙伴们不使用ROS的话,ORB_SLAM2其实已经可以正常使用了。

但是如果要使用ROS的话,还要有几个步骤,第一个在~/.bashec中添加环境。

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

编译对应的ROS文件

  chmod +x build_ros.sh
  ./build_ros.sh

这样ORB_SLAM2其实已经全部编译好了。

3.运行笔记本或者usb摄像头
编译usb_cam(下载链接:https://github.com/bosch-ros-pkg/usb_cam)

//把usb_cam放到catkin_ws/src下
cd catkin_ws/src/usb_cam
mkdir build
cd build
cmake ..
make

  首先开个新的终端,运行roscore(如果显示命令没有找到就说明的你没有source source /opt/ros/indigo/setup.bash 我是直接添加到了根目录文件中的.bashrc中了,详情请下载<机器人操作系统浅析>百度文库中可搜到,见Page16)
 在运行该节点之前,需要先配置一下节点参数,打开src/usb_cam-develop/launch文件中的的launch文件,我这里只需要该设备号即可,笔记本电脑的video0一般是网络摄像头,插入usb摄像头一般是video1,若想看usb摄像头是哪个端口号,可cd到根目录中的dev文件夹下查看。
这里写图片描述

修改主要是:

<param name="video_device" value="/dev/video1" />//video1是外接的usb摄像头

运行一下代码就可以通过ros跑单目的ORB_SLAM2了

roscore
//新开一个终端
. devel/setup.bash
roslaunch usb_cam usb_cam-test.launch
//这时摄像头应该已经打开, 
//新开一个终端
source ~/.bashrc
//这里用的参数文件是examples自带的,其实还是要自己标定下摄像头的
rosrun ORB_SLAM2 Mono /home/felaim/Documents/code/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/felaim/Documents/code/ORB_SLAM2/Examples/Monocular/TUM1.yaml 

这里写图片描述

当中会出现waiting for image的字样,这是我们可以先看下rostopic list
这里写图片描述

然后看一下ros的代码

//这里写的是/image/image_raw
ros::Subscriber sub = nodeHandler.subscribe("/image/image_raw", 1, &ImageGrabber::GrabImage,&igb);
//根据rostopic,应该改成下面的代码
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);
//重新进行./build_ros

最后就会出现自己的画面了。

kinect v1运行ORB_SLAM2
假设你已经按照LZ上篇博客把kinect的驱动已经安装成功。

runcore
//启动kinect
. devel/setup.bash
roslaunch freenect_launch freenect-registered-xyzrgb.launch 

这时通过rostopic可以看到已经有深度信息了
这里写图片描述

source ~/.bashrc
rosrun ORB_SLAM2 RGBD /home/felaim/Documents/code/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/felaim/Documents/code/ORB_SLAM2/Examples/RGB-D/TUM1.yaml 

下图是构造出来的点云图,就是构建的一个稀疏点云图
这里写图片描述

参考博客:
http://blog.csdn.net/qq_18661939/article/details/51829157

你可能感兴趣的:(SLAM,ROS)