论文阅读之Learning and Generalization of Motor Skills by Learning from Demonstration

news2024/11/30 10:34:49

0、论文基本信息

DMP经典论文
论文题目:Learning and Generalization of Motor Skills by Learning from Demonstration
会议名称:2009 ICRA
论文作者:Peter Pastor, Heiko Hoffmann, Tamin Asfour and Stefan Schaal

作者简介:Stefan Schaal是美国University of Southern California教授,之前也介绍过,是DMP的提出者,非常厉害的老师,在Youtube上看过他的报告,学术气质一流,主要做运能技能的学习,如模仿学习和强化学习。知乎上的大佬也表示,经过Stefan Schaal教授点拨的学生或合作的同事都走向了人生巅峰,如Auke Jan Ijspeert,Aude Billard,Sethu Vijayakumar,Jan Peters(Jens Kober是Jan Peters的学生),欧洲很多有影响力的机器人+机器学习实验室都和Stefan Schaal有着千丝万缕的联系。

题目:从示教中学习和泛化运动技能
摘要:作者提供了一种从人类演示中学习机器人运动技能的通用方法。为了表示观察到的运动,学习了一个非线性微分方程,使其可以再现这一运动。基于这种表示,作者根据任务和上下文(例如,抓握、放置和释放)标记每个记录的动作来构建动作库。作者提出的微分方程可以通过将方程中的起始和目标参数调整为运动所需位置值来简单地实现泛化。对于对象操作,作者介绍了提出的框架如何扩展到控制抓手方向和手指位置。改方法的可行性在仿真中以及在Sarcos灵巧的机械臂上得到了验证。该机器人学习了pick and place操作和倒水任务,并可以将这些任务推广到新的情况。

一、引言

这里只提炼核心内容:机器人只有易于编程,才能广泛服务于人类。易于编程可以通过示教学习实现。示教学习的三个问题需要解决,1,对应问题,即人类和机器人的关节和连杆不匹配。2,泛化,即人类无法演示机器人支持的每一个动作,所以需要进行泛化。如果演示的动作可以推广到其他环境中,比如不同的目标位置,那么通过演示进行学习是可行的。3,抵抗扰动的鲁棒性,即,在未知的动态环境中,精确复现观察到的动作是不切实际的,因此在这个环境中可能会突然出现障碍物。

为了解决这些问题,作者提出了一个基于DMP框架的模型,在这个框架下,任何记录的运动,都可以表示为一系列微分方程。用微分方程表示运动的优点是1,可以自动矫正扰动的影响(通过耦耦合项),2,仅改变目标点参数,其他不变,就可到达一个新的位置,具有泛化能力。本文提出了新的DMP公式,以解决传统DMP在更改目标位置参数时遇到的几个问题。

作者在末端执行器空间表示运动轨迹以解决问题1的对应问题,对于抓取和放置等目标操作,除了末端位置,我们还需要控制抓手的姿态和手指的位置(张开和闭合程度),DMP框架允许结合末端运动和任何附加的自由度,因此,可以直接添加四元数表示的抓手姿态和手指位置。在机器人演示中,作者使用解析的运动速率逆运动学将末端执行器位置和抓手姿态映射到适当的关节角度。

为了处理复杂的运动,可以使用上述DMP框架来构建运动基元库,随后可以通过排序来组成更加复杂的运动。例如,运动基元库可能包含抓取、放置和释放动作。这些动作中的每一个都是从人类演示中记录下来的,随后由一个微分方程表示,并相应地标记。对于在桌子上移动对象,需要一个抓取-放置-释放序列,并从库中调用相应的基元。由于每个动态运动基元的泛化能力,可以仅基于所演示的三个运动,将物体放置在桌子上任意位置。

二、动态运动基元及其改进

A. 传统DMP

