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

LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 论文阅读

论文信息

题目:LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM
作者:Devendra Singh Chaplot, Dhiraj Gandhi
项目地址:https://devendrachaplot.github.io/projects/Neural-SLAM
代码地址:https://github.com/devendrachaplot/Neural-SLAM
来源:LCLR
时间:2022

Abstract

这项工作提出了一种模块化和分层的方法来学习探索 3D 环境的策略,称为“Active Neural SLAM”。

我们的方法结合了经典方法和基于学习的方法的优势,通过使用带有学习 SLAM 模块的分析路径规划器以及全局和本地策略。

学习的使用提供了输入模式(在 SLAM 模块中)方面的灵活性,利用了世界的结构规律(在全局策略中),并为状态估计中的错误(在本地策略中)提供了鲁棒性。

所提出的模型还可以轻松转移到 PointGoal 任务,并且是 CVPR 2019 Habitat PointGoal 导航挑战赛的获胜作品。

Introduction

虽然使用学习进行探索是有充分动机的,但将探索问题转化为端到端学习问题有其自身的缺点。以端到端的方式纯粹从数据中学习映射、状态估计和路径规划可能会非常困难。因此,Chen 等人(2019)过去用于探索的端到端学习工作依赖于模仿学习和数百万帧经验的使用,但仍然比根本不需要任何训练的经典方法表现更差。

在本文中,我们研究了利用学习进行探索的替代方案,该方案保留了学习必须提供的优势,但没有成熟的端到端学习的缺点。我们的关键概念见解是,使用learning为了对室内环境的结构规律的利用、对状态估计误差的鲁棒性、对输入模式的灵活性。这些发生在不同的时间尺度上,因此可以被分解出来。

我们提出的探索架构由学习神经 SLAM 模块、全局策略和本地策略组成,它们通过地图和分析路径规划器连接。

学习神经 SLAM 模块可生成自由空间地图,并根据输入 RGB 图像和运动传感器估计代理姿势。
全局策略使用代理姿势来占据这个自由空间地图,并利用学习来利用现实世界环境布局中的结构规律来产生长期目标。
这些长期目标用于生成本地政策的短期目标(使用几何路径规划器)。
本地策略使用学习将原始 RGB 图像直接映射到代理应执行的操作。

在 SLAM 模块中使用学习提供了输入模态方面的灵活性,学习的全局策略可以利用现实环境布局中的规律性,而学习的本地策略可以使用视觉反馈来表现出更稳健的行为。

Related Work

Navigation Approaches

经典的导航方法将问题分为两部分:地图绘制和路径规划。

Exploration in Navigation

虽然许多工作专注于被动地图构建、路径规划和目标驱动的策略学习,但一小部分工作解决了主动 SLAM 的问题,即如何主动控制相机来构建地图。

Hierachical and Modular Policies(分层和策略学习)

分层强化学习(Dayan 和 Hinton,1993;Sutton 等,1999;Barto 和 Mahadevan,2003)是一个活跃的研究领域,旨在自动发现层次结构以加速学习。然而,这已被证明具有挑战性,因此大多数工作都诉诸于使用手动定义层次结构。例如,在导航方面,Bansal 等人(2019) 和 Kaufmann 等人 (2019) 设计了用于导航的模块化策略,将学习策略与低级反馈控制器连接起来。分层和模块化策略也已用于嵌入式问答(Das 等人,2018a;Gordon 等人,2018;Das 等人,2018b)。

Task Setup

Actuation and Noise Model(驱动和噪声模型)

我们用 (x, y, o) 表示代理的姿势,假设智能体从 p 0 = ( 0 , 0 , 0 ) p_0 = (0, 0, 0) p0=(0,0,0)开始。现在,假设代理采取行动。每个动作都作为机器人的控制命令来实现。

