经典文献阅读之--Multi S-Graphs(一种高效的实时分布式语义关系协同SLAM)

0. 简介

协作同时定位与建图(CSLAM)对于使多个机器人能够在复杂环境中操作至关重要。大多数CSLAM技术依赖于原始传感器测量或低级特征,如关键帧描述符,这可能由于缺乏对环境的深入理解而导致错误的闭环 。此外,这些测量和低级特征在机器人之间的交换需要传输大量数据,这限制了系统的可扩展性。为了克服这些限制,《Multi S-Graphs: an Efficient Real-time Distributed Semantic-Relational Collaborative SLAM》提出了Multi S-Graphs,一个去中心化的CSLAM系统,利用嵌入在四层分层和可优化情境图中的高级语义关系信息,进行协作地图生成和定位 ,同时最小化机器人之间交换的信息量。为此,我们提出了一种新颖的基于房间的描述符,连同其连接的墙壁,用于执行机器人间的闭环 ,解决多机器人绑架问题初始化的挑战。在模拟和真实环境中的多次实验验证了所提方法在提高精度和鲁棒性方面的改进,同时与其他最先进方法相比,减少了机器人之间交换的数据量。相关软件可以在Github中找到。

1. 主要贡献

因此,在本项工作中,我们提出了Multi S-Graphs,一个基于LiDAR的分布式CSLAM系统,利用多层情境图(S-Graphs)的潜力,这是一个单一的可优化因子图,结合了位姿图(即关键帧)和带有语义关系概念的3D场景图,以生成精确的环境地图并定位这一地图中的不同机器人,同时在机器人之间交换最少的信息。据我们所知,我们提出了第一个基于可优化情境图的实时分布式协作SLAM系统。图1展示了在真实实验中执行的Multi S-Graphs。

我们系统的主要贡献如下:

  1. 一个基于四层可优化分层S-Graphs的新颖的分布式多机器人框架,Multi S-Graphs,利用语义关系信息进行地图合并,同时最小化机器人之间的信息交换。
  2. 一个混合的基于房间的描述符,结合了细粒度的点云信息和语义知识,以识别机器人间的闭环。
  3. 在模拟和真实环境中对所提方法进行了实验验证,与最先进的多机器人方法相比,获得了改进的精度。

图1:三个机器人(分别用橙色、灰色和蓝色代表机器人1、2和3)绘制建筑楼层的协作图。协作图是从机器人1的视角生成的。其他机器人收集的语义信息,如房间或墙壁,在图层中以透明颜色显示。其他机器人的坐标系统原点被一个圆圈包围。下方是合并每个机器人获得的点云的结果。这个点云是为了可视化目的而显示的,并未用于机器人间通信

2. 系统架构

在Multi S-Graphs中,每个机器人运行完全去中心化的Multi S-Graphs系统,如图2所示。我们的系统架构围绕情境图(S-Graphs)构建,这是一个单一的多层可优化因子图,结合了位姿图和场景图以及语义关系概念。这张图包含了所有用于提取交换所需关键信息的知识,并整合了其他代理的信息,形成了多机器人情境图。代理间共享的信息被广播到一个共同的通信频道中,这个频道在它们之间交换最小量的数据。在我们的系统中,我们考虑了多机器人被绑架问题,即每个机器人不知道自己在地图上的位置以及其他机器人的位置,因此每个机器人都会以其起点(原点)为参考创建环境地图,并将其余代理定位到相对于它的位置。我们提出的系统由四个主要模块组成:

  1. 本地S-Graphs生成(第三节)。为了生成每个机器人的本地S-Graphs,我们使用[8],它在每个机器人上运行,使用机器人的里程计和3D LiDAR测量。它还估计了机器人生成地图时所遵循的位置和轨迹。
  2. S-Graphs精简(第四节)。我们将每个机器人生成的本地S-Graphs边缘化,只传输语义关系信息,而不是存储在每个关键帧上的低级信息。每个精简的图包括一个参考节点,代表每个机器人的本地坐标系统的原点。这个精简的S-Graphs被传输给其他机器人。
  3. 基于房间的机器人间闭环(第五节)。仅依靠生成的语义图进行闭环可能会在环境中存在对称性时产生对齐错误。为了结合点云的细粒度信息并利用每个房间包含的高级语义信息,我们为每个房间生成了一个混合描述符,即房间描述符。这个模块负责两项任务:生成描述符和找到合适的房间匹配。
  4. 协作S-Graphs生成和优化(第六节)。这个模块将从其他代理收到的精简S-图与自己的本地S-Graphs整合。不同的图通过前一个模块生成的闭环连接在一起。连接的图被全局优化,以生成最终的协作情境图。

