dmp算法

25 年 3 月 20 日 星期四 (已编辑)
7565 字
38 分钟

一、DMP 的基本概念

在机器人的规划控制中,我们需要事先规划参考轨迹,例如关节角度曲线、机械臂末端轨迹等,如果任务参数比较复杂多变,那么通过编程来规划参考轨迹就比较复杂了,而示教是一种比较简单直观的方法,我们可以让有经验的人带着机器人先完成一次任务,然后让机器人自动学习其中的过程,从而省去编程的复杂过程。我们希望能有一种方法,能够使用少量的参数来建模示教的轨迹,通过这些参数能够快速地复现示教轨迹,同时,还希望在复现示教轨迹的时候能够增加一些任务参数来泛化和改变原始轨迹,例如改变关节角度曲线的幅值和频率,改变机械臂末端轨迹的起始和目标位置等等,这样才能更加灵活的使用示教方法来完成实际任务。

论文作者最基本的出发点是想利用一个具有自稳定性的二阶动态系统来构造一个“吸引点”模型(attractor model),使得可以通过改变这个“吸引点”来改变系统的最终状态,从而达到修改轨迹目标位置的目的,而最简单最常用的二阶系统就是弹簧阻尼系统(PD 控制器): y¨=αy(βy(g−y)−y˙){\ddot{y}}=\alpha_{y}(\beta_{y}(g-y)-{\dot{y}}) 其中,y 表示系统状态(比如关节角度、速度、加速度等等),g 表示目标状态,最后系统会收敛到这个状态上。αy和βy\displaystyle \alpha _{y}和\beta _{y} 是两个常数,相当于 PD 控制器中的 P 参数和 D 参数。

使用弹簧阻尼系统虽然能够让系统收敛到目标状态 𝑔,却无法控制收敛的过程量,比如轨迹的形状。那么作者就想在这个 PD 控制器上叠加一个非线性项来控制收敛过程量,因此,在直观上,我们可以把 DMP 看作是一个 PD 控制器与一个轨迹形状学习器的叠加: y¨=αy(βy(g−y)−y˙)+f\ddot{y}=\alpha_{y}(\beta_{y}(g-y)-\dot{y})+f 其中,上式右边的第一项就是PD控制器,而第二项 ff 就是轨迹形状学习器,是一个非线性函数。这样,我们就可以通过改变目标状态 𝑔和非线性项 𝑓来调整我们的轨迹终点和轨迹形状了,这可以称之为空间上的改变。但还不够,我们还需要改变轨迹的速度,从而获得不同收敛速度的轨迹,这个可以通过在速度曲线 y˙\displaystyle \dot{y} 上增加一个放缩项 𝜏来实现: τ2y¨=αy(βy(g−y)−τy˙)+f\tau^{2}\ddot{y}=\alpha_{y}\bigl(\beta_{y}\bigl(g-y\bigr)-\tau\dot{y}\bigr)+f 直观上来看,我们可以知道,上面这个公式表明在这个动态的控制过程中,系统最后会收敛到状态 g ,并且非线性项 f 的参与会直接影响 y˙\displaystyle \dot{y} ,也就是直接影响到收敛的过程。通过给定不同的 τ 和 g ,我们就可以在示教曲线的基础上得到不同目标状态以及不同速度的轨迹了。

那么,这个非线性项 𝑓具体怎么构造呢?要知道,我们叠加 𝑓的目的就是为了改变轨迹的形状为我们期望的形状,那么,什么样的非线性函数可以很容易的拟合各种形状的轨迹,而且方便我们进行参数的调整呢?原大佬作者是这样考虑的,通过多个非线性基函数的归一化线性叠加来实现,因此,非线性函数 𝑓可以表示为: f(t)=∑i=1NΨi(t)wi∑i=1NΨi(t)f(t)={\frac{\sum_{i=1}^{N}\Psi_{i}(t)w_{i}}{\sum_{i=1}^{N}\Psi_{i}(t)}} 其中,\Uppsii\displaystyle \Uppsi_{i} 是基函数,其实,在后面我们可以看到,这个基函数所使用的就是高斯基函数(径向基函数), wi\displaystyle w_{i} 为每个基函数对应的权重, 𝑁为基函数的个数。我们通过给定不同的基函数和对应权重就可加权得到复杂的轨迹了。

此时,非线性项 𝑓 与时间 𝑡是高度相关的,无法直接叠加其他的动态系统进来,也无法同时建模多个自由度的轨迹并让它们在时间上与控制系统保持同步。

因此,经典 DMP 方法引入了规范系统这个概念。

二、DMP 方法中的规范系统


什么是规范系统?

规范系统(Canonical System)是动态运动原语(DMP)中的一个核心组件,它是一个独立的动态系统,用于生成一个抽象的时间变量(通常是相位变量 ss 或 ϕ\phi),以驱动运动的进展。它实现了 DMP 的时间解耦,是与变换系统配合的关键部分。

  • 术语来源:
    • “Canonical” 在数学和物理中意为“标准”或“典型”,这里指一个标准化的时间演化机制。
    • 在 DMP 的原始文献中(如 Schaal 和 Ijspeert 的论文),始终使用“Canonical System”。

规范系统的数学形式

DMP 的规范系统根据运动类型分为两种形式:

离散型 DMP 的规范系统:

  • 形式:
    τs˙=−αss\tau \dot{s} = -\alpha_s s

    • ss:相位变量,初始值 s(0)=1s(0) = 1。
    • τ\tau:时间尺度,控制运动时长。
    • αs\alpha_s:正的衰减率(通常设为 1)。
  • 解:
    s(t)=e−αst/τs(t) = e^{-\alpha_s t / \tau}

    • ss 从 1 单调衰减到接近 0。

连续型 DMP 的规范系统:

  • 形式:
    τϕ˙=1\tau \dot{\phi} = 1

    • ϕ\phi:相位变量,初始值 ϕ(0)=ϕ0\phi(0) = \phi_0。
    • τ\tau:周期的时间尺度。
  • 解:
    ϕ(t)=tτ+ϕ0\phi(t) = \frac{t}{\tau} + \phi_0

    • ϕ\phi 线性增加,模 2π2\pi 处理以保持周期性。

扩展形式:
在改进版本中(如 Ijspeert et al., 2013),可使用振荡器:
ϕ˙=ω+coupling terms\dot{\phi} = \omega + \text{coupling terms}
支持自适应频率的节奏运动。

规范系统在 DMP 中的作用

实现时间解耦 (Temporal Decoupling):

  • 作用:
    • 生成相位变量 ss 或 ϕ\phi,将运动进展与物理时间 tt 分离。
    • 变换系统中的强迫项 f(s)f(s) 或 f(ϕ)f(\phi) 依赖相位变量,而非 tt。
  • 意义:
    • 时长无关性:调整 τ\tau 可改变速度,轨迹形状不变。
    • 鲁棒性:运动暂停时,ss 或 ϕ\phi 保持值,恢复后继续演化。

驱动运动进程 (Driving the Motion):

  • 作用:
    • 离散型:ss 的衰减控制从开始到结束的进度。
    • 连续型:ϕ\phi 的增加驱动周期性重复。
  • 意义:
    • 为强迫项提供时间基准,决定扰动的时机。

确保轨迹平滑性和一致性:

  • 作用:
    • 规范系统保证相位变量的连续和平滑演化。
  • 意义:
    • 避免时间跳跃,确保轨迹稳定。

