Crowd-Robot Interaction 论文阅读

论文信息

题目:Crowd-Robot Interaction:Crowd-aware Robot Navigation with Attention-based Deep Reinforcement Learning
作者:Changan Chen, Y uejiang Liu
代码地址:https://github.com/vita-epfl/CrowdNav
来源:arXiv
时间:2019

Abstract

对于在拥挤空间中运行的机器人来说,以有效且符合社会规范的方式进行移动是一项重要但具有挑战性的任务。最近的工作显示了深度强化学习技术在学习社会合作政策方面的力量。然而,随着人群的增长,他们的合作能力会下降,因为他们通常将问题放松为单向人机交互问题。在这项工作中,我们希望超越一阶人机交互,并更明确地模拟人群与机器人交互(CRI)。

我们建议
(i)重新思考与自注意力机制的成对交互
(ii)在深度强化学习框架中联合建模人与机器人以及人与人的交互。我们的模型捕捉了密集人群中发生的人与人的互动,这间接影响了机器人的预期能力。

Introduction

遵守社交礼仪导航是一项具有挑战性的任务。

由于代理(例如人类)之间的通信并不广泛,因此机器人需要感知和预测人群的演变,这可能涉及复杂的相互作用(例如排斥/吸引)。轨迹预测方面的研究工作提出了几种手工或数据驱动的方法来模拟智能体之间的交互[12]-[15]。然而,将这些预测模型整合到决策过程中仍然具有挑战性。

作为替代方案,强化学习框架已用于训练计算高效的策略,这些策略隐式编码代理之间的交互和合作。尽管最近的工作[19]-[22]取得了重大进展,但现有模型仍然受到两个方面的限制:
i)人群的集体影响通常通过成对相互作用的简化聚合来建模,例如最大最小运算符[19]或LSTM[22],它们可能无法完全表示所有交互;
ii)大多数方法侧重于人类与机器人的单向交互,但忽略了可能间接影响机器人的人群内的交互。这些限制降低了复杂和拥挤场景中协作规划的性能
在这里插入图片描述

Background

Related Work

早期的工作主要利用精心设计的交互模型来增强机器人导航的社交意识。
一项开创性的工作是社会力[23]-[25],它已成功应用于模拟和现实环境中的自主机器人[26]-[28]。

另一种名为交互高斯过程(IGP)的方法将每个智能体的轨迹建模为单独的高斯过程,并提出一个交互势项来耦合单独的 GP 进行交互 [18]、[29]、[30]。在多智能体设置中,相同的策略应用于所有智能体,RVO [5] 和 ORCA [6] 等反应方法在相互假设下寻求联合避障速度。这些模型面临的主要挑战是它们严重依赖手工制作的功能,并且不能很好地泛化到各种人群合作的场景。

另一项工作使用模仿学习方法从期望行为的示范中学习政策。 [31]-[33] 中通过直接模仿专家演示来开发映射各种输入(例如深度图像、激光雷达测量和本地地图)以控制操作的导航策略。除了行为克隆之外,[10]、[11]、[34] 中还使用了逆强化学习,使用最大熵方法从人类数据中学习潜在的合作特征。这些工作中的学习成果高度依赖于示范的规模和质量,这不仅消耗资源,而且限制了人类努力学习的政策的质量。在我们的工作中,我们采用模仿学习的方法来热启动我们的模型训练。

强化学习(RL)方法在过去几年中得到了深入研究,并应用于各个领域,因为它开始在视频游戏中取得优异的性能[35]。在机器人导航领域,最近的工作已经使用强化学习从原始观察中学习静态和动态环境中的感觉运动策略[21]、[36],并利用代理级状态信息学习社会合作策略[19]、[20] ,[22]。为了处理不同数量的邻居,[19]中报告的方法通过最大最小操作从两个智能体适应多智能体情况,该操作针对人群的最坏情况采取最佳行动。后来的扩展使用 LSTM 模型按照与机器人的距离相反的顺序顺序处理每个邻居的状态 [22]。与这些简化相反,我们提出了一种新颖的神经网络模型来明确捕捉人群的集体影响。

Problem Formation

