除了研究如何构建智体之外,机器人研究还必须考虑各种低层方面问题(低层的路径规划和控制、硬件传感器、机器人硬件等)。相比之下,具身智能研究可以通过抽象出低层细节,更多地关注高级任务规划。这促使具身智能研究人员探索地图构建技术作为高层任务规划的一部分,并解决诸如“地图是否必要”(Partsey,2022)、“地图的结构应该是什么”、“地图内存储什么类型的信息”和“哪种信息对哪些任务有用”等问题。最近,人们的注意也转移到利用基础模型构建通用人工智能解决方案(Radford,2021;Oquab,2023;OpenAI,2023),这使得社区能够探索构建独立于下游任务的通用、开放词汇语义地图。这些开放词汇图稍后可以使用自然语言 (Gu et al., 2023; Peng et al., 2023; Chen et al., 2023a) 或图像进行查询。
现有的具身智能综述通常侧重于一般任务的进步 (Pfeifer & Iida, 2004; Duan et al., 2022; Deitke et al., 2022) 或特定子领域,如视觉导航 (Zhu et al., 2021; Zhang et al., 2022; Wu et al., 2024; Lin et al., 2024) 或操纵 (Batra et al., 2020a; Zheng et al., 2024),本文首次全面回顾针对具身智能室内环境的语义地图构建技术,如图所示。沿着两个关键轴线组织现有的方法——地图的结构以及地图中存储的信息或编码类型。通过分析各种方法的优点和局限性,确定当前文献中的差距,并提出未来的研究方向来指导社区。这项综述旨在统一具身智能中语义建图的不同方法,阐明其在实现智能行为方面的基础作用。除了总结现有工作之外,还希望激发新的研究,推动具身智体中语义地图构建的界限。
主动 SLAM 背后的关键思想是,机器人不是被动地收集数据并用它来构建地图,而是决定下一步要移动到哪里,以减少地图及其估计位置的不确定性。这对于自主机器人在未知环境中有效执行复杂任务至关重要,涉及三个关键问题(Makarenko,2002;Fairfield,2009)——地图绘制、定位和规划(如图所示)。在传统机器人技术的背景下,首先定义这三个问题。地图绘制涉及收集传感器数据以创建环境模型,考虑传感器噪声和不确定性。在传统机器人技术中,这些方法解决这些不确定性,而具体化的 AI 模拟器通常假设传感器是理想的、无噪声的。定位是使用传感器数据确定机器人在地图中位置的过程,这些数据可能会很含噪声。规划是决定机器人的下一步行动,考虑地图、定位和行动结果中的安全性和不确定性等约束。注:路径规划是规划的子任务,重点是找到最安全、最有效的目标路线。
这些问题是相互关联的,导致诸如
SLAM
等任务,其中地图构建和定位相互依赖;
经典探索
,其中机器人采取行动以最大化环境覆盖范围并构建完整地图;
主动定位
,其中机器人通过采取行动主动规划和优化其位置。三者的交集是主动 SLAM,其中机器人通过探索、构建地图和在优化两者的同时进行自我定位来主动减少不确定性。这使机器人能够更有效地执行任务。
传统上,通过使用来自 LIDAR 或深度传感器的测量值来构建障碍物地图,在未见过的环境中移动时,地图捕获有关环境的纯几何信息。然而,这无法捕获执行复杂任务所需的环境关键语义线索。这导致语义 SLAM 方法的发展,该方法还可以检测和识别场景中的目标。语义 SLAM 中的经典方法依赖于特征提取(SIFT(Lowe,2004)、SURF(Bay,2008)、ORB(Rublee,2011)),然后将其与基于 Bag-of-Visual Words(Peng & Li,2016)的词典进行比较,以确定其最接近的相似性匹配。Chen(2022)和 Placed(2023)更详细地调查经典和语义 SLAM 方法的概况。然而,现代语义 SLAM 系统使用基于深度学习的方法从其环境中捕获语义信息。
传统上,为导航而构建的地图仅以基于空间网格的结构存储障碍物信息。虽然这些地图可以捕捉空间的几何形状,并可以帮助智体避开障碍物,但它们不足以满足更复杂的具身 AI 任务需求。增强型地图超越几何形状,可以捕捉环境中的含义和背景,与人类感知和导航周围环境的方式相一致。这些称为“语义地图”,它们提供对环境中的目标和位置更丰富、更细致入微的理解。这些地图对于执行复杂任务是必不可少的,例如导航到特定房间(厨房)(Narasimhan,2020)、重排列物体(Trabucco,2022)或对特定目标执行特定操作(坐在沙发上)(Peng,2023)。语义地图也可以以不同的方式构建,而不仅仅是网格。如图概述不同的地图结构和编码:
语义地图可以构造为空间网格地图、拓扑地图、点云地图或混合地图(如上图所示)。
空间网格地图
是一种自上而下的网格,其中每个网格单元代表物理环境中的一个区域。因此,如果某个目标位于 3D 场景中的某个位置 (X、Y、Z),则语义地图将包含相应网格单元 (x、y) 处有关该目标的信息,其中 x 和 y 分别是行号和列号,因此存在从 (X、Y、Z) 到 (x、y)的直接映射。对于导航,大多数空间地图都是 2D 的,因此网格单元通过聚合向上轴上的语义信息,忽略 Z 轴(向上方向)。但是,它们也可以是 3D 的,其中 Z 轴被划分为离散的 bins。另一方面,
拓扑地图
是一种图结构,其中节点表示场景中的目标或重要地标,边缘表示它们之间的关系(距离、空间关系等)。点云地图上还可以存储语义信息,
点云地图
可以看作是密度不同的 3D 地图。在点云地图中,信息与物理空间中 3D 位置 (X、Y、Z) 对应的每个点(x、y、z) 相关联。与间距规则的体素网格不同,点可以以不同的密度进行采样。有些工作将上述两种或多种结构结合起来形成
混合地图
,因为每种结构都有自己的优点和局限性。
此地图存储什么?
语义地图存储有关物理环境中特定 3D 位置 (X、Y、Z)的信息。此信息可以是显式的,也可以是隐式的。
显式编码
为每个值分配明确的特定含义。例如,每个单元格 (X、Y、Z)可以存储有关该位置是否有任何障碍物、智体是否已探索过该位置、该位置存在的目标类别等信息。另一方面,
隐式编码
是一种特征编码,它捕获智体在特定位置 (X、Y、Z)观察的感官输入(例如图像)信息。这些特征通常是从预训练的编码器中提取的。根据特征编码器是在一组有限类别的图像上进行预训练,还是在大型互联网规模的图像和语言数据集上进行预训练,隐式编码可以是封闭词汇表或开放词汇表。术语“封闭词汇”用于表示只能识别有限的一组目标类别,而在开放词汇设置中,特征提取器理论上可以识别“任何”目标。
地图是如何构建的?
创建准确而详细的语义地图,需要集成来自各种来源和传感器(如摄像头、激光雷达和深度传感器)的数据。更具体地说,地图构建包括让智体在空间中导航,并将时间步骤 t 的观测值 O/t 累积到适当的地图结构 m/t 中。要构建准确的地图,智体首先需要估计它的位置(定位)。接下来,它从观测 F(O/t) 中提取语义信息(特征提取),并将特征随时间组合成一个公共地图(累积)(参见下图)。在构建空间网格地图时,另一个步骤是将特征投影到地图上(投影)。通常将最后三个步骤分组到地图构建中,并在 SLAM 中与定位一起研究它。
投影
。构建空间网格地图的一个重要步骤,是进行 2D 观测并将其投影到 3D 中。通常,这依赖于深度信息和已知的相机参数,以便将 2D 像素坐标转换为 3D 世界坐标。要在相机框架中投影特定像素,首先从相机中心发出一条射线,穿过图像像素 (i,j)到达深度 d/i,j,以获得相机坐标系中的 3D 点。接下来,将相机坐标转换为世界坐标 (X, Y, Z)。对于 2D 空间地图,3D 坐标 (X, Y, Z)映射到空间地图中的网格单元索引 x 和 y。如果将多个点投影到空间地图中同一个网格单元,则使用聚合特征或预测的函数将它们累积到该单元中。
在线 VS 离线地图构建
。智体可以通过首先探索环境来构建地图。地图构建完成后,智体就可以开始执行特定任务。在这种情况下,智体分两个不同的阶段构建地图并执行任务,这个过程称为离线地图构建方法。虽然这种方法在实际任务期间节省计算时间,但智体需要额外的探索阶段来熟悉新环境。当预期智体会在同一环境中重复使用时,这种方法可能很合适。但是,由于地图是静态快照,如果在任务期间未更新,则环境的实际状态与预先计算的状态之间可能会不匹配。例如,智体可能会到达地图中未捕获的位置。这可能会导致任务失败。此外,在现实生活中的应用中,机器人需要在未见过的环境中执行任务,例如搜索和救援行动,因此花额外的时间先探索环境然后再执行任务并不理想。相反,更好的方法是在任务期间或在线构建或更新地图,以便始终保持更新。
现实世界中的地图构建
。在具身人工智能任务中模拟构建的地图通常很嘈杂,这是由于不切实际的假设限制它在现实世界中的使用。地图构建在社区中主要作为子模块进行研究,以结合解决更复杂的高级推理任务。因此,研究人员试图研究哪种类型的地图适用于哪些任务,而将噪声传感器问题与地图构建分离,使他们能够做到这一点。最突出的假设是无噪声传感器。例如,有时社区假设在导航过程中始终实现完美的定位(智体的当前位置和方向),这在真实世界中是不现实的。这主要是因为 GPS 和指南针传感器通常很嘈杂,只要一直可用。然而,在大多数室内空间,GPS 甚至可能不可用。在现实世界的机器人中,非常有效的 SLAM 方法在 GPS 不可用的假设下运行,并依靠机载传感器来估计其在地图上的位置。无噪声传感器假设的另一个例子是完美驱动,这意味着当智体启动向前移动 25 厘米的动作时,它将准确地到达当前位置前方 25 厘米的位置。但现实世界的执行器是有噪声的,并受到不同表面不同摩擦的影响,这会导致随着时间的推移出现显著的漂移。 SLAM 系统本质上能够通过在机器人姿态估计的不确定性下运行来解决此类问题。闭环检测是 SLAM 的一个子算法,它识别之前访问过的位置,然后使用它们来纠正姿态估计中的累积误差。一般来说,与具身智能中当前地图绘制技术相比,SLAM 系统在现实世界中构建的环境地图更加一致、准确。
可用性和可靠性
。为人类创建查询语义地图的交互式界面,是许多研究人员关注的新领域(Peng,2023;Yamazaki,2023)。这种可查询的地图,尚未在任何下游体现的 AI 任务中使用,但仍是一个有希望探索的方向。此外,确保构建的地图可靠且一致,可以提高对现实世界安全关键应用的信任。这需要通过严格的验证和测试来构建准确的环境地图。
语义地图可以采用多种结构:空间网格地图、拓扑地图、点云地图或混合地图。
空间网格地图
是环境的度量地图,其尺寸与环境尺寸一致,可以构造为 2D 或 3D 网格。另一方面,
拓扑地图
通过一组以节点表示的地标和以边表示的相邻地标之间关系以一个图形式表示环境。
点云地图
是 3D 地图中最密集的形式,其所有三个维度都与 3D 空间对齐,因此场景中的每个 3D 点都被捕获在地图中。有时将两种或多种此类地图组合在一起以形成
混合地图
。
空间网格地图
空间网格图 m_t 是一个 (M x N x K) 矩阵,其中 M 和 N 是地图的空间维度,K 表示在该位置存储语义信息的通道数。它是一种网格状结构,每个单元都有宽度和高度,与物理环境中的某个区域相对应。
目前对室内具身人工智能的研究,利用来自数据集的环境,例如 Matterport3D (MP3D) (Chang,2017) 和 Habitat-Matterport3D (HM3D) (Ramakrishnan,2021),它们是现实世界空间的 3D 重建。与 MP3D 相比,HM3D 包含的场景数量大约多 10 倍,具有高视觉保真度和更少的重建伪影。这些环境通常适用于总面积小于 1000 平方米的房屋或办公空间。发现每个单元格代表 400 - 900 cm^2 面积的网格地图足以表示此类空间(Wani,2020;Raychaudhuri,2023)。在每个 episode 开始时,空间地图用大小为 (M x N x K) 的张量初始化,并随着智体在环境中移动而逐渐构建。这些通常是 2D 自上而下的地图(Gupta,2017;Henriques & Vedaldi,2018;Narasimhan,2020;Cartillier,2021),前两个维度对应于环境的空间维度。然而,有些人构建 3D 空间地图(Chaplot,2021)来捕捉垂直维度,在这种情况下,地图 m_t 是一个 4D 张量(M x N x P x K)。
与高精度网格地图相比,拓扑图是一种图结构,节点通过边相互连接。这本质上将大空间抽象为重要区域(节点),智体可以在这些区域做出决策,并在它们之间建立连接或路径(边)(Johnson,2018)。这使得能够将环境解析为局部和全局结构,以便智体可以在表示为节点的小空间中进行局部规划,同时通过图搜索沿着边在大空间中导航。这种规划和导航方式的灵感,来自于人类在未见过环境中导航的方式,即识别和记忆重要地标并找到到达这些地标的路径(Janzen & Van Turennout,2004;Foo,2005;Chan,2012;Epstein & Vass,2014)。因此,拓扑图一直是传统机器人研究(Thrun & Montemerlo,2006;Lorbach,2014;Rosinol,2020b;Campos,2021)和具身 AI 研究(Savinov,2018;Chen,2021;Chaplot,2020b;Kwon,2021;Gu,2023;Mehan,2024;Garg,2024;An,2024;Yang,2024)中的热门选择。
为了缓解这个问题,一些工作在智体执行任务期间导航时在线构建拓扑图,就像神经拓扑 SLAM (NTS) 的情况一样 (Chaplot et al., 2020b)。NTS 由几个模块组成——“图更新”用于根据观察更新拓扑图,“全局策略”用于在地图上采样子目标,“局部策略”用于输出离散导航操作以达到子目标。“图更新”方法根据当前观察和智体姿势逐渐更新图中的节点和边。它首先尝试从上一个时间步将智体定位在图上。如果智体在现有节点中定位,它会在该节点和上一个时间步的节点之间添加一条边。它还存储两个节点之间的相对姿势,表示为 (r, θ),其中 r 是节点之间的相对距离,θ 是相对方向。如果智体无法定位,则会向图中添加一个新节点。
拓扑地图创建的另一个重要方面,是如何确定两个观察结果是否彼此相似,在这种情况下,将两者映射到同一个节点。如果它们不相似,则两个观察结果存在两个不同的节点。这需要地图构建方法来比较 RGB 图像。这里的目标是将两幅图像归类为相似,如果 (1) 它们完全相同或 (2) 两者之间的方向或距离略有变化。传统上,这是基于 SLAM 的系统中的数据关联问题,其中传入的观察结果可以与多个地标(节点)匹配,然后选择最佳匹配或创建新节点来标记新地标(Bowman,2017;Dellaert,2000)。拓扑图创建中的另一个重要方面是如何确定两个观测值是否彼此相似,在这种情况下,将两个观测值映射到同一个节点。如果它们不相似,则两个观测值存在两个不同的节点。这需要地图构建方法来比较 RGB 图像。这里的目标是将两个图像归类为相似,如果 (1) 它们完全相同或 (2) 两者之间的方向或距离略有变化。传统上,这是基于 SLAM 的系统中的数据关联问题,其中传入的观测值可以与多个地标 (节点) 匹配,然后选择最佳匹配或创建新节点以标记新地标 (Bowman 等人,2017;Dellaert 等人,2000)。在具身 AI 中,一些方法使用预训练的分类器网络来实现这一点。该网络经过训练可以对两幅图像是否来自同一区域进行分类。NTS 使用以监督方式训练交叉熵损失的 MLP 来预测是否相似。然而,这需要带注释的训练数据对。另一方面,跨模态 Transformer 规划器 (CMTP) (Chen,2021) 使用 Oracle“可达性估计器”首先根据 3D 网格的可遍历性获取两个底层位置之间的地理距离。如果距离低于阈值,它会将它们映射到同一个节点。视觉图记忆 (VGM) (Kwon,2021) 也使用预训练网络来确定两幅图像是否相似。但它们会学习观察结果的无监督表示,然后将其投影到嵌入空间上。其想法是将来自附近区域观察结果的嵌入聚集在一起,因为它们可能具有相似的外观。在这种情况下,训练数据由从训练环境中随机抽取的观察结果组成,从而无需手动注释。Kim (2023) 另一方面使用从预训练网络 (Li et al., 2021) 在两幅图像之间获得的语义相似度得分来确定它们是否是相同的节点。LM-Nav (Shah et al., 2023) 采用类似的方法,他们使用 CLIP 来计算图像特征之间的余弦相似度。下表比较构建拓扑图的不同方法。
还可以将语义信息直接积累到场景的 3D 几何上,无论是三角网格还是点云(它们越来越受欢迎,因为它们比三角网格更容易处理)。例如,给定一个点云,可以将语义信息与场景中的每个点相关联。虽然传统上不被认为是地图,但可以将这些表示视为一种语义地图,因为它们将语义与空间信息相关联。通常,神经网络用于获取与给定位置 (x, y, z) 作为输入的每个点相关特征。将坐标转换为实值向量的神经函数也称为
神经场
。这些神经场可以生成密集的 3D 语义地图,其中场景中的每个 3D 点都被捕获并表示在地图中。
虽然传统上这种表示主要是为 3D 场景理解任务而构建的,但人们对将它们用于具身 AI 的兴趣日益浓厚。在场景理解任务中,目标是对每个 3D 点执行各种语义推理(Peng,2023;Xu,2024)。换句话说,给定一个场景的点云,目标是执行语义分割、affordance 估计、房间类型分类、3D 目标搜索等。为此类任务学习的表示通常也对后续具身 AI 任务有用。
例如,OpenScene(Peng,2023)预测密集的 3D 特征,以便它们与 CLIP 嵌入空间中的相应文本和图像共同嵌入。这允许将场景中的每个 3D 点与语义信息关联起来,从而可以使用文本查询场景以推断物理属性、affordance等。CLIP2Scene (Chen et al., 2023c) 还使用 CLIP 对室外场景执行 3D 点云分割,以应用于自动驾驶。然而,由于在许多这些方法中优化都是针对每个场景进行的,因此它们通常很昂贵并且不适合在具身应用中实时使用。使用神经场图进行具身 AI 的代表性工作包括 CLIP-Fields (Shafiullah et al., 2023)。另一方面,Zhang et al. (2023a) 基于在线点云构建算法 (Zhang et al., 2020) 构建 3D 语义场景表示,该算法通过使用基于树的动态数据结构提高效率。此方法非常节省内存,并且在应用于 ObjectNav 任务时速度要快得多。同样,Lei et al. (2024) 表明,基于高斯分层的 3D 表示,能够在 ImageNav 任务中实现最先进的性能。
摘要
。在具身 AI 任务的背景下,这种密集地图的使用仍相对未被探索,并且可能是一个有希望的未来方向。然而,使用这种密集地图可能会导致查询期间内存消耗大和计算效率低下。此外,在典型的室内场景中,大多数 3D 空间都是空的,可能对推理环境没有用处。
混合地图
基于网格地图的度量信息与拓扑图的组合也称为拓扑图(Thrun,1998;Tomatis,2001;Blanco,2008;Konolige,2011;Ko,2013;An,2023)。Thrun(1998)提出一种单一统计建图算法,该算法首先构建一个粗略的拓扑图,然后使用它来构建一个细粒度的网格图。他们表明,拓扑地图通过纠正较大的里程计误差来解决全局对齐问题,而网格地图通过生成高分辨率地图来解决局部对齐问题。另一方面,Tomatis(2001)提出一种紧凑的环境模型,其中角落和走廊由拓扑地图表示,房间由网格地图表示,两者通过单一表示连接起来。当机器人在走廊中移动时,它会创建并更新全局拓扑地图,一旦进入房间,它就会创建一个新的局部度量地图。他们认为,机器人只需要在房间内精确(例如操纵目标等),这证明需要细粒度的精确度量地图,而拓扑地图仅用于在难以区分的空间(例如长走廊和重要地点之间的过渡)中保持全局一致性。 BEVBert (An et al., 2023) 是一种较新的方法,它离线构建混合地图,然后学习多模态地图表示,以便在语言引导导航的复杂任务中执行更好的空间推理。
还有结合网格、点云和拓扑地图的混合地图。StructNav (Chen et al., 2023b) 构建这样一种混合地图,其中空间网格存储占用信息,场景图存储地标及其连通性,3D 语义点云存储环境中的每个 3D 点都有一个与之关联的语义标签。因此,空间网格允许避障和低级路径规划,场景图允许对地标之间的关系进行高级推理,3D 点云允许更密集的语义和空间匹配。
还可以构建捕获场景在各个抽象级别的语义层次结构地图,从而允许进行各个级别的推理。Armeni et al. (2019) 以多层级结构(建筑物、房间和目标)表示静态场景,其中实体表示为层次图中的节点,并通过代表坐标系变换的边进行连接。Rosinol (2020a)(动态场景图)将其扩展到动态场景,在密集 3D 度量空间地图之外还具有分层场景图,并建模目标和智体之间的时空关系。Hughes (2024) 证明分层场景表示比大型环境中的平面表示具有更好的扩展性,随后引入一个名为 Hydra 的系统,该系统可以实时从传感器数据中逐步构建 3D 场景图。Fischer (2024) 从一组从移动车辆捕获的图像中引入大规模动态城市环境的多级场景图表示,并提出城市驾驶场景的新视图合成基准。
摘要
。不同类型的地图结构都有各自的优点和局限性。粗略拓扑图可用于表示环境中的重要地标,细粒度度量图可用于表示其精确的几何形状,点云图可用于表示场景中目标更密集的 3D 几何形状。因此,为了更好地表示环境,最好是在不同层次的语义抽象上,将两个或更多个结构结合起来至关重要。虽然混合地图已经在机器人技术中得到探索,但它们在具身 AI 中仍未得到充分探索。然而,在结合这些地图之前,需要仔细考虑它们的弱点。例如,拓扑和点云地图在更大的环境中比网格地图具有更好的扩展性,并且点云地图需要最多的内存,而拓扑地图需要最少的内存来存储。
许多先前的工作将显式信息存储在地图中。先前的研究发现,几乎每个具身 AI 任务都受益于有关环境中存在的障碍物信息,因此维护具有此占用信息的空间地图有助于智体学习避开其路径上的障碍物。在这种情况下,空间地图存储二进制占用值 1 或 0,具体取决于物理环境中的相应位置是否被目标“占用”。
然而,在探索任务中,智体需要在保持效率的同时最大化环境中的探索区域,在这种情况下,某个位置是否已被探索的信息会鼓励智体更多地探索未探索的区域。主动神经 SLAM(Chaplot,2019)除了存储占用信息外,还存储已探索(二进制)信息。主动神经 SLAM 由多个模块组成,这些模块连接在一起执行探索任务以最大化探索区域。“神经 SLAM”模块将视觉观察和智体姿势作为输入,并通过学习使用二元交叉熵损失预测占用和探索信息来输出自上而下的自我中心空间地图。所有模块都使用不同的损失进行联合训练。