支持学习与泛化:

  • 作用:
    • ss 或 ϕ\phi 标准化(s∈[0,1]s \in [0, 1] 或 ϕ∈[0,2π]\phi \in [0, 2\pi]),便于定义强迫项基函数。
    • 学习到的 f(s)f(s) 或 f(ϕ)f(\phi) 与时间无关,可复用。
  • 意义:
    • 简化从示范中提取轨迹形状,提高可重用性。

统一离散与连续运动:

  • 作用:
    • 通过调整规范系统形式,在离散型和连续型间切换。
  • 意义:
    • 提供统一框架,适应多种任务。

在 DMP 中的工作机制

离散型示例:

  1. 初始化:s=1s = 1。
  2. 演化:s=e−t/τs = e^{-t/\tau}。
  3. 驱动强迫项:f(s)f(s) 根据 ss 施加扰动。
  4. 结束:s→0s \to 0,f(s)→0f(s) \to 0,收敛到 gg。

连续型示例:

  1. 初始化:ϕ=ϕ0\phi = \phi_0。
  2. 演化:ϕ=t/τ+ϕ0\phi = t/\tau + \phi_0。
  3. 驱动强迫项:f(ϕ)f(\phi) 周期性变化。
  4. 持续运行:运动围绕 y∗y^* 循环。

与变换系统的关系

  • 变换系统:
    τv˙=αz(βz(g−y)−v)+f(s)\tau \dot{v} = \alpha_z (\beta_z (g - y) - v) + f(s)
    • 生成轨迹(yy 和 vv)。
  • 规范系统:
    • 提供 ss 或 ϕ\phi,驱动 f(s)f(s) 或 f(ϕ)f(\phi)。
  • 耦合:通过 τ\tau 和强迫项耦合,规范系统决定“何时”,变换系统决定“如何”。

为什么需要规范系统?

  • 没有规范系统:
    • f(t)f(t) 依赖 tt,轨迹与时间绑定,难以调整或应对扰动。
  • 有规范系统:
    • 解耦时间与轨迹,增强灵活性和鲁棒性。

总结

  • 含义:生成相位变量的动态系统,标准化运动进程。
  • 正确术语:规范系统(Canonical System)。
  • 作用:时间解耦、驱动进程、确保平滑、支持学习、统一运动类型。

三、离散型 DMP 和节律性 DMP

离散型 DMP 和节律性 DMP 的区别(表格表示)

离散型 DMP(Discrete DMP)和节律性 DMP(Rhythmic DMP)是动态运动原语的两种形式,分别用于单次运动和周期性运动。以下表格对比两者的区别:

特性离散型 DMP节律性 DMP
运动类型单次、点到点运动周期性、节奏性运动
规范系统τs˙=−αss\tau\dot{s}=-\alpha_ssτϕ˙=1\tau\dot{\phi}=1 或 ϕ˙=ω\dot{\phi}=\omega
相位变量ss: 从 1 衰减到 0ϕ\phi: 线性增加或循环
目标固定目标 gg振荡中心 y∗y^*
强迫项f(s)f(s): 随 ss 衰减到 0f(ϕ)f(\phi): 持续周期性驱动
收敛性收敛到点(s=0s=0)收敛到极限环
时间特性有限时长,运动有起点和终点无限时长,运动持续循环
应用场景抓取物体、单次移动行走、搅拌、周期性任务

详细说明

  • 运动类型: 离散型 DMP 用于从起点到终点的单次移动,节律性 DMP 用于持续的周期运动。
  • 规范系统: 离散型的 ss 通过 τs˙=−αss\tau\dot{s}=-\alpha_ss 衰减,节律性的 ϕ\phi 通过 τϕ˙=1\tau\dot{\phi}=1 或 ϕ˙=ω\dot{\phi}=\omega 循环。
  • 相位变量: ss 单调递减,ϕ\phi 持续增加并可模 2π2\pi。
  • 目标: 离散型目标是固定点 gg,节律型围绕 y∗y^* 振荡。
  • 强迫项: f(s)f(s) 最终消失,f(ϕ)f(\phi) 保持振荡。
  • 收敛性: 离散型收敛到点,节律型收敛到周期轨道。
  • 时间特性: 离散型有明确时长,节律型无限重复。
  • 应用场景: 离散型适合抓取,节律型适合行走。

总结

离散型 DMP 和节律性 DMP 通过规范系统和强迫项的不同设计,分别实现单次运动和周期运动,满足不同任务需求。


DMP 模型学习和轨迹复现

动态运动原语(DMP)是一种灵活的运动生成框架,通过学习示范轨迹并复现相似运动,广泛应用于机器人控制。以下详细描述 DMP(以离散型为例)的学习过程和轨迹复现步骤,节律型 DMP 的过程类似但细节稍有不同。

DMP 模型概述

离散型 DMP 的核心包括:

  • 变换系统:τv˙=αz(βz(g−y)−v)+f(s)\tau\dot{v}=\alpha_z(\beta_z(g-y)-v)+f(s), τy˙=v\tau\dot{y}=v
  • 规范系统:τs˙=−αss\tau\dot{s}=-\alpha_ss, 解为 s(t)=e−αst/τs(t)=e^{-\alpha_st/\tau}
  • 强迫项:f(s)=∑k=1Kwkψk(s)∑k=1Kψk(s)s(g−y0)f(s)=\frac{\sum_{k=1}^{K}w_k\psi_k(s)}{\sum_{k=1}^{K}\psi_k(s)}s(g-y_0), ψk(s)=e−hk(s−ck)2\psi_k(s)=e^{-h_k(s-c_k)^2}
    学习的目标是确定强迫项的权重 wkw_k,以复现示范轨迹。

学习过程

DMP 通过模仿学习从示范轨迹中提取强迫项,具体步骤如下:

  1. 采集示范轨迹

    • 获取一组时间序列数据:位置 yd(t)y_d(t),通常通过传感器或人工示范记录。
    • 计算导数:速度 y˙d(t)\dot{y}_d(t) 和加速度 y¨d(t)\ddot{y}_d(t)(可用数值差分)。
    • 示例:yd(t)=[0,0.2,0.5,0.8,1]y_d(t)=[0,0.2,0.5,0.8,1],t=[0,0.25,0.5,0.75,1]t=[0,0.25,0.5,0.75,1]。
  2. 初始化参数

    • 设定 τ\tau(示范时长,如 1 秒),g=yd(τ)g=y_d(\tau)(目标,如 1),y0=yd(0)y_0=y_d(0)(起点,如 0)。
    • 选择 αz\alpha_z, βz\beta_z(如 αz=8\alpha_z=8, βz=2\beta_z=2),αs=1\alpha_s=1。
    • 定义基函数:KK(如 10),ck=k−1K−1c_k=\frac{k-1}{K-1},hk=12(ck+1−ck)2h_k=\frac{1}{2(c_{k+1}-c_k)^2}。
  3. 计算目标强迫项 fd(t)f_d(t)

    • 根据变换系统反推:
      fd(t)=τ2y¨d+αz(βz(g−yd)−τy˙d)f_d(t)=\tau^2\ddot{y}_d+\alpha_z(\beta_z(g-y_d)-\tau\dot{y}_d)
    • 将 tt 映射到 ss:s(t)=e−αst/τs(t)=e^{-\alpha_st/\tau},得到 fd(s)f_d(s)。
    • 示例:若 yd=0.5y_d=0.5, y˙d=1\dot{y}_d=1, y¨d=0\ddot{y}_d=0, τ=1\tau=1, 则 fd=8(2(1−0.5)−1)+0=0f_d=8(2(1-0.5)-1)+0=0。
  4. 拟合权重 wkw_k

    • 使用局部加权回归(LWR):
      wk=∑sψk(s)s(fd(s)/(g−y0))∑sψk(s)s2w_k=\frac{\sum_s\psi_k(s)s(f_d(s)/(g-y_0))}{\sum_s\psi_k(s)s^2}
    • 离散化:对 ss 的采样点计算 ψk(s)\psi_k(s) 和 fd(s)f_d(s),求解 wkw_k。
    • 意义:wkw_k 使 f(s)f(s) 逼近 fd(s)f_d(s),保留示范轨迹的形状。
  5. 验证学习结果

    • 用学习后的 wkw_k 重新计算 f(s)f(s),检查是否匹配 fd(s)f_d(s)。
    • 若误差较大,可增加 KK 或调整 hkh_k。

