3D Dynamic Scene Graphs: Actionable Spatial Perception with Places, Objects, and Humans
Antoni Rosinol, Arjun Gupta, Marcus Abate, Jingnan Shi, Luca Carlone Laboratory for Information & Decision Systems (LIDS) Massachusetts Institute of Technology
RSS2020
摘要
我们感知可操作空间(Actionable Spatial Perception)提出统一表示:3D Dynamic Scene Graphs。Scene graphs是一个有向图,其中节点表示场景中的实体(如物体、墙壁、房间),同时表示节点之间的关系(如包含、相邻)。Dynamic scene graphs (DSGs) 扩展这一概念来表示移动智能主体(如人、机器人),包括支持规划和决策的可操作信息(如时空关系、不同抽象层次的拓扑)。我们的第二个贡献是提供第一个全自动空间感知引擎(Spatial Perception engine,SPIN),构建视觉惯性数据DSG。我们整合了最先进的物体和人体检测和姿势估计技术,并描述了如何在拥挤的场景中推断物体、机器人和人类节点。据我们所知,这是协调视觉惯性的第一篇文章SLAM跟踪密集的人体网格(dense human mesh tracking)的论文。此外,我们还提供算法来获得室内环境(如场所、结构、房间)及其关系的层次表示(hierarchical representations)。我们的第三个贡献是基于现实unity在模拟器中演示提出的空间感知引擎,我们在那里评估它的鲁棒性和表现力。最后,我们讨论了我们的提案对现代机器人应用的影响。3D DSG它可以对规划和决策、人机交互、长期独立性和场景预测产生深远的影响。A video abstract is available at https://youtu.be/SWbofjhyPzI.
引言
空间感知和3D在现实世界中,环境理解是执行高级任务的关键。为了执行高层指令,例如在高层建筑的二楼搜索幸存者,机器人需要将语义概念(幸存者、楼层、建筑物)植入空间表示(例如测量地图),测量语义空间表示(metric-semantic spatial representations)超越通常的原因SLAM视觉惯性里程计(VIO)构建管道[15]的地图模型。此外,低水平的避障和运动规划(motion planning)以及高水平的任务规划(task planning)建立一个世界模型,在不同的抽象层世界模型来捕捉现实。例如,虽然任务规划可以有效地描述一系列完成任务的动作(例如,到达建筑入口,走楼梯,进入每个房间),但运动规划通常依赖于细粒度的地图表示(例如, mesh 或 volumetric 模型)。例如,虽然任务规划可以有效地描述一系列完成任务的动作(例如,到达建筑入口,走楼梯,进入每个房间),但运动规划通常依赖于细粒度的地图表示(例如, mesh 或 volumetric 模型)。理想情况下,空间感知应能够建立一致的抽象水平,以满足运动和任务规划。当自动系统部署在拥挤的环境中时,这个问题变得更具挑战性。从自动驾驶汽车到工厂车间的合作机器人,识别障碍物不足以安全有效地导航/行动,推理和预测场景中的动态实体(尤其是人类)的行为或意图变得非常重要。
现有文献未能同时解决这些问题(测量语义理解)(metric-semantic understanding)、可操作层次抽象(actionable hierarchical abstractions)、动态实体建模(modeling of dynamic entities))。研究了机器人技术中地图表示的早期工作(如[16、28、50、51、103、113]),但主要是在2D假设静态环境;此外,这些工作是在深入学习革命之前提出的,因此不能提供高级语义理解。另一方面,测量-语义建图的快速增长(metric-semantic mapping)[8,12,30,68,88,96,100])主要集中在本质上没有层次的平面表示(object constellations、metric-semantic meshes或volumetric models)。最近的研究[5,41]试图通过设计更丰富的表达,称为3D Scene Graphs,来弥补这一差距。最近的研究[5,41]试图通过设计更丰富的表达,称为3D Scene Graphs,弥补这个差距。(Scene Graphs)它是一种通常用于计算机图形和游戏应用程序的数据结构,由图形模型组成,节点表示场景中的实体,而边缘表示节点之间的空间或逻辑关系。尽管工作[5,41]将率先工作3D场景图应用于机器人和视觉(之前的视觉研究主要关注图像空间中定义的2D场景图[17、33、35、116]),但也有重要缺陷。Kim等人[41]只捕捉目标,而忽略了多层抽象。Armeni等人[5]提供了一个有用于可视化和知识组织的层次化模型,但没有可操作的信息,如可遍历性,这是机器人导航的关键。最后,[41]和[5]无法解释或建模环境中的动态实体。
:我们提出了可操作空间感知的统一表示:3D Dynamic Scene Graphs (DSGs,图1)。介绍在第三节DSG是一个分层的有向图,其中节点代表空间概念(例如,物体、房间、智能体),边代表成对的时空关系。图是分层的(layered),节点被分成不同的层,对应于不同的抽象级别(即,DSG是分层表示)。我们在DSG节点和边缘的选择也捕捉到了位置及其连接性,因此提供了一个严格的拓扑地图概念泛化[88、86],并使DSG成为导航和规划的可操作表示。最后,DSG中的边捕获时空关系,并显式地建模场景中的动态实体,特别是人类,我们对这些实体随着时间的推移估计3D姿势(使用姿势图模型)和网格模型。
在第四部分,我们的第二个贡献是提供第一个自动空间感知引擎(SPIN)来构建一个DSG。目前的[5]假设给出了一个标有环境的网格模型,并依一个半自动程序来提取场景图,我们提出了一个没有人类监督的视觉惯性数据的管道DSG。朝着这个目标(i)我们将最先进的技术测试和估计人类目标[111]和[46],我们将描述如何在混乱和拥挤的场景中强烈推断目标, 和(3)我们提供将室内环境划分为地方、结构和房间的算法。这是视觉惯性的第一篇文章SLAM跟踪人体网格(我们使用它)SMPL集成网格[64]的论文。SPIN概念总结SLAM,为了捕捉关系、动态和高级抽象,它成为我们管道中的一个模块。
在第五节,我们的第三个贡献是基于一个unity的真实感模拟器中演示提出的空间感知引擎,在那里我们评估其鲁棒性和表现力。我们表示,我们的SPIN (i)提高网格重构和人体跟踪的鲁棒性(与位置图优化[15]的文献联系),(ii)已知和未知形状的对象可以处理,(iii)室内环境中的场所和房间采用简单有效的启发方法。视频附件给出了更广泛和互动的视觉效果(可以在[90]中获得)。
在第六节,我们的最终贡献是讨论DSG几个可支持的查询,以及作为可操作空间感知模型的使用。特别是,我们讨论过DSGs如何影响规划和决策(通过提供分层规划和快速碰撞检查)、人机交互(通过提供场景的可解释抽象)、长期自治(long-term autonomy)(支持数据压缩)和场景预测。
相关工作
:场景图是一种常用的计算机图形模型,用于描述、操作和渲染复杂于游戏引擎[106]。这些结构主要用于描述三维环境,而在计算机视觉中,场景图主要用于抽象二维图像的内容。Krishna等人[48]用场景图建模2D图像中目标的属性和关系取决于手动定义的自然语言描述。Xu等人[109]和Li等人[59]开发了二维场景图生成算法。2D图像检索[36]、字幕[3、37、47]、高级理解[17、33、35、116]、视觉问题[27、120]、动作检测[60、65、114]。Armeni等[5]提出了描述三维静态场景的三维场景图模型,并描述了构建场景图的半自动算法。与[5]并行,Kim等人[41]提出机器人3D场景图模型,但它只包括对象作为节点,而忽略了[5]和我们的算法提供的多层抽象。
:自机器人社区成立以来,世界建模和地图表示的问题一直是中心问题[15、101]。Kuipers、Chatila和Laumond等人的开创性论文[16、50、51]已经意识到需要使用层次图来捕捉丰富的空间和语义信息。Vasudevan等[103]提出一个对象constellations层次表示法。Galindo等人[28]使用两个平行层次表示(空间和语义表示),然后将它们相互表示anchored,并使用2D估计激光雷达数据。Ruiz-Sarmiento为了考虑空间元素和语义元素之间的不确定性,等人[92]在[28]中扩展了框架。Zender等人[113]提出了一个单层次的表示,包括二维地图、导航图和拓扑图[85、86],然后进一步抽象为概念地图。请注意,[28]和[113]中的空间层次结构与场景图相似,节点与层的连接较少。更根本的区别是早期工作(i)没有对3D推理模型(但专注于2)D占用地图),(ii)不处理动态场景,(iii)近年来通过深度学习实现了密集的语义信息(如像素级)。
:这项工作涉及到从传感器数据估计的测量语义(但通常是非层次的)。近年来,早期工作[7、14]专注于离线处理,如SLAM [96]开创性工作对实时测量语义建图的兴趣激增。基于物体的方法计算物体建图,包括SLAM [96]、XIVO[21]、OrcVIO[98]、QuadricSLAM[74]和[12]。对于大多数机器人应用程序,基于物体的地图不能提供足够的导航和避障分辨率。点云[8,2,61,100]、网格[30,88,91]、surfels[104, 107]或体积模型[30,68,72]的形式构建更密集的语义标注模型。其他方法同时使用物体和稠密模型,参见Li等人[55]和Fusion++[69]。这些方法集中于静态环境。处理移动对象的方法,如DynamicFusion[73]、Mask-fusion[94]、Co-fusion[93]和MID-Fusion[108],目前仅限于小型桌面场景,关注物体或稠密地图,而不是场景图。
:这项工作的重点是将度量地图划分为语义上有意义的位置(例如,房间、走廊)。Nüchter和Hertzberg[75]编码平面表面(如墙壁、地板、天花板)之间的关系,并检测场景中的物体。Blanco等人[10]提出了一种混合度量拓扑地图。Friedman等人[26]提出Voronoi Random Fields来获得二维网格地图的抽象模型。Rogers和Christensen[87]和Lin等[62]利用物体来执行物体与地点的联合分类。Pangercic等[80]对物体功能进行了分析。Pronobis和Jensfelt[83]使用马尔科夫随机场分割二维网格地图。Zheng等人[118]使用图结构和积网络推断网格地图的拓扑,而Zheng和Pronobis[117]使用神经网络。Armeni等人[4]专注于三维网格,并提出了一种将建筑物解析为房间的方法。平面估计也使用单一图像[32]、全方位图像[66]、2D激光雷达[56,102]、3D激光雷达[71,76]、RGBD[63]或从crowd-sourced移动电话轨迹[2]进行研究。工作[4,71,76]最接近我们的提出的方法,但与[4]相反,我们不依赖曼哈顿世界假设,与[71,76]相反,我们在网格模型上操作。
:本文还讨论了场景中动态元素的建模和鲁棒性。SLAM和运动目标跟踪在机器人领域得到了广泛的研究[6,105],而最近的工作集中在关节视觉-惯性里程计和目标位姿估计[23,29,84]。大多数现有的机器人文献将动态目标建模为单个3D点[18],或具有3D位姿,并依赖于激光雷达[6]、RGB-D相机[1]、单目相机[58]和视觉-惯性传感器[84]。相关工作还试图通过使用IMU运动信息[34]或屏蔽与动态元素对应的场景部分[9,13,19]来获得对动态场景的鲁棒性。据我们所知,本论文是第一个尝试执行视觉惯性SLAM,分割稠密物体模型,估计已知物体的三维位姿,重建和跟踪密集的人类SMPL网格的工作。
:Human pose and shape estimation from a single image is a growing research area. While we refer the reader to [45, 46] for a broader review, it is worth mentioning that related work includes optimization-based approaches, which fit a 3D mesh to 2D image keypoints [11, 45, 54, 110, 112], and learning-based methods, which infer the mesh directly from pixel information [39, 45, 46, 79, 81, 99]. Human models are typically parametrized using the Skinned Multi-Person Linear Model (SMPL) [64], which provides a compact pose and shape description and can be rendered as a mesh with 6890 vertices and 23 joints.
3D动态场景图
3D动态场景图(DSG,图1)是一种可操作的空间表示,它捕捉了场景在不同抽象层次上的3D几何和语义,并为objects、places、structures和agents及其关系建模。更正式地说,DSG是一个层级的有向图,其中节点代表空间概念(例如,objects、rooms、agents),边代表成对的时空关系(例如,智能体a在时间t时在房间B中)。与知识库(knowledge bases)[49]相反,空间概念是基于空间的语义概念(换句话说,DSG中的每个节点都包含空间坐标和形状或边界框信息作为属性)。DSG是一个分层图(layered graph),也就是说,节点被分组成对应于不同抽象级别的层。每个节点都有一个唯一的ID。
单层室内环境的DSG包括5层(从低到高的抽象层):(i)Metric-Semantic Mesh,(ii)Objects and Agents,(iii) Places and Structures,(iv)Rooms,(v)Building。我们讨论每一层以及下面对应的节点和边。
A. Layer 1: Metric-Semantic Mesh
DSG的底层是一个语义标注的3D网格(图1(a)底部)。这一层的节点是3D点(mesh的顶点),每个节点有以下属性: (i) 3D位置,(ii)法线,(iii) RGB颜色,(iv)全景语义标签。连接三联点(triplets of points)(例如,一个3个节点的团) 的边描述了mesh中的面,并定义了环境的拓扑结构。我们的度量语义网格包括环境中的所有静态物体,而为了方便存储,我们将动态物体的网格存储在一个单独的结构中(参见下面的"Agents")。
B. Layer 2: Objects and Agents
该层包含两种类型的节点:objects和agents(图1(c-e)),其主要区别在于agents是时变实体,而objects是静态的。
: Objects代表环境中不被认为是结构的静态元素(例如,墙、地板、天花板、柱子都被认为是结构,不在这一层建模)。每个object都是一个节点,节点属性包括(i)一个3D object的位姿,(ii)一个边界框,(ii)它的语义类(例如,椅子,桌子)。虽然在本文中没有进行整理,但我们建议读者参考[5]以获得更全面的属性列表,包括材料和功能支持。物体之间的边缘描述了关系,如共视性、相对大小、距离或接触(杯子在桌子上)。在度量语义网格中,每个object节点都连接到属于该object的相应点集。此外,附近的object连接到相同的place节点(见第III-C节)。
: agent代表环境中的动态实体,包括人类。虽然在一般情况下可能有许多类型的动态实体(例如,车辆,户外环境中的自行车),但在这里我们不丧失一般性,只关注两类:人类和机器人。人类和机器人节点都有三个属性:(i)描述它们随时间轨迹的3D位姿图,(ii)描述它们(非刚性)形状的mesh模型,以及(iii)语义类(即,人类,机器人)。一个位姿图[15]是一个时间戳3D位姿的集合,其中edges model成对相对测量。收集数据的机器人也被建模为该层中的agent。
C. Layer 3: Places and Structures
该层包含两种类型的节点:places和structures。直观地说,places是自由空间的模型,而structures则是不同空间之间的分隔物。
:Places(图2)对应自由空间中的position,places之间的边代表可穿越性(traversability)(特别是:位置之间存在直线路径)。位置及其连通性形成一个拓扑地图[85,86],可用于路径规划。位置属性只包含一个3D位置,但也可以包含一个语义类(例如,房间的后面或前面)和一个围绕位置位置的无障碍边界框。第2层中的每个object和agent都与最近的place连接(对于agent来说,连接是针对每个带时间戳的位姿,因为agent从一个place移动到另一个place)。属于同一个房间的places也连接到Layer 4中的同一个房间节点。图2(b-c)显示了按房间用颜色标记的可视化区域。
: Structures(图3)包括描述环境中结构元素的节点,如墙壁、地板、天花板、柱子。在相关工作[57]中,结构捕获的元素通常称为“stuff”,本文使用structure来称呼。结构节点属性有:(i) 3D位姿,(ii)包围框,(iii)语义类(例如,墙壁,地板)。Structures may have edges to the rooms they enclose.。结构也可以具有第3层中的object的边缘,例如,在墙壁(struct)上悬挂(关系)框架(object),或在天花板上安装天花板灯。
D. Layer 4: Rooms
这一层包括描述房间、走廊和大厅的节点。房间节点(图2)具有以下属性:(i) 3D位姿,(ii)边界框,(iii)语义类(如厨房、餐厅、走廊)。如果两个房间相邻,则用边连接(例如,有一扇门连接它们)。一个房间节点有到它所包含的位置(第3层)的边(因为每个位置都连接到附近的object,所以DSG还捕获每个房间中包含的objects/agents)。所有房间都连接到他们所属的building(第5层)。
E. Layer 5: Building
因为我们考虑的是单个Building的表示,所以存在一个具有以下属性的单个building节点:(i) 3D位姿,(ii)边界框,(iii)语义类(例如,办公楼,住宅)。建筑节点面向建筑中的所有房间。
F. Composition and Queries
为什么我们要选择这一组节点或边而不是另一组呢?显然,DSG中节点的选择不是唯一的,而且是任务相关的。Here we first motivate our choice of nodes in terms of the DSG is designed for (see Remark 1 and the broader discussion in Section VI), and we then show that the representation is , in the sense that it can be easily expanded to encompass more layers, nodes, and edges (Remark 2).
: 提出的DSG在设计时考虑到了任务和运动规划查询。语义节点属性(例如,语义类)支持高层次规范的规划(从餐厅桌子上拿起红杯子)。几何节点属性(例如,网格,位置,边界框)和边缘用于运动规划。例如,这些位置可以用作路径规划的拓扑图,边界框可以用于快速碰撞检查。
: DSG的第二个重新确保的属性是它的组合性:在图1(A)中,人们可以很容易地在DSG的顶部和底部连接更多的层,甚至添加中间层。例如,在多层建筑中,我们可以在图1(a)中的“building”层和“Rooms”层之间设置“Level”层。此外,我们可以在顶部添加进一步的抽象或层,例如从建筑到社区,然后到城市。
SPIN
本节介绍一个空间感知引擎(SPIN),它使用传感器数据填充DSG节点和边缘。输入到SPIN的是来自立体摄像机和惯性测量单元(IMU)的数据流。输出是一个3D DSG。在我们当前的实现中,metric-semantic mesh和agent nodes是根据传感器数据实时增量构建的,而其他节点(object、place、structures、rooms)在运行结束时自动构建。第IV-A节描述了如何从传感器数据中获取metric-semantic mesh和agent nodes。第IV-B节描述了如何分割和定位对象。章节IV-C描述了如何解析位置、结构和房间。
A. From Visual-Inertial data to Mesh and Agents
. 我们使用Kimera[88]从视觉惯性数据实时重建一个语义标注的3D网格。Kimera是开源的,包括四个主要模块:(i) Kimera-VIO :一个实现IMU预积分和固定滞后平滑[25]的视觉惯性里程计模块; (ii) Kimera-RPGO: 一个鲁棒的位姿图优化器[67]; (iii) Kimera-Mesher: 一个每帧和多帧网格优化器[89]; 一种产生语义标注网格的体积方法和基于Voxblox的欧氏符号距离函数(ESDF)[77]。Kimera-Semantics使用全景二维语义分割左相机图像标签的3D网格使用贝叶斯更新。我们将Kimera-Semantics生成的度量语义网格作为图1(a) DSG中的第1层。
. 在我们的设置中,唯一的机器人agent是收集数据的机器人agent,因此Kimera-RPGO直接生成一个带有时间戳的位姿图,描述机器人在离散时间戳下的位姿。由于我们的机器人在拥挤的环境中运动,我们用一种IMU感知的光流方法替换了[88]中VIO前端的LK跟踪器,其中使用IMU运动信息预测帧之间的特征运动,类似于[34]。此外,我们使用2点RANSAC[43]进行几何验证,它直接使用IMU旋转来修剪特征轨迹中的异常点对应。为了完成机器人节点,我们假设给出机器人的CAD模型(仅用于可视化)。
. 与将动态目标建模为点或3D位姿的相关工作[1,6,18,58,84]相反,我们跟踪一个描述人体随时间变化形状的密集时变网格模型。因此,为了创建一个人类节点,我们的SPIN需要检测和估计相机图像中的一个人的形状,然后随着时间跟踪这个人。对于形状估计,我们使用Kolotouros等人[46]的Graph-CNN方法,该方法直接从单个图像回归SMPL[64]网格模型的顶点的3D位置。图4(a-b)给出了一个例子。更详细地说,给定一个全景2D分割,我们将左侧摄像机图像裁剪到每个被检测到的人周围的一个边界框,我们使用方法[46]来获得一个3D SMPL。然后,我们使用PnP[119]提取原始透视相机框架([46]使用弱透视相机模型)中的完整位姿。
为了跟踪一个人,我们的SPIN构建了一个姿势图,其中每个节点被分配到人体躯干在离散时间的姿势。连续的姿势是由一个因子[20]建模一个零速度之前连接。然后,将时刻t的每次检测建模为时刻t的姿态的先验因子。对于姿势图的每个节点,我们的SPIN也存储由[46]估计的3D网格。为了使这种方法可靠地工作,outliers rejection和数据关联变得尤为重要。当人被部分遮挡时,[46]的方法经常产生很大程度上不正确的姿势。此外,在多人存在的情况下,必须将每个检测dt与人体姿势图 h 1 : t − 1 ( i ) h_{1:t-1}^{(i)} h1:t−1(i) 关联起来(包括每个人i = 1,2时从1到t1的姿势)。为了获得鲁棒性,我们的SPIN:(i)当人类方法的边界框的边界图像或太小(在我们的测试中30像素)拒绝检测,和(ii)只有当时刻t检测到的人体网格与时刻t1的其中一个人体的网格一致时,才向姿态图添加测量值。为了检查一致性,我们提取t-1和t时刻的骨骼,并检查每个关节(图4©)在该时间间隔内的运动是否物理上合理(即,我们利用了关节和躯干运动不能任意快的事实)。在1秒的时间间隔内,最大允许关节位移的保守界为3m。如果没有位姿图满足一致性准则,我们初始化一个新的位姿图,对应于当前检测的单个节点。
除了使用它们进行跟踪外,我们还将人类的检测反馈给Kimera-Semantics,这样动态元素就不会在3D网格中重建。当光线投射到标记为人类的像素的深度时,我们只使用自由空间信息来实现这一点,我们称之为dynamic masking(见图5的结果)。
B. From Mesh to Objects
我们的空间感知引擎从Kimera生成的度量语义网格中提取静态对象。我们为用户提供了为一些object类提供CAD模型目录的灵活性。如果一个形状是可用的,我们的SPIN将尝试使它适合网格(Objects with Known Shape),否则将只尝试估计一个质心和边界框(Objects with Unknown Shape)。
: Kimera的度量语义网格已经包含了语义标签。因此,我们的SPIN首先提取属于给定object类的mesh部分(例如图1(d)中的椅子);这个mesh可能包含多个属于同一个类的object实例。然后,利用PCL[95] (距离阈值为Kimera-Semantics体素大小的两倍,0.1m)进行欧氏聚类,将Object mesh分割为实例。从segmented的聚类中,我们的SPIN获得object的质心(从相应网格的顶点),并分配一个与世界框架轴线对齐的规范方向。最后,它计算具有与规范方向对齐的坐标轴的边界框。
: 对于已知形状的对象,我们的SPIN分离对应于一个object实例的mesh,类似于未知形状的情况。然而,如果给定了这类object的CAD模型,我们的SPIN会尝试将已知形状拟合到object mesh中。这需要三个步骤。首先,我们从物体的CAD模型中提取三维关键点,并从Kimera中提取相应的物体网格。提取三维关键点的方法是将每个网格转换为点云(通过选取网格的顶点),然后提取半径为0.15m、非最大抑制阈值为10^-4的三维Harris角[95]。其次,我们匹配CAD模型上的每个关键点与Kimera模型上的任何关键点。显然,这一步会产生许多不正确的假定匹配(离群值)。第三,我们应用了一种鲁棒的开源配准技术 TEASER++[111],在存在极端outliers的情况下找到点云之间的最佳对齐。这三个步骤的输出是物体的object位姿(从中也很容易提取一个轴对齐的边界框),结果如图1(e)所示。
C. From Mesh to Places, Structures, and Rooms
本节描述我们的SPIN如何利用现有技术并实现简单而有效的方法来解析Kimera的3D网格中的places、structures和rooms。
:Kimera使用Voxblox[77]提取全局网格和ESDF。我们还使用[78]从ESDF获得了一个拓扑图,其中节点稀疏地采样自由空间,而边表示两个节点之间的直线可穿越性。我们直接使用这个图来提取位置及其拓扑(图2(a))。在创建位置后,我们将每个object和agent位姿关联到最近的place,以建模邻近关系。
: Kimera的语义mesh包括不同的标签墙壁,地面,和天花板,所以分离这三个结构元素是非常简单的(图3)。每种类型的结构,然后我们计算质心,分配一个规范取向(与世界坐标系),并计算axis-aligned边界框。
: 虽然平面图的计算通常具有挑战性,但(i) 3D ESDF的可用性和 (ii) Kimera给出的重力方向知识, 使一种简单但有效的方法将环境划分为不同的房间。关键的见解是,一个水平的三维ESDF的2D部分,切割低于检测到的天花板水平,是相对不受凌乱的房间的影响。这个2D部分清晰地呈现出房间布局的特征:部分中的体素几乎在所有地方都有0.3m的值(对应到天花板的距离),除了靠近墙壁的地方,距离减少到0m。我们将这个2D ESDF(在天花板以下0.3m处切割)称为ESDF剖面。
为了补偿噪声,我们进一步截断ESDF截面至0.2m以上的距离,这样房间之间的小开口(可能是由于误差累积造成的)就被移除。这个划分操作的结果是对应于每个房间的一组不相连的2D ESDF,我们称之为2D ESDF房间。然后,我们根据2D(水平)位置标记所有位于2D ESDF房间内的place(第3层的节点)。在这一点上,一些地方可能没有标记(那些靠近墙壁或门内开口)。为了标记这些元素,我们使用多数投票的方式来确定第3层place的拓扑图中每个节点的邻域;我们重复多数投票,直到所有地方都有了标签。最后,我们在每个地方(第3层)和对应的房间(第4层)之间加一条边,见图2(b-c),如果有一条边连接两个房间(第4层)的地方(图2(b-c)中的红色边),则在两个房间(第4层)之间加一条边。我们也请读者参考视频附件。
实验
本节展示了所提出的SPIN (i)在拥挤环境中产生精确的度量语义网格和机器人节点(section V-A), (ii)正确实例化对象和代理节点(section V-B), (iii)可靠地将大型室内环境解析为房间(section V-C)。
. 我们使用逼真的基于unity的模拟器在65m的模拟办公环境中测试我们的空间感知引擎。该模拟器还为Kimera提供了二维全景语义分割。使用SMPL项目提供的逼真的3D模型来模拟人类[64]。该模拟器提供了真实的人体和物体姿势,仅用于基准测试。使用这个设置,我们创建了3个大型视觉惯性数据集,并将其作为uHumans数据集的一部分发布[90]。标记为uH_01、uH_02、uH_03的数据集分别包含12、24和60人。我们使用现成的人体姿势和形状估计器[46],没有任何领域适应或再训练。
A.拥挤场景中网格重构的鲁棒性
在这里,我们展示了imu感知的特征跟踪和在Kimera中使用2点RANSAC增强了VIO的鲁棒性。此外,我们表明,这种增强的鲁棒性,结合dynamic masking(第IV-A节),在拥挤的环境中产生鲁棒和准确的度量语义网格。
. 表一报告了使用和不使用2点RANSAC以及使用2点RANSAC和imu感知特征跟踪(标签:DVIO)时Kimera的绝对轨迹误差。最佳结果(误差最少)以粗体显示。表的左侧(MH_01 V2_03)对应于(静态)EuRoC数据集上的测试。结果证实,在没有dynamic agent的情况下,所提出的方法的性能与目前的水平相当,而使用2点RANSAC已经提高了性能。然而,最后三列(uH_01 uH_03)表明,在存在动态实体时,所提出的方法占主导地位(Kimera-VIO)。
. 图5显示了Dynamic Masking对Kimera度量语义网格重构的影响。图5(a)显示,在没有Dynamic Masking的情况下,在摄像机前行走的人会留下一条轨迹(青色),并在网格中创建伪影。图5(b)显示,Dynamic Masking避免了这个问题,并导致干净的网格重建。
表II报告了有和没有Dynamic Masking的RMSE mesh误差(见[89]中的精度度量)(标签:有DM和w/o DM)。为了独立于VIO精度评估mesh精度,我们还报告了使用GT位姿(表中标签:GT位姿)时的mesh误差,以及VIO位姿(标签:DVIO位姿)的结果。表中的GT摆姿势列显示,即使具有完美的定位,动态实体(如图5(a)所示)创建的伪影也会显著阻碍网格精度,而Dynamic Masking可以确保高度精确的重构。在使用VIO姿态时,可以保留Dynamic Masking的优点。
B. Parsing Humans and Objects
在这里,我们评估uHumans数据集上的人类跟踪和目标定位的准确性。
. 表3显示了uHumans数据集上每个人的平均定位误差(躯干估计位置与GT值之间的不匹配)。第一列报告由[46] (label: Single-img)产生的检测错误。第二列报告了这种情况下的错误,在这种情况下,当人在相机图像中只部分可见,或者人的边界框太小(30像素,label: Single-img)时,我们过滤掉了检测。过滤)。第三列报告了在第IV-A节(label: Tracking)中讨论的位姿图模型的错误。当人被遮挡时,方法[46]倾向于产生不正确的估计。过滤检测提高了定位性能,但由于场景中物体的遮挡仍然会导致重大错误。相反,所提出的方法确保了准确的人类跟踪。
. 表3的最后两列报告了在场景中检测到的未知形状和已知形状物体的平均定位误差。在这两种情况下,我们计算定位误差作为估计的目标与GT质心之间的距离(对于形状已知的目标,我们使用拟合CAD模型的质心)。我们使用CAD模型来分类为沙发。在这两种情况下,我们都可以正确地定位object,而CAD模型的可用性进一步提高了准确性。
C. Parsing Places and Rooms
提取的位置和房间的质量如图2所示。我们还计算了按房间分类的平均精确度和召回率。GT标签是通过手动分割位置获得的。uH_01的平均查准率为99.89%,平均查全率为99.84%。不正确的分类通常发生在靠近门的地方,在那里房间的错误分类是无关紧要的。
DISCUSSION
我们通过提供查询实例来强调3D动态场景图的可操作性质。
. 我们的DSG中的agent、object和房间都有一个边框属性。此外,DSG的层次性质确保了上层的边界框包含下层的边界框(例如,一个房间的边界框包含该房间中的object)。这就形成了一个边界体积层次(Bounding Volume Hierarchy, BVH)[53],广泛用于计算机图形学中的碰撞检测。BVHs提供了随时可用的机会来加速避障和运动规划查询,而碰撞检查经常被用作原始的[40]。
DSGs还为高级规划查询提供了一个强大的工具。例如,(连接)的places和objects的子图DSG可用于机器人一个高级命令(例如,object搜索[38]),和机器人可以直接推断出最接近的DSG达到完成任务,并且可以计划一个可行的路径。
DSG提供的多层抽象具有实现分层和多分辨率规划方法的潜力[52,97],机器人可以在不同的抽象层进行规划,以节省计算资源。
. 如[5,41]所述,场景图可以支持面向用户的任务,如交互式可视化和问答。我们的动态场景图扩展了[5,41]的范围,通过(i)允许可视化人类轨迹和密集姿势(见视频附件中的可视化),以及(ii)支持更复杂和时间感知的查询,如时间t时这个人在哪里?,或者这个人在A房间选了什么东西?.此外,DSG提供了一个框架来模拟agent和场景之间的可信交互[31,70,82,115]。我们相信DSGs还补充了自然语言基础[44]的工作,其中一个主要关注点是对人类指令的可变性进行推理。
DSG提供了一种在long-term autonomy中忘记或保留信息的自然方式。通过构建,DSG层次结构中的较高层是环境的更紧凑和抽象的表示,因此机器人可以通过简单地修剪DSG对应的分支,忘记环境中不经常观察的部分。例如,在图1中忘记一个房间,我们只需要修剪对应的节点和较低层的连接节点(地方、对象等)。更重要的是,机器人可以有选择地决定保留哪些信息:例如,它可以保留所有object(存储成本通常相当低),但可以有选择地忘记网格模型,而网格模型在大型环境中存储起来会更麻烦。最后,DSGs继承了标准场景图的内存优势:如果机器人检测到一个已知物体(如椅子)的N个实例,它可以简单地存储一个CAD模型,并在场景图的N个节点中对其进行交叉引用;这个简单的观察结果支持进一步的数据压缩。
. 密集的度量语义网格模型和丰富的代理描述相结合,允许对场景动态进行短期预测,并回答有关未来可能结果的查询。例如,可以将网格模型输入物理模拟器,并推出人类代理的潜在高级动作;
结论
我们引入了3D动态场景图作为可操作空间感知的统一表示,并提出了第一个空间感知引擎(SPIN),该引擎以全自动方式从传感器数据构建DSG。我们在一个逼真的模拟器中展示了我们的SPIN,并讨论了它在几个查询中的应用,包括规划、人-机器人交互、数据压缩和场景预测。本文开辟了几个研究途径。首先,第六节中的许多查询涉及到非平凡的研究问题,值得进一步研究。其次,需要进行更多的研究来扩大DSG的范围,例如通过开发可以从数据推断其他节点属性(例如,对象的材料类型和支持)的算法,或者为不同的环境(例如,户外)创建新的节点类型。第三,本文仅触及空间感知引擎设计的表面,因此留下了许多未解决的问题:为其他传感器组合设计旋转是否有利?我们可以实时地递增地估计场景图吗?我们可以设计分布式的SPINs来从多个机器人收集的数据估计DSG吗