单目ORB_SLAM 实战
2016-06-10 10:32
411 查看
单目ORB_SLAM 实战
本篇是对 Zaragoza universidad 发表的ORB-SLAM a Versatile and Accurate Monocular SLAM System 中提出的ORB-SLAM 的代码运行实战,在GitHub上有英文的代码运行介绍。原作者主页
GitHub路径
以下是在自己电脑(dell-optiplex 9020, i7 8G )中调试成功后的,调试流程和注意事项:
这个工作只是为了方便调试过程中遇到问题的小白,大神请直接看原链接。同时如有错误请大家指正,我只是搬运工。
ORB_SLAM安装
首先确保安装了ROS和依赖库文件 eigen3,opencv,blas,lapack,boost等git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/&&/其中&&表示自己安装ORB_SALM的路径, 也可以自行在bashrc环境变量中添加,可以直接
gedit ~/.bashrc查看自己的环境变量
cd Thirdparty/g2o/图优化
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
cd Thirdparty/DBoW2/回环检测的包
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
如果是ROS Indigo ,去掉ORB_SLAM 文件夹中manifest.xml中关于 opencv2的依赖
如下:
<package> <description brief="ORB_SLAM"> ORB_SLAM </description> <author>Raul Mur-Artal</author> <license>GPLv3</license> <depend package="roscpp"/> <depend package="tf"/> <depend package="sensor_msgs"/> <!-- <depend package="opencv2"/> --> <depend package="image_transport"/> <depend package="cv_bridge"/> </package>
然后依然运行
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
ORB_SLAM 安装完成
运行ORB_SLAM代码-使用Example.bag
下载Example.bag.tar.gzhttp://webdiis.unizar.es/~raulmur/orbslam/downloads/Example.bag.tar.gz.
ORB_SLAM 的根目录下提供了两个可运行的版本
in ROS Fuerte:
roslaunch ExampleFuerte.launch
in ROS Groovy or newer versions:
roslaunch ExampleGroovyHydro.launch
rosbag play --pause Example.bag
现在应该可以利用已有的数据库运行ORB_SLAM了
运行ORB_SLAM代码-使用摄像头数据
配置文件 :rosrun ORB_SLAM ORB_SLAM PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE此处PATH_TO_VOCABULARY 为ORB_SLAM/Data/ 下ORBvoc.txt.tar.gz 解压后的ORBvoc.txt
PATH_TO_SETTINGS_FILE 为ORB_SLAM/Data/ 下的 Settings.yaml 文件
PS:工程要求,实际要将Settings.yaml 换成自己标定摄像头后产生的文件
roscore
roslaunch rbx1_vision ORB_cam.launch运行自己的摄像头驱动launch文件
此处的ORB_cam.launch 文件是 我将 rbx1_vision 文件夹中的 usb_cam.launch 修改后的文件,修改地方如下将
<remap from="usb_cam/image_raw" to="/camera/rgb/image_raw" /> <remap from="usb_cam/camera_info" to="/camera/rgb/camera_info" />
修改为:
<remap from="usb_cam/image_raw" to="/camera/image_raw" /> <remap from="usb_cam/camera_info" to="/camera/camera_info" />
因为ORB_SLAM接受的topic名为 /camera/image_raw,也可以自己写remap到相应的topic
3. roslaunch mycamera.launch
此处 将ORB-SLAM 文件夹中的ExampleGroovyOrNewer.launch 复制重新命名为mycamera.launch
将ExampleGroovyOrNewer.launch中的
<remap from="/image" to="/ORB_SLAM/Frame" />(是读取Example.bag的代码)
改为
<remap from="/camera/image_raw" to="/ORB_SLAM/Frame" />
运行之后等待几秒钟,单目ORB_SLAM是利用前几帧的视差来初始化定位的,所以左右摆动摄像头就可以出现特征点和摄像头的位置了。
在调试过程中也借鉴了[漫游者1号](http://blog.csdn.net/dourenyin/article/details/48055441)的文章,自己在调试中遇到了问题,然后摸索后,分享给大家,这篇文章中已经给出了很多详细介绍,这里就不重复了,只将可以运行的调试过程给大家。 以上只是ORB_SLAM 单目的运行程序,原文作者也发布了ORB_SLAM2 里面有关于RGB-D和 stereo 的运行代码。同时近期也看完了 ORB:an efficient alternative to SIFT or SURF 这篇文章,该文章发表于2011年 ECCV,近期会发布关于这篇文章的详细介绍。 关于这篇ORB的文章,读完后并不是很了解,可能需要再深读,消化后再和大家分享。
相关文章推荐
- Java如何播放音频文件,4行代码帮你搞定(不,1行)!
- 富文本
- ecshop首页显示折扣的方法,ecshop商品显示折扣的方法
- C++第一次上机实验-2
- ecshop模板首页或列表页显示商品简单描述
- linux 下按内容查找文件
- PHP写入数据库中文乱码问题
- join连接的五种方式的简单使用案例(Inner join,Left join,Right join,Full join,Cross join)
- 在ECSHOP分类列表页中调用商品货号
- Android按钮状态
- 以其他控制器为目标 在视图中生成输出URL
- 【linux】关机重启命令
- dotnetConf
- Android 文件系统目录分析(手机系统目录分析)
- Ecshop的lbi库文件中嵌套调用另一个lbi库文件
- activity之间的数据传递方法
- 6.10站立会议8
- 批量清除ecshop全部商品的精品 新品和热销属性的方法
- 在CentOS上把MySQL从5.5升级到5.6
- Maven入门指南10:Maven的生命周期和插件