Khronos:动态环境下时空度量语义SLAM的统一方法
Khronos: A Unified Approach for Spatio-Temporal Metric-Semantic SLAM in Dynamic Environments
原文
项目
引言:
人类居住环境通常是高度动态的,人、机器人和其他实体不断移动、互动和改变场景。对于机器人在这种情况下的操作,仅仅建立一个单一时间点的世界模型是不够的。相反,机器人还应该能够推理过去时间段场景的状态,推断出在多次观察中场景可能如何改变。这种能力对于需要对较长时间跨度进行推理的各种应用至关重要,包括家庭和服务机器人、工业建筑或工地监测,其中机器人不仅需要在高度动态的环境中操作,而且需要跟踪或推理过去环境的演变,以更智能地高效执行任务。度量语义SLAM允许机器人实时构建场景的语义注释的几何表示。几何信息对于机器人安全导航和物体操作至关重要,而语义信息为机器人执行人类指令和向人类提供易于理解的环境模型提供了理解。为了实时构建这些密集的度量语义表示,通常假设世界是静态的,并专注于将嘈杂的几何和语义测量稳健地融合成度量语义模型。尽管这对于某些机器人应用是一个有效的假设,但它限制了机器人可以操作的环境类型的普遍性,以及可以分配给它的任务。另一方面,已经有大量的工作在动态环境中处理SLAM,但这些工作主要集中在短期动态,如当前在摄像机前移动的人或物体,很难处理长期变化。可能场景发生了实质性的变化(例如,家具被重新摆放),而机器人并没有直接观察到。真实环境同时经历短期和长期的变化,现有方法很难对两者同时进行推理。此外,为了使机器人能够有效地与其他人类和机器人一起工作,这样一个框架需要在机器人操作期间利用有限的信息和计算资源构建对世界的理解。
为此,这篇文章引入了时空度量语义SLAM(SMS)问题,旨在随着机器人导航场景,逐步构建世界的密集度量语义模型。作者提出了一个统一的框架来解决SMS问题,其核心思想是基于时空局部一致性开发SMS问题的新因子分解,这允许解开由感知噪声、状态估计误差、动态对象和场景中的长期变化引起的错误。作者将这一见解集成到一个名为Khronos的时空感知系统中,它是第一个能够实时构建场景时空地图的度量语义系统。在几个模拟场景中对我们的方法进行了彻底评估,并在多个机器人平台上导航高度动态的现实环境中进行了背景重建、物体检测、运动跟踪和变化检测的详细注释。
贡献:
- 形式化了时空度量语义SLAM(SMS)问题,允许机器人对周围环境及其随时间演变的密集度量语义有深入理解。
- 提出了SMS问题的新型因子分解,为现有的专注于短期和长期动态的解释提供了统一的视角。
- 提出了Khronos,第一个时空度量语义感知系统,由用于异步局部地图和可变全局变化检测的新算法组成。
方法原理:
Khronos输入机器人里程计Φ,语义分割和RGBD输入Z。活动窗口使用这些来估计局部表示和物体碎片Y。然后执行全局优化来估计机器人位姿X和碎片关联A。最后,将优化后的碎片状态调和来估计场景的时空地图。
-
通过活动窗口进行局部估计
将局部估计组件称为活动窗口。它的目标是通过增量估计一组来自观测 Z,Φ 的片段 Yk,以满足局部一致性。
重建。 首先重建静态背景。使用网格来实现 Khronos 来建模表面 Ω。为此,在机器人周围逐步分配体积图,并执行投影 TSDF 融合以估计 OBG。然后,从原始 RGBD 数据中的每个帧中获取候选观测 Z。可以使用不同的线索从传感器数据中提取 Z。首先,利用输入帧中提供的语义掩码作为 Z。其次,利用几何运动检测将物体与背景分离。
跟踪。 为了估计最好解释观测 Z 的片段 Y,生成一组对象假设的池。由于活动窗口内的变化很小,可以贪婪地将新的观测 Ztk 关联到最合适的假设上,通过计算每个 Ztk与假设之间的体积 IoU 来实现。在这种方法中,选择使用 TSDF 融合来重建静态物体的表面,并使用点云来表示可变形的动态物体。同样,跟踪背景的局部一致性并提取退出活动窗口的顶点。这种对活动窗口中每个实体的异步跟踪确保了局部一致性,并自然地处理了部分或错误的观测。同时,它具有一个重要优势,即当所有数据都可用时,可以估计对象属性。 -
全局优化
全局优化模块从活动窗口获得的局部估计进行优化和更新以进行调和。在全局范围内,联合估计机器人姿势 X、片段位置 Y 和背景密集网格。变形图的节点对应于机器人姿势 X 和从 OBG 中选择的网格控制点 PM,以及一个新的碎片姿态,其位置和标识旋转进行初始化。使用边缘 EYX 将位姿连接到机器人姿势图。每个位姿始终与首次观察碎片时对应的机器人姿势 Xf 连接,并根据一致性检查选择性地与最后观察到碎片时对应的机器人姿势连接。 -
调和
最后,调和的目标是估计在所有时间 t < T 时刻的场景状态。值得注意的是,碎片只包含积极的观察结果,即有关检测到的对象存在的信息,但不包括它们的缺失信息。为了解决这一缺失证据与证据缺失问题,执行额外的几何验证步骤。
可变形变化检测。 虽然在表面表示中没有存储体积信息,但这些信息部分地隐含在背景和机器人姿态中。核心思想是,当连接背景顶点和机器人姿态时,它们不会在那个时候被遮挡。然而,由于全局优化过程中机器人和背景姿态可以不断改变,因此在在线操作过程中将这些信息集成到自由空间地图中是不可行的。相反,通过光线库来近似这些全局自由空间信息。每当从活动窗口提取背景顶点时,创建该顶点到其观察窗口中间的机器人位置的代表光线。为了进行高效的查找,这是通过在粗略的全局哈希映射中存储顶点和视点的索引来实现的。这些可以高效地逐步添加,并允许机器人和背景点在它们的网格单元内自由移动。当检测到较大的位置变化时,例如在闭环的情况下,哈希映射将从头开始重新计算。为了检测缺失或存在的证据,在光线库中查询碎片表面上的点。
调和。 最后,可以估计在碎片 Y 之间每个对象存在的时间。为此,计算了在首次观察到碎片 Y 之前的最新缺失证据,以及在其退出活动窗口之后的最早缺失证据。类似地,计算了该窗口内存在的最早和最晚的存在证据。直观地说,这反映了一个对象必须在其位置最后被观察为空时和该位置首次被观察到对象存在之间的某个时间点新出现,并反之亦然。假设对象以均匀的概率出现或消失,最小的期望误差估计可以很容易地显示为该窗口的中间部分。
实验效果:
图 1:我们提出了 Khronos,这是一种在动态环境中执行度量语义同步映射和定位 (SLAM) 时推理短期动态和长期变化的统一方法。上面显示了 Khronos 时空地图中的一些实例,代表了所有时间的场景状态。短期动态(左)以洋红色显示,并与相应时间间隔内观察到的人类行为进行比较。我们显示检测到的移动点周围的当前和初始边界框以及质心轨迹。人类和无生命物体(例如手推车(左下))都会被检测到。显示同一场景的三个时间实例的长期变化(右)。最早的实例出现在时间 0:20(右上角)。当机器人穿过走廊时,一把椅子被移走,一个红色的冷却器被放置在桌子上;当机器人重新访问并在时间 1:52(右下)关闭循环时,会检测到这些变化。最后,冷却器再次被移除,机器人在 3:35 检测到这一情况。
4D背景重建, 包括静态对象,动态对象和变化检测。对所有指标来说,越高越好。
真值分割和开放集分割对Apartment序列的变化检测性能。
Khronos目标检测性能和对人工标注的真值的长期变化。
第一次变化发生在90 s左右,但机器人自然还没有再观察到该物体。然后,机器人开始观察变化并增加其回忆性,而新物体出现并消失,降低了回忆性。最终,机器人闭合回路,在起始位置检测到若干变化。
图 8:使用 Boston Dynamics Spot 四足动物构建的时空地图,涵盖大学建筑的整个楼层。我们在地图中展示了一些长期变化的实例:将一把椅子移到不同的位置(左上),移除两个回收箱(右上),以及改变两把椅子的排列(右下)。显示的 Khronos 重建对应于较晚的时间戳,检测到的对象在图像中突出显示。例如,请注意,窗户附近的椅子(右下,3:09)如何在 6:30(右上)出现在地图中,但在机器人于 7:30 重新访问后被标记为不存在并以新姿势重新出现:19(右下)。我们还展示了人类行为的短期动态(左下);然而,由于摄像头朝下的角度,Khronos 只能看到行走的人的腿,而该腿已被成功检测到。
全局优化组件( top )和协调组件( bottom )的运行时间。
限制:
(1)由于Khronos将边界框质心估计为物体位置,因此对部分观测和遮挡敏感。此外,缺乏对物体旋转的估计会降低全局估计和协调的有效性。采用现代物体姿态和形状估计以及注册技术将提高物体关联的鲁棒性和准确性。(2)使用光线追踪方法进行变化检测意味着存在一个参考表面。尽管在实验中发现其效果良好,但在具有稀疏表面的大型开放空间中进行变化检测将表现不佳。(3)随着对物体的重新观察,物体分割的数量增加,这限制了Khronos的可扩展性。在理想情况下,过时或已经自信地协调的物体分割被边缘化,使得存储的物体分割数量与支持长时间任务的物体数量成比例。
相关文章:

