基于基于ORB-SLAM的移动机器人嵌入式实现与优化的移动机器人嵌入式实现与优化
ORB-SLAM(基于ORB特征识别的同时定位与地图构建系统)的源代码无法在嵌入式开发板运行,其构建的点
云图太稀疏无法满足移动机器人路径规划要求。针对这个问题,文章提出将ORBSLAM进行改进与优化,移植
到嵌入式开发板完成SLAM过程。首先,删除原PC端Linux系统下的轨迹、点云图、一些依赖库,保留并改进src
和include文件夹下大部分C++代码;其次,在嵌入式平台以JNI调用方式调用改进后的C++代码,增加
OpenCV、g2o、DBoW2、Eigen等依赖库;最后根据处理后的关键帧连接绘制栅格地图,完成实时轨迹显示和
地图构建。实验结果表明,通过移植实现了在嵌入式开发板进行SLAM过程,硬件配置要求和成本大大降低,所
构建的栅格地图占存量更小且更直观反映实际环境的布局情况,地图误差控制在±0.5 m的较高精度范围内,较
大程度地提高了SLAM性能。
林连秀,叶芸,姚剑敏,郭太良
(福州大学 物理与信息工程学院, 福建 福州 350002)
摘要 摘要:ORB-SLAM(基于ORB特征识别的同时定位与地图构建系统)的源代码无法在嵌入式开发板运行,其构建的点云
图太稀疏无法满足移动机器人路径规划要求。针对这个问题,文章提出将ORBSLAM进行改进与优化,移植到嵌入式开发板
完成SLAM过程。首先,删除原PC端Linux系统下的轨迹、点云图、一些依赖库,保留并改进src和include文件夹下大部分
C++代码;其次,在嵌入式平台以JNI调用方式调用改进后的C++代码,增加OpenCV、g2o、DBoW2、Eigen等依赖库;最后
根据处理后的关键帧连接绘制栅格地图,完成实时轨迹显示和地图构建。实验结果表明,通过移植实现了在嵌入式开发板进行
SLAM过程,硬件配置要求和成本大大降低,所构建的栅格地图占存量更小且更直观反映实际环境的布局情况,地图误差控制
在±0.5 m的较高精度范围内,较大程度地提高了SLAM性能。
关键词关键词:ORB-SLAM;嵌入式;移植;栅格地图
中图分类号中图分类号:TP242文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.05.016
引用格式 引用格式:林连秀,叶芸,姚剑敏,等.基于ORB-SLAM的移动机器人嵌入式实现与优化[J].微型机与应
用,2017,36(5):50-53.
0引言引言
*基金项目:福建省自然科学基金(2014J01236);福建省科技重大专项(2014HZ0003-1);福建省资助省属高校专项课题
(JK2014003).同时定位与地图构建(SLAM)技术是移动机器人在未知环境中,通过对环境的观测,递增地构建环境地图,并
通过构建的环境地图实现对机器人的定位,它是实现机器人自主导航和定位的关键技术。目前实现SLAM的算法很多,其中
ORB-SLAM以追踪效果好、地图精度高、定位稳定性好等优势脱颖而出,成为研究热点。
ORB-SLAM算法由Raúl M A等人于2015年发表在IEEE Transactions on Robotics[1],且在PC的Linux系统上开放了开
源ORB-SLAM系统。采用该ORB-SLAM开源算法,在PC Linux系统上较好实现了SLAM过程,但等同于PC的硬件配置需求成
本高,对移动机器人普通嵌入式开发板不适用[2]。ORB-SLAM算法主要由追踪、地图构建、闭环控制3个线程组成,其中
地图构建部分平均处理每关键帧约385 ms,相对比较耗时,具备较大优化空间[3]。采用ORB-SLAM开源算法所构建的地
图是用点云图方式显示,点云很稀疏,不容易看出所构建的室内结构[4]。对移动机器人地图要求上,栅格地图表示法优于
点云图表示法,一方面可以大大节省内存空间,另一方面也便于后续路径规划过程中进行碰撞检测和空间可行性分析[5]。
从硬件开发成本考虑,如若用PC进行移动机器人开发,显然只用到PC很小部分功能,造成功能浪费、成本偏高,而嵌入式开
发板有着低功耗、低成本、适当的CPU运算效能与友善的软件接口等优势[6]。
针对以上ORB-SLAM源代码只能运行在PC而无法在嵌入式开发板上运行,且其构建的点云图太稀疏无法满足移动机器人
路径规划要求的问题,本文对此进行了较大改进,保留ORBSLAM部分源码并做出修改,移植到嵌入式开发平台,修改地图
构建中的耗时部分,增加基于栅格地图实时轨迹显示部分。移植到普通嵌入式开发板后的ORB-SLAM,不仅大大降低了对硬
件平台的要求,还完成了基于栅格地图的实时轨迹显示,使地图能清晰了然地反映实际环境的布局情况,且所建地图控制在较
高精度范围内。
1ORB-SLAM改进与优化改进与优化
1.1总设计流程的改进
本文将原PC端Linux系统下的ORBSLAM进行了移植和改进,最终在Android平台完成了基于栅格地图的轨迹绘制即完成
了实时地图构建,改进后的总设计流程如图1所示。
在上述流程图模块中,本文主要修改的部分是:修改所保留的ORB-SLAM原src和include文件夹下的C++代码;在LOCAL
MAPPING部分中进行了大部分删减,只做优化部分;删除了原实时点云及轨迹显示部分,在嵌入式平台添加GRID MAP部分