我们考虑一个导航任务,其中机器人穿过 n 个人的人群向目标移动。这可以表述为强化学习框架中的顺序决策问题[19]、[20]、[22]。
对于每个智能体(机器人或人类),位置 p = [ p x , p y ] p = [p_x, p_y] p=[px,py]、速度 v = [ v x , v y ] v = [v_x,v_y] v=[vx,vy] 和半径 r r r 可以被其他智能体观察到。机器人还知道其不可观察的状态,包括目标位置 p g p_g pg 和首选速度 v p r e f v_{pref} vpref 。我们假设机器人的速度 v t v_t vt 可以在动作命令 a t a_t at 之后立即达到,即 v t = a t v_t = a_t vt=at。令 s t s_t st 表示机器人的状态, w t = [ w t 1 , w t 2 , . . . , w t n ] w_t = [w^1_t ,w^2_t , . .. ,w^n_t] wt=[wt1,wt2,...,wtn]表示人类在时间 t t t的状态。机器人导航的关节状态定义为 s t j n = [ s t , w t ] s^{jn}_t = [s_t,w_t] stjn=[st,wt]
在这里插入图片描述

我们遵循[19]、[20]中定义的奖励函数的公式,该函数奖励任务成就,同时惩罚碰撞或不舒服的距离
在这里插入图片描述

Value Network Training

价值网络通过时差法、标准经验回放和固定目标网络技术进行训练[19],[35]。如算法 1 中所述,模型首先使用一组演示者经验(第 1-3 行)通过模仿学习进行初始化,然后根据交互经验进行细化(第 4-14 行)。与之前的工作[19]、[20]的一个区别是,第7行中的下一个状态S jn t+1是通过查询环境的真实值而不是用线性运动模型近似来获得的,从而减轻了系统动力学问题训练。在部署期间,转移概率可以通过轨迹预测模型[12]、[13]、[15]来近似。
在这里插入图片描述

为了有效地解决问题(1),价值网络模型需要准确逼近隐式编码智能体之间社会合作的最优价值函数V*。该轨道之前的工作并未完全模拟人群互动,这降低了人口稠密场景的价值估计的准确性。在以下部分中,我们将提出一种新颖的人群机器人交互模型,该模型可以有效地学习在拥挤的空间中导航。

Approach

当人类行走在人口稠密的场景中时,他们会通过预测附近邻居的行为来与他人合作,特别是那些可能参与未来某些互动的邻居。这促使我们设计一个模型,可以计算相对重要性并编码邻近代理的集体影响,以实现社交合规导航。受社交池[13]、[15]和注意力模型[14]、[44]-[48]的启发,我们引入了一个由三个模块组成的社交注意力网络:
• Interaction module:显式地建模人机交互,并通过粗粒度局部映射对人机交互进行编码。
• Pooling module:通过自注意力机制将交互聚合成固定长度的嵌入向量。
• Planning module:估计机器人与人群的关节状态对于社交导航的价值。

在这里插入图片描述

Parameterization

我们遵循[19]、[22]中以机器人为中心的参数化,其中机器人位于原点,x轴指向机器人的目标。机器人和行走人变换后的状态为:
在这里插入图片描述

Interaction Module

每个人都会对机器人产生影响,同时也会受到他/她的邻居的影响。对人类之间的所有交互对进行显式建模会导致 O(N2) 复杂性 [14],这对于在密集场景中扩展的策略来说在计算上是不可取的。我们通过引入一个成对交互模块来解决这个问题,该模块显式地模拟人机交互,同时使用局部地图作为人机交互的粗粒度表示。
在这里插入图片描述

给定大小为 L 的邻域,我们构造一个以每个人 i 为中心的 L × L × 3 地图张量 M i M_i Mi 来编码邻居的存在和速度,在图 3 中称为局部地图:
在这里插入图片描述
我们使用多层感知器(MLP)将人类 i 的状态和地图张量 M i M_i Mi 以及机器人的状态一起嵌入到固定长度的向量 e i e_i ei 中:
在这里插入图片描述
嵌入向量 e i e_i ei 被馈送到后续的 MLP 以获得机器人和人 i 之间的成对交互特征:
在这里插入图片描述
在这里插入图片描述

Pooling Module

由于不同场景中周围人群的数量可能会有很大差异,因此我们需要一个能够将任意数量的输入处理为固定大小的输出的模型。

Everett 等人 [22] 提出将所有人类的状态按照与机器人的距离降序依次输入 LSTM [49]。然而,最接近的邻居具有最强影响力的基本假设并不总是正确的。其他一些因素,例如速度和方向,对于正确估计邻居的重要性也至关重要,这反映了该邻居如何潜在地影响机器人的目标获取。利用自注意力机制的最新进展,其中序列中某个项目的注意力是通过查看序列中的其他项目来获得的[44]、[46]、[50],我们提出了一个社交注意力池模块以数据驱动的方式了解每个邻居的相对重要性以及人群的集体影响。

