【计算机图形学】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任务,但是暂时没注意它训练的方法啥的。

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

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

相关文章

前端接口防止重复请求实现方案

虽然大部分的接口处理我们都是加了loading的&#xff0c;但又不能确保真的是每个接口都加了的&#xff0c;可是如果要一个接口一个接口的排查&#xff0c;那这维护了四五年的系统&#xff0c;成百上千的接口肯定要耗费非常多的精力&#xff0c;根本就是不现实的&#xff0c;所以…

webpack5零基础入门-7webpack修改输出文件目录

1.修改output中的path后打包 path: path.resolve(__dirname, dist/js),//所有文件的输出目录 可以看到dist目录下多了个js目录 但所有文件都在js目录中 我们想要的是根据不同的资源进行分类很显然这样不行 从这里可以看出path是所有文件的输出目录 2.修改output中的filename…

CVPR2024 | 大核卷积新高度101x101,美团提出PeLK

https://arxiv.org/pdf/2403.07589.pdf 本文概述 最近&#xff0c;一些大核卷积网络以吸引人的性能和效率进行了反击。然而&#xff0c;考虑到卷积的平方复杂度&#xff0c;扩大内核会带来大量的参数&#xff0c;而大量的参数会引发严重的优化问题。由于这些问题&#xff0c;当…

Vue手写模拟步骤条

效果图&#xff1a; 如果要使用element的步骤条就需要强行修改样式&#xff0c;参考之前的那篇步骤条。这里我采用手写div 代码&#xff1a; 思路是给最外层的div一个左边框&#xff0c;给里面的step-item设置左边框为图片&#xff0c;通过定位来移动。 <div class"m…

opencv中的图像均值模糊—blur

平均模糊是通过对图像的每个像素及其周围像素的值求平均来实现的。 blur函数通过计算输入图像image中每个像素及其邻域内像素的平均值来工作。 // 图像卷积 void QuickDemo::Conv_image_demo(Mat &image) {Mat dst;blur(image, dst, Size(3, 3), Point(-1, -1));// Point(…

增删卜易——八宫六十四卦

之前看倪海厦的《天纪》笔记里面提到了六十四卦世应,觉得不知道这个世应是啥意思。很长时间就没看了,偶然间看到了张文江教授写的一本书《潘雨廷先生谈话录》提到了《卜筮正宗》,“卜筮最后的判断是非理性转义,其他一切都只是形式”,“明人的著作,从京氏易出,如今天几日…

#微信小程序(一个emo文案界面)

1.IDE&#xff1a;微信开发者工具 2.实验&#xff1a;一个emo文案界面 &#xff08;1&#xff09;最好使用rpx &#xff08;2&#xff09;图片宽度占不满&#xff0c;在CSS中设置width为100% &#xff08;3&#xff09;imag图片全部为网页链接图片 3.记录 4.代码 index.htm…

【图论】计算图的n-hop邻居个数,并绘制频率分布直方图

计算图的n-hop邻居个数&#xff0c;并绘制频率分布直方图 在图论中&#xff0c;n-hop邻居&#xff08;或称为K-hop邻居&#xff09;是指从某个顶点出发&#xff0c;通过最短路径&#xff08;即最少的边数&#xff09;可以到达的所有顶点的集合&#xff0c;其中n&#xff08;或…

[linux]信号处理:信号编码、基本API、自定义函数和集合操作的详解

一、信号的概述 1、定义 信号是 Linux 进程间通信的最古老的方式。信号是软件中断&#xff0c;它是在软件层次 上对中断机制的一种模拟&#xff0c;是一种异步&#xff08;不等待&#xff09;通信的方式 。信号可以导致一个正在运行的进程被 另一个正在运行的异步进程中断&a…

Qt_vc++崩溃日志分析

环境 Clion &#xff1a;2019.3.6 Qt &#xff1a;5.9.6&#xff08;vc2015&#xff09; 编译工具&#xff1a;vs2015 update3 崩溃日志收集 自行百度&#xff0c;会查到很多&#xff0c;一下代码仅供参考&#xff08;来自https://blog.csdn.net/weixin_45571586/article/…

