P97

Constraints简化问题分析

问题描述

✅ 假设有一约束:小球必须按轨道行进。

小球速度分析

✅ 根据已知条件,可以进行以下分析:由于每一时刻都满足,对时间求导,导数为零。

其中第一项为 \(g(x)\) 的雅克比矩阵,记作 \(J\) 或 \([\nabla g]^{T}\), 第二项为 \(x\) 的速度。
因此得到约束为:如果要求小球按照轨道运行,其速度必须满足以下公式。

P98

小球的约束力分析

P99

✅ 为了让小球满足约束,需给小球一个约束力。

\(^\ast \) Constraint is passive No energy gain or loss!!!

$$ f_c\cdot v=0 $$

✅ 约束力不应产生能量,即力与运动方向垂直。

P100

✅ \(J\) 本是一个矩阵,但在这个场景中 \(C\) 是常数,所以 \(J\) 是向量。 ✅ 结合是一页的结论可知:\(f_c\) 与 \(J\) 同方向,但大小未知。\(\lambda \)代表一个未知的 scale。
✅ \(f_c\) 大小以当前状态和外力情况计算而得。

P101

小球的整体受力分析

✅ 对小球做受力分析,受到外力 \(f\) 和约束力 \(f_c\).
✅ 假设 \(M,x,v.f\) 已知,求 \(f_c\) ,使得小球沿轨迹移动。

$$ \begin{align*} M\dot{v} & =f+J^T\lambda \\ Jv&=0 \end{align*} $$

✅ 公式 1:\(f=am\).公式 2:前面推导得出。把两个公式离散化。
✅ 假设当前时刻已满足 \(J_n v_n = 0\),所以只约束下一时刻。

$$ \begin{align*} M\frac{v_{n+1}-v_n}{h} & =f+J^T\lambda \\ Jv_{n+1}&=0 \end{align*} $$

✅ 得出未知数为\(\lambda\)和\(v_{n+1}\)的联立方程组,求解方程组。
✅ 因为公式 2 只约束了速度没有约束位置。离散化后对原公式只是近似,会有误差,导到小球远离曲线。
✅ 解方程组不难,但存在小球偏离轨道的问题。

P103

✅ 当物体偏离轨道,要把它拉回来。因此公式2改为:

$$ Jv_{n+1}=\alpha \frac{C-g(x_n)}{h} $$

等式右边的非零项称为 Correction of numerical errors。
𝛼: error reduction parameter (ERP)

P104

方程组求解

✅ 把校正项简写为 \(b\). \( n \) 时刻发现的误差由 \( n+1 \) 时刻来校正。
✅ 为了防止矩阵不可逆,增加 \(\beta I\).(常见技巧)
✅ 解 \(\lambda\) 需要先求逆。


本文出自CaterpillarStudyGroup,转载请注明出处。

https://caterpillarstudygroup.github.io/GAMES105_mdbook/