设相应的控制命令为 Δ u a = ( x a , y a , o a ) Δu_a = (x_a,y_a,o_a) Δua=(xa,ya,oa)。让智能体在动作后的姿势为 p 1 = ( x ∗ , y ∗ , o ∗ ) p_1 = (x^*, y^*, o^*) p1=(x,y,o)。驱动噪声 ( ϵ a c t \epsilon _{act} ϵact) 是动作后的实际代理姿势 ( p 1 p_1 p1) 与预期代理姿势 ( p 0 + Δ u p_0 + Δu p0+Δu) 之间的差异:
ϵ a c t = p 1 − ( p 0 + Δ u ) = ( x ∗ − x a , y ∗ − y a , o ∗ − o a ) \epsilon _{act} = p_1-(p_0+\Delta u)=(x^*-x_a,y^*-y_a,o^*-o_a) ϵact=p1(p0+Δu)=(xxa,yya,ooa)
移动机器人通常具有估计机器人移动时的姿势的传感器。令传感器在动作后估计智能体的姿势为 p 1 ′ = ( x ′ , y ′ , o ′ ) p^{\prime}_1 = (x^{\prime}, y^{\prime}, o^{\prime}) p1=(x,y,o)。传感器噪声 ( ϵ s e n \epsilon _{sen} ϵsen) 由传感器姿态估计 ( p 1 ′ p^{\prime}_1 p1) 和实际代理姿态 ( p 1 p_1 p1) 之间的差异给出;
ϵ s e n = p 1 ′ − p 1 = ( x ′ − x ∗ , y ′ − y ∗ , o ′ − o ∗ ) \epsilon _{sen} = p^{\prime}_1-p_1=(x^{\prime}-x^*,y^{\prime}-y^*,o^{\prime}-o^*) ϵsen=p1p1=(xx,yy,oo)

我们使用三个默认的导航动作:前进:向前移动25厘米,右转:原地顺时针旋转10度,左转:原地逆时针旋转10度。控制命令的实现为:
u F o r w a r d = ( 0.25 , 0 , 0 ) u_{Forward} = (0.25, 0, 0) uForward=(0.25,0,0) u R i g h t : ( 0 , 0 , − 10 ∗ π / 180 ) , u L e f t : ( 0 , 0 , 10 ∗ π / 180 ) u_{Right} : (0, 0, −10∗π/180) , u_{Left} : (0, 0, 10 ∗ π/180) uRight:(0,0,10π/180),uLeft:(0,0,10π/180)

Methods

“Active Neural SLAM”。它由三个组件组成:神经 SLAM 模块、全局策略和局部策略,如图 1 所示。神经 SLAM 模块根据当前观察和先前的预测来预测环境地图和代理姿势。全局策略使用预测的地图和代理姿势来产生长期目标。使用路径规划将长期目标转换为短期目标。本地策略根据当前观察采取导航行动以实现短期目标。
在这里插入图片描述

Map Representation

Active Neural SLAM 模型内部维护空间图、 m t m_t mt 和智能体 x t x_t xt 的姿态。空间地图 m t m_t mt 是一个 2 × M × M 矩阵,其中 M × M 表示地图大小,该空间地图中的每个元素对应于物理世界中大小为 25cm2 (5cm × 5cm) 的单元。第一个通道中的每个元素表示相应位置处存在障碍物的概率,第二个通道中的每个元素表示正在探索的该位置的概率。当已知单元格是自由空间或障碍物时,就认为该单元格已被探索。空间图在步骤开始时用全零进行初始化, m 0 = [ 0 ] 2 × M × M m_0 = [0]^{2×M×M} m0=[0]2×M×M

位姿 x t ∈ R 3 x_t ∈ \mathbb{R}^3 xtR3 表示智能体的 x 和 y 坐标以及智能体在时间 t 时的方向。智能体在步骤开始时总是从地图中心面向东开始, x 0 = ( M / 2 , M / 2 , 0.0 ) x_0 = (M/2, M/2, 0.0) x0=(M/2,M/2,0.0)

