刚体动力学算法
最近想通过研究 MuJoCo 的文档和代码,入门仿真引擎。但是专业不足,很多说法都没有听过。 为了有个系统的认知,找来一本介绍刚体动力学算法的教材来看看。 据说 Mujoco 中用到的 RNE, CRB 算法以及稀疏惯性分解(sparse inertia factorization)都是参考的它。
引言 + chapter 1
第一部分:数学和物理基础
Chapter2: 空间向量代数 Spatial Vector Algebra |
空间矢量(spatial vector)是 6D 的向量,用于描述刚体平移和旋转两个方面的运动和力。它提供了一套紧凑的符号,用于研究刚体动力学。 使得我们可以快速的开发运动方程,并以简洁地形式表达,方便我们设计动力学算法,并将之转换成计算机代码。 |
Chapter3: 刚体系统的动力学 Dynamics of Rigid Body Systems |
刚体系统,是由若干个关节连接在一起的刚体构成的,它们可能受到各种力的作用。关节的作用是对其连接的两个物体施加运动约束,给系统引入了约束力。 本章大部分内容都是在讲描述运动约束的方法,以及如何将之应用到刚体的运动方程中。 |
Chapter4: 刚体系统建模 Modelling Rigid Body Systems |
刚体系统是由多个零部件组合而成的。这些零部件包括刚体、关节、以及各种力元件。关节负责系统的运动学约束。 本书中的动力学算法都是基于模型的,而本章将提供建立系统模型的一些套路。 |
第二部分:动力学经典算法
Chapter5: 逆动力学 Inverse Dynamics |
逆动力学是在计算产生指定刚体系统加速度所需要的力。本章介绍的递归牛顿欧拉算法,是运动树逆动力学的最简单有效的算法,其计算复杂度是 \(O(n)\)。 |
Chapter6: 正动力学——惯性矩阵法 Forward Dynamics —— Inertia Matrix Methods |
正动力学是给定作用力计算刚体系统的加速度。本章和下一章介绍运动树的正动力学。 惯性矩阵法需要计算一个 \(n \times n\) 的关节空间惯性矩阵, 然后分解该矩阵,求解 \(n\) 个关于加速度变量的线性方程组。此类算法在最坏情况下具有 \(O(n^3)\) 的复杂度,或者说是\(O(nd^2)\)的复杂度, 其中 \(d\) 是树的深度。 |
Chapter7: 正动力学——传播算法 Forward Dynamics —— Propagation Methods |
本章介绍运动树的正动力学的传播算法。该算法将加速度沿着关节,从一个刚体传播到下一个刚体。
它需要多次遍历运动树,每次遍历都对每个刚体执行固定数量的计算,其计算复杂度是 \(O(n)\)。 |
Chapter8: 闭环系统 Closed Loop Systems |
本章讨论存在环路的刚体系统的正逆动力学。主要讨论如何通过闭环系统的生成树建立闭环约束,这种方法被认为是最佳选择。 此外,本章还会简单介绍,如何从无约束刚体开始建立所有的关节约束方法。 |
第三部分:高级内容
Chapter9: 混合动力学 Hybrid Dynamics and Other Topics |
简介。 |