图2:从Roboti视角看的Multi S-Graphs架构。里程测量和3D激光雷达数据是机器人平台提供的输入。每个机器人执行自己的本地 S-GraphsS-图系统,并生成用于与机器人网络其余部分交换的房间描述符和精炼S-Graphs。机器人之间交换的消息用灰色表示。从Roboti的视角看,其余代理提供的精炼图和房间描述符被用来生成协作S-Graphs。其余机器人提供的信息以绿色显示。

3. 本地情境图生成

在我们的系统中,每个机器人的情境感知被封装在一个情境图中,这个情境图的实体被设计为代表构成建筑布局的不同元素。在这项工作中,我们依赖于SGraphs+ [8]算法来生成这个情境图,这基于机器人的激光雷达和里程测量,估计机器人的定位。这些SGraphs是四层可优化的分层图,包含了关于建筑结构的相关信息:

  1. 关键帧层。它由机器人位姿构成,作为代理地图框架Ai中的SE(3)节点,通过成对的里程测量约束它们。
  2. 墙壁层。它由从3D激光雷达测量中提取的平面墙面构成,并使用最小平面参数化因子化。通过其各自的关键帧观察到的平面使用位姿-平面约束进行因子化。
  3. 房间层。它由两面墙的房间(走廊)或四面墙的房间组成,分别约束两面或四面检测到的墙壁。
  4. 楼层层。它由一个位于当前楼层中心的楼层节点组成。

4. 情境图的精炼

为了减少机器人之间需要交换的数据量,我们从本地S-Graphs中提取最有意义的信息。这个图编码了S-Graphs的更高级别层,并将它们定位于每个机器人的原点节点相对应的位置,这使得关于建筑结构的最小但有意义的信息交换成为可能。精炼后的S-图按以下层组织:

...详情请参照古月居

  1. 起点层。每个精炼S-Graphs的原点节点,它代表每个机器人协调系统的原点。图中其余所有元素都相对于这个节点定位。
  2. 墙壁层。从每个代理的S-Graphs中提取的墙壁估计及其协方差。连接平面与其对应关键帧节点的边被替换为指向原点顶点的边。
  3. 房间层。每个代理检测到的四墙房间顶点的估计,以及连接房间与其四个相应墙节点的边
  4. 楼层层。它由位于当前楼层中心的楼层节点组成。

5. 基于房间的机器人间闭环

为了将本地S-Graphs与外部精炼S-Graphs连接起来,需要一个闭环方法。为了避免在非常对称的情况下,如多个房间位于一条走廊的一侧时,对机器人位置进行对齐的错误,我们不能仅依赖于存储在精炼S-Graphs中的结构信息,可能需要更细粒度的信息来打破对称性并决定两个房间是否相同。##

5.1 房间描述符生成器

我们提出了一种混合描述符,即房间描述符,它将每个房间的语义信息与以房间为中心的点云基描述符整合在一起,这通过增加一小部分传输数据量,提高了闭环算法的鲁棒性和准确性。图3展示了一个房间描述符的例子

图3:通过使用扫描上下文(Scan Context),从以房间为中心的点云(左图)中获得的房间描述符(右图)。描述符中每个单元格的值是相应容器中点的最大高度。

为了生成这些描述符,我们依赖于扫描上下文描述符(Scan Context)[27]。这是一个以自我为中心的、偏航不变的点云描述符 ,鉴于其简单性和快速收敛时间,它展示了最先进的结果。这个描述符的主要缺点是它对线性运动敏感。为了解决这个问题,我们利用房间中的语义信息,通过从每个房间的中心生成扫描上下文描述符,避免了平移误差。为了生成房间描述符,我们需要一个以房间为中心的点云,这是通过结合房间内所有关键帧的点云构建的点云 。每个房间关键帧 R k i R_{k_i} Rki可以表示为:

R k i = ⋃ R i k j ; ∀ j ∣ K j ∈ R i ( 1 ) R_{k_i} = \bigcup {^{R_i}{k_j}} \quad ; \quad \forall j \mid K_j \in R_i \quad (1) Rki=⋃Rikj;∀j∣Kj∈Ri(1)

在这里, R i K j ^{R_i}K_j RiKj表示与关键帧 K j K_j Kj相关的点云,在 R i R_i Ri框架中(一个位于房间 i i i中心的框架)。

为了从房间关键帧 R k i R_{k_i} Rki获得房间描述符 R d i R_{d_i} Rdi,我们首先使用固定体素大小对 R k i R_{k_i} Rki进行下采样,以使每个房间的点数统一化 。最后,计算每个房间关键帧 R k i R_{k_i} Rki的扫描上下文描述符 ,以创建房间描述符 R d i R_{d_i} Rdi:

R d i = S C ( ϕ ( R k i ) ) ( 2 ) R_{d_i} = SC(\phi(R_{k_i})) \quad (2) Rdi=SC(ϕ(Rki))(2)