交互嵌入 e i e_i ei 转换为注意力分数 α i α_i αi 如下:
在这里插入图片描述
给定每个邻居 i 的成对交互向量 h i h_i hi 和相应的注意力分数 α i α_i αi,人群的最终表示是所有对的加权线性组合:
在这里插入图片描述

Planning Module

基于人群 c 的紧凑表示,我们构建了一个规划模块,用于估计合作规划的状态值 v:
在这里插入图片描述

Implementation Details

局部地图是一个以每个人为中心的 4 × 4 网格,每个网格的边长为 1m 。函数 ϕ e ( ⋅ ) 、 ψ h ( ⋅ ) 、 ψ α ( ⋅ ) 、 f v ( ⋅ ) \phi_e(·)、ψ_h(·)、ψ_α(·)、f_v(·) ϕe()ψh()ψα()fv() 的隐藏单元分别为 (150,100)、(100,50)、(100,100)、(150,100,100)。

我们在 PyTorch [51] 中实现了该策略,并使用 Adam [52] 以 100 的批量大小对其进行训练。对于模仿学习,我们使用 ORCA 收集了 3k 集演示,并以学习率 0.01 训练了策略 50 个时期。对于强化学习,学习率为0.001,折扣因子γ为0.9。 ε-贪婪策略的探索率在前 5k 集中从 0.5 线性衰减到 0.1,并在剩余 5k 集中保持 0.1。 RL 训练在 i7-8700 CPU 上花费了大约 10 个小时。

这项工作假设机器人具有完整的运动学,即它可以向任何方向移动。动作空间由 80 个离散动作组成:5 个速度在 (0, vpre f ] 之间呈指数分布,16 个方向在 [0, 2π) 之间均匀分布。

Experiments

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/66332.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring集成Seata

Seata的集成方式有: 1. Seata-All 2. Seata-Spring-Boot-Starter 3. Spring-Cloud-Starter-Seata 本案例使用Seata-All演示: 第一步:下载Seata 第二步:为了更好看到效果,我们将Seata的数据存储改为db 将seata\sc…

【IMX6ULL驱动开发学习】04.应用程序和驱动程序数据传输和交互的4种方式:非阻塞、阻塞、POLL、异步通知

一、数据传输 1.1 APP和驱动 APP和驱动之间的数据访问是不能通过直接访问对方的内存地址来操作的,这里涉及Linux系统中的MMU(内存管理单元)。在驱动程序中通过这两个函数来获得APP和传给APP数据: copy_to_usercopy_from_user …

电脑自动关机是什么原因?1分钟弄懂!

“好奇怪啊,我在使用电脑时,电脑总是莫名其妙就会自动关机,有时候我文件都来不及保存。这是为什么呢?有什么解决方法吗?” 电脑自动关机是一个令人头疼的问题,可能会对我们的工作和生活带来影响。电脑自动关…

数组相关练习