Khronos:动态环境下时空度量语义SLAM的统一方法
Khronos: A Unified Approach for Spatio-Temporal Metric-Semantic SLAM in Dynamic Environments 原文 项目 引言: 人类居住环境通常是高度动态的,人、机器人和其他实体不断移动、互动和改变场景。对于机器人在这种情况下的操作,仅仅建立一…...
一个迷茫的25岁前端程序员的自述
作者:一尾流莺 一直听说程序员的危机在 35 岁,没想到我的危机从 25 岁就开始了。 我甚至不知道自己是不是 25 岁,也可能是 26 岁,或者 27 岁,1998 年的生日,按照 2023 - 1998 的算法就是 25,按…...

多文件并发多线程MD5工具(相对快速的MD5一批文件),适配自定义MD5 Hash I/O缓存。
自己写的多文件 MD5校验工具,一个文件开一个线程,有最大I/O 缓存设置,兼容读写MD5后缀文件。 共计91个文件,合计180G左右 12分钟左右,UI基本卡废,但程序没蹦,属于正常。 卡的原因是基本是用 I/O…...

Pikachu-url重定向-不安全的url跳转
不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。 url跳转比较直接的危害是: …...

如何下载和安装CLion,图文详解
一、下载 登录JetBrains官网,下载最新版本的Clion,Clion目前没有社区版,都是专业版。 二、安装 1、启动Clion安装程序,下一步。 2、修改安装目录,下一步。 3、创建桌面快捷方式,更新PATH变量࿰…...
vue3导入本地图片2种实现方法
在<script setup>中使用import语法: <template><img :src"logo" alt"Logo"> </template><script setup> import logo from ./assets/logo.png; </script> 使用Vue的ref来动态地在<script setup>中…...
leetcode 刷题day36动态规划Part05 背包问题(完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶))
完全背包 完全背包的每件商品都有无限个,和01背包的一不同主要体现在遍历顺序上。为了保证每个物品仅被添加一次,01背包内嵌的循环是从大到小遍历。而完全背包的物品是可以添加多次的,所以要从小到大去遍历。 518. 零钱兑换 II 思路&#…...