一维运动表示为受外力项扰动的线性弹簧系统:
公式1和公式2
τ v ˙ = K ( g − x ) − D v + ( g − x 0 ) f ( s ) τ x ˙ = v \begin{aligned} \tau \dot{v} &=K(g-x)-D v+\left(g-x_{0}\right)f(s) \\ \tau \dot{x} &=v \end{aligned} τv˙τx˙=K(gx)Dv+(gx0)f(s)=v
这里的DMP公式和平常看到的可能不一样,这里只是强调了弹簧特性,并不影响。 x x x v v v分别是系统的位置和经过时间因子 τ \tau τ缩放后的速度, x 0 x_{0} x0 g g g分别为运动的起点和终点。 K K K是弹性常数 D D D是阻尼常数,选择合适的 K K K D D D以保证系统达到临界阻尼状态。 f f f是非线性函数,可以通过LWR(Locally Weighted Regression,局部加权回归)学习其参数,以生成任意复杂的运动。非线性函数 f f f定义如下:
f ( s ) = ∑ i w i ψ i ( s ) s ∑ i ψ i ( s ) \begin{aligned} f(s)=\frac{\sum_{i} w_{i} \psi_{i}(s) s}{\sum_{i} \psi_{i}(s)} \end{aligned} f(s)=iψi(s)iwiψi(s)s
其中, ψ i = e x p ( − h i ( s − c i ) 2 ) \psi_{i}=exp(-h_{i}(s-c_{i})^2) ψi=exp(hi(sci)2)为高斯基函数, c i c_{i} ci为高斯基函数中心, h i h_{i} hi为高斯基函数宽度, w i w_{i} wi为可调权重。函数 f f f不直接依赖时间 t t t,而是相变量 s s s的函数, s s s随着运动的进行,从1到到0单调递减,相变量 s s s满足公式:
公式4:
τ s ˙ = − α s \begin{aligned} \tau \dot{s} =-\alpha s \end{aligned} τs˙=αs
其中 α \alpha α是一个预定义常数,上述公式通常被称为正则系统(canonical system)

使用这些方程表示运动的优势:
a.保证收敛到目标点 g g g,因为 f ( s ) f(s) f(s)会在运动的末端消失;
b.可以学习权重参数 w i w_{i} wi以生成任意期望的光滑轨迹;
c.方程是空间和时间不变的,即,对于起点、重点和时间缩放的变化,运动是自相似的,而不需要改变权重 w i w_{i} wi
解释:这里意思应该是泛化能力,给定任意起始点,运动轨迹总是和示教轨迹相似,不需要对微分方程做任何改变。
d.由于方程的固有吸引子动力学,该公式产生的运动对扰动是鲁棒的。

为了从示教中学习运动,首先,需要记录示教轨迹 x ( t ) x(t) x(t),以及他的导数 v ( t ) v(t) v(t) v ˙ ( t ) \dot v(t) v˙(t),第二,对正则系统进行合并,即,为适当的时间缩放因子 τ \tau τ计算 s ( t ) s(t) s(t)。因此:
f t a r g e t ( s ) = − K ( g − x ) + d v + τ v ˙ g − x 0 \begin{aligned} f_{target}(s)=\frac{-K(g-x)+dv+\tau \dot v}{g-x_{0}} \end{aligned} ftarget(s)=gx0K(gx)+dv+τv˙
这里 f t a r g e t f_{target} ftarget只是通过公式得到的,另外 f f f还可以表示为多个高斯基函数的组合。因此为了求权重 w i w_{i} wi,可以转化为求解一个线性回归问题 J = ∑ s ( f t a r g e t ( s ) − f ( s ) ) 2 J=\sum _{s}(f_{target}(s)-f(s))^2 J=s(ftarget(s)f(s))2。有了权重 w i w_{i} wi,给定不同起始点,便可生成与示教轨迹相同趋势的运动。

在这里插入图片描述
图1.一维DMP的原理图:正则系统驱动非线性函数f,该函数扰动变换系统以计算期望的运动。

B. 泛化到新的目标

经典DMP方法泛化到新的目标点时有三个缺点:1,如果运动的起点 x 0 x_{0} x0和终点 g g g一样,则公式1中的非线性项不能驱动系统离开起点 x 0 x_{0} x0,这将导致系统停留在初始点 x 0 x_{0} x0。2、如果 g − x 0 g-x_{0} gx0接近零,函数 f f f的缩放 g − x 0 g-x_{0} gx0是有问题的。在这里, g g g的微小变化可能会导致巨大的加速度,这可以打破机器人的极限。3、每当一个动作适应一个新的目标 g n e w g_{new} gnew,使得 ( g n e w − x 0 ) (g_{new}-x_{0}) (gnewx0) ( g o r i g i n a l − x 0 ) (g_{original}-x_{0}) (goriginalx0)相比改变了它的符号时,所产生的泛化就会被镜像(想象一下sin曲线)。因此,作为本论文实验中的一个例子,在桌子上放置动作的起点和终点位置大致相同;因此,最初的DMP公式不适合将这种运动适应新的目标位置。

