SLAM表示同时定位与构图,旨在依靠(机器人)传感器信息实现其自定位并建立环境模型[8]。环境模型信息越丰富,其语义程度就越高,对机器人自主执行任务就越有利。目前,大部分SLAM算法生成的地图信息都是一些基本几何单元(例如点和线等)的联结,而没有用到语义信息或者其他标识。本文旨在利用一些(已知)物体的几何信息,对常规的单目SLAM算法生成的地图进行部分标注,从而丰富环境模型。
本文识别目标对象并把它们关联到估计的地图中,从而实现向几何SLAM中添加语义内容。我们选择单个摄像头作为整个系统的唯一输入,选择这样简单配置的原因有以下三点:1)在计算机视觉社区中有大量的目标模型可供识别算法使用;2)互联网上有大量的图片,可以让我们自主的选择并生成目标模型;3)可以在不同的步骤中使用不同的摄像头,(例如)物体模型构建和SLAM计算可以采用不同的摄像头作为输入,在本文的实验中即是如此。这样可以实现互操作性,即相同的模型可以用在各种各样的机器人上。
基于视觉信息的目标识别算法正在经历非凡的进步,但是大部分研究是针对单幅图像进行的(即判断当前图像中是否存在某个目标)。(这样做)对于某些目标识别应用领域(例如基于内容的网络图像分类等)来说是适用的,但我们认为在机器人领域则并不适用,具体来说促使我们将局部构图与目标识别结合起来用于解决机器人构图问题的,主要是因为以下三点:
首先,机器人必须与其周围的环境进行交互,因此将目标的三维信息引入地图是很有必要的,以便其能够执行任何任务,而仅靠分析单幅图像中是否存在某一目标,在机器人应用领域则是不够的(例如,目标抓取任务)。
其次,大部分机器人的视觉输入都是图像序列,而不是单幅图像,因此识别算法也应该进行相应的调整,以更好的适用具体情况。
最后,每个机器人在执行任务过程中,需要考虑实时性的约束。比如在抓取任务中,我们需要知道机械臂在每个瞬间相对于物体的位置。在本文提出的算法中,目标一旦被识别后就会被关联到SLAM算法构建的地图中,然后这些目标的三维位置在后续的任何时刻都可用,即便是其已不在摄像头的拍摄范围内。
综上所述,我们的工作受到目前目标识别和常规的几何SLAM算法的不足的启发:一方面,仅依靠目标识别算法不能够计算物体的三维参考坐标系,另一方面,常规的SLAM算法虽然能够得到精确的点云地图,但却不能用于针对具体物体操作的任务层面(比如“抓取茶杯”)。本文提出的语义SLAM方法包括目标识别,目标关联和局部SLAM三个环节,使机器人形成了一个基本感知能力,能够用于执行具体任务。(即机器人不仅仅知道“我在哪里”,还能够知道“我周围有什么”,方便其后续任务的执行。)
本文三个模块都用到了目前最前沿的算法实现:第一步,(在SLAM部分)我们使用了EKF单目SLAM算法,能够在线实时的为机器人提供当前摄像头的位置和稀疏特征点地图[6]。第二步,从运动到结构,我们从少数图像中预先计算出一个目标模型数据库[24]。第三步,通过视觉识别方法实现对图像序列中目标的识别[16]。
本文后续部分结构如下:在第II部分中对研究现状进行了分析,III部分总体描述所用算法。接下来的几个部分则主要进一步讨论了算法的细节:IV部分是目标模型,V部分是目标识别,VI部分是引入了目标特征的单目SLAM算法。最后,论文的第VII部分对算法进行了实验验证,VIII部分是总结与展望。