修改vscode的相对路径计算逻辑

vscode的相对路径计算逻辑是&#xff0c;"./"表示当前项目的文件夹&#xff0c;而不是当前文件所在的文件夹 做出如下修改&#xff1a; File-->Preferences-->settings 搜索Execute in File Dir , 然后取消勾选

医学图像目标跟踪论文阅读笔记 2024.03.08~2024.03.14

“Inter-fractional portability of deep learning models for lung target tracking on cine imaging acquired in MRI-guided radiotherapy” 2024年 期刊 Physical and Engineering Sciences in Medicine 医学4区 没资源&#xff0c;只读了摘要&#xff0c;用的是U-net、a…

79岁TVB老戏骨宣布离巢另寻生计。

以童星身份出道的香港资深艺人冯素波&#xff08;波姐&#xff09;纵横影视圈超过70年&#xff0c;不少人认识她还是在TVB剧中&#xff0c;不过她昨日却突然宣布要离开TVB&#xff0c;令不少网友震惊。 其实早在几个月前已经有消息称波姐会离开TVB&#xff0c;不过本人一直没有…

爬虫逆向实战(35)-MyToken数据(MD5加盐)

一、数据接口分析 主页地址&#xff1a;MyToken 1、抓包 通过抓包可以发现数据接口是/ticker/currencyranklist 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个code参数 请求头是否加密&#xff1f; 无 响应是否加密&#xf…

【数学建模】线性规划

针对未来可能的数学建模比赛内容&#xff0c;我对学习的内容做了一些调整&#xff0c;所以先跳过灰色关联分析和模糊综合评价的代码&#xff0c;今天先来了解一下运筹规划类——线性规划模型。 背景&#xff1a; 某数学建模游戏有三种题型&#xff0c;分别是A&#xff0c;B&am…

架构实战--以海量存储系统讲解热门话题:分布式概念

关注我&#xff0c;持续分享逻辑思维&管理思维&#xff1b; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导&#xff1b; 有意找工作的同学&#xff0c;请参考博主的原创&#xff1a;《面试官心得--面试前应该如何准备》&#xff0c;《面试官心得--面试时如何进行自…

Jmeter扩展开发--自定义java取样器

简介 jmeter内置了包括&#xff1a;http、https、tcp等各种协议的支持&#xff0c;通常情况只需要做简单的参数配置即可使用。但在某些特殊情况下&#xff0c;还是希望能做自定义压测处理&#xff0c;此时就涉及Jmeter的扩展开发自定义Java取样器&#xff0c;如下图所示&#…

QT 如何防止 QTextEdit 自动滚动到最下方

在往QTextEdit里面append字符串时&#xff0c;如果超出其高度&#xff0c;默认会自动滚动到QTextEdit最下方。但是有些场景可能想从文本最开始的地方展示&#xff0c;那么就需要禁止自动滚动。 我们可以在append之后&#xff0c;添加如下代码&#xff1a; //设置编辑框的光标位…

HTML 列表 || 表格 || 表单

目录 1. 列表1.1 无序列表1.2 有序列表1.3 定义列表 2. 表格2.1 表格基本标签2.2 表格结构标签2.3 合并单元格 3. 表单3.1 input 标签基本使用3.1.1 单选框 radio3.1.2 上传文件 file3.1.3 多选框 checkbox 3.2 表单下拉菜单3.3 表单文本域3.4 label 标签3.5 按钮 button 正文开…

想要自己制作一款游戏,需要掌握哪些基本技能?

你是否曾经沉浸在游戏的世界中&#xff0c;感受到游戏带来的无限乐趣&#xff1f;你是否曾经梦想能够亲手制作一款属于自己的游戏&#xff0c;为玩家带来独特的体验&#xff1f;然而&#xff0c;要实现自己的游戏创作梦想&#xff0c;并不是一件轻松的事情。需要掌握各种技能和…