C. 改进的DMP

本文提出改进的DMP以解决上述问题,而且保留DMP的有优点,改进后的DMP如下:

τ v ˙ = K ( g − x ) − D v − K ( g − x 0 ) s + K f ( s ) τ x ˙ = v \begin{aligned} \tau \dot{v} &=K(g-x)-Dv-K(g-x_{0})s+Kf(s) \\ \tau \dot{x} &=v \end{aligned} τv˙τx˙=K(gx)DvK(gx0)s+Kf(s)=v
其中 f ( s ) f(s) f(s)和经典DMP中的定义一致,正则系统有和前面公式4一致。与经典DMP的重要不同是非线性函数 f ( s ) f(s) f(s)不再乘 ( g − x 0 ) (g-x_{0}) (gx0),改进DMP的第三项 K ( g − x 0 ) s K(g-x_{0})s K(gx0)s用于避免运动开始时的跳跃,学习和传播DMP和之前步骤是一样的,只是目标函数 f t a r g e t f_{target} ftarget是根据以下公式计算:
f t a r g e t ( s ) = τ v ˙ + D v K − ( g − x ) + ( g − x 0 ) s \begin{aligned} f_{target}(s)=\frac{\tau \dot v+Dv}{K}-(g-x)+(g-x_{0})s \end{aligned} ftarget(s)=Kτv˙+Dv(gx)+(gx0)s

D. 避障

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何导出数据库数据字典

1、随便找一个工程项目,在项目build.gradle配置文件添加以下依赖 compile group: cn.smallbun.screw, name: screw-core, version: 1.0.52、刷新下载依赖 3、将以下代码拷贝到工程任意Java目录 ScrewDemo.java package com.xxx;import cn.smallbun.screw.core.C…

Manim 中文显示问题报错解决办法

使用Manim直接制作这种动画视频的话是不支持中文的,需要进行一些修改,效果如图所示。 但是修改的方案都太坑,经过自己不断的研究找到了一个比较简单实用的方法。 文章目录 源文件修改代码修改源文件修改 实用everuthing找到ctex_template.tex文件。 我这里的路径是D:\MyT…

定时器+BOM

9.定时器BOM 1.定时器 **概念:**重复执行一个函数 1.1setInterval() setInterval(“代码/函数”,时间,参数),返回定时器的序列号,默认从1开始 clearInterval(序列号)清除定时 <button class"start">开启定时器</button><button class"close…

Elasticsearch:为具有许多 and/or 高频术语的 top-k 查询带来加速

作者&#xff1a;Adrien Grand Disjunctive queries&#xff08;term_1 OR term_2 OR ... OR term_n&#xff09;非常常用&#xff0c;因此在提高查询评估效率方面它们受到了广泛关注。 Apache Lucene 对于评估 disjunctive queries 有两个主要优化&#xff1a;一方面用于详尽评…

Mac os 安装homebrew

Mac os 不会自带homebrew工具&#xff0c;而很多需要的工具需要用brew命令下载和安装&#xff0c;但是因为homebrew是国外网站&#xff0c;如果没有VPN&#xff0c;就无法下载。下面记录一下如何解决这个问题。 1、国内安装的命令如下&#xff1a; /bin/zsh -c "$(curl …

[管理与领导-89]:IT基层管理者 - 扩展技能 - 5 - 职场丛林法则 -3- 在丛林(公司->团队->个人)中定位自己

目录 前言&#xff1a; 一、了解公司市场 1.1 了解公司的途径 1.2 了解一个公司的哪些方面 1.3 商业的本质 1.4 公司的本质 1.5 公司的残酷性 1.6 公司与丛林的相似性 1.7 公司在市场中的定位涉及以下几个方面&#xff1a; 1.8 等价交换与剩余价值 在职场中的体现 二…

input输入事件

我要实现input输入框一边输入&#xff0c;一边在控制台输出结果 现有如下代码 <body><input type"text" onchange"myFunction()" /><script>function myFunction(){console.log(999)}</script> </body> 当敲下回车键后才会…

用python爬豆瓣电影《热烈》短评

一、爬虫对象-豆瓣电影短评 今天分享一期爬虫案例&#xff0c;爬取的目标是&#xff1a;豆瓣上任意一部电影的短评&#xff08;注意&#xff1a;是短评&#xff0c;不是影评&#xff01;&#xff09;&#xff0c;以《热烈》这部电影为例&#xff1a; ▲ 爬取目标 爬取以上6个…