数组练习 将数组转化成字符串数组拷贝求数组元素的平均值查找数组中指定元素(顺序查找)二分查找冒泡排序数组逆序 将数组转化成字符串 import java.util.Arrays;public class Text1 {public static void main(String[] args) {int[] arr {5, 6, 4, 2};System.out.println(Arr…

电商数据获取:网络爬虫还是付费数据接口?

随着电商行业的迅速发展,对电商数据的需求也越来越大。在获取电商数据时,常常面临一个选择:是自己编写网络爬虫进行数据爬取,还是使用现有的付费数据接口呢?本文将从成本、可靠性、数据质量等多个角度进行分析&#xf…

【果树农药喷洒机器人】Part1:研究现状分析以及技术路线介绍

本专栏介绍:付费专栏,持续更新机器人实战项目,欢迎各位订阅关注。 关注我,带你了解更多关于机器人、嵌入式、人工智能等方面的优质文章! 文章目录 一、项目背景二、国内外研究现状2.1 国内研究现状2.2 国外研究现状 三…

C语言内嵌汇编

反编译(二进制文件或者so库) objdump --help objdump -M intel -j .text -ld -C -S out > out.txt #显示源代码同时显示行号, 代码段反汇编-M intel 英特尔语法-M x86-64-C:将C符号名逆向解析-S 反汇编的同时,将反汇编代码和源代码交替显…

Python自动化测试用例:如何优雅的完成Json格式数据断言

目录 前言 直接使用 优化 封装 小结 进阶 总结 资料获取方法 前言 记录Json断言在工作中的应用进阶。 直接使用 很早以前写过一篇博客,记录当时获取一个多级json中指定key的数据: #! /usr/bin/python # coding:utf-8 """ aut…

3分钟创建新生分班查询二维码,无需技术、0成本

作为教师,我们深知分班是一项极其重要的任务,需要综合考虑学生的性格、能力和兴趣等多个方面,以确保每个学生都能够获得最佳的学习环境和成绩。在本文中,我将分享一种便捷的方式来告知家长有关分班录取情况的方法。 通常&#xf…

2. 软件需求 面向对象分析

目录 1. 软件需求 1.1 需求分类 1.2 需求获取 1.3 需求分析 2. 面向对象分析(OOA) 2.1 统一建模语言 UML 2.2 用例模型 2.2.1 用例图的元素 2.2.2 识别参与者 2.2.3 合并需求获得用例 2.2.4 细化用例描述 2.3 分析模型 2.3.1 定义概念类 …

深入JVM - JIT分层编译技术与日志详解

深入JVM - JIT分层编译技术与日志详解 文章目录 深入JVM - JIT分层编译技术与日志详解1. 背景简介2. JIT 编译器2.1. 客户端版本的编译器: C12.2. 服务端版本的编译器: C22.3. Graal JIT 编译器 3. 分层编译技术(Tiered Compilation)3.1. 汇聚两种编译器的优点3.2. 精准优化(Ac…

Redis内网主从节点搭建

Redis内网主从节点搭建 1、文件上传2、服务安装3、服务启动4、配置主从复制 1、文件上传 内网环境手动上传gcc-c、redis.tar文件 2、服务安装 # 解压 unzip gcc-c.zip unzip gcc_rpm.zip tar -zxvf redis-6.2.13.tar.gz# 安装 cd gcc_rpm/ rpm -ivh *.rpm --nodeps --force…

gitlab 503 错误的解决方案

首先使用 sudo gitlab-ctl status 命令查看哪些服务没用启动 sudo gitlab-ctl status 再用 gitlab-rake gitlab:check 命令检查 gitlab。根据发生的错误一步一步纠正。 gitlab-rake gitlab:check 查看日志 tail /var/log/gitlab/gitaly/current删除gitaly.pid rm /var/opt…

Webpack怎么使用?

Webpack 使用 前几篇文章中已经介绍了如何初始化包管理器 package.json 这里不再重复介绍,如有需要请查看 搭建工程化项目。 安装 :::warning 注意 请确保你已经安装了 yarn,如有需要请查看 搭建工程化开发环境。 ::: 通过命令 yarn add webpack web…

三天吃透Java面试八股文(2023最新整理),面试通过率高达90%

什么样的求职者能够获得面试官的青睐?求职者需要准备哪些内容来面对形形色色的面试官?这两份资料是我在几十场面试中被面试官问到的问题,比其他复制粘贴的面试题强一百倍,堪称全网最强(我不太喜欢“全网最强”这样的字…

mybatis打印sql语句出现多余的limit关键字

1、事情起因 在项目中使用了PageHelper分页插件,由于需求特殊,需要自定义分页,代码编写完成后,事故出现了。 前端传参: {pageNum: 1,pageSize: 10, }已知表中数据10条,但是每次分页查询只有10条数据,排查…

【C语言】初识C语言+进阶篇导读

✨个人主页: Anmia.🎉所属专栏: C Language 🎃操作环境: Visual Studio 2019 版本 本篇目的是面向编程新手,没接触过编程的人。以及C进阶的导读。 内容是C语言重要知识点的简单解释,不做详解。给…

uniapp echarts 点击失效

这个问题网上搜了一堆,有的让你降版本,有的让你改源码。。。都不太符合预期,目前我的方法可以用最新的echarts。 这个方法就是由npm安装转为CDN,当然你可能会质疑用CDN这样会不稳定,那如果CDN的地址是本地呢&#xff1…

【MySQL系列】表约束的学习

「前言」文章内容大致是MySQL的表的约束。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、MySQL表的约束1.1 空属性1.2 默认值(default)1.3 列描述(comment)1.4 zerofill1.5 主键(primary ke…

简化AD管理减少IT工作负担

管理和保护混合 AD 环境 IT 管理员几乎每天都要创建和管理多个 AD 对象,利用本机AD工具(如Active Directory用户和计算机控制台以及PowerShell脚本)来执行这些任务并不理想,因为它们必须在多个控制台之间切换才能执行这些任务&am…