检查jar冲突,查找存在相同class的jar
写在前面 本文看下如何查找jar冲突,即查找哪些jar包中存在相同的class。如果是存在相同jar的不同版本,基本一眼就能看出来,然后结合maven的依赖关系将其剔除掉即可,但是当你遇到了有人手动拷贝某些class到jar包中导致冲突的情况时…...

PhpStudy-PHP5.4.45后门漏洞应用程序(C++/base64/winhttp)
PhpStudy-PHP5.4.45后门漏洞应用程序(C/base64/winhttp) 前言引言(时间回到多年前) PhpShellCmd.exe使用介绍:(1)输入网址检测是否存在PHP/5.4.45(2)whoami(3…...

【优选算法】(第二十七篇)
目录 重排链表(medium) 题目解析 讲解算法原理 编写代码 合并K个升序链表(hard) 题目解析 讲解算法原理 编写代码 重排链表(medium) 题目解析 1.题目链接:. - 力扣(LeetCod…...

学习Flask框架
Flask简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没…...

Elasticsearch:使用 LLM 实现传统搜索自动化
作者:来自 Elastic Han Xiang Choong 这篇简短的文章是关于将结构化数据上传到 Elastic 索引,然后将纯英语查询转换为查询 DSL 语句,以使用特定过滤器和范围搜索特定条件。完整代码位于此 Github repo 中。 首先,运行以下命令安装…...

人脸表情行为识别系统源码分享
人脸表情行为识别系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…...

ThreadLocal原理解析及面试
基本使用 讲原理之前,我简单写个demo小程序说说怎么使用 public class TestThreadLocal {public static void main(String[] args) throws InterruptedException {ThreadLocal<String> tl new ThreadLocal();/**主线程设置了一个值*/tl.set("SSSSSs&…...

探索未来:mosquitto-python,AI领域的新宠
文章目录 探索未来:mosquitto-python,AI领域的新宠背景:为何选择mosquitto-python?库简介:mosquitto-python是什么?安装指南:如何安装mosquitto-python?函数用法:5个简单…...
C++版iwanna1
第一篇目录 开头程序Game.cpp源文件Player.h头文件Player.cpp源文件trigger.h头文件trigger.cpp源文件Cmp.h头文件Cmp.cpp源文件 开头 大家好,我叫这是我58。 程序 Game.cpp源文件 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <c…...

LSTM变种模型
一、GRU 1.概念 GRU(门控循环单元,Gated Recurrent Unit)是一种循环神经网络(RNN)的变体,旨在解决标准 RNN 在处理长期依赖关系时遇到的梯度消失问题。GRU 通过引入门控机制简化了 LSTM(长短期…...

Python进阶--函数进阶
目录 1. 函数多返回值 2. 函数多种传参方式 (1). 位置参数 (2). 关键字参数 (3). 缺省参数 (4). 不定长参数 3. 匿名函数 (1). 函数作为参数传递 (2). lambda匿名函数 1. 函数多返回值 def return_num():return 1# 返回1之后就不会再向下继续执行函数体return 2 resu…...
elasticsearch 8.2 设置账号密码
背景:单节点集群数据写入测试-CSDN博客 前述项目支持设置账号密码,但8+版本似乎不能那么做了。 ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. bootstrap check failure [1] of…...
JavaScript代码如何测试?
测试JavaScript代码是确保其功能、性能和可靠性的关键步骤。以下是一些详细的步骤和方法,用于测试JavaScript代码: 1、编写测试用例 首先,你需要为要测试的JavaScript代码编写测试用例。这些用例应该涵盖代码的各种功能和场景,包…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...