阿里云-源码构建容器镜像

1、阿里云Code代码平台 1.1 创建访问令牌。 登录云效Codeup控制台&#xff0c;单击右上角个人设置。 在个人设置页面&#xff0c;单击左侧导航栏中的个人访问令牌。 单击创建访问令牌&#xff0c;设置配置项&#xff0c;然后单击立即创建。以下为创建访问令牌需要授予的最小权…

【C语言】【strcpy的使用和模拟实现】

1.strcpy的使用&#xff1a; char* strcpy(char* destination,const char* source)返回类型是字符指针&#xff0c;参数是接受方字符串的首地址和要拷贝的字符串的首地址 从接受地的‘\0’开始拷贝&#xff0c;会将源字符串中的’\0’也拷贝过来目标空间必须足够大&#xff0…

PASCAL VOC2012数据集以及制作自己的数据集

目录 VOC2012目录结构制作自己的数据集标注图片软件使用流程软件使用 VOC2012目录结构 制作自己的数据集 标注图片软件 github开源项目&#xff0c;形成的是xml文件格式 使用流程 软件使用

docker四种网络模式

文章目录 一.为什么要了解docker网络二.docker 网络理论三.docker的四类网络模式3.1 bridge模式3.2 host模式3.3 container模式3.4 none模式 四.bridge模式下容器的通信4.1 防火墙开启状态4.2 防火墙关闭状态 一.为什么要了解docker网络 当你开始大规模使用Docker时&#xff0…

简单讲讲在一台机器上用docker部署hadoop HDFS

为什么写这篇文章? 老东西叫我用vmvare部署hadoop,我觉得这简直蠢毙了,让我们用docker和docker-compose来快速的过一遍如何使用docker-compose来部署简单的hadoop集群范例 写在前面,一定要看我!!! 还有注意&#xff01;Hadoop中的主机名不能带-或者_ 注意了!一定注意存储空…

uboot 顶层Makefile-make xxx_deconfig过程说明三

一. uboot 的 make xxx_deconfig配置 本文接上一篇文章的内容。地址如下&#xff1a;uboot 顶层Makefile-make xxx_deconfig过程说明二_凌肖战的博客-CSDN博客 本文继续来学习 uboot 源码在执行 make xxx_deconfig 这个配置过程中&#xff0c;顶层 Makefile有关的执行思路。 …

SpringBoot临时属性简单说明

1.修改工程的端口 说明&#xff1a;将工程的端口修改成8080端口 java -jar .\springboot_09_ssmp-0.0.1-SNAPSHOT.jar --server.port8080 修改前 修改后 2.修改连接数据库密码 说明&#xff1a;修改的是application.yml中password的值 java -jar .\springboot_09_ssmp-0.0…

就业这么难,十个软件测试项目帮你简历优化!

简历中项目经验太苍白&#xff0c;面试官一眼假&#xff0c;没有面试邀约&#xff0c;倒在海投第一步&#xff0c;看看这十个项目&#xff0c;总有一个你需要的&#xff01; 1.selenium定位web元素(12306抢票实战项目) 项目测试目的 学会Selenium定位web元素的方法熟练浏览器…

【基础知识】一网络不通问题处理记录

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 在项目现场数据采集过程中&#xff0c;经常会遇到网络问题&#xff0c;最近又遇到一个网络问题。 下面记录处理过程&#xff0c;方便遇到类似问题时能快速处理。 一、问题描述 现场有5个西门子S71200/1500PLC系统&am…

导数的应用、单调性、极值、最大最小值

函数的单调性 函数的单调性是一个重要的性质&#xff0c;它描述了函数在某个区间上的变化趋势。如果函数在某个区间上单调递增&#xff0c;那么在这个区间上&#xff0c;随着自变量的增大&#xff0c;函数值也会增大&#xff1b;反之&#xff0c;如果函数在某个区间上单调递减&…

事件循环机制-Event-Loop

一&#xff1a;什么是浏览器的事件循环机制&#xff1f; 浏览器的事件循环是指在Web浏览器中对事件的处理机制。它是基于异步编程模型&#xff0c;运行在JS的引擎之中 二&#xff1a;浏览器的进程和线程 首先要了解我们所编写的JJS代码最终是怎么在浏览器中执行的 浏览器是一…

【牛客面试必刷TOP101】Day4.BM15删除有序链表中重复的元素-I和BM17二分查找-I

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;牛客面试必刷TOP101 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&…