其中, ϕ ( R k i ) ϕ(R_{k_i}) ϕ(Rki)代表了下采样后的房间关键帧点云,而 S C ( X ⃗ ) : R n × 3 → R n s × n r SC(\vec{X}) : {R}^{n \times 3} \rightarrow {R}^{n_{s} \times n_{r}} SC(X ):Rn×3→Rns×nr是扫描上下文函数,用于获得给定点云的描述符。

5.2 闭环检测

为了生成对齐的良好候选者,我们利用房间描述符来匹配用于将本地S-图Graphs外部精炼图连接的房间,从而生成每个机器人坐标系统的全球对齐。房间匹配分为两步过程进行:

  1. 扫描上下文匹配:每个机器人接收并存储其余代理的房间描述符,试图使用扫描上下文距离[21]找到合适的匹配
  2. 精确对齐:每当在机器人和其他代理的房间之间找到匹配时 ,它试图使用产生扫描上下文的以房间为中心的点云获得改进的变换。为此,机器人请求下采样点云并使用VGICP [28]登记算法。相对变换的有效性由对齐距离和匹配阈值 t d t_{d} td确定。

如果找到匹配,房间匹配及房间之间的相对变换就被发送到下一个模块(第4V节),以连接不同的图。

6. 协作情境图

最终模块整合了本地S-Graphs与精炼S-Graphs,使用前一模块提供的闭环,生成协作S-Graphs。在这个协作S-Graphs的生成过程中,可以找到两个不同的阶段:

  1. 孤立图:在启动时,该模块存储来自本地S-Graphs和其他机器人接收到的精炼S-Graphs的信息,但由于机器人不知道每个机器人在哪里开始,它不能合并不同的图。在这个阶段,每个外部精炼S-Graphs的起点层连接到墙壁和房间层,但这个起点层是"自由"的,因为它没有与机器人的本地S-Graphs连接,导致多个断开的图。只要收到新信息,这些图就会被更新。

  2. 协作图:如果使用房间匹配步骤(第5节)找到房间匹配,我们就会在2步中制定本地s-Graphs和精炼s-Graphs之间的因子。在第一步中,为匹配的房间创建房间到房间的因子 。对于给定的匹配房间,建立较低级别的墙到墙的因子,这增强了图的对齐。每当本地S-Graphs和外部精炼S-Graphs通过适当的因子连接时,就会执行类似于[8]的常见优化。经过这个优化后,外部图与机器人的本地坐标框架对齐,使得其他机器人提供的信息集成到协作SGraphs中,使用与本地机器人相同的坐标框架来表示外部精炼图的不同实体,如图1所示。

7. 结论与未来工作

在本项工作中,我们提出了一个分布式CSLAM系统,利用由S-Graphs[7]、[8]提取的语义关系特征,以减少机器人之间需要传输的数据量,同时在结构化环境中实现超越最先进的地图制作和定位精度。

我们在多种情景下测试了我们的算法,包括模拟和真实场景,在精确度和带宽方面超越了其他最先进的基于激光雷达的协作SLAM算法,将轨迹和地图重建误差减少了90%以上,同时节省了95%的机器人之间交换的数据。由于我们的方法减少了代理之间交换的数据量,它适合于低带宽场景,以及使用相同通信频道的大量机器人。

8. 参考链接

https://mp.weixin.qq.com/s/z3BsztMALVoskSn6QYsjFw

相关推荐
Lill_bin2 分钟前
ElasticSearch底层原理解析
大数据·分布式·elasticsearch·搜索引擎·zookeeper·云原生·jenkins
Lill_bin11 小时前
Ribbon简介
分布式·后端·spring cloud·微服务·云原生·ribbon
Zy_blog12 小时前
【kafka】消息队列
分布式·kafka
.生产的驴14 小时前
SpringBoot 消息队列RabbitMQ 消息转换器 改变消息的发送格式 节省内存
java·spring boot·分布式·后端·rabbitmq·java-rabbitmq
编程经验分享14 小时前
Windows 安装 ZooKeeper 以及 IDEA 安装 zoolytic 连接工具
分布式·zookeeper·云原生
Pdh胖大海16 小时前
Redis如何实现分布式锁
redis·分布式
huisheng_qaq19 小时前
【kafka-01】kafka安装和基本核心概念
大数据·分布式·kafka·消息队列·消息中间件
珍珠是蚌的眼泪1 天前
微服务_1、入门
分布式·微服务·eureka·springcloud·注册中心
问道飞鱼1 天前
分布式中间件-分布式代理框架Codis和Twemproxy
分布式·中间件
ps酷教程1 天前
Zookeeper学习
分布式·学习·zookeeper