Neural SLAM Module

Neural SLAM 模块 ( f S L A M f_{SLAM} fSLAM ) 接收当前 RGB 观测值 s t s_t st、当前和上一次传感器获取的智能体姿势 x t − 1 : t ′ x^{\prime}_{t−1:t} xt1:t、上一次智能体姿势和地图估计 x ^ t − 1 \hat{x}_{t−1} x^t1 m t − 1 m_{t−1} mt1,并输出更新后的地图 m t m_t mt 和当前代理姿态估计 x ^ t \hat{x}_{t} x^t(见图 2): m t , x ^ t = f S L A M ( s t , x t − 1 : t ′ , x ^ t − 1 , m t − 1 ∣ θ S ) m_t, \hat{x}_t = f_{SLAM}(s_t, x^{\prime}_{t−1:t}, \hat{x}_{t−1}, m_{t−1}|θ_S) mt,x^t=fSLAM(st,xt1:t,x^t1,mt1θS),其中 θ S θ_S θS 表示可训练参数神经SLAM模块。

在这里插入图片描述
它由两个学习组件组成:映射器和姿势估计器。 Mapper( f M a p f_{Map} fMap)输出一个以自我为中心的自上而下的二维空间图, p t e g o ∈ [ 0 , 1 ] 2 × V × V p^{ego}_t ∈ [0, 1]^{2×V ×V} ptego[0,1]2×V×V(其中V是视野范围),预测当前观察中的障碍物和探索区域。姿势估计器 ( f P E f_{PE} fPE) 基于过去的姿势估计 ( x ^ t − 1 \hat{x}_{t-1} x^t1) 和上一次两个以自我为中心的地图预测 ( p t − 1 : t e g o p^{ego} _{t−1:t} pt1:tego) 来预测代理姿势 ( x ^ t \hat{x}_{t} x^t)。它本质上是将当前的以自我为中心的地图预测与变换到当前帧的最后以自我为中心的地图预测进行比较,以预测两个地图之间的姿态变化。根据姿势估计器给出的姿势估计,将来自映射器的自我中心地图转换为地心地图,然后与先前的空间地图( m t − 1 m_{t−1} mt1)聚合以获得当前地图( m t m_t mt)。

Global Policy

Global Policy以 h t ∈ [ 0 , 1 ] 4 × M × M h_t ∈ [0, 1]^{4×M×M} ht[0,1]4×M×M为输入,其中ht的前两个通道是SLAM模块给出的空间图 m t m_t mt,第三个通道表示SLAM模块估计的当前代理的位置,第四个通道代表访问过的位置,即
∀ i , j ∈ 1 , 2 , . . . , m ∀i, j ∈ {1, 2,...,m} i,j1,2,...,m
在这里插入图片描述
在将 h t h_t ht 传递给全局策略模型之前,我们执行两次转换。第一个变换对来自 h t h_t ht 的智能体周围大小为 4 × G × G 的窗口进行子采样。第二个变换执行最大池化操作以从 h t h_t ht 获得大小为 4×G×G 的输出。这两个变换都堆叠起来形成大小为 8 × G × G 的张量,并作为输入传递到全局策略模型。全局策略使用卷积神经网络来预测 G × G 空间中的长期目标 g t l : g t l = π G ( h t ∣ θ G ) g^l_t:g^l_t = πG(h_t|θ_G) gtlgtl=πG(htθG),其中 θ G θ_G θG 是全局策略的参数。

Planner

