1物理引擎原理:积分、约束与接触求解 Physics Engine Internals
⏱ 约 20 小时仿真器的一步 = 算动力学 + 检测碰撞 + 求解约束 / 接触 + 积分。不同引擎在「接触怎么算」上分歧最大:刚性 LCP、软约束(MuJoCo)、罚函数(早期 Bullet)、可微的压力场(Drake hydroelastic)。理解这些决定了你的策略能否迁移到真机,以及仿真为什么会「爆炸」。
核心要点
- 广义坐标 vs 最大坐标;正动力学(ABA / CRBA)与约束的拼接
- 积分器:显式 / 半隐式欧拉、RK4、隐式积分;时间步长、子步与稳定性
- 碰撞检测:宽相(BVH)与窄相(GJK / MPR / SAT),凸分解,接触点生成
- 接触求解:LCP / PGS / TGS 迭代、MuJoCo 的软约束与凸优化、Drake 的 hydroelastic;参数(solref / solimp、ERP / CFM)的物理含义
- 仿真的「作弊」与假象:穿透、抖动、能量注入、过大的摩擦锥近似;如何验证仿真质量
自测:学完应该能回答
- 把 MuJoCo 的时间步从 2 ms 改到 10 ms,哪些现象会先出问题?
- 软接触参数调「硬」为什么会让仿真不稳定?
推荐资料(全部免费)
- 📝
- 📄
- 📄 Contact Models in Robotics: a Comparative AnalysisLe Lidec 等 · 2023
- 📝
- 🎬