动态运动基元(DMP)时间放缩系数详解
动态运动基元(DMP)时间放缩系数 \(\tau\) 详解
动态运动基元 (Dynamic Movement Primitive, DMP), 是一种轨迹规划的模仿学习方法. 其在学术界有大量的相关论文研究, 但是至今未有教材完整的介绍 DMP 这一方法. 本系列希望能够将 DMP 基础以更加通俗易懂的形式讲解 DMP , 加入一些自己的理解, 讲解一些 DMP 的初学者会困惑, 论文和网上博客未曾讲到的东西. 本文将深入讲解 DMP 中时间放缩系数 \(\tau\) , 包括一阶方程如何向二阶方程转换, \(\tau\) 的实际物理意义, \(\tau\) 的作用等等.
动态运动基元公式
DMP 的核心是通过一个简单的二阶线性系统 (弹簧-阻尼系统), 并通过加入非线性力项(forcing term) 使其表达出复杂的行为. 其核心公式如下:
其中 \(x\) 是相位变量, \(z\) 是辅助变量, \(g\) 是运动的期望最终位置, \(f\) 是非线性力项, \(\tau\) 是时间放缩系数, \(\alpha _z\), \(\beta _z\) 类似于二阶线性系统PD参数. 如果选择 \(\tau >0\), 系统将达到临界阻尼状态并收敛到 \(y=g, z=0\) 处的唯一的吸引点. \(f(x)\) 被定义为 \(N\) 个非线性基函数 (Radial Basis Function, RBF) 的线性组合, 这使得机器人能够从初始位置 \(y_0\) 平滑地跟踪到最终配置 \(g\).
如果写成二阶线性系统, 则
二阶形式的推导
相信大家看到这里都会蒙圈, 第一反应是直接将公式 \(\tau \dot{y}=z\) 代入到第一个公式中, 我们会得到
那么这里 \(\ddot{y}\) 系数为什么是 \(\tau^2\) 呢? 且这里求导究竟是对谁求导, 时间 \(t\) 还是相位 \(x\) . 作者研究 DMP 一年了, 也没有见到有人写这方面的东西, 另外还有 DMP 的开篇之作论文[1]中写到的
这里甚至时间放缩系数 \(\tau\) 只存在于 \(\ddot{y}\) 项中, 更是离谱, 后来才理解这里是的 \(\tau\) 和后面一阶线性系统中的 \(\tau\) 是两个参数, 当然这是后话.
下面开始进行一阶形式向二阶形式的推导, 首先要明确的是这里 \(\dot{y}\) 求导符号是 \(\frac{dy}{dt}\), \(\ddot{y}\) 表示 \(\frac{d^2y}{dt^2}\), 将 \(\tau \dot{y}=z\), 于是对于两个一阶方程, 我们可以写为如下形式
于是有
所以
即
这就是 DMP 核心公式的一阶形式向二阶形式的推导过程
物理意义
\(\tau\) 控制了时间的放缩, 因为实际示教轨迹编码过程中, 时间是不可控的, 我们希望模仿复现轨迹时候, 可以实现轨迹执行速度的快慢, 即 DMP 时间尺度 (temporal scaling)[1:1]泛化效果
- 在一阶形式中, \(\tau\) 直接影响相位变量的演化速度
- 在二阶形式中, \(\tau ^2\) 则表征了加速度的时间放缩
\(\tau\) 的含义
假定时间缩放系数是常数, 则
对于不同时间尺度的轨迹生成, 现在我们来考虑放缩前原始轨迹 (original) 和放缩后期望轨迹 (desired), 我们有
原始轨迹 (放缩前)
期望轨迹 (放缩后)
其中辅助变量 \(z\) 应是时间尺度不变性 (即 \(z_{original}=z_{desired}\) ), 且速度与轨迹总执行时间 \(T\) 成反比, 于是我们有
可以见得, \(\tau\) 与轨迹总执行时间成正比. 更一般地来说, 在示教和模仿复现轨迹中, 如果我们将原始的示教时间设定为 \(T_{original}=1s\), 则有
即放缩系数即代表了轨迹实际执行时间
作用: 通过调节 \(\tau\) , 我们可以调节 DMP 系统的实际执行速度.