欢迎大家再次回来,这次课给大家带来该文章的第四部分,SLAM系统的表示。
5. 表示1:几何度量推理
本章主要讨论如何构建SLAM几何模型。更正式的,度量表示方法(几何地图)是一个环境几何结构的符号表示。我们认为理解如何为SLAM(其扩展或机器人用的)选择合适的几何度量将影响许多研究领域,包括长时间导航,与环境交互,人机交互。
几何建模在2D环境中可能更简单,有两个典型的例子:路标地图和网格地图。前者将环境建模成一组稀疏的路标,后者将环境分成小哥并给每个使用的格子分配不同的概率。2D环境中标准化表示由IEEE RAS地图数据表示工作小组处理,最近发布了用于机器人的2D地图标准,如论文119;这个标准定义了两个主要的平面环境(加上拓扑地图)用于数据交换,标杆对比,技术转移。 3D几何建模更脆弱,应该可以理解地图构建是如何有效地构建3D几何模型仍然处于研究的早期阶段。本章我们将回顾几何地图表示,从不同的领域进行透视,包括机器人、计算机视觉、计算机辅助设计,和计算机图形学。我们的分类来源于论文96,237,251,包含了最近的工作方向。
路标稀疏表示。大多数SLAM方法将场景表示为稀疏3D路标对应环境中(比如,线条和角点)的显著特征;如图5左所示。通常都是采用路标或特征表示,自从早期定位和建图工作后就广泛应用,在计算机视觉领域主要是运动
结构。这些表示方法的前提假设是路标必须是显著的,比如,传感器数据测量路标几何方面的信息,还提供描述子构建每次测量值与对应路标的数据关联(也有可能是不确定的)。大量工作主要集中在点特征的估计,机器人包括其扩展领域增加了更复杂的几何路标,包括线,区域或弧线。
低层原始数据稠密表示。与路标表示相反,稠密表示尝试提供3D几何高分辨率模型;这些模型更适合于机器人避障和路径规划,或用于可视化或渲染,如图5右。在这些稠密模型中,原始数据表示用大量无结构的点(比如,云点)或多边形描述了3D几何结构。云点广泛运用于机器人中,主要使用立体相机,RGBD相机和3D激光扫描仪。这些表示最近在单目SLAM系统中也流行开来,主要使用直接方法,从所有的像素值的亮度直接估计机器人的轨迹和3D模型。稍微复杂的表示是点元地图,将几何信息编译成一系列的圆盘。这种表示方法可视化非常好,但他们需要存储大量数据非常不方便。他们还给出了几何的低层描述,忽略了障碍物的拓扑结构。
边界和空间分割稠密表示。这些表示超越了低层无结构的表示方法(比如,点),试图明显地指出外观(或边界)和体积。边界表示通过外观边界定义了3D物体。特别是简单的边界表示都是平面模型,用于构建地图。更一般的边界表示包括曲线表示(比如,NURBS非均匀有理B样条或B样条张量积),表面网格模型(连接多边形),隐式曲面表示。后者指出了物体表面定义的R3上 函数零交叉;这类函数包括径向基函数,有效距离函数和截断符号距离函数。截断符号距离函数目前是机器人视觉SLAM中常用的表示方法。论文293,294,使用的是网格模型。
空间划分表示将3D物体定义成表面相邻的不相交的基元。最常用的空间划分表示法是空间位置枚举表示法,将3D空间分解成相同的立方体(体素Voxel),分布在一个一般的3D网格中。更有效的空间分割方法有八叉树octree,多边形地图八叉树,二值空间分割树。在机器人应用中,八叉树表示用于3D建图,然而常用的是将栅格地图作为空间划分表示的概率变量。在三维环境中没有移动障碍物时,可以采用2.5D立体图。在我们开始讨论高层表示之前,我们来了解一下视觉SLAM中基于特征的稀疏表示与稠密表示的区别。
哪种方法最好:基于特征的或稠密,直接方法?答案是取决于具体任务和性能要求(比如,时间,精度,失效率,等等)。基于特征方法的劣势是它依赖于特征类型,大量可靠地特征检测和匹配的阈值,还必须有鲁棒估计技术处
理不正确地匹配,实际上,大部分特征检测都被优化提高速度而损失精度。稠密,直接方法使用了图像上的所有信息,甚至是梯度很小的区域;因此,他们即使在场景纹理很差,失焦,运动模糊的情况下的性能也优于基于特征的方法。然而,对于实时性能,他们要求更高的计算性能(GPUs)。另外,如何估计稠密结构和运动仍然是一个未解决的问题(目前只能一个一个地估计)。比基于特征方法优化的方法有两种。半稠密方法只使用强梯度(比如,边缘)的像素克服了稠密方法的计算要求;半直接方法同时采用了稀疏特征(比如角点或边缘)和直接方法,被证明为非常有效率;另外,因为依赖于稀疏特征,他们需要估计结构和运动。
高阶物体表示。点云和边界表示目前在稠密建图领域占有主要地位,我们预见到高层表示,包括物体和固定形状,在未来SLAM中将扮演重要角色。早期的SLAM基于物体推理的技术是“SLAM++” ,这些工作源自于论文245,66,77。这些表示方法显示物体的3维表示优于1维云点或2维图像。构建物体外形与物理表示关联,比如对物体的大小和数量,对机器人来说非常重要,需要与外界交互。幸运的是,现有领域比如CAD和计算机图形学已经在这方面有了很大发展。可以参考以下例子:
基元实例化:依赖于物体的类别(比如,圆柱体,球体)。对于每种物体,需要定义一组 参数(比如,半径,高度),定义了一组物体的唯一成员(或实例)。据我们所知,目前没有SLAM方法采用这种表示。
扫描表示法:可以利用简单的规则沿着空间中的轨迹扫描2D或3D物体生成有效的实体。典型的扫描表示法包括平移扫描(或推出)和旋转扫描。比如,一个圆柱体可以通过平移扫描一个球体得到,它的轴和平面正交。在计算机视觉中,2D交叉扫描的一个例子是归一化圆柱体,它们应用于机器人抓取中,如论文225。这种表示法并没有用在SLAM中。
构造立体几何法:由两个实体/基元间的布尔运算形成的新的复杂实体。实体可以存储为二叉树,树的叶子是基元或是几何变换参数,非终端节点的边是施加于叶子节点的运算(比如并,交或差)或几何变换。这种表示方式也没有用在SLAM中。
也有其他表示类型,包括CAD中基于特征的方法,基于字典的表示方法,基于可供性的模型,生成或过程模型,和场景图像。另外,基于字典的表示方
法,定义了一个实体其组成部分可以存储在字典中,应用于机器人和计算机视觉中,字典是从数据中学习得来或基于物体模型的现有仓库。
待解决的问题
以下关于SLAM几何度量表示的问题,有很多基础研究工作,仍然有很多未知领域没有开发。
SLAM中的高层表示:机器人领域目前主要关注点云或TSDF构建3D几何模型,这些表示方法有两个弱点。首先,他们有一些浪费。比如,两种表示方法使用了很多参数(比如,点,体素)去将很简单的环境进行编码,甚至是空房间。其次,这些表示方法并没有提供对3D几何的高层理解。比如,机器人需要分辨出它是在房间还是在走廊运行。点云并不能提供关于环境类型的有用信息(比如,房间或走廊)。另外一方面,更复杂的模型(比如,基元实例化)提供了简单的方法区分场景(比如,根据参数定义基元)。因此,SLAM中的高层表示主要有3个作用。首先,使用精简的表示方法可以在大场景建图时提供一种压缩地图的方法。其次,高层表示可以提供更多的对物体几何信息的描述,这个特征是必须的,用于数据关联,位置识别,语义理解。3D几何信息的高层描述(比如,推断物体外形)会影响人机交互(机器人可以像人一样理解几何外形),还可以包含物理属性(比如,重量,或运动情况)作为推断或建图的一个步骤。最后,用多信息3D表示方法可以与现代建筑建造和管理标准保持兼容,比如CityCML和IndoorGML。目前并没有SLAM技术可以构建更高层的表示,从而超越现有技术,点云,网格模型,点元模型,TSDF模型。
最佳表示:3D几何的不同表示方法领域很大,但只有很少工作关注理解如何确定特定表示方法的选择标准上。直观上,在简单的室内场景中,通常会选择参数化基元,仅用少量参数就可以足够描述3D几何;另一方面,在复杂的室外环境中,可能更倾向于网格模型。因此,如何比较不同的表示方法,如何选择更好的表示方法?
论文237将物体表示方法分了几类并比较了不同的表示方法。在这些属性中我们发现:范围(一组表示的真实物体),简明(用于存储和传输的表示的尺寸),易于创建(在机器人领域,是指用于表示构建的的推断时间),应用中的作用(依赖于具体任务采用哪种表示方法)。因此,最优表示方法能够完成给定任务,精简易于创建。论文259定义了最优表示为最少的足够数据执行
任务,最大的对不利因素的不变性。针对一个任务选择最好的表示方法,寻找一个通用的且易驾驭的框架的方法仍然是未解决的问题。
自动,自适应表示方法:传统表示方法是机器人专家根据系统设计的需要选择,有两个缺点。首先,选择合适的表示方法是一个耗时的工作,需要专业级知识。其次,缺乏弹性:一旦系统确定后,就不能改变;理想中,我们希望机器人用的表示方法根据任务和环境的复杂度选择简单或复杂的表示方法。最佳表示的自动式设计很大程度上会影响长时间导航。
6. 表示2:语义推理
语义建图需要将语义方法与机器人环境的几何实体进行关联。最近,人们已经认识到纯粹几何地图的局限,产生了很多工作构建环境语义地图,比其他机器人领域更多,比如自动驾驶,鲁棒性能,处理更复杂的任务(驾驶避免泥泞道路),从路径规划到任务规划,处理更高级的人机交互。有大量的方法可以将这些观测值和不同的语义思想和方法与环境不同的部分关联起来。举个例子,论文233将不同房间贴上标签,论文226将地图中不同的已知物体进行分割。除了这些方法之外,用基本层级的语义语法分析进行分类,可以考虑传感器数据和语义方法的简单建图。
语义与拓扑逻辑SLAM。如第一章提到的,拓扑逻辑建图没有采用几何度量信息只使用位置识别构建图状结构,其中节点表示不同的位置地点,边缘表示位置之间是否可以连通。我们注意到拓扑逻辑建图与语义建图完全不同。拓扑逻辑建图需要识别之前看到过的位置地点(比如是否是厨房,走廊等),语义建图根据语义标签将位置分类。
语义SLAM:结构和思想。人可以根据语义方法在不同的层级和组织结构上在复杂的基于任务的情况下做决定,无论这些语义的数量有多少,关系多复杂。具体的组织结构细节与机器人需要在什么地方执行什么任务有关,在不同的阶段对问题复杂度有不同影响。语义表示通过如下方面构建:
语义的层级和细节:对于一个给定的机器人任务,比如从房间A到房间B,初步的分类就足够了(比如,房间,走廊,门),但对于其他任务,比如“拾起一个茶杯”,就需要更精细的分类(桌子,茶杯,玻璃杯)。
语义的组织形式:语义方法并不是唯一的。甚至一个实物可能有很多属性和方法。一个椅子是可以移动的,可以坐的;一个餐桌可能是可以移动的,不
能坐的。椅子和桌子都是家具,他们都具有移动的属性,但有不同的用途。扁平的或层级组织结构,无论有没有相同的属性,必须能够处理这些多样性。
简要回顾
有三种主要方法处理语义建图,给不同的数据附上语义解释。
SLAM直接作用于语义:早期的机器人研究者直接用经典的SLAM系统将几何地图分割成语义。论文194,用2D激光扫描仪构建几何地图,离线状况下通过马尔科夫网络将每个位姿进行语义位置分类。一个在线的语义建图系统,如论文233,234,融合三层推理方法(传感器数据,分类和位置)用激光和相机构建环境语义地图。最近,论文36采用运动估计,采用不同的物体识别方法连通粗略的语义分割,明显优于单一系统。论文226,使用单目SLAM系统在视频的物体识别中增强性能。
语义作用于SLAM系统:在第一个语义地图出现之后不久,就有很多研究使用语义分类或物体。主要方法是如果我们能在地图中识别它们,我们就可以用它们的几何先验知识增加对地图的估计。早期的尝试是论文57和66在小场景用单目相机的稀疏特征,论文76是用稠密地图表示。采用RGBD传感器,论文246提出了一个完全基于已知物体和户型信息的SLAM系统。
SLAM和语义联立推导:同时熟悉计算机视觉和机器人的专家们意识到可以在一个公式中推导单目SLAM和地图分割。论文95的在线系统提出了一个模型用曼哈顿方法分割室内场景地图。论文16提出了一个方法用场景几何信息和语义信息联立估计相机参数,场景云点和物体标签。在它们的工作中,作者演示了增强的物体识别性能和鲁棒性,20分钟一对图像匹配,有限的物体分类对在线机器人操作无法实际应用。类似的案例,论文123解决了一个室外场景特定分类优化问题。尽管是离线方法,论文165用后期语义分割和几何度量地图融合减少问题的复杂性,类似的方法是论文249采用立体相机。需要注意,论文165和249只关注了地图构建部分,并没有优化计算位姿。最近,论文280提出了在线系统使用立体相机和稠密地图。
待解决的问题
SLAM中的语义问题的研究仍然处于早期阶段,与几何度量SLAM相反,它仍然缺乏一个系统的方法。如图6显示了一个施工地点的简单例子,我们发现具有以下挑战。
语义建图不只是一个分类问题:
给定一些先验知识,机器人应该能够推断新的方法和他们的语义表示,也就是说,他应该可以发现环境中的新物体或者新的分类,与其他机器人和人互动的时候了解到新的属性,对环境中缓慢的或突然的变化,采取相应的表示方法。比如,带轮子的机器人需要分辨地形是否可行驶,以通知导航系统。如果机器人发现路上有一些泥泞,这就是之前分类过的结果,机器人应该了解到一个新的类别依据跨过泥泞道路的不同难度进行分类,或者调整他的分类器如果发现其他的车辆陷在泥泞中。
基于语义的推理:作为人类,语义表示可以让我们简化并且加速对环境的推理,当然精确的几何度量表示可能会花费我们一些时间。目前,这并不适合机器人。机器人可以处理几何度量表示但他们真的无法使用语音方法。我们的机器人目前没法有效地、有效率的定位,用环境中的语义信息持续建图(分类,关系和属性)。比如,侦测汽车时,机器人应该可以推断汽车下面的地面(甚至在有遮挡的情况下)而且当汽车移动时有新的传感器数据读入,地图更新应该可以优化之前猜测的地面位置。甚至,同样的更新应该可以在单一有效的操作中改变汽车的全局位姿,比如每一个体素。
下次课给大家带来SLAM未来可能的发展,敬请期待。
【版权声明】泡泡机器人SLAM的所有文章全部由泡泡机器人的成员花费大量心血制作而成的原创内容,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力!
【注】商业转载请联系刘富强([email protected])进行授权。普通个人转载,请保留版权声明,并且在文章下方放上“泡泡机器人SLAM”微信公
众账号的二维码即可。
【编辑】王琛