Planner 将长期目标 ( g t l g^l_t gtl)、空间障碍图 ( m t m_t mt) 和 agnet 位姿估计 ( x ^ t \hat{x}_t x^t) 作为输入,计算短期目标 g t s g^s_t gts ,即 g t s = f P l a n ( g t l , m t , x ^ t g^s_t = f_{Plan}(g^l_t, m_t, \hat{x}_t gts=fPlan(gtl,mt,x^t) 。它使用基于当前空间地图 m t m_t mt 的快速行进方法(Sethian,1996)计算从当前代理位置到长期目标( g t l g^l_t gtl)的最短路径。未开发的区域被视为规划的自由空间。我们计算计划路径上的短期目标坐标(距智能体 ds(= 0.25m) 内的最远点)。

Local Policy

本地策略将当前 RGB 观测值 ( s t s_t st) 和短期目标 ( g t s g^s_t gts ) 作为输入,并输出导航操作 a t = π L ( s t , g t s ∣ θ L ) a_t = π_L(s_t, g^s_t |θ_L) at=πL(st,gtsθL),其中 θ L θ_L θL 是本地策略的参数。短期目标坐标在传递给本地策略之前会转换为距智能体位置的相对距离和角度。本地策略是一个循环神经网络,由预训练的 ResNet18(He 等人,2016)作为视觉编码器组成。

Experiment

在这里插入图片描述
在这里插入图片描述

扩展

我们提出了一种模块化导航模型,该模型利用了经典和基于学习的导航方法的优势。我们表明,所提出的模型在 Exploration 和 PointGoal 任务上都优于先前的方法,并且显示出跨领域、目标和任务的强大泛化能力。未来,所提出的模型可以通过使用语义神经 SLAM 模块扩展到复杂的语义任务,例如语义目标导航和Ebmbodied问答,该模块创建捕获环境中对象的语义属性的多通道地图。该模型还可以与之前的定位工作相结合,在之前创建的地图中重新定位,以便在后续剧集中进行高效导航。

相关文章:

LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 论文阅读

论文信息 题目:LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 作者:Devendra Singh Chaplot, Dhiraj Gandhi 项目地址:https://devendrachaplot.github.io/projects/Neural-SLAM 代码地址:https://github.com/devendrachaplot/N…...

item_search-ks-根据关键词取商品列表

一、接口参数说明: item_search-根据关键词取商品列表,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/ks/item_search 名称类型必须描述keyString是调用key(http:…...

windows运行WPscan报错:无法打开库libcurl.dll

windows运行WPscan报错:无法打开库libcurl.dll 1.问题背景2.解决方案1.问题背景 在Windows上启动WPScan时: wpscan --url xxx.ru提示如下错误: Could not open library libcurl.dll: �� ������ ��������� ������. . Could not open library libcu...

web前端框架Javascript之JavaScript 异步编程史

早期的 Web 应用中,与后台进行交互时,需要进行 form 表单的提交,然后在页面刷新后给用户反馈结果。在页面刷新过程中,后台会重新返回一段 HTML 代码,这段 HTML 中的大部分内容与之前页面基本相同,这势必造成…...

Java多线程(1)---多线程认识、四种创建方式以及线程状态

目录 前言 一.Java的多线程 1.1多线程的认识 1.2Java多线程的创建方式 1.3Java多线程的生命周期 1.4Java多线程的执行机制 二.创建多线程的四种方式 2.1继承Thread类 ⭐创建线程 ⭐Thread的构造方法和常见属性 2.2.实现Runnable接口 ⭐创建线程 ⭐使用lambda表达…...

搭建Django+pyhon+vue自动化测试平台

Django安装 使用管理员身份运行pycharm使用local 1 pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple 检查django是否安装成功 1 python -m django --version 创建项目 1 1 django-admin startproject test cd 切换至创建的项目中启动django项目…...

CASAIM自动化平面度检测设备3D扫描零部件形位公差尺寸测量

平面度是表面形状的度量,指示沿该表面的所有点是否在同一平面中,当两个表面需要连接在一起形成紧密连接时,平面度检测至关重要。 CASAIM自动化平面度检测设备通过搭载领先的激光三维测头和智能检测软件自动获取零部件高质量测量数据&#xf…...

PostgreSql pg_ctl 命令

一、概述 控制 PostgreSQL 服务的工具。 二、语法 --初始化数据库实例 pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]--启动数据库实例 pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]--停止数据库实例 pg_ctl sto…...

MySQL中的MVCC具体指的是什么?

在MySQL中,MVCC是指多版本并发控制(Multi-Version Concurrency Control)。它是一种用于处理并发读写操作的数据库事务管理技术。 MVCC通过在数据库中维护多个版本的数据来实现并发控制,每个事务在执行期间看到的数据版本是确定性…...

Docker网络模型详解

目录 一、Docker网络基础 1、端口映射 使用-P选项时Docker会随机映射一个端口至容器内部的开放端口 使用docker logs查看Nginx的日志 查看映射的随机端口范围 2、使用-p可以指定要映射到的本地端口。 Local_Port:Container_Port : 端口映射参数中指定了宿主…...

如何打造属于自己的个人IP?

在当今信息爆炸的时代,个人 IP 已经成为人们在网络世界中的独特标签。无论是在职场上、创业中,还是在社交生活中,拥有个人 IP 的人都能脱颖而出,吸引更多的关注和机会。那么,如何打造属于自己的个人 IP 呢?…...

全网最全最细的jmeter接口测试教程以及接口测试流程详解

一、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性,可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程,允许通过多个线程并发取样或通过…...

【Linux命令200例】whereis用于搜索以及定位二进制文件

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜…...

Elasticsearch:如何将整个 Elasticsearch 索引导出到文件 - Python 8.x

在实际的使用中,我们有时希望把 Elasticsearch 的索引保存到 JSON 文件中。在之前,我写了一篇管如何备份 Elasticsearch 索引的文章 “Elasticsearch:索引备份及恢复”。在今天,我们使用一种 Python 的方法来做进一步的探讨。你可…...

cmd 实现启动mysql时保留窗口

因为mysql启动后, 只有在任务管理器里能看到进程, 关的时候还需要找一下 所以基于 start cmd /k 命令实现了该效果 :: Author: admin :: Date: 2022-08-30 :: Version v1.2 :: ::启动 :: :: echo off::配置变量 set mysqlC:\mysql-5.7.38-winx64\bin\mysqld.exe::打印配置…...

JavaScript数据结构与算法——栈

文章目录 一、初始栈结构1.1 特性1.2 注意事项 二、栈结构的封装2.1 封装简单栈结构2.2 利用栈将十进制转二进制 一、初始栈结构 1.1 特性 类似于汉诺塔,后进先出,每次只能操作栈顶的元素。关键词:压栈、退栈 简单示意图: 1.…...

Elasticsearch分词详解:ES分词介绍、倒排索引介绍、分词器的作用、停用词

详见:https://blog.csdn.net/weixin_40612128/article/details/123476053...

SpringMVC组件

目录 1、简介 2、SpringMVC与Servlet的关系 3、struc2 4、RESTful 编程风格 5、工作流程 6、代码示例 6.1、导入坐标 provide 6.2、DispathcerServlet 🔺配置web.xml 初始化 优先级 ⭐ 6.3、Controller类及视图页面 6.4、配置注解 6.5、spring-mvc.xm…...

解决el-dialog弹出时,页面抖动,右侧会缩小的问题(即滚动条被遮罩层覆盖的问题)

问题描述: 在弹出el-dialog时,会发现弹出框弹出时,页面会抖动,滚动条被遮罩层覆盖直接没有滚动条了,导致页面缩小了几个像素点(滚动条的宽度);体验感不好,会影响到页面的…...

【Rust 基础篇】Rust 属性宏:定制你的代码

导言 Rust是一门现代的、安全的系统级编程语言,它提供了丰富的元编程特性,其中属性宏(Attribute Macros)是其中之一。属性宏允许开发者在代码上方添加自定义的属性,并对代码进行定制化处理。在本篇博客中,…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...