【计算机图形学】End-to-End Affordance Learning for Robotic Manipulation

对RLAfford:End-to-End Affordance Learning for Robotic Manipulation的简单理解

1. 为什么要做这件事

在交互环境中学习如何操纵3D物体是RL中的挑战性问题。很难去训练出一个能够泛化到具有不同语义类别、不同几何形状和不同功能物体上的策略。

Visual Affordance提供了以物体为中心的信息先验,包含有高效的运动语义信息(指示了交互位置和交互策略)。可以训练知道通过如何对把手施加力量来打开一扇门。

但Affordance通常需要人类定义的动作愿意,限制了其应用范围。

2. 做了一件什么事

通过在强化学习过程中产生的contact信息来预测一张contact map(接触图),从而利用这种Visual Affordance

这种contact信息的预测使得端到端的Affordance学习框架可以泛化到不同的操纵任务上。令人惊讶的是,框架的高效性甚至可以处理多阶段和多智能体场景下的任务。

3. 介绍

从一篇开始不打算把介绍写的太详细了,浪费时间,影响阅读速度,但是会概括一些个人觉得有用的信息。

端到端的学习方法可以探索未来智能机器人的边界。(没想明白这句话的原因,因为不是很了解强化学习)

现有的用于操纵的affordance方法都由两个阶段组成,首先是训练affordance map,并基于学到的affordance来提出动作序列,交互成功率与学习到的affordance的精准度高度相关。Affordance预测的偏差将会严重影响任务表现。

在这篇文章中,利用contact频率来表示affordance,开发了一种端到端的学习affordance的方式。affordance不再和特定的原子动作(如推、拉等)联结,而是将强化学习过往的操作接触信息作为经验。同时利用Visual Affordance,鼓励强化学习智能体专注于那些具有较高接触分数的点,帮助Affordance和操纵策略彼此adapt,从而产生更鲁棒的Affordance表达。

使用contact信息作为Affordance显著支持了多阶段任务,如拿起物体,并将其放置到合适的位置;以及多智能体任务,如使用两个机械臂来推动椅子。通过将所有的交互统一成“contact”,文章的方法可以高效表示A2O(agent-to-object)和O2O(object-to-object)交互,但对于其他任务来说是很难的。(没读懂,不清楚A2O交互和O2O交互是一些什么任务,但是总的来说,应该是将所有的交互都统一理解为concat信息,不再按照操作原语进行区分)。

4. 相关工作

4.1 机器人操纵策略学习

对于铰接物体的操纵,有很多方法从不同的角度使用不同的方法来尝试解决这个问题。例如,UMPNet和VAT-Mart利用视觉信息来直接提出动作序列,其他还有一些方法通过模型预测实现鲁棒和可适应的控制。多阶段和多智能体的操纵设定对于现在的方法来说仍然是十分具有挑战性的。

4.2 Visual Affordance学习

Affordance中的语义信息对于操纵来说具有很重要的意义。

如Where2Act、VAT-Mart、AdaAfford、VAPO,都分成两个训练阶段。第一个阶段用于搜集交互数据来预训练Affordance,接着基于Affordance训练策略。还有一些其他的方法同时训练Affordance和policy,然而,他们的学习依赖于人类的演示。

该文工作不同于以上方法,不需要为不同原子动作/任务搜集数据,也不需要任何的人类注释。

4.3 Related Work的比较

在开门任务中,Maniskill(Maniskill: Generalizable manipulation skill benchmark with
large-scale demonstrations)利用人类动作进行模仿学习,然而人类动作需要从人类中搜集,因此是比较困难的。

在Where2Act、VAT-Mart、VAPO不是以端到端的方式学习的。它们将输出的gripper pose作为动作,但是在现实中并不能够保证gripper能够接触到这个位置。大部分的这些工作都是为单阶段、单智能体任务进行设计的,比如打开门、抓起物体,但是并不能适用于多阶段或多智能体任务。文章中使用contact信息作为affordance使得强化学习策略可以handle多阶段的任务和多智能体的任务。