轨迹复现过程

学习完成后,DMP 用训练好的模型生成新轨迹,步骤如下:

  1. 初始化状态

    • 设置初始条件:y(0)=y0y(0)=y_0(可与示范不同),v(0)=0v(0)=0,s(0)=1s(0)=1。
    • 指定新目标 g′g'(可调整)和 τ′\tau'(可缩放时长)。
    • 示例:y0=0y_0=0, g′=1.5g'=1.5, τ′=2\tau'=2。
  2. 时间步进

    • 选择步长 dtdt(如 0.01),总步数 N=τ′/dtN=\tau'/dt。
    • tt 从 0 到 τ′\tau' 迭代。
  3. 更新规范系统

    • s˙=−αss/τ′\dot{s}=-\alpha_ss/\tau'
    • s(t+dt)=s(t)+s˙dts(t+dt)=s(t)+\dot{s}dt, 或 s(t)=e−αst/τ′s(t)=e^{-\alpha_st/\tau'}。
  4. 计算强迫项

    • 对当前 ss:
      f(s)=s(g′−y0)∑wkψk(s)∑ψk(s)f(s)=s(g'-y_0)\frac{\sum w_k\psi_k(s)}{\sum\psi_k(s)}
    • wkw_k 使用学习结果,ψk(s)=e−hk(s−ck)2\psi_k(s)=e^{-h_k(s-c_k)^2}。
  5. 更新变换系统

    • v˙=(αz(βz(g′−y)−v)+f(s))/τ′\dot{v}=(\alpha_z(\beta_z(g'-y)-v)+f(s))/\tau'
    • v(t+dt)=v(t)+v˙dtv(t+dt)=v(t)+\dot{v}dt
    • y˙=v\dot{y}=v
    • y(t+dt)=y(t)+vdty(t+dt)=y(t)+vdt
  6. 生成轨迹

    • 重复步骤 3-5,记录 y(t)y(t),形成完整轨迹。
    • 结果:yy 从 y0y_0 平滑移到 g′g',形状与示范相似。

节律性 DMP 的差异

  • 学习:
    • 规范系统:τϕ˙=1\tau\dot{\phi}=1,ϕ(t)=t/τ+ϕ0\phi(t)=t/\tau+\phi_0。
    • 强迫项:f(ϕ)=∑wkψk(ϕ)f(\phi)=\sum w_k\psi_k(\phi),ψk(ϕ)=e−hk(cos⁡(ϕ−ck)−1)\psi_k(\phi)=e^{-h_k(\cos(\phi-c_k)-1)}。
    • fd(t)f_d(t) 周期性,wkw_k 拟合振荡模式。
  • 复现:
    • ϕ\phi 持续增加,f(ϕ)f(\phi) 驱动周期轨迹,无衰减。

示例

  • 离散型: 示范 yd(t)=t2y_d(t)=t^2(t=0t=0 到 1),学习 wkw_k,复现时 g′=2g'=2,轨迹仍呈抛物线形状。
  • 节律型: 示范 yd(t)=sin⁡(2πt)y_d(t)=\sin(2\pi t),学习后复现周期正弦波。

总结

DMP 通过从示范轨迹反推 fdf_d 并拟合 wkw_k 实现学习,利用规范系统和变换系统复现轨迹。离散型强迫项衰减,支持单次运动;节律型强迫项周期性,支持振荡运动。两者均可泛化到新目标和时长。


四、稳定性证明

1.1 BIBO 稳定性证明

目标:证明系统对有界输入 ff 产生有界输出 yy 和 zz。

系统方程
点吸引子系统:
τz˙=αz(βz(g−y)−z)+f(x)\tau \dot{z} = \alpha_z (\beta_z (g - y) - z) + f(x)
τy˙=z\tau \dot{y} = z
τx˙=−αxx\tau \dot{x} = -\alpha_x x
其中 f(x)=∑i=1NΨi(x)wi∑i=1NΨi(x)x(g−y0)f(x) = \frac{\sum_{i=1}^N \Psi_i(x) w_i}{\sum_{i=1}^N \Psi_i(x)} x (g - y_0),Ψi(x)\Psi_i(x) 是高斯基函数。

步骤 1:无 ff 时的稳定性
τz˙=αzβz(g−y)−αzz\tau \dot{z} = \alpha_z \beta_z (g - y) - \alpha_z z
τy˙=z\tau \dot{y} = z
定义误差 e=y−ge = y - g,则 e˙=y˙=z/τ\dot{e} = \dot{y} = z / \tau。代入得:
τz˙=−αzβze−αzz\tau \dot{z} = -\alpha_z \beta_z e - \alpha_z z
状态空间形式:
[e˙z˙]=[01/τ−αzβz/τ−αz/τ][ez]=A[ez]\begin{bmatrix} \dot{e} \\ \dot{z} \end{bmatrix} = \begin{bmatrix} 0 & 1/\tau \\ -\alpha_z \beta_z / \tau & -\alpha_z / \tau \end{bmatrix} \begin{bmatrix} e \\ z \end{bmatrix} = A \begin{bmatrix} e \\ z \end{bmatrix}
特征方程:
det⁡(sI−A)=s2+αzτs+αzβzτ2=0\det(sI - A) = s^2 + \frac{\alpha_z}{\tau} s + \frac{\alpha_z \beta_z}{\tau^2} = 0
根为:
s=−αz±αz2−4αzβz2τs = \frac{-\alpha_z \pm \sqrt{\alpha_z^2 - 4 \alpha_z \beta_z}}{2\tau}
设 αz=4\alpha_z = 4,βz=1\beta_z = 1,τ=1\tau = 1:
s=−4±16−162=−2s = \frac{-4 \pm \sqrt{16 - 16}}{2} = -2
双重实根 s=−2s = -2,系统稳定且无振荡,解为 e(t)=(c1+c2t)e−2te(t) = (c_1 + c_2 t) e^{-2t},指数收敛到 0。

步骤 2:加入有界 ff
重写系统:
τz˙=αzβz((g+fαzβz)−y)−αzz\tau \dot{z} = \alpha_z \beta_z \left( \left( g + \frac{f}{\alpha_z \beta_z} \right) - y \right) - \alpha_z z
令 u=g+fαzβzu = g + \frac{f}{\alpha_z \beta_z},则:
[e˙z˙]=A[ez]+[0αzβz/τ](u−g)\begin{bmatrix} \dot{e} \\ \dot{z} \end{bmatrix} = A \begin{bmatrix} e \\ z \end{bmatrix} + \begin{bmatrix} 0 \\ \alpha_z \beta_z / \tau \end{bmatrix} (u - g)

  • f(x)f(x) 有界:Ψi(x)\Psi_i(x) 是高斯函数(0 到 1 之间),wiw_i 是有限权重,xx 从 1 衰减到 0,g−y0g - y_0 是常数。设 ∣f(x)∣≤M|f(x)| \leq M,则 ∣u−g∣≤Mαzβz|u - g| \leq \frac{M}{\alpha_z \beta_z}。
  • 线性系统解:
    [e(t)z(t)]=eAt[e(0)z(0)]+∫0teA(t−σ)[0αzβz/τ](u(σ)−g)dσ\begin{bmatrix} e(t) \\ z(t) \end{bmatrix} = e^{At} \begin{bmatrix} e(0) \\ z(0) \end{bmatrix} + \int_0^t e^{A(t-\sigma)} \begin{bmatrix} 0 \\ \alpha_z \beta_z / \tau \end{bmatrix} (u(\sigma) - g) d\sigma
  • eAte^{At} 指数衰减(因 AA 的特征值负实部),积分项受 ∣u−g∣|u - g| 界限约束。Friedland (1986) 指出,对稳定线性系统,有界输入产生有界输出,具体界限可用卷积积分估计:
    ∣e(t)∣≤∣eAte(0)∣+αzβzτ∫0t∣eA(t−σ)∣Mαzβzdσ|e(t)| \leq |e^{At} e(0)| + \frac{\alpha_z \beta_z}{\tau} \int_0^t |e^{A(t-\sigma)}| \frac{M}{\alpha_z \beta_z} d\sigma
    eAte^{At} 的范数 ∼e−2t\sim e^{-2t},积分收敛到常数,e(t)e(t) 和 z(t)z(t) 有界。

步骤 3:点吸引子收敛
x→0x \to 0 时,f(x)→0f(x) \to 0(因 xx 因子),系统退化为无输入形式,指数收敛到 gg。极限环时,f(ϕ,r)f(\phi, r) 周期性,输出为有界振荡。
结论:系统 BIBO 稳定。

1.2 收缩稳定性证明

目标:用收缩理论证明系统稳定(参考 Perk & Slotine, 2006)。

收缩理论基础(Slotine & Li, 1991)
系统 x˙=f(x,t)\dot{x} = f(x, t) 是收缩的,如果其雅可比矩阵 ∂f∂x\frac{\partial f}{\partial x} 一致负定,即存在 λ>0\lambda > 0 使:
∂f∂x+(∂f∂x)T≤−2λI\frac{\partial f}{\partial x} + \left( \frac{\partial f}{\partial x} \right)^T \leq -2\lambda I
则所有轨迹指数收敛。

层次结构

  • 规范系统:τx˙=−αxx\tau \dot{x} = -\alpha_x x
    • ∂f∂x=−αx/τ<0\frac{\partial f}{\partial x} = -\alpha_x / \tau < 0,收缩。
  • 变换系统:
    τz˙=αz(βz(g−y)−z)+f(x)\tau \dot{z} = \alpha_z (\beta_z (g - y) - z) + f(x)
    τy˙=z\tau \dot{y} = z
    雅可比矩阵:
    J=[−αzβz/τ−αz/τ1/τ0]J = \begin{bmatrix} -\alpha_z \beta_z / \tau & -\alpha_z / \tau \\ 1/\tau & 0 \end{bmatrix}
    对称化:
    J+JT=[−2αzβz/τ(1−αz)/τ(1−αz)/τ0]J + J^T = \begin{bmatrix} -2\alpha_z \beta_z / \tau & (1 - \alpha_z) / \tau \\ (1 - \alpha_z) / \tau & 0 \end{bmatrix}
    特征值需负。设 αz=4\alpha_z = 4,βz=1\beta_z = 1,τ=1\tau = 1:
    J+JT=[−8−3−30]J + J^T = \begin{bmatrix} -8 & -3 \\ -3 & 0 \end{bmatrix}
    特征多项式:λ2+8λ+9=0\lambda^2 + 8\lambda + 9 = 0,判别式 64−36=2864 - 36 = 28。根:
    λ=−8±282<0\lambda = \frac{-8 \pm \sqrt{28}}{2} < 0
    f(x)f(x) 视为外部输入,因其有界且随 xx 衰减,不破坏收缩性。

结论:规范系统驱动变换系统,二者耦合后仍收缩,稳定。

五、不变特性的严格证明

文章引用的参考文献为 Jackson (1989)。

2.1 幅度缩放证明

目标:证明 y→kyy \to k y 保持轨迹形状。

变换
原系统:
τz˙=αz(βz(g−y)−z)+f(x)\tau \dot{z} = \alpha_z (\beta_z (g - y) - z) + f(x)
τy˙=z\tau \dot{y} = z
f(x)=∑Ψi(x)wi∑Ψi(x)x(g−y0)f(x) = \frac{\sum \Psi_i(x) w_i}{\sum \Psi_i(x)} x (g - y_0)
缩放后:g→kgg \to k g,y0→ky0y_0 \to k y_0,假设 y→kyy \to k y,z→kzz \to k z:

  • y˙=z/τ→ky˙=(kz)/τ\dot{y} = z/\tau \to k \dot{y} = (k z)/\tau,成立。
  • τ(kz˙)=αz(βz(kg−ky)−kz)+f′(x)\tau (k \dot{z}) = \alpha_z (\beta_z (k g - k y) - k z) + f'(x)
  • f′(x)=∑Ψi(x)wi∑Ψi(x)x(kg−ky0)=kf(x)f'(x) = \frac{\sum \Psi_i(x) w_i}{\sum \Psi_i(x)} x (k g - k y_0) = k f(x)
  • 代入:τz˙=αz(βz(g−y)−z)+f(x)\tau \dot{z} = \alpha_z (\beta_z (g - y) - z) + f(x),形式不变。

拓扑等价
轨迹 y(t)y(t) 变为 ky(t)k y(t),是线性拉伸,保持方向和相对形状,为同胚映射。

2.2 时间缩放证明

目标:τ→kτ\tau \to k \tau,路径不变。

变换
令 t′=t/kt' = t/k,τ′=kτ\tau' = k \tau:

  • y˙=dydt=dydt′k=zτ=zkτ′=y˙k\dot{y} = \frac{dy}{dt} = \frac{dy}{dt' k} = \frac{z}{\tau} = \frac{z}{k \tau'} = \frac{\dot{y}}{k}
  • z˙=1τ[αz(βz(g−y)−z)+f(x)]=z˙k\dot{z} = \frac{1}{\tau} [\alpha_z (\beta_z (g - y) - z) + f(x)] = \frac{\dot{z}}{k}
  • x˙=−αxx/(kτ′)=x˙′/k\dot{x} = -\alpha_x x / (k \tau') = \dot{x}' / k
    轨迹 y(t)y(t) 的形状由 yy 和 zz 的关系决定,不变,仅时间拉伸。

结论:两种缩放均为拓扑等价变换。

总结

  • 稳定性:BIBO 用线性系统理论证明,收缩用雅可比分析,均严格成立。
  • 不变性:幅度和时间缩放通过代入验证,满足拓扑等价。

六、状态空间理论基础复习

什么是状态空间表示?

状态空间方法用一组一阶微分方程描述系统,而不是直接用高阶微分方程。系统的“状态”是一组变量,包含了描述系统当前行为的所有信息。
对于线性时不变(LTI)系统,状态空间模型通常写成:
x˙(t)=Ax(t)+Bu(t)\dot{x}(t) = A x(t) + B u(t)
y(t)=Cx(t)+Du(t)y(t) = C x(t) + D u(t)

  • x(t)x(t):状态向量(n 维)。
  • u(t)u(t):输入向量(m 维)。
  • y(t)y(t):输出向量(p 维)。
  • AA:状态矩阵(n×n)。
  • BB:输入矩阵(n×m)。
  • CC:输出矩阵(p×n)。
  • DD:直通矩阵(p×m,常为 0)。

为什么用状态空间?

  • 统一性:适用于 SISO 和 MIMO 系统。
  • 易于分析:可以用矩阵代数分析稳定性、可控性、可观性等。
  • 数值计算:适合计算机仿真。

稳定性分析

系统的稳定性由 AA 矩阵的特征值决定:

  • 特征值 λi\lambda_i 是方程 det⁡(λI−A)=0\det(\lambda I - A) = 0 的根。
  • 如果所有 λi\lambda_i 的实部小于 0(即 Re(λi)<0\text{Re}(\lambda_i) < 0),系统稳定。
  • 如果有特征值实部大于 0,系统不稳定。

BIBO 稳定性

BIBO(Bounded-Input Bounded-Output)稳定性关注输入输出关系:

  • 如果输入 u(t)u(t) 有界(即 ∣u(t)∣≤M<∞|u(t)| \leq M < \infty),输出 y(t)y(t) 也必须有界。
  • 对于 LTI 系统,BIBO 稳定等价于 AA 的特征值实部全负,且传递函数的极点都在左半平面。

系统解

状态空间方程的解是:
x(t)=eAtx(0)+∫0teA(t−τ)Bu(τ)dτx(t) = e^{A t} x(0) + \int_0^t e^{A (t-\tau)} B u(\tau) d\tau
y(t)=CeAtx(0)+C∫0teA(t−τ)Bu(τ)dτ+Du(t)y(t) = C e^{A t} x(0) + C \int_0^t e^{A (t-\tau)} B u(\tau) d\tau + D u(t)

  • eAte^{A t} 是状态转移矩阵。
  • 积分项是输入的卷积响应。

结合 BIBO 稳定性证明

系统方程
点吸引子系统:
τz˙=αz(βz(g−y)−z)+f(x)\tau \dot{z} = \alpha_z (\beta_z (g - y) - z) + f(x)
τy˙=z\tau \dot{y} = z
τx˙=−αxx\tau \dot{x} = -\alpha_x x
其中 f(x)=∑i=1NΨi(x)wi∑i=1NΨi(x)x(g−y0)f(x) = \frac{\sum_{i=1}^N \Psi_i(x) w_i}{\sum_{i=1}^N \Psi_i(x)} x (g - y_0)。

步骤 1:转化为状态空间形式
定义状态变量:

  • x1=y−gx_1 = y - g(位置误差)。
  • x2=zx_2 = z(速度)。
    则:
  • x1˙=y˙=z/τ=x2/τ\dot{x_1} = \dot{y} = z / \tau = x_2 / \tau
  • x2˙=z˙=1τ[αz(βz(g−y)−z)+f(x)]=1τ[−αzβzx1−αzx2+f(x)]\dot{x_2} = \dot{z} = \frac{1}{\tau} [\alpha_z (\beta_z (g - y) - z) + f(x)] = \frac{1}{\tau} [-\alpha_z \beta_z x_1 - \alpha_z x_2 + f(x)]
    状态空间形式:
    [x1˙x2˙]=[01/τ−αzβz/τ−αz/τ][x1x2]+[01/τ]f(x)\begin{bmatrix} \dot{x_1} \\ \dot{x_2} \end{bmatrix} = \begin{bmatrix} 0 & 1/\tau \\ -\alpha_z \beta_z / \tau & -\alpha_z / \tau \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} 0 \\ 1/\tau \end{bmatrix} f(x)
  • A=[01/τ−αzβz/τ−αz/τ]A = \begin{bmatrix} 0 & 1/\tau \\ -\alpha_z \beta_z / \tau & -\alpha_z / \tau \end{bmatrix}
  • B=[01/τ]B = \begin{bmatrix} 0 \\ 1/\tau \end{bmatrix}
  • 输入 u=f(x)u = f(x)
  • 输出 yout=x1y_{\text{out}} = x_1,则 C=[1 0]C = [1 \, 0],D=0D = 0。

步骤 2:无输入时的稳定性
f(x)=0f(x) = 0 时:
x˙=Ax\dot{x} = A x
计算 AA 的特征值:
det⁡(sI−A)=s2+αzτs+αzβzτ2=0\det(s I - A) = s^2 + \frac{\alpha_z}{\tau} s + \frac{\alpha_z \beta_z}{\tau^2} = 0
s=−αz±αz2−4αzβz2τs = \frac{-\alpha_z \pm \sqrt{\alpha_z^2 - 4 \alpha_z \beta_z}}{2\tau}
设 αz=4\alpha_z = 4,βz=1\beta_z = 1,τ=1\tau = 1:
s=−4±16−162=−2s = \frac{-4 \pm \sqrt{16 - 16}}{2} = -2
双重负实根 s=−2s = -2,系统稳定,x1x_1 和 x2x_2 指数衰减到 0,即 y→gy \to g,z→0z \to 0。

步骤 3:加入有界输入 f(x)f(x)
重写系统:
τz˙=αzβz((g+f(x)αzβz)−y)−αzz\tau \dot{z} = \alpha_z \beta_z \left( \left( g + \frac{f(x)}{\alpha_z \beta_z} \right) - y \right) - \alpha_z z
定义 u=g+f(x)αzβzu = g + \frac{f(x)}{\alpha_z \beta_z},则:
x˙=Ax+B(u−g)\dot{x} = A x + B (u - g)

  • f(x)f(x) 有界:设 ∣f(x)∣≤M|f(x)| \leq M,则 ∣u−g∣≤Mαzβz|u - g| \leq \frac{M}{\alpha_z \beta_z}。
  • 系统解:
    x(t)=eAtx(0)+∫0teA(t−τ)B(u(τ)−g)dτx(t) = e^{A t} x(0) + \int_0^t e^{A (t-\tau)} B (u(\tau) - g) d\tau
    yout(t)=CeAtx(0)+C∫0teA(t−τ)B(u(τ)−g)dτy_{\text{out}}(t) = C e^{A t} x(0) + C \int_0^t e^{A (t-\tau)} B (u(\tau) - g) d\tau

步骤 4:BIBO 稳定性

  • 自然响应:eAtx(0)e^{A t} x(0) 指数衰减到 0。
  • 强迫响应:积分项决定 BIBO 性。eAte^{A t} 的范数 ∥eAt∥≤Ke−λt\|e^{A t}\| \leq K e^{-\lambda t},λ=2\lambda = 2,KK 是常数。则:
    ∣∫0teA(t−τ)B(u(τ)−g)dτ∣≤∫0tKe−λ(t−τ)1τMαzβzdτ\left| \int_0^t e^{A (t-\tau)} B (u(\tau) - g) d\tau \right| \leq \int_0^t K e^{-\lambda (t-\tau)} \frac{1}{\tau} \frac{M}{\alpha_z \beta_z} d\tau
    令 s=t−τs = t - \tau:
    ∫0tKe−λsMταzβzds=KMταzβz1−e−λtλ\int_0^t K e^{-\lambda s} \frac{M}{\tau \alpha_z \beta_z} ds = \frac{K M}{\tau \alpha_z \beta_z} \frac{1 - e^{-\lambda t}}{\lambda}
    t→∞t \to \infty 时:≤KMταzβz1λ\leq \frac{K M}{\tau \alpha_z \beta_z} \frac{1}{\lambda},有界。

步骤 5:点吸引子特例
x→0x \to 0,f(x)→0f(x) \to 0,u→gu \to g,强迫响应消失,y→gy \to g。


七、 DMP 模型学习

这一部分的目标是从观察到的运动行为(比如演示数据)中,通过学习调整动态运动基元(DMPs)的参数,特别是非线性力 ff 的权重 wiw_i,让系统重现这些行为。作者提出了一种基于局部加权回归(Locally Weighted Regression, LWR)的方法,既简单又高效。

基本思路

DMPs 的核心是一个基础动态系统(弹簧阻尼模型),加上一个可学习的非线性力 ff。通过从演示数据中提取目标 ff,然后用回归方法拟合,就能让系统生成与演示一致的吸引子行为(点吸引子或极限环吸引子)。这就像教一个机器人模仿你的动作:你先示范一遍,机器人通过分析你的轨迹,调整它的“推力”来复制。

点吸引子系统的学习

系统回顾

点吸引子系统的方程是:
τz˙=αz(βz(g−y)−z)+f(x)\tau \dot{z} = \alpha_z (\beta_z (g - y) - z) + f(x)
τy˙=z\tau \dot{y} = z
τx˙=−αxx\tau \dot{x} = -\alpha_x x
其中 f(x)=∑i=1NΨi(x)wi∑i=1NΨi(x)x(g−y0)f(x) = \frac{\sum_{i=1}^N \Psi_i(x) w_i}{\sum_{i=1}^N \Psi_i(x)} x (g - y_0),Ψi(x)=exp⁡(−12σi2(x−ci)2)\Psi_i(x) = \exp\left(-\frac{1}{2\sigma_i^2} (x - c_i)^2\right) 是高斯基函数,wiw_i 是待学习的权重。

演示数据

假设我们有一组演示数据,包括位置 ydemo(t)y_{\text{demo}}(t)、速度 y˙demo(t)\dot{y}_{\text{demo}}(t) 和加速度 y¨demo(t)\ddot{y}_{\text{demo}}(t),以及初始位置 y0y_0 和目标位置 gg。这些数据可以从传感器(如运动捕捉)或仿真中获得。

目标:计算 ftargetf_{\text{target}}

我们希望系统生成的 y(t)y(t) 匹配 ydemo(t)y_{\text{demo}}(t)。从变换系统方程出发:
τz˙=αz(βz(g−y)−z)+f(x)\tau \dot{z} = \alpha_z (\beta_z (g - y) - z) + f(x)
因为 y˙=z/τ\dot{y} = z / \tau,所以 z=τy˙z = \tau \dot{y},z˙=τy¨\dot{z} = \tau \ddot{y}。代入得:
τ(τy¨)=αz(βz(g−y)−τy˙)+f\tau (\tau \ddot{y}) = \alpha_z (\beta_z (g - y) - \tau \dot{y}) + f
整理为:
f=τ2y¨−αz(βz(g−y)−τy˙)f = \tau^2 \ddot{y} - \alpha_z (\beta_z (g - y) - \tau \dot{y})
将演示数据代入,定义目标力:
ftarget(t)=τ2y¨demo(t)−αz(βz(g−ydemo(t))−τy˙demo(t))f_{\text{target}}(t) = \tau^2 \ddot{y}_{\text{demo}}(t) - \alpha_z (\beta_z (g - y_{\text{demo}}(t)) - \tau \dot{y}_{\text{demo}}(t))

  • 通俗解释:ftargetf_{\text{target}} 是演示轨迹需要的“额外推力”,减去弹簧和阻尼的贡献后剩下的部分。

学习 f(x)f(x) 的权重

现在我们知道每个时刻的目标 ftarget(t)f_{\text{target}}(t),需要调整 f(x)f(x) 的权重 wiw_i 让 f(x(t))f(x(t)) 尽量接近 ftarget(t)f_{\text{target}}(t)。因为 x(t)x(t) 是规范系统的解(x(t)=e−αxt/τx(t) = e^{-\alpha_x t / \tau}),我们可以把 ftarget(t)f_{\text{target}}(t) 看作 xx 的函数。

局部加权回归(LWR)

作者使用 LWR 来拟合 f(x)f(x):
f(x)=∑i=1NΨi(x)wi∑i=1NΨi(x)x(g−y0)f(x) = \frac{\sum_{i=1}^N \Psi_i(x) w_i}{\sum_{i=1}^N \Psi_i(x)} x (g - y_0)

  • Ψi(x)\Psi_i(x) 是基函数,决定了每个权重 wiw_i 的影响范围。
  • x(g−y0)x (g - y_0) 是调制项,确保 ff 随 xx 衰减并与幅度相关。
    LWR 的目标是最小化加权误差:
    J=∑tΨi(x(t))(ftarget(t)−wix(t)(g−y0))2J = \sum_t \Psi_i(x(t)) (f_{\text{target}}(t) - w_i x(t) (g - y_0))^2
    对 wiw_i 求导并令其为 0:
    wi=∑tΨi(x(t))ftarget(t)x(t)(g−y0)∑tΨi(x(t))(x(t)(g−y0))2w_i = \frac{\sum_t \Psi_i(x(t)) f_{\text{target}}(t) x(t) (g - y_0)}{\sum_t \Psi_i(x(t)) (x(t) (g - y_0))^2}
    文章中直接给出了简化的形式(假设离散时间步长一致):
    wi=∑tΨi(t)ftarget(t)∑tΨi(t)w_i = \frac{\sum_t \Psi_i(t) f_{\text{target}}(t)}{\sum_t \Psi_i(t)}
  • 通俗解释:每个 wiw_i 是 ftargetf_{\text{target}} 在 Ψi\Psi_i 覆盖区域的加权平均,Ψi\Psi_i 像一个“放大镜”,只关注 xx 靠近 cic_i 的部分。

离散化处理

实际中,演示数据是离散的(时间步长 Δt\Delta t):

  • ydemo(tk)y_{\text{demo}}(t_k) 是位置序列。
  • y˙demo(tk)≈ydemo(tk+1)−ydemo(tk)Δt\dot{y}_{\text{demo}}(t_k) \approx \frac{y_{\text{demo}}(t_{k+1}) - y_{\text{demo}}(t_k)}{\Delta t}
  • y¨demo(tk)≈y˙demo(tk+1)−y˙demo(tk)Δt\ddot{y}_{\text{demo}}(t_k) \approx \frac{\dot{y}_{\text{demo}}(t_{k+1}) - \dot{y}_{\text{demo}}(t_k)}{\Delta t}
    计算 ftarget(tk)f_{\text{target}}(t_k),然后用 LWR 拟合。

极限环吸引子系统的学习

系统回顾

极限环系统:
τz˙=αz(βz(g−y)−z)+f(ϕ,r)\tau \dot{z} = \alpha_z (\beta_z (g - y) - z) + f(\phi, r)
τy˙=z\tau \dot{y} = z
τϕ˙=1\tau \dot{\phi} = 1
其中 f(ϕ,r)=∑i=1NΨiwi∑i=1NΨirf(\phi, r) = \frac{\sum_{i=1}^N \Psi_i w_i}{\sum_{i=1}^N \Psi_i} r,Ψi=exp⁡(hi(cos⁡(ϕ−ci)−1))\Psi_i = \exp(h_i (\cos(\phi - c_i) - 1)) 是周期性基函数。

目标 ftargetf_{\text{target}}

类似点吸引子:
ftarget(t)=τ2y¨demo(t)−αz(βz(g−ydemo(t))−τy˙demo(t))f_{\text{target}}(t) = \tau^2 \ddot{y}_{\text{demo}}(t) - \alpha_z (\beta_z (g - y_{\text{demo}}(t)) - \tau \dot{y}_{\text{demo}}(t))
但这里 ϕ(t)=t/τ+ϕ0\phi(t) = t / \tau + \phi_0 是线性增加的相位,rr 是振幅(可以是常数或从数据估计)。

学习权重

f(ϕ)=∑i=1NΨi(ϕ)wi∑i=1NΨi(ϕ)rf(\phi) = \frac{\sum_{i=1}^N \Psi_i(\phi) w_i}{\sum_{i=1}^N \Psi_i(\phi)} r
用 LWR:
wi=∑tΨi(ϕ(t))ftarget(t)∑tΨi(ϕ(t))r2w_i = \frac{\sum_t \Psi_i(\phi(t)) f_{\text{target}}(t)}{\sum_t \Psi_i(\phi(t)) r^2}

  • Ψi(ϕ)\Psi_i(\phi) 是周期性的,覆盖一个周期(如 0 到 2π2\pi)。
  • 如果 rr 是常数,直接用;如果 rr 随时间变,可用 r(t)=(τy˙)2+(βz(g−y))2r(t) = \sqrt{(\tau \dot{y})^2 + (\beta_z (g - y))^2} 估计。

实际应用中的细节

参数选择

  • NN(基函数数量):点吸引子用 10-50 个,极限环用 5-20 个,取决于轨迹复杂度。
  • σi\sigma_i 或 hih_i:控制基函数宽度,太窄过拟合,太宽欠拟合。
  • αz\alpha_z、βz\beta_z:通常 αz=4\alpha_z = 4,βz=1\beta_z = 1(临界阻尼)。

鲁棒性

  • 数据噪声可能导致 ftargetf_{\text{target}} 不平滑,但 LWR 的局部性可以缓解。
  • 时间对齐:点吸引子用 xx 自动对齐,极限环需手动确定周期。

例子(图 6 和图 7)

  • 图 6:从手写字母轨迹学点吸引子,重现了路径。
  • 图 7:从循环运动学极限环,复制了振荡行为。

总结
学习过程是从演示轨迹反推出 ftargetf_{\text{target}},然后用 LWR 调整 wiw_i,让 ff 匹配目标。点吸引子关注单次运动,极限环关注周期性。这方法简单高效,适合机器人模仿学习。


最简单示例

为了更清楚,我给一个简单的点吸引子学习推导。
假设演示数据:

  • ydemo(t)=g(1−e−t)y_{\text{demo}}(t) = g (1 - e^{-t}),g=1g = 1,y0=0y_0 = 0,τ=1\tau = 1。
  • y˙demo(t)=e−t\dot{y}_{\text{demo}}(t) = e^{-t}
  • y¨demo(t)=−e−t\ddot{y}_{\text{demo}}(t) = -e^{-t}
    设 αz=4\alpha_z = 4,βz=1\beta_z = 1:
    ftarget(t)=12(−e−t)−4(1(1−(1−e−t))−1⋅e−t)f_{\text{target}}(t) = 1^2 (-e^{-t}) - 4 (1 (1 - (1 - e^{-t})) - 1 \cdot e^{-t})
    =−e−t−4(e−t−e−t)=−e−t= -e^{-t} - 4 (e^{-t} - e^{-t}) = -e^{-t}
    规范系统:x˙=−x\dot{x} = -x,x(t)=e−tx(t) = e^{-t},所以 ftarget(x)=−xf_{\text{target}}(x) = -x。
    用 f(x)=∑Ψi(x)wi∑Ψi(x)xf(x) = \frac{\sum \Psi_i(x) w_i}{\sum \Psi_i(x)} x 拟合,设 N=1N=1,Ψ1(x)=1\Psi_1(x) = 1:
    w1=∑(−x)x∑x2=−1w_1 = \frac{\sum (-x) x}{\sum x^2} = -1
    f(x)=−xf(x) = -x,完美匹配。

八、LWR 具体推导过程

局部加权回归背景

LWR 是一种监督学习方法,目标是从数据中拟合一组参数(如权重 wiw_i),使模型输出尽量接近目标值。它的“局部性”体现在每个参数 wiw_i 主要拟合数据中靠近某个特定区域的部分,通过权重函数(如高斯基函数)实现。文章中用 LWR 学习非线性力 f(x)f(x) 的权重 wiw_i,以匹配目标 ftarget(t)f_{\text{target}}(t)。

点吸引子系统的模型

点吸引子系统的非线性力定义为:
f(x)=∑i=1NΨi(x)wi∑i=1NΨi(x)x(g−y0)f(x) = \frac{\sum_{i=1}^N \Psi_i(x) w_i}{\sum_{i=1}^N \Psi_i(x)} x (g - y_0)

  • Ψi(x)=exp⁡(−12σi2(x−ci)2)\Psi_i(x) = \exp\left(-\frac{1}{2\sigma_i^2} (x - c_i)^2\right) 是高斯基函数,cic_i 是中心,σi\sigma_i 是宽度。
  • x(g−y0)x (g - y_0) 是调制项,确保 ff 随 xx 衰减并与幅度相关。
  • wiw_i 是待学习的权重。
    目标是从演示数据计算的 ftarget(t)f_{\text{target}}(t),通过 x(t)x(t) 映射到 ftarget(x)f_{\text{target}}(x),然后拟合 f(x)f(x)。

数据假设

给定离散演示数据:时间序列 tkt_k,位置 ydemo(tk)y_{\text{demo}}(t_k),速度 y˙demo(tk)\dot{y}_{\text{demo}}(t_k),加速度 y¨demo(tk)\ddot{y}_{\text{demo}}(t_k)。
目标力:
ftarget(tk)=τ2y¨demo(tk)−αz(βz(g−ydemo(tk))−τy˙demo(tk))f_{\text{target}}(t_k) = \tau^2 \ddot{y}_{\text{demo}}(t_k) - \alpha_z (\beta_z (g - y_{\text{demo}}(t_k)) - \tau \dot{y}_{\text{demo}}(t_k))
规范系统:τx˙=−αxx\tau \dot{x} = -\alpha_x x,解为 x(t)=x0e−αxt/τx(t) = x_0 e^{-\alpha_x t / \tau},所以每个 tkt_k 对应一个 x(tk)x(t_k)。

LWR 目标函数

LWR 的核心是定义一个误差函数,对每个权重 wiw_i 单独优化。假设我们有 KK 个数据点 (tk,ftarget(tk),x(tk))(t_k, f_{\text{target}}(t_k), x(t_k)),目标是最小化加权平方误差:
Ji=∑k=1KΨi(x(tk))(ftarget(tk)−fi(x(tk)))2J_i = \sum_{k=1}^K \Psi_i(x(t_k)) (f_{\text{target}}(t_k) - f_i(x(t_k)))^2
其中 fi(x)=wix(g−y0)f_i(x) = w_i x (g - y_0) 是第 ii 个基函数的贡献,Ψi(x(tk))\Psi_i(x(t_k)) 是权重函数,表示数据点 x(tk)x(t_k) 对 wiw_i 的影响。

  • 通俗解释:Ψi\Psi_i 像一个“放大镜”,当 x(tk)x(t_k) 靠近 cic_i 时放大误差,远离时忽略。

完整 f(x)f(x) 的误差

实际中,f(x)=∑i=1NΨi(x)wi∑i=1NΨi(x)x(g−y0)f(x) = \frac{\sum_{i=1}^N \Psi_i(x) w_i}{\sum_{i=1}^N \Psi_i(x)} x (g - y_0) 是所有基函数的加权和。但 LWR 假设每个 wiw_i 独立拟合局部数据,近似为:
f(x(tk))≈wix(tk)(g−y0)f(x(t_k)) \approx w_i x(t_k) (g - y_0) (当 x(tk)x(t_k) 靠近 cic_i 时,Ψi\Psi_i 占主导)。
总误差为:
J=∑k=1K∑i=1NΨi(x(tk))(ftarget(tk)−wix(tk)(g−y0))2J = \sum_{k=1}^K \sum_{i=1}^N \Psi_i(x(t_k)) (f_{\text{target}}(t_k) - w_i x(t_k) (g - y_0))^2
但文章简化了计算,对每个 wiw_i 单独优化。

推导 wiw_i

以 JiJ_i 为目标,优化单个 wiw_i:
Ji=∑k=1KΨi(xk)(ftarget(tk)−wixk(g−y0))2J_i = \sum_{k=1}^K \Psi_i(x_k) (f_{\text{target}}(t_k) - w_i x_k (g - y_0))^2
(简记 xk=x(tk)x_k = x(t_k))。

  1. 展开误差:
    Ji=∑k=1KΨi(xk)(ftarget2(tk)−2wixk(g−y0)ftarget(tk)+wi2xk2(g−y0)2)J_i = \sum_{k=1}^K \Psi_i(x_k) (f_{\text{target}}^2(t_k) - 2 w_i x_k (g - y_0) f_{\text{target}}(t_k) + w_i^2 x_k^2 (g - y_0)^2)
  2. 对 wiw_i 求导:
    ∂Ji∂wi=∑k=1KΨi(xk)(−2xk(g−y0)ftarget(tk)+2wixk2(g−y0)2)\frac{\partial J_i}{\partial w_i} = \sum_{k=1}^K \Psi_i(x_k) \left( -2 x_k (g - y_0) f_{\text{target}}(t_k) + 2 w_i x_k^2 (g - y_0)^2 \right)
    =−2(g−y0)∑k=1KΨi(xk)xkftarget(tk)+2wi(g−y0)2∑k=1KΨi(xk)xk2= -2 (g - y_0) \sum_{k=1}^K \Psi_i(x_k) x_k f_{\text{target}}(t_k) + 2 w_i (g - y_0)^2 \sum_{k=1}^K \Psi_i(x_k) x_k^2
  3. 令导数为 0:
    −2(g−y0)∑k=1KΨi(xk)xkftarget(tk)+2wi(g−y0)2∑k=1KΨi(xk)xk2=0-2 (g - y_0) \sum_{k=1}^K \Psi_i(x_k) x_k f_{\text{target}}(t_k) + 2 w_i (g - y_0)^2 \sum_{k=1}^K \Psi_i(x_k) x_k^2 = 0
    wi(g−y0)∑k=1KΨi(xk)xk2=∑k=1KΨi(xk)xkftarget(tk)w_i (g - y_0) \sum_{k=1}^K \Psi_i(x_k) x_k^2 = \sum_{k=1}^K \Psi_i(x_k) x_k f_{\text{target}}(t_k)
    wi=∑k=1KΨi(xk)xkftarget(tk)∑k=1KΨi(xk)xk2(g−y0)w_i = \frac{\sum_{k=1}^K \Psi_i(x_k) x_k f_{\text{target}}(t_k)}{\sum_{k=1}^K \Psi_i(x_k) x_k^2 (g - y_0)}
  • 通俗解释:分子是 ftargetf_{\text{target}} 和 xx 的加权协方差,分母是 x2x^2 的加权方差,wiw_i 是局部区域的“斜率”。

文章中的简化形式

文章给出的公式是:
wi=∑tΨi(t)ftarget(t)∑tΨi(t)w_i = \frac{\sum_t \Psi_i(t) f_{\text{target}}(t)}{\sum_t \Psi_i(t)}
这与推导结果不同。原因可能是:

  • 文章假设 x(g−y0)x (g - y_0) 被分离出来,拟合的是 ftarget(t)x(t)(g−y0)\frac{f_{\text{target}}(t)}{x(t) (g - y_0)} 的加权平均:
    定义 s(t)=ftarget(t)x(t)(g−y0)s(t) = \frac{f_{\text{target}}(t)}{x(t) (g - y_0)},目标是 f(x)/(x(g−y0))=∑Ψi(x)wi∑Ψi(x)f(x) / (x (g - y_0)) = \frac{\sum \Psi_i(x) w_i}{\sum \Psi_i(x)}。
    误差变为:
    Ji=∑k=1KΨi(xk)(s(tk)−wi)2J_i = \sum_{k=1}^K \Psi_i(x_k) (s(t_k) - w_i)^2
    求导:
    ∂Ji∂wi=∑k=1KΨi(xk)(−2s(tk)+2wi)=0\frac{\partial J_i}{\partial w_i} = \sum_{k=1}^K \Psi_i(x_k) (-2 s(t_k) + 2 w_i) = 0
    wi∑k=1KΨi(xk)=∑k=1KΨi(xk)s(tk)w_i \sum_{k=1}^K \Psi_i(x_k) = \sum_{k=1}^K \Psi_i(x_k) s(t_k)
    wi=∑k=1KΨi(xk)s(tk)∑k=1KΨi(xk)=∑k=1KΨi(xk)ftarget(tk)xk(g−y0)∑k=1KΨi(xk)w_i = \frac{\sum_{k=1}^K \Psi_i(x_k) s(t_k)}{\sum_{k=1}^K \Psi_i(x_k)} = \frac{\sum_{k=1}^K \Psi_i(x_k) \frac{f_{\text{target}}(t_k)}{x_k (g - y_0)}}{\sum_{k=1}^K \Psi_i(x_k)}
  • 但文章直接用 Ψi(t)\Psi_i(t),可能是简化符号或假设 x(g−y0)x (g - y_0) 在实现中单独处理。

校正推导

正确的 LWR 应为:
wi=∑k=1KΨi(xk)ftarget(tk)∑k=1KΨi(xk)xk(g−y0)w_i = \frac{\sum_{k=1}^K \Psi_i(x_k) f_{\text{target}}(t_k)}{\sum_{k=1}^K \Psi_i(x_k) x_k (g - y_0)} (若 ftargetf_{\text{target}} 直接拟合)。
或:
wi=∑k=1KΨi(xk)ftarget(tk)xk(g−y0)∑k=1KΨi(xk)w_i = \frac{\sum_{k=1}^K \Psi_i(x_k) \frac{f_{\text{target}}(t_k)}{x_k (g - y_0)}}{\sum_{k=1}^K \Psi_i(x_k)} (若拟合归一化后的 ff)。
文章公式可能是代码实现中的近似,实际应根据 ff 的定义调整。

极限环的 LWR

极限环中 f(ϕ,r)=∑i=1NΨi(ϕ)wi∑i=1NΨi(ϕ)rf(\phi, r) = \frac{\sum_{i=1}^N \Psi_i(\phi) w_i}{\sum_{i=1}^N \Psi_i(\phi)} r,推导类似:
Ji=∑k=1KΨi(ϕk)(ftarget(tk)−wir(tk))2J_i = \sum_{k=1}^K \Psi_i(\phi_k) (f_{\text{target}}(t_k) - w_i r(t_k))^2
wi=∑k=1KΨi(ϕk)ftarget(tk)∑k=1KΨi(ϕk)r2(tk)w_i = \frac{\sum_{k=1}^K \Psi_i(\phi_k) f_{\text{target}}(t_k)}{\sum_{k=1}^K \Psi_i(\phi_k) r^2(t_k)}

  • 若 rr 为常数,分母简化。

文章标题:dmp算法

文章作者:lyl

文章链接:https://blog.lylzxz.com/posts/dmp%E7%AE%97%E6%B3%95[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。