使用ORB_SLAM2进行全场定位

前言

ORB_SLAM近年来在slam问题上取得了state-of-art的结果,运行速度很快,在i5的NUC上运行帧率可达20帧/s。今年,原作者又公布了ORB_SLAM2源码,程序更加简洁,并且增加了localization mode功能。本篇博客讲介绍如何搭建ORB_SLAM2的运行环境,构建地图,加载离线地图并进行全场定位。


实现

环境配置

 (1)下载源码:https://github.com/raulmur/ORB_SLAM2
 (2)根据作者列出的依赖项安装相应的依赖,注意opencv的版本最好为作者测试的版本2.4.11。经踩坑,使用opencv3.0会报错。
 (3)建议安装ros indigo,本文的测试都是建立在ORB_SLAM2的ROS版本上。
 (4)下载read camera软件包,作为调用摄像头图像的一个ROS节点。下载链接:http://download.csdn.net/detail/u011853479/9610843
 (5)运行read_cam节点
rosrun read_cam webCameraRead
(6)运行ORB_SLAM2节点
cd ~/ORB_SLAM2/Example/ROS/ORB_SLAM2
./Mono ~/ORB_SLAM2-master/Vocabulary/ORBvoc.txt ~/ORB_SLAM2/Examples/Monocular/TUM1.yaml

若成功运行,则表示slam环境配置成功,接下来便可进行下一步工作。


离线地图的加载与全场定位

论文作者给出的源码是不支持地图的保存与载入了,因此需要对源码进行修改。所幸github上已经有网友做完了这部分工作,源码链接http://recherche.enac.fr/~drouin/slam/orbslam2/poine_orbslam2_04_07_16.tgz

(1)下载源码,以同样的步骤编译源码。
(2)将自己使用的相机标定文件替换掉源码中的标定文件
(3)运行read_cam节点
(4)构建地图

./Mono ~/ORB_SLAM2-master/Vocabulary/ORBvoc.txt ~/MyCamera.yaml false

(5)当地图构建完成后,点击GUI上的localization mode,ctrl+c结束该节点,地图便保存为Slam_latest_Map.bin
(6)加载离线地图:将地图的名字改为Slam_Map.bin,执行以下命令:

./Mono ~/ORB_SLAM2-master/Vocabulary/ORBvoc.txt ~/MyCamera.yaml true

经过漫长的字典加载过程,将会看到之前建好的地图,和相机的当前位置。


总结

ORB_SLAM2总体来说是一个非常优秀的slam源码,单目的效果也很好,速度很快,实时性较高。比较适合于光照条件比较稳定、纹理较为丰富的室内环境。实验中发现,光照对ORB_SLAM的效果影响较大,对于重复纹理的背景容易出现误匹配现象,大家在使用过程中都应该尽力避免。
以上是初步的使用心得,后面将会仔细地阅读源码和论文,做点更有价值的工作。

  • 0
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值