一个简单的对比表如下,其中:

  • No Demo指的是不需要人类示范

  • No Full Obs指的是不需要观察物体的状态,比如门把手的位置等,因为现实世界中很难获得这种准确的状态

  • End-to-End指的是同时训练,不需要分阶段训练,W2A和VAT那种先搜集数据,后训练,再联合训练就属于分阶段

  • Multi-Stage:支持那种分阶段的任务,比如拿起物体,放到指定位置,这个多阶段指的不是生成的策略是一个轨迹,指的是可以handle那种不同类型的两个任务(拿东西,放下)

  • Multi-Agent:是否支持多智能体

在这里插入图片描述

5. 方法

5.1 方法概览

基于视觉的强化学习方法在机器人操纵任务中逐渐表现出其价值,尤其是对那些需要智能体使用一种策略来操纵不同物体的任务。同时很多工作都意识到从点云或图像等高维输入中学习视觉编码的困难性。在该工作的框架中,通过“接触预测”来探索隐藏的信息。

在操纵任务下,contact是人类与物体交互的基础方式。交互中的物理接触点反映了对于物体关键语义信息的理解。

如下图所示,提出了一种端到端的强化学习框架用于3D铰接物体操纵。

在这里插入图片描述

整个网络由两个部分组成:1) Manipulation Module是一个强化学习模块,使用Contact Predictor预测的Affordance map作为额外的视觉观察,并根据Contact Predictor的输出设定奖励信号;2) Visual Affordance Module是一个预测逐点评分的网络,使用MA中搜集的contact位置作为Synamic Ground Truth来指示交互的位置,并让Contact Predictor去拟合。

每t个时间步中,MA将会输出基于机械臂状态 s t s_t st(关节角度和角速度)的动作 a t a_t at,以及VA模块预测的affordance map M t M_t Mt。在每个时间步 t t t,强化学习中的接触点位置将会被插入到Contact Buffer中。在每k个时间步后,聚集CB中的数据以生成逐点分数来作为DGT以更新VA模块。

5.2 Visual Affordance模块:以Contact作为先验

在机器人操纵过程中,物理contact很自然的在智能体和物体之间发生。这种“contact”不依赖于任何人类预定义的原子动作,如推或拉,contact位置是一个通用的表达,用于提供操纵的视觉先验。

MA的RL训练管线持续与环境交互,并搜集:1) 部分观察的点云 P P P,2) 物体坐标系下的接触点位置。基于这些信息,可以衡量A2O和O2O之间是如何接触的,并通过这些信息衡量每个点的contact frequency作为Affordance。VA模块尝试去学习这些预测的per-point frequency。VA训练细节如下:

Input:部分观察的点云 P P P

Output:Affordance map M M M,预测了逐点的接触概率,这张图包括了A2O Affordance和O2O Affordance。

网络结构:使用PointNet++从点云观察 P P P中提取逐点特征 f ∈ R 128 f∈\R^{128} fR128,特征送入到Contact Predictor中预测逐点actionable affordance。

Dynamic Ground Truth:使用Contact Buffer CB作为MA模块和VA模块连接的点,CB中始终保持有 l l l哥历史contact points,用于计算DGT。训练集中的每一个物体都持有一个CB,它记录了物体的交互位置。为了保持buffer size,记录满时插入新记录,就随机踢掉一个历史交互记录。为了给CP提供训练GT,通过计算物体点云上每个点接触位置半径 r r r内的接触数作为DGT,并应用归一化获得Dynamic Ground Truth DGT。归一化过程如下:

D G T t i ( p ) = ∑ q ∈ C B t i I ( ∣ p − q ∣ 2 < r ) max ⁡ p ′ ∑ q ∈ C B t i I ( ∣ p − q ∣ 2 < r ) + ϵ DGT^i_t(p)=\frac{\sum_{q∈CB^i_t}I(|p-q|_2<r)}{\max_{p'}\sum_{q∈CB^i_t}I(|p-q|_2<r)+\epsilon} DGTti(p)=maxpqCBtiI(pq2<r)+ϵqCBtiI(pq2<r)

其中 D G T t i DGT^i_t DGTti表示物体 i i i在时间步 t t t的Dynamic Ground Truth, C B t i CB^i_t CBti是对应的Contact Buffer。

训练:使用 D G T t i DGT^i_t DGTti更新 C P CP CP

C P t ∗ = arg min ⁡ C P ∑ i s r t i ∣ ∣ ∑ p ∈ P i C P ( p ∣ P i ) − D G T t i ( p ) ∣ ∣ 2 CP^*_t=\argmin_{CP}\sum_i{sr^i_t}||\sum_{p∈P^i}CP(p|P^i)-DGT^i_t(p)||_2 CPt=argminCPisrti∣∣pPiCP(pPi)DGTti(p)2

s r t i sr^i_t srti是在物体 i i i上的当前操纵成功率。 P i P^i Pi是第 i i i个物体, C P t ∗ CP^*_t CPt是优化后的 C P CP CP

5.3 Manipulation Module:以Affordance为引导

MA模块是一个强化学习框架,能够从头开始学习如何去操纵物体。该MA模块不同于以往的方法,充分利用了VA模块生成的观察和奖励。

Input:1) 实时点云 P P P;2) VA模块生成的Affordance map;3) 机械臂的状态 s s s, 状态 s s s由位置,机械臂每个关节的位置、速率、角度组成;4) 基于状态的Max-affordance Point Observation (MPO),指示点云 P P P上具有最大affordance分数的点。

Output:动作 a a a,接着机械臂将执行这个动作。在该工作的设定下,RL策略直接控制者机械臂的每个关节。

来自Affordance的奖励:将Max-Affordance Point Reward引入pipeline中,VA模块预测出来的点云上具有最大affordance score的点被选择作为MA模块的引导。根据机器人末端夹持器和这个选定点之间的距离作为强化学习过程中的额外奖励。这有助于强化学习改进整体的表现。

网络结构:MA模块网络 π θ \pi_\theta πθ具有可学习参数 θ \theta θ。网络由PointNet和MLP组成。前者用于提取点云 P P P、Affordance map M M M和额外的mask m m m,得到特征 f ∈ R 128 f∈\R^{128} fR128。提取出的特征连接机械臂状态 s s s一起送入到MLP中获得动作。

训练:使用PPO算法训练MA模块,在模拟器中部署 k k k个物体,每个物体重复 n n n次,并给定1个机械臂。因此总共有 k × n k×n k×n个环境,每一个环境下有1个机械臂(多智能体任务下是2个机械臂),如下图。

在这里插入图片描述

6. 实验

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

第一行:Affordance maps在端到端训练过程中的改变,以及最后的affordance map例子

第二行:真实世界实验

7. 总结

这是第一篇提出用于机器人操纵任务的端到端Affordance强化学习框架。Affordance可以通过提供额外的观察和奖励信号来改进强化训练的策略学习。
目前理解的缺点:一个模型只能handle一个任务,如开/关门、打开/关闭抽屉,但是这是可以处理多阶段任务的,比如Pick and Place任务,但是暂时没注意它训练的方法啥的。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaEE企业开发新技术2

目录 2.7 Field类的基本概念 文字性概念描述&#xff1a; Field类 2.8 Field的基本操作-1 2.9 Field的基本操作-2 分析&#xff1a; 2.10 Field 的综合练习 总结&#xff1a; 和equals的区别&#xff1a; 使用 比较 使用equals比较 2.7 Field类的基本概念 文字性…

【当前全网最详细】WebUI中使用Instant_ID来控制生成对象面部的用法

