数学公式
本节介绍皮诺曹(Pinocchio)所使用的数学公式,它是费瑟斯通(Featherstone)算法的基础。
刚体 rigid-bodies.md
几何
刚体系统是由不同部分组成的集合,这些部分包括关节、刚体和力。一个关节连接两个不同的物体,并整合这两个物体之间的所有运动学关系,使得两个物体之间能够产生相对位移。这种位移可分解为三个部分来描述:旋转、平移或者旋转与平移的组合。
旋转矩阵构成了所谓的特殊正交群 SO(n)
。目前我们感兴趣的是其中的两个群:SO(2)
和 SO(3)
。SO(3)
是三维空间中所有旋转的群。它的元素是3×3大小的矩阵。SO(2)
对平面问题很有用。它是二维空间中的旋转群。它的元素是2×2大小的矩阵。
所有齐次变换矩阵组成的集合是特殊欧几里得群 SE(n)
。与旋转矩阵类似,也有两个不同的群,SE(3)
用于三维变换,SE(2)
用于二维变换,即在平面内的变换。
对 SO(3)
对象使用四元数
要对 SO(3)
对象使用四元数,我们有几种方法。我们可以像在 [处理李群几何](@ref md_doc_a - features_e - lie) 部分的 SE(3)
示例中那样,去掉平移向量。
或者我们可以只考虑一次旋转而不是两次。例如,在与机器人自身相关的一个地标链接中,我们将起始位置视为这个地标的原点。
那么让我们考虑三维空间中的一个立方体。
使用四元数的好处
确定与旋转对应的矩阵并非易事,所以很多时候物理问题是由对
来