当前位置: 首页 > news >正文

Khronos:动态环境下时空度量语义SLAM的统一方法

Khronos: A Unified Approach for Spatio-Temporal Metric-Semantic SLAM in Dynamic Environments

原文
项目

引言:
人类居住环境通常是高度动态的,人、机器人和其他实体不断移动、互动和改变场景。对于机器人在这种情况下的操作,仅仅建立一个单一时间点的世界模型是不够的。相反,机器人还应该能够推理过去时间段场景的状态,推断出在多次观察中场景可能如何改变。这种能力对于需要对较长时间跨度进行推理的各种应用至关重要,包括家庭和服务机器人、工业建筑或工地监测,其中机器人不仅需要在高度动态的环境中操作,而且需要跟踪或推理过去环境的演变,以更智能地高效执行任务。度量语义SLAM允许机器人实时构建场景的语义注释的几何表示。几何信息对于机器人安全导航和物体操作至关重要,而语义信息为机器人执行人类指令和向人类提供易于理解的环境模型提供了理解。为了实时构建这些密集的度量语义表示,通常假设世界是静态的,并专注于将嘈杂的几何和语义测量稳健地融合成度量语义模型。尽管这对于某些机器人应用是一个有效的假设,但它限制了机器人可以操作的环境类型的普遍性,以及可以分配给它的任务。另一方面,已经有大量的工作在动态环境中处理SLAM,但这些工作主要集中在短期动态,如当前在摄像机前移动的人或物体,很难处理长期变化。可能场景发生了实质性的变化(例如,家具被重新摆放),而机器人并没有直接观察到。真实环境同时经历短期和长期的变化,现有方法很难对两者同时进行推理。此外,为了使机器人能够有效地与其他人类和机器人一起工作,这样一个框架需要在机器人操作期间利用有限的信息和计算资源构建对世界的理解。

为此,这篇文章引入了时空度量语义SLAM(SMS)问题,旨在随着机器人导航场景,逐步构建世界的密集度量语义模型。作者提出了一个统一的框架来解决SMS问题,其核心思想是基于时空局部一致性开发SMS问题的新因子分解,这允许解开由感知噪声、状态估计误差、动态对象和场景中的长期变化引起的错误。作者将这一见解集成到一个名为Khronos的时空感知系统中,它是第一个能够实时构建场景时空地图的度量语义系统。在几个模拟场景中对我们的方法进行了彻底评估,并在多个机器人平台上导航高度动态的现实环境中进行了背景重建、物体检测、运动跟踪和变化检测的详细注释。

贡献:

  1. 形式化了时空度量语义SLAM(SMS)问题,允许机器人对周围环境及其随时间演变的密集度量语义有深入理解。
  2. 提出了SMS问题的新型因子分解,为现有的专注于短期和长期动态的解释提供了统一的视角。
  3. 提出了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 原文 项目 引言&#xff1a; 人类居住环境通常是高度动态的&#xff0c;人、机器人和其他实体不断移动、互动和改变场景。对于机器人在这种情况下的操作&#xff0c;仅仅建立一…...

一个迷茫的25岁前端程序员的自述

作者&#xff1a;一尾流莺 一直听说程序员的危机在 35 岁&#xff0c;没想到我的危机从 25 岁就开始了。 我甚至不知道自己是不是 25 岁&#xff0c;也可能是 26 岁&#xff0c;或者 27 岁&#xff0c;1998 年的生日&#xff0c;按照 2023 - 1998 的算法就是 25&#xff0c;按…...

多文件并发多线程MD5工具(相对快速的MD5一批文件),适配自定义MD5 Hash I/O缓存。

自己写的多文件 MD5校验工具&#xff0c;一个文件开一个线程&#xff0c;有最大I/O 缓存设置&#xff0c;兼容读写MD5后缀文件。 共计91个文件&#xff0c;合计180G左右 12分钟左右&#xff0c;UI基本卡废&#xff0c;但程序没蹦&#xff0c;属于正常。 卡的原因是基本是用 I/O…...

Pikachu-url重定向-不安全的url跳转

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

如何下载和安装CLion,图文详解

一、下载 登录JetBrains官网&#xff0c;下载最新版本的Clion&#xff0c;Clion目前没有社区版&#xff0c;都是专业版。 二、安装 1、启动Clion安装程序&#xff0c;下一步。 2、修改安装目录&#xff0c;下一步。 3、创建桌面快捷方式&#xff0c;更新PATH变量&#xff0…...

vue3导入本地图片2种实现方法

在<script setup>中使用import语法&#xff1a; <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. 爬楼梯 (进阶))

完全背包 完全背包的每件商品都有无限个&#xff0c;和01背包的一不同主要体现在遍历顺序上。为了保证每个物品仅被添加一次&#xff0c;01背包内嵌的循环是从大到小遍历。而完全背包的物品是可以添加多次的&#xff0c;所以要从小到大去遍历。 518. 零钱兑换 II 思路&#…...

检查jar冲突,查找存在相同class的jar

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

PhpStudy-PHP5.4.45后门漏洞应用程序(C++/base64/winhttp)

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

【优选算法】(第二十七篇)

目录 重排链表&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 合并K个升序链表&#xff08;hard&#xff09; 题目解析 讲解算法原理 编写代码 重排链表&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;LeetCod…...

学习Flask框架

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

Elasticsearch:使用 LLM 实现传统搜索自动化

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

人脸表情行为识别系统源码分享

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

ThreadLocal原理解析及面试

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

探索未来:mosquitto-python,AI领域的新宠

文章目录 探索未来&#xff1a;mosquitto-python&#xff0c;AI领域的新宠背景&#xff1a;为何选择mosquitto-python&#xff1f;库简介&#xff1a;mosquitto-python是什么&#xff1f;安装指南&#xff1a;如何安装mosquitto-python&#xff1f;函数用法&#xff1a;5个简单…...

C++版iwanna1

第一篇目录 开头程序Game.cpp源文件Player.h头文件Player.cpp源文件trigger.h头文件trigger.cpp源文件Cmp.h头文件Cmp.cpp源文件 开头 大家好&#xff0c;我叫这是我58。 程序 Game.cpp源文件 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <c…...

LSTM变种模型

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

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代码是确保其功能、性能和可靠性的关键步骤。以下是一些详细的步骤和方法&#xff0c;用于测试JavaScript代码&#xff1a; 1、编写测试用例 首先&#xff0c;你需要为要测试的JavaScript代码编写测试用例。这些用例应该涵盖代码的各种功能和场景&#xff0c;包…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...