4. 约束问题怎样求解#
“Newton 比 PGS 高级,所以直接选 Newton”缺少了最重要的一步:它们在这个引擎里解什么问题?本章先用一个接触行理解局部更新,再定位整体系数、非线性方向和 SAP。先修是接触、摩擦和矩阵向量乘法。
速度、约束与冲量#
在固定的一步内,把示意动力学写为
\(v^*\) 表示无这些约束冲量时的速度,\(p\) 为约束冲量,\(J\) 把广义速度映射到约束速度。平移接触的 \(p\) 单位 N·s;混合转动、关节和接触的广义量不能统一标成这个单位。离散实现可能使用不同于裸质量矩阵的有效动力学矩阵,模型选择也会改变约束关系。
这组动力学关系还不够:需要接触、摩擦、限位和其他约束的法则,才能确定要解的问题。
PGS:逐行更新并立即使用新状态#
对于一个无柔顺、无摩擦的法向教学模型,设当前速度为 \(u\)、目标速度为 \(b\)、有效逆质量为 \(w\gt0\)、累计冲量为 \(p\ge0\):
用增量 \(p_{new}-p\) 更新速度,然后处理下一行。后面的约束会再次影响前面的状态,因此通常要多轮 sweep。这个标量投影展示 PGS 的局部思路,没有涵盖实际锥、block、柔顺与 articulation 处理。
例如 \(p=0\) N·s、\(u=-1\) m/s、\(b=0\)、\(w=2\) kg⁻¹,则本轮新增冲量为 0.5 N·s。若下一行又改变当前接触速度,就不能声称整个系统已满足约束。
非线性 CG 与 Newton:方向从哪里来#
对可微目标 \(F(z)\),非线性 CG 的方向可写成
再通过步长选择更新状态。\(\beta\) 的公式、重启规则、可行性处理和停止条件都属于具体实现。它不是拿一个固定矩阵运行线性 CG;后者在第 5 章单独解释。
Newton 则利用局部二阶模型,典型方向由 \(H_kd_k=-g_k\) 得到,再配合线搜索、正定化或其他约束处理。存在非光滑点时还要读实际问题及分支,不能把无约束光滑公式直接套到所有接触代码。
固定 MuJoCo 中的 PGS、非线性 CG 和 Newton 是约束求解选项;Genesis 也提供非线性 CG/Newton,但模型及合法组合不同。原生配置和固定源码见 MuJoCo、Genesis。同名方法不说明两个系统的未知量、目标和容差相同。
TGS 与 SAP 放在哪一层#
名称 |
此处应建立的认识 |
继续读什么 |
|---|---|---|
PhysX TGS |
位置迭代包含内部时间推进,有限预算的含义与普通 sweep 不同 |
|
Drake SAP |
求解离散约束问题;内部还使用 Newton 方向与线性求解 |
Drake 导读,记录接触模型和离散近似 |
kSap / kSimilar / kLagged |
Drake 的离散接触近似,决定交给 SAP 的法则 |
不列成三个与 SAP 并排的 solver |
进阶:为什么残差小仍可能不准确?
残差衡量当前离散问题某组方程或最优性条件是否满足。建模误差来自实际物体与模型的差别;离散误差来自时间/空间近似;求解误差来自没有精确解出该离散问题。把第三项减小,不能保证前两项同步减小。还要核对残差的定义、尺度、绝对/相对判据以及采样时刻,不能用同一个数值阈值比较不同引擎的任意日志字段。
配置、诊断与练习#
先写明未知量与问题,再记录算法、迭代上限、容差、实际停止原因和响应观测。若启用了 warm start,要把初始迭代状态与可复现条件也记下来。不要只留下 solver=Newton。
100 次 PGS 与 100 次 Newton 是否是相同成本? 不是;一次局部 sweep 和一次含矩阵装配/线性求解的非线性更新工作量不同,成本需实测。
线性方向残差已很小,是否该物理步已收敛? 不一定;线性系统只是当前局部问题,更新后还需检查外层目标、约束与停止条件。
切换 solver 同时改变 cone 后效果改善,能归因 solver 吗? 不能单独归因;问题表示和求解方法同时改变,需要受控对照。
English summary#
Identify the discrete problem before comparing solvers. PGS illustrates local projected updates, nonlinear CG uses gradient history, and Newton builds local second-order directions. PhysX TGS changes internal temporal updates; Drake SAP solves problems defined by separate contact approximations. Iteration counts, convergence and physical accuracy are distinct. No native experiment is reported.