文章截图如下:
文章要完成的任务是,首先给定一个参考网格序列,然后在实际物理模拟中,对照参考序列施加额外的力,使得模拟的序列既保持物理真实,又能够受到参考序列控制。
对于有限元模拟,有动力学方程
其中p是顶点位移,dp/dt是速度。
令状态变量z=[p,dp/dt],可化为:
其中w是额外施加的控制力
由此可见,wfb变化时,z(t)是wfb的函数,因为对于每组wfb序列,由物理模拟方程
都可以得到z的序列。
为了当不具有外力输入时,物体按照参考轨迹运动,首先把上式的w分成多项
wff称为前馈控制力,预先算出。方法是把参考轨迹代入动力学方程得下式,反求出wff。
wext为外力,例如是用户在模拟过程中通过交互施加的力,因此模拟之前不可预知。
此处讲讲前馈与反馈: 前馈的意思是,假定预先知道系统的一些特性(此处就是物体要沿着参考轨迹运动),基于这些知识,预先给系统施加一些力。 与前馈相对的是反馈,反馈的做法是根据此时系统实际的运行偏差(此处是在模拟过程中,会遇到突然施加的一些外力),施加力使得系统偏差缩小。 前馈控制是基于"先验知识"的,是事先设计好的(正式物理模拟之前已经算出每步的wff),而反馈控制是基于实际偏差,是一种事后补救方法(在物理模拟的进行过程中,根据当前偏差去修正)。 |
控制的方法是,在每一个时刻,最小化以下关于wfb的函数:
其中z(t)是状态变量
由于z关于wfb高度非线性,需要在参考序列附近对其线性化。
令 Δz = z - zref , zref是参考序列的状态,有:
,于是
,当Δz为0时,由前述定义,wfb也为0
于是Δz变成wfb的线性函数,于是最小化的(5)式就是wfb的二次型,便可快速求解。