Multi-object navigation in real environments using hybrid policies 论文阅读
论文信息
题目:Multi-object navigation in real environments using hybrid policies
作者:Assem Sadek, Guillaume Bono
来源:CVPR
时间:2023
Abstract
机器人技术中的导航问题通常是通过 SLAM 和规划的结合来解决的。
最近,除了航路点规划之外,涉及(视觉)高级推理重要组成部分的问题也在模拟环境中得到了探索,这些问题大多通过大规模机器学习来解决,特别是强化学习、离线强化学习或模仿学习。
这些方法要求智能体学习各种技能,例如局部规划、绘制对象和查询所学习的空间表示。与航点规划(PointGoal)等更简单的任务相比,对于这些更复杂的任务,当前最先进的模型已经在模拟中进行了彻底的评估,但据我们所知,尚未在真实环境中进行评估。
在这项工作中,我们重点关注 sim2real 转变。
我们的目标是具有挑战性的多对象导航(Multi-ON)任务[41],并将其移植到包含原始虚拟 Multi-ON 对象的真实副本的物理环境。
我们引入了一种混合导航方法,它将问题分解为两种不同的技能:
(1) 路点导航通过经典 SLAM 与符号规划器相结合来解决,
(2) 探索、语义映射和目标检索则通过经过训练的深度神经网络来处理监督学习和强化学习的结合。
我们在模拟和真实环境中展示了这种方法与端到端方法相比的优势,并且在该任务上优于 SOTA [28]。
Introduction
机器人导航已经从准备充分的环境中的简单路径点导航问题发展到涉及视觉和语义概念的高级推理的复杂任务。当策略从模拟转移到物理机器人的真实环境时,它们会出现性能下降和缺乏鲁棒性的情况。这主要是由于模拟与现实之间的真实性差距**(“sim2real 差距”),以及难以探索导航问题中固有的大量变化因素**,例如房间布局、家具、纹理和其他房间细节、罕见的局部场景几何形状等。
最近有一种模块化方法的趋势,它将问题分解为分层部分 [8]、[4] 和混合方法,将最短路径规划器(符号或经过训练的)与经过训练的策略相结合。虽然这些方法已被证明具有更高的样本效率[32],但最先进的方法仍在模拟中进行评估,并且缺乏对真实机器人的彻底测试。
在这项工作中,我们解决了多对象导航 [41] 的挑战性问题,与 K 项物品场景 [5] 类似,需要代理按规定的顺序顺序导航一组对象。这个任务定义有利于代理能够学习在内部空间表示中映射所看到的对象,因为后面在情节中导航到它们可以增加奖励。这使得它在像 ObjectNav 这样的简单任务中脱颖而出,其中探索和当前观察的反应性局部规划的综合能力足以解决任务。
我们的目标是 sim2real 迁移,据我们所知,我们是第一个在真实物理环境中对多对象导航方法进行全面性能评估的人,请参见图 1。虽然更简单的任务(例如 PointGoal)已在在真实的机器人[23]、[34]中,对更复杂任务的训练模型的评估很少或不存在。我们提出了一种新的导航方法,其设计选择是由优化实际环境中的性能的目标驱动的。
我们提出了一种新的混合方法,将问题分解为两部分:
- “Good Old Fashioned Robotics”(GOFR),处理与语义无关的经典导航方面,例如可导航空间的检测和定位(几何 SLAM)与地图上的路点导航相结合。
- Semantics through Machine Learning, 即映射视觉推理所需的语义概念并利用它们;利用布局规律探索环境中最有前途的区域
在导航过程中,经典的 SLAM 算法 [24] 以张量/地图的形式创建并维护 2D 度量表示,并使用激光雷达输入在其上定位机器人。使用深度神经网络从视觉 RGB-D 观测中提取的高级特征形成空间和语义点云,其空间坐标与度量表示对齐,见图 2。
组合的混合表示满足相关子的需求。 -智能体所需的技能:
(i)确定过去是否观察到目标物体,
(ii)规划智能体和探索区域之间的最佳轨迹,以及
(iii)确定环境中未探索区域的边界以及下一个中间子目标,以防环境需要探索以找到下一个目标。所有这些子技能都是单独设计和训练的,这可以限制训练的样本复杂性。
这项工作的贡献如下:
(i)我们引入了一种多目标导航的混合方法,将经典的度量 SLAM 和路径规划与经过监督学习和 RL 训练的学习组件相结合;
(ii) 我们在真实环境中重现 Multi-ON 基准测试 [41],其中我们放置目标对象的制造复制品,用于最初模拟的目标环境;
(iii) 我们将所提出的方法与真实环境中的端到端训练方法进行比较,特别是与 CVPR 2021 MultiON 竞赛 [28] 的获奖作品进行比较,我们在真实和模拟环境中都表现出色。
Related Work
(这部分没太多有价值的)
Hybrid Planning and Navigation
我们的目标是 Wani 等人[41]引入的多对象导航(Multi-ON)任务,特别是 3 个对象变体:在每个情节中,智能体必须找到 3 个圆柱形对象 G n , n = 1 , 2 , 3 G_n,n = 1, 2, 3 Gn,n=1,2,3,按照预定义的顺序,其中 G n G_n Gn 是要查找的第 n 个对象,并且需要在每个目标处调用 Found 操作。剧集持续时间限制为 2,500 个环境步骤。在每个步骤 t,智能体接收一个以自我为中心的 RGB-D 观察 O t ∈ R h × w × 4 O_t ∈ R^{h×w×4} Ot∈Rh×w×4、一个激光雷达框架以及来自 8 个类别的当前目标对象的类别标签。
在导航过程中,代理根据激光雷达输入构建度量鸟瞰占用图,并使用度量 SLAM [39] 在其上进行自身定位。该二值图与重叠的语义点云相结合,其中包含关键对象的位置及其语义类别,这些是通过对象检测器从 RGB 输入中检测到的。检测和建图通过 SLAM 算法的定位模块进行协调。
Navigation
在两个不同的级别上分层执行。在较高级别(图 2 中的外环)上,生成 2D 航路点坐标 pt=(x, y) 并将其提供给较低级别控制器(内环),其任务是使用维护的占用地图导航到航路点。高级控制器在两种不同的策略之间切换:
➀ Exploration- 当目标物体尚未被观察到时,即机器人探索环境,最大化覆盖范围。这是通过 RL 训练的学习策略来完成的,见下文。
➁ Exploitation——当目标对象被观察到并因此成为语义点云的一部分时,其位置被视为新的路径点并提供给本地规划器。
Metric EgoMap
为了收集沿其路径的导航信息并更有效地重新访问之前看到的区域,代理构建了所谓的 EgoMap,这是一个以其当前位置为中心并与其前进方向对齐的固定空间分辨率的占用网格。
在真实的机器人上,该地图是使用 RTABMap [24] 库获得的。它使用基于图形的 SLAM 算法和闭环功能,这是一种利用 RGB-D、激光雷达和里程计传感器数据的灵活设计。激光雷达和/或深度用于创建 2D/3D 局部占用网格,与初始位置依赖于里程计积分的节点相关联。
然后从 RGB 帧中提取的关键点创建描述符,以便于节点比较和回环检测。 RTABMap 还包括短期和长期内存管理、全局映射压缩和多会话映射。
在模拟中,我们利用特权信息,通过 Habitat-Sim 中的 Recast&Detour [1] 库生成的 NavMesh 投影来检索场景导航性的完整自上而下视图。然后,通过使用完美定位,直接在该自上而下视图上的代理视野中进行光线追踪,构建战争迷雾掩模。
真实方法和模拟方法都会生成一个全局地图,我们在该地图上应用由代理当前姿势参数化的简单仿射变换来获取 EgoMap。
Exploration
是基于机器学习的主要模块。与最近的嵌入式 AI 工作相比 [4]、[8],该策略不采用第一人称 RGB 输入,而是采用度量 SLAM 算法生成的 EgoMap Mt。这大大简化了任务并提高了采样效率,并且由于避免了闪电、颜色和纹理的变化,因此最大限度地减少了 sim2real 差距。该策略是外循环的一部分,预测 2D 航路点坐标 pt。
由于多种原因,该问题是部分可观察到的:
(i) 并非场景的所有区域在任何时间点都已被观察到;
(ii) 出于效率原因,EgoMap Mt 并未覆盖整个场景,因此当智能体导航到距离观察区域足够远时,可能会忘记观察到的区域;
(iii) 在环境中存在不确定性的情况下,即使理论上完全可观察的问题(MDP)也可以转化为 POMDP(“认知 POMDP”),这是机器人技术的标准情况,正如最近在[18]中所显示的那样。
因此,我们为该策略注入了隐藏记忆 h t h_t ht 并使其循环出现。
策略 π 需要能够预测多模态分布,因为有多个有效轨迹可以有效地探索环境。我们通过归纳偏差将其纳入策略中,这迫使预测通过空间热图 Ht,从中对所选航路点位置进行采样。在采样之前,我们通过掩蔽将热图限制在未探索的区域。这种选择还导致了一个更可解释的模型,因为目标探索点的分布可以可视化(参见第四节)。
这可以形式化如下(另请参见图 3):
Local Navigation
本地导航 — 到航路点 p t p_t pt 由分析规划器执行,该规划器计算当前占用 EgoMap Mt 上的最短路径。这不一定是最佳路径,因为地图不等于(未观察到的)GT 地图和中间区域待穿越的区域(甚至路径点 p t p_t pt)可能未被探索。
我们采用动态规划器 D ∗ D^* D∗,它计算经典假设下的最短路径,并在新信息可用时重新规划。由于我们优化了我们的方法,使其在实际环境中稳健且高效,与最近的工作 [32]、[7] 不同,我们选择 D* 规划器而不是常用的快速行进方法 [37]。实际路径的可行性和规划的速度是这种设计选择背后的两个主要原因。
Stabilizing training
稳定训练——如上所述,在不确定条件下使用 D ∗ D^* D∗ 的局部规划产生的潜在失败和次优轨迹也会对勘探策略的训练过程产生负面影响。该策略是外循环的一部分,预测航路点 p t p_t pt,仅在完成完整的本地导航过程后才收到奖励。局部规划中的噪音会影响强化学习训练过程的稳定性并导致缺乏收敛。
我们通过训练与本地策略接口的探索策略来解决这个问题,并对其施加了长度限制。探索策略预测的从当前位置到下一个路点 pt 的完整轨迹被分成一系列距离为 0.3m 的小子目标,本地策略仅限于其中 5 个子目标。如果达到航路点 pt,或者达到 5 个子目标的限制,则将控制权交还给外循环。这种选择导致了稳定的训练,并且训练后的策略很好地转移到了有针对性的探索任务,而无需改变。对本地规划长度的相同限制也适用于部署时,这提高了实际条件下的鲁棒性,并使复杂的恢复行为变得过时。
Object Detection and Mapping
对象检测和映射 - 被构建为来自当前 RGB-D 帧 ot 的语义分割任务,我们通过根据模拟器中的特权信息计算出的 GT 掩码进行监督。预测器是 DeepLab v3 网络 [12],使用深度信息和情景里程计对掩模中检测到的对象进行反向投影并与 EgoMap 对齐。请注意,深度和里程计在真实机器人/真实环境评估设置中都是有噪声的。
High-level decisions
高层决策完全是手工制定的,因为这会带来稳健且可转移的决策过程,而可以说不需要学习。考虑到我们的决策选择,只需要一种类型的决策,是进行探索还是利用(即朝着目标导航)。这是根据当前目标对象是否已在映射时被观察到而采取的。如果已检测到同一类的多个对象,则选择最有可能检测到的位置(就分段对象像素而言)。要映射的对象需要最小数量的像素
Experimental
Conclusion
我们已将 Multi-ON 任务扩展到真实环境,据我们所知,我们在这些设置中对该任务进行了首次实验评估。
我们引入了一种混合模型,它解开了航点规划和语义,显着减小了 sim2real 差距,并且优于当前仿真中 SOTA 的 E2E 训练模型。
未来的工作将集中于增强手工制定的高级策略,该策略需要对误报检测具有鲁棒性,这也是其他导航任务(例如 ObjectNav)中的常见挑战。
相关文章:

Multi-object navigation in real environments using hybrid policies 论文阅读
论文信息 题目:Multi-object navigation in real environments using hybrid policies 作者:Assem Sadek, Guillaume Bono 来源:CVPR 时间:2023 Abstract 机器人技术中的导航问题通常是通过 SLAM 和规划的结合来解决的。 最近…...

初始多线程
目录 认识线程 线程是什么: 线程与进程的区别 Java中的线程和操作系统线程的关系 创建线程 继承Thread类 实现Runnable接口 其他变形 Thread类及其常见方法 Thread的常见构造方法 Thread类的几个常见属性 Thread类常用的方法 启动一个线程-start() 中断…...
论坛项目day3|开发社区首页
在典型的基于层次结构的软件架构中,特别是在使用MVC(模型-视图-控制器)设计模式的情况下,Controller、Service、DAO(数据访问对象)和Entity通常扮演着不同的角色,并且它们之间有清晰定义的关系。…...

Server - 文字转语音 (Text to Speech) 的在线服务 TTSMaker
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132287193 TTSMaker 是一款免费的文本转语音工具,提供语音合成服务,支持多种语言,包括英语、法语、德语、西班…...

Python学习笔记_基础篇_数据类型之字符串
一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list 列表用[] 元祖:tuple 元祖用() 字典:dict 注:所有的数据类型都存在想对应…...

