APP下载

一种基于双目相机的SLAM系统的设计

2020-09-06王进祺高然董瑞虎常浩帛陈熙文

数码世界 2020年8期

王进祺 高然 董瑞虎 常浩帛 陈熙文

摘要:针对在过往SLAM研究中使用激光雷达传感器进行实时定位与地图构建的各项缺点,如传感器成本过高、缺少有效的回环检测能力等问题,提出了在Linux系统下搭建基于双目相机的SLAM系统来改善这些问题。研究采用的SLAM系统是ORB-SLAM系統,是一个它比较完整,不仅包含有视觉里程计、跟踪特性,还具有回环检测的功能。

关键词:双目相机;ORB-SLAM2;实时定位

同步定位与地图构建在国外已经有了三十多年的研究历史,但国内关于SLAM系统的文献以及相关期刊杂志依然很少;并且SLAM的应用是随着时代的进步,越来越需要的,比如无人驾驶的很多交通工具,无论是飞机、汽车亦或是无人机,还是家庭中所广泛应用的的扫地机器人、智能服务机器人等大多数都是基于SLAM系统的基础上研究的。可以使用的传感器也有许多种,直至今日,激光雷达传感器依然是在市面上应用较为广泛的传感器,然而激光雷达传感器的成本依然非常昂贵的,并且使用激光雷达也是非常复杂的,因此现在越来越多的人开始研究用视觉传感器来应用在此领域中。而ORB-SLAM系统正好是通过双目相机传感器来进行研究的一种关于SLAM的比较完善的系统,与激光雷达相比较而言,它不仅结构较为简单,成本价格也较为低廉。

该系统的软硬件包含:一台运行内存约8GB的笔记本电脑、一个USB接口的双目相机、ubuntu16.04及其以上版本的Linux系统和ROS Kenetic软件平台。在Linux系统中搭建ROS环境,在其创建的一个工作空间即src文件下安装Pangolin、 OpenCV、Eigen3和ORB-SLAM2等四个数据库。Pangolin被用作可视化以及用户的界面,OpenCV是有着很多的开源算法的一种图像处理的算法库,其安装是为了后期对图像进行处理、Eigen3是各种矢量运算和各种矩阵的数据库。

该双目相机的SLAM系统的原理分为五个模块,五个模块各有分工而又为下一模块的进行做好了铺垫:

第一步:读取视觉传感器即双目相机所扫描到的信息,主要读取并预处理双目相机的图像信息。若在机器人上,会有其他信息如关于惯性传感器、码盘等信息被读取。这是对双目相机的数据的读取。

第二步:通过视觉里程计估算毗邻的图像之间双目相机的移动和被扫描到的局部地图的大致样子等信息。这即是视觉里程计的工作。

第三步:在视觉里程计的后端进行对视觉里程计测量到的双目相机的位姿信息和经过回环检测的信息进行一系列的非线性优化,就会收到全局移动的轨迹和大致地图。

第四步:将通过回环检测得到的相机的移动轨迹反馈给视觉里程计的后端,再由视觉里程计的后端进行处理。若在此处未能检测到相应的轨迹信息,则不会进行信息的反馈,从而直接进入第五步。

第五步:相应的地图将会被通过一系列读取、预处理、并进行优化后,将其构建出来。

其中设计非线性优化和回环检测两个环节是为了解决视觉里程计工作时的漂移问题,该系统的运行原理图如下图1所示:

设计该系统时,大致分为四步,总体设计流程图如图2所示

搭建ROS平台:首先更新Ubuntu系统的软件列表,然后下载安装git,其从Github上将项目克隆至本地,接着通过Cmake的安装进行程序的编译,安装与Ubuntu16.04对应的软件ROS Kenetic ,最后搭建ROS平台,用于对ORB-SLAM2系统的在线实时运行。

各种依赖项的安装测试:ROS安装成功后,创建一个工作空间,后续工作均在此工作空间内完成,在刚刚建立好的工作空间下安装各种依赖项,如Pangolin、 OpenCV、Eigen3和ORB-SLAM2四个数据库,安装ORB-SLAM2之前,还需要安装一个索引图像的C++数据库DBoW2以及一个基于C++算法的框架g2o,它们的编译与ORB-SLAM2统一编译的,这里很重要的一点,每次在GitHub上克隆相应项目后都会测试其是否被成功地安装上去。

数据集单目例子的测试:接下来就是对该系统进行测定,测试分单目的例子和ROS例子两方面进行,单目例子即首先在网上下载TUM数据集进行测试,先下载TUM的数据集,解压到本地以后,打开终端,输入相关命令,这时还需要将命令中带有的数据集名称的类型做相应的修改,测试结果图如图3中a所示,

连接双目相机后的实时测试:ROS例子即将双目相机通过USB接口接入电脑,更改ORB-SLAM2订阅的话题,即修改ORB-SLAM2项目的源代码,使ORB-SLAM2订阅的话题其与双目相机usb_cam节点发出的话题相一致,然后打开ROS核,启动双目相机的节点,再运行ORB-SLAM2,结果如图3中的b所示。Map Viewer中红色点表示的是追踪捕捉到的特征点,蓝色方框的轨迹是装置移动的路径,Current Frank中扫描的绿色小方框是启用双目相机的节点后追踪捕捉到的特征点。

本文介绍了关于双目相机SLAM系统设计的基本组成、基本原理和该系统搭建的基本过程和实验结果。研究的目的是解决激光雷达传感器价格较为昂贵的问题,从而引进了视觉传感器即双目相机的使用,基于ORB-SLAM2算法在Linux系统下搭建了此SLAM系统,并通过实验验证了该系统的可实施性,该系统可以通过双目相机实时采集到数据,然后将得到的图像信息经过一系列处理后传递给PC端。该系统说明采用价格低廉的双目相机被用来替代激光雷达传感器的不足,且ORB-SLAM2系统的回环检测是其特有的,回环检测环节可以极大的减小建图过程中所产生的误差。该研究完成了该系统的设计进而验证了系统的可行性。

参考文献:

[1]沈燕芬,张小红,朱锋.ORB-SLAM2车载双目视觉的自主导航性能评估[J].导航定位学报,2018,6(02):29-35.

[2]陆建伟,王耀力.基于ORB-SLAM2的实时网格地图构建[J].计算机应用研究,2019,36(10):3124-3127+3131.

[3]侯荣波,魏武,黄婷,邓超锋.基于ORB-SLAM的室内机器人定位和三维稠密地图构建[J].计算机应用,2017,37(05):1439-1444.