转载请注明出处
由于最近参与了一个工厂机器人视觉定位的项目,正在做一些文献调研和设计解决方案,所以这篇文章整理一下最近看过的文献中的一些想法和思路。
机器人室内定位(Indoor Localization)是一个比较火的领域,最常见的应用场景有仓储机器人、车辆车库内自动泊车等。目前常见的方案包括Wifi、蓝牙、RFID、激光雷达和视觉等。其中前几种都有比较成熟的工业应用,而大部分基于视觉的方案仍处于实验室阶段。
基于视觉的室内定位可以依据需不需要改变环境分为两大类:一类中我们可以在环境中放置特征图案帮助机器人定位,另一种则是完全利用现有环境的特征。
几种用于视觉定位的编码图案
完全利用现有环境特征的机器人室内定位又有两种不同的常见技术路线:一种是首先利用视觉或者其他方式对环境进行离线建模,随后根据机器人在线采集到的图像实时定位;另一种则是著名的SLAM(Simultaneous Localization and Mapping,同步定位与地图构建)技术,在没有环境先验信息的情况下,与运动过程中建立环境的模型,同时估计自己的运动[A.Davison et al.]。
完全基于视觉的SLAM在目前仍处在实验室阶段,虽然有很多出色的模型(如ORM SLAM,RTAB map等),但漂移的现象仍然比较突出;而离线建模-在线检测的路线由于在建图过程中不需要做到实时性,有更多的算法可以让结果更加精准,因而更加适用于室内尤其是工厂等应用场景。
总的来说,这部分内容比较杂乱,很多方案无法用统一的框架去概括。以下分别简单介绍一下特征的选择,常见的框架以及一些比较特殊的方案。
基于特征点的方案框架设计
视觉SLAM的框架介绍的文章比较多,主要可以概括为前端视觉检测,后端优化,回环检测。在此主要介绍一下离线建图+在线检测的方案所常用的框架。
离线建图+在线检测方案的主要思想是:离线阶段,获取一系列已知空间位置信息的图像,提取特征,编码,池化,存储在数据库中(也可以直接存储图像);在线阶段我们获取问询图像(Query Image),提取同类特征,然后在数据库中检索最匹配图像,随后根据PnP等方法依据最匹配图像和问询图像的关系计算机器人所在位置。
编码和池化
这里简单介绍一下编码和池化:编码的过程借用了BoW(Bag of Word,词袋模型)或VLAD(Vector of Locally Aggregate Descriptor)思想。以BoW为例,我们在对于每一幅图像提取了SIFT或者SURF特征后,利用这些特征建立一个字典。常见的做法是通过聚类得到个聚类中心,每个聚类中心对应一个编码,假设是每个特征描述子(编码)的维度,则这个字典可以被表示为一个的矩阵:
令是对于每一副图片提取的特征的数量,那每幅图片可以用一个的矩阵描述:
通过将每一个描述子对应到不同的聚类中,我们可以得到一个的矩阵,其中每一个量代表着描述子是(1)否(0)在所对应的聚类中。
而池化过程是将这个的矩阵进一步缩减为维向量。有两种不同的池化方式:平均池化(Average Pooling)和最大池化(Max Pooling),分别是求对应行的平均值和最大值。
对于VLAD来说,与BoW最大的区别在于BOW是把局部特征的个数累加到聚类中心上,而VLAD是把局部特征相对于聚类中心的偏差(有正负)累加到聚类中心上,而且是对最相邻的k个聚类中心都进行累加。
特征选择
视觉特征分为低层特征、中层特征和高层特征。低层特征以点特征为代表,如SIFT(Scale-Invariant Feature Transformation,尺度不变特征变换)特征、SURF(Speed Up Robust Feature,加速稳健特征)特征和ORB(Oriented FAST and Rotated BRIEF)特征;中层特征主要为线段和特殊的图案;高层特征则为一些特定的物体。在室内视觉定位中,这几种方案均有使用。
低层特征
低层特征比较通用,比较适合纹理丰富且具有一定随机性的场景,更适合室外场景,而在室内,由于场景比较单一或者纹理不够丰富,算法常常无法提取出足够的特征来进行定位。实际应用中,SIFT、SURF以及ORB都是常用的低层特征。一些方案也延伸出对低层特征进行组合、为特征赋予不同的权重、将特征分组等方法。
为特征赋予不同的权重
将特征按照所在的空间平面进行分组
线特征
由于人造景观中往往有很多线,属于中层特征的线段常常被用于进行定位,比如LineSLAM[E. Perdices et al.,LineSLAM: Visual Real Time Localization Using Lines and UKF]直接提取空间中的线段进行建图和定位。StructSLAM[H. Zhou et al., StructSLAM: Visual SLAM With Building Structure Lines]则利用了建筑结构线相互平行或垂直这一先验信息减小SLAM过程中漂移的问题,提高精度。
LineSLAM使用图像中的线段进行建图和定位
StructSLAM
高层特征
对于高层特征的使用也是一大思路。有的方法利用结构与地面的交线和建筑物的平面图的匹配进行定位。也有学者提出了利用特定的物体比如椅子、笔记本电脑、桌子等进行定位[Constructing Category-Specific Models for Monocular Object-SLAM],或者利用一些空间中的文字定位[G. Fusco et al.,Indoor Localization using Computer Vision and Visual-Inertial Odometry]。
利用结构与地面的交线和建筑物的平面图的匹配进行定位
利用椅子定位
此外,如之前提到的,也有利用一些人造的专用标记进行定位[Y. Huang et al.,Vision-Based Semantic Mapping and Localization for Autonomous Indoor Parking]
利用二维码定位
总之,除了低层特征外,其他特征的选择主要是利用了所在应用场景的特殊性。
利用地面特征的方案
对于场景中有大量移动物体同时地面纹理丰富的场景,也有一些利用面向下的摄像头采集地面图像用于建图和定位的方案。
比较有代表性的有[Street Map - Mapping and Localization on Ground Planes using a Downward Facing Camera]和[High-Precision Localization Using Ground Texture],均为2018年的工作。
其中Street Map提供了两种思路:基于点特征的方案和基于线特征的方案。其中,基于点特征的方案与常见的SLAM思路相似,提取并跟踪特征进行位姿估计,同时有回环检测和后端图优化工作来减小漂移。而基于线特征的方案则是做出了“地面的线是方形的”这一先验假设,利用这一特征检测线段、判断是否重合、加入已有地图。然而当线段太密集或者太稀疏时,可能需要结合IMU进行估计。
基于线特征方案的框架
适合应用基于点特征方案的情形
基于点特征方案的框架
持续更新中,敬请关注。
网友评论