(二分查找) 11. 旋转数组的最小数字 ——【Leetcode每日一题】
❓剑指 Offer 11. 旋转数组的最小数字 难度:简单 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转…...
docker 制作tomcat镜像
需要下载tomcat安装包和jdk安装包,我这边下载的jdk版本分别为(jdk和tomcat版本需要对应上) apache-tomcat-9.0.78.tar.gzjdk-8u381-linux-x64.tar.gz创建一个readme.txt空文件 readme.txt创建一个Dockerfile文件 # centos系统作为底层 FROM …...

年之年的选择,组装版
组件:<!--* Author: liuyu liuyuxizhengtech.com* Date: 2023-02-01 16:57:27* LastEditors: wangping wangpingxizhengtech.com* LastEditTime: 2023-06-30 17:25:14* Description: 时间选择年 - 年 --> <template><div class"year-range-pick…...
英语词法——代词
代词是用来代替名词、起名词作用的短语、分句和句子的词。英语中代词根据其意义和作用可分为九类:人称代词、物主代词、反身代词、相互代词、指示代词、疑问代词、不定代词、关系代词和连接代词。 第一节 人称代词 一、人称代词的形式和用法 人称代词单数复数第一人称第二人…...

1475.商品折扣后的最终价格
文章目录 题目描述解题思路:方法一:通俗解法方法二:单调栈 leetcode原题链接 1475. 商品折扣后的最终价格 题目描述 给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。 商店里正在进行促销活动,如果你…...
php、 go 语言怎么结合构建高性能高并发商城。
一、php、 go 语言怎么结合构建高性能高并发商城。 将PHP和Go语言结合起来构建高性能高并发的商城系统可以通过多种方法实现,以利用两种语言的优势。下面是一些可能的方法和策略: 1. **微服务架构:** 使用微服务架构,将系统拆分…...