&#x1f388;为什么有这篇文章 中文网络上或者B站很多UP&#xff0c;在讲述WebUI中使用这个controlnet来换脸的时候&#xff0c;要么讲的过于复杂&#xff0c;要么就是没有讲清楚&#xff0c;所以这里整理下详细的使用方法&#xff0c;并记录下生成的内容。 如果懒得看文字可…

Pretrain-finetune、Prompting、Instruct-tuning训练方法的区别

来自&#xff1a;【多模态】28、LLaVA 第一版 | Visual Instruction Tuning 多模态模型的指令微调_多模态指令跟随数据-CSDN博客 几种模型训练方法的区别&#xff1a; 1、Pretrain-finetune&#xff1a;先在大量数据集上做预训练&#xff0c;然后针对某个子任务做 finetune 2…

解析找不到msvcr120.dll无法继续执行此代码的多种修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcr120.dll丢失”。这个错误通常会导致某些程序无法正常运行。为了解决这个问题&#xff0c;本文将介绍5种修复msvcr120.dll丢失的方法。 一&#xff0c;msvcr120.dll丢失会出现哪些问题…

基于springboot+vue实现乌鲁木齐南山冰雪旅游服务网管理系统项目【项目源码+论文说明】

基于springbootvue实现南山冰雪旅游服务网演示 摘要 随着2022年北京冬奥会的成功举办&#xff0c;在冬天进行冰雪运动已经逐渐流行起来&#xff0c;人们慢慢享受到了冰雪活动给大家带来的欢乐&#xff0c;除此之外人们的身体素质也可以得到提升。虽然已经有一部分人可以接受并…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:GridCol)

栅格子组件&#xff0c;必须作为栅格容器组件(GridRow)的子组件使用。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含单个子组件。 接口 GridCol(option?:{span?: number | …

NVIDIA vGPU三种授权方式(个人玩家版)

NVIDIA vGPU三种授权方式(个人玩家版) 旧版本的License Server搭建(比较推荐)说明搭建所需文件创建一个Linux虚拟机(我创建的是Ubuntu 18.04.06)修改虚拟机的MAC地址关闭虚拟机的时间同步及修改系统时间安装java安装Apache Tomcat安装许可证服务器软件上传授权文件新版本…

通过NFS 实现windows共享linux目录

一、配置WIndows 1.进入程序和功能 2.勾选NFS服务&#xff0c;安装客户端 二、安装NFS Service 在ubuntu 1.查看apt源是否存在nfs服务端安装包 sudo apt-cache madison nfs-kernel-server 2. 安装nfs-kernel-server sudo apt install nfs-kernel-server 3.建立共享目录&…

Selenium 自动化 —— 入门和 Hello World 实例

Selenium 是什么 Selenium 是一个用于自动化网页浏览器操作的工具&#xff0c;它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能&#xff0c;也可用于执行一些基本的浏览器操作任务&#xff0c;例如自动化表单填写、网页导航等。 Selenium 是一个开源项目&a…

string接口[小白理解篇]

作文目的 本文是为了加深对string底层函数的一点理解(请勿与底层源码混为一谈)&#xff0c;下面从模拟与注意项出发。 一.string 功能化模拟 1.迭代器模拟 迭代器&#xff0c;为实现简单便理解故使用指针的方式(非说明迭代器使用该方法实现)。其中的begin、end都是为了给迭代…

WPF —— Calendar日历控件详解

1&#xff1a; Calendar的简介 日历控件用于创建可视日历&#xff0c;让用户选择日期并在选择日期时触发事件。 DisplayMode 用来调整日历显示模式&#xff0c;分为Month、Year 和Decade 三种。如下是None 2&#xff1a;Calendar控件常用的属性 SelectionMode 选中日历的类…

航班时间 刷题笔记

思路参考大佬 个人空间 - AcWing 飞行时间推导 首先每组数据两行 一行有两个数据 第一行第一个给出的是 去的时候从A地出发到B地的起飞时间 第一行第二个数据 是去的时候在B地降落的时间 第二行的第一个数据是 回程时到A地的降落时间 第二行第二个数据时 回程时在B地…