ubuntu 部署 ChatGLM-6B 完整流程 模型量化 Nvidia
ubuntu 部署 ChatGLM-6B 完整流程 模型量化 Nvidia 初环境与设备环境准备克隆模型代码部署 ChatGLM-6B完整代码 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术&#x…...

【数据分享】2001-2022年我国省市县镇四级的逐月最高气温数据(无需转发/Shp/Excel格式)
气象数据是在各项研究中都非常常用的数据!之前我们分享过来自于国家青藏高原科学数据中心的1901-2022年1km分辨率的逐月平均气温栅格数据,以及基于该栅格数据处理的Shp和Excel格式的2001-2022年我国省市县镇四级的逐月平均气温数据(可查看之前…...

线段树-模板-区间查询-区间修改
【模板】线段树 2 传送门:https://www.luogu.com.cn/problem/P3373 题单:https://www.luogu.com.cn/training/16376#problems 题目描述 如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上 x x x&a…...
微服务架构和分布式架构的区别
微服务架构和分布式架构的区别 有:1、含义不同;2、概念层面不同;3、解决问题不同;4、部署方式不同;5、耦合度不同。其中,含义不同指微服务架构是一种将一个单一应用程序开发为一组小型服务的方法ÿ…...

Ajax-概念、Http协议、Ajax请求及其常见问题
Ajax Ajax概念Ajax优缺点HTTP协议请求报文响应报文 Ajax案例准备工作express基本使用创建一个服务器 发送AJAX请求GET请求POST请求JSON响应 Ajax请求出现的问题IE缓存问题Ajax请求超时与网络异常处理Ajax手动取消请求Ajax重复发送请求问题 Ajax概念 AJAX 全称为Asynchronous J…...

react 09之状态管理工具1 redux+ react-thunk的使用实现跨组件状态管理与异步操作
目录 react 09之状态管理工具1 redux react-thunk的使用实现跨组件状态管理与异步操作store / index.js store的入口文件index.js 在项目入口文件 引入store / actionType.js 定义action的唯一标识store / reducers / index.jsstore / actions / form.jsstore / reducers / for…...

opencv实战项目 手势识别-实现尺寸缩放效果
手势识别系列文章目录 手势识别是一种人机交互技术,通过识别人的手势动作,从而实现对计算机、智能手机、智能电视等设备的操作和控制。 1. opencv实现手部追踪(定位手部关键点) 2.opencv实战项目 实现手势跟踪并返回位置信息&…...
Netty对HPACK头部压缩的支持
前言 HTTP2终于支持对头部进行压缩传输了,Netty很早就支持HTTP2了,看下Netty对HPACK的实现源码,可以对HPACK理解的更深一下。 HpackDecoder Netty内置的编解码器Http2FrameCodec专门用来对HTTP2的各种Frame进行编解码,其中就包…...
C++:替换string中的字符
1.按照位置进行替换 string的成员函数replace可以满足这种需求,其变体有很多种,请参考官方文档,以下列举常用的两种: #include <iostream> #include <string> using namespace std;int main() {string s = "hello world";s.replace(s.begin(), s.b…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
中国政务数据安全建设细化及市场需求分析
(基于新《政务数据共享条例》及相关法规) 一、引言 近年来,中国政府高度重视数字政府建设和数据要素市场化配置改革。《政务数据共享条例》(以下简称“《共享条例》”)的发布,与《中华人民共和国数据安全法》(以下简称“《数据安全法》”)、《中华人民共和国个人信息…...
【Pandas】pandas DataFrame dropna
Pandas2.2 DataFrame Missing data handling 方法描述DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值(NaN)DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充(即“下一个有效观测值”)…...