首页 关于
树枝想去撕裂天空 / 却只戳了几个微小的窟窿 / 它透出天外的光亮 / 人们把它叫做月亮和星星
目录

Chapter2: 空间向量代数
Spatial Vector Algebra

空间矢量(spatial vector)是 6D 的向量,用于描述刚体平移和旋转两个方面的运动和力。它提供了一套紧凑的符号,用于研究刚体动力学。 单独一个空间矢量可以完成两个 3D 向量的工作,一个空间方程(spatial equation)可以替代两个甚至更多的 3D 向量方程。 借助空间向量符号,我们可以快速的开发运动方程,并以简洁地形式表达。方便我们设计动力学算法,可以很容易转换成计算机代码。

本章从第一性原理出发,介绍空间向量代数以及单一刚体的运动方程。此外还会描述平面向量代数,它是用于描述只在 2D 平面上运动的空间向量代数的特例。 关于实现空间向量算术方法参见附录 A 中,第3章将介绍空间向量用于分析一般刚体系统的方法。

2.1 预备数学知识

本部分简述空间向量代数的一些数学概念和符号。更多的细节可以参见其他一些教科书 Greenwood(1988), Selig(1996)。

向量和向量空间(Vectors and Vector Spaces): 在线性代数中,向量是向量空间(vector space)的元素。不同的向量空间定义了不同类型的向量。 本书中常用如下 4 个向量空间: $$ \begin{array}{rcl} R^n & —— & \text{坐标向量, coordinate vectors} \\ E^n & —— & \text{欧式向量,Euclidean vectors} \\ M^n & —— & \text{空间运动向量, spatial motion vectors} \\ F^n & —— & \text{空间力向量, spatial force vectors} \end{array} $$ 上述符号中上角标表示空间的维度。还有一个常用的空间是 \(m \times n\) 的矩阵所张成的空间,通常记为\(R^{m \times n}\)。 坐标向量是一个实数的 \(n\)元组,或者说是一个 \(n \times 1\) 的实数矩阵,或者说就是一个列向量。坐标向量通常用于表示其他向量, 这些向量被称为抽象向量 abstract vector。欧式向量定义了向量的内积,可以用于描述尺度以及方向。用于描述刚体动力学的 3D 向量就是欧式向量。 空间向量并不是欧式的,它由两个向量空间构成,一个用于描述运动,一个用于描述力。空间运动向量描述了,诸如速度、加速度,这样的刚体运动属性。 而空间力向量则用于描述,诸如力、冲量、动量,之类与力相关的属性。空间 \(M^6\) 和 \(F^6\) 是本章的主题。

Hats and Underlines: 当空间向量和3D向量同时出现的时候,为了避免命名冲突,我们用 hat 标记空间向量(e.g. \(\boldsymbol{\hat{v}}, \boldsymbol{\hat{f}}\))。 一般情况下,我们并不区分坐标向量和它们表示的抽象向量。必须区分时,我们给坐标向量加一个下划线(e.g. \(\boldsymbol{\underline{v}}\))。 我们只在必要的时候用这些特殊标记,在本章之外几乎用不到。

向量空间的对偶(The Dual of a Vector Space): 对于一个向量空间 \(V\),其对偶空间被标记为 \(V^*\),它是一个与\(V\)维度相同的空间, and having the property that a scalar product is defined between it and \(V\) (i.e., the scalar product takes one argument from each space). 如果 \(\boldsymbol{u} \in V^*\) 和 \(\boldsymbol{v} \in V\) 那么其标量积(scalar product)可以写作 \(\boldsymbol{u} \cdot \boldsymbol{v}\) 或 \(\boldsymbol{v} \cdot \boldsymbol{u}\), 这两个形式的意义一样。这不就是个向量的内积吗。对偶是一种对称关系,如果 \(U = V^*\) 那么 \(V = U^*\)。

空间 \(M^n\) 和 \(F^n\) 互为对偶空间。特别的,运动向量 \(\boldsymbol{m} \in M^6\) 和力向量 \(\boldsymbol{f} \in F^6\) 之间的标量积 \(\boldsymbol{m} \cdot \boldsymbol{f}\) 的物理意义就是力 \(\boldsymbol{f}\) 的功率。向量空间及其对偶的标量积必须是非退化的(nondegenerate, 或者说是非奇异的, nonsingular)。 如果一个标量积满足如下的特性,我们说它是非退化的:对于任何 \(\boldsymbol{v} \in V\), 如果 \(\boldsymbol{v} \neq \boldsymbol{0}\) 那么至少存在一个向量 \(\boldsymbol{u} \in V^*\) 满足 \(\boldsymbol{v} \cdot \boldsymbol{u} \neq 0\)。 这个特性是空间 \(V\) 和 \(V^*\) 存在对偶基的充分条件。

对偶基(Dual Bases): 假设我们有两个向量空间\(U\) 和 \(V\),并且\(U = V^*\)。 记 \(\mathcal{D} = { \boldsymbol{d}_1, \cdots, \boldsymbol{d}_n}\) 是 \(U\) 的一组基,\(\mathcal{E} = {\boldsymbol{e}_1, \cdots, \boldsymbol{e}_n}\) 是 \(V\) 的一组基。 如果这两个基满足如下条件,我们说\(\mathcal{D,E}\)构成空间\(U,V\)的一组对偶基。 $$ \boldsymbol{d}_i \cdot \boldsymbol{e}_j = \begin{cases} 1 & \text{if } i = j \\ 0 & \text{otherwise} \end{cases} $$ 这被称为 reciprocity condition。如果 \(\mathcal{D,E}\) 满足这个条件,我们就说它们互为 reciprocal。如果给定了其中一个基,另一个可以根据 reciprocity 条件惟一确定。 我们可以用\(D^*\)表示\(D\)的 reciprocal。需要注意的是,对偶基由两组基向量构成,覆盖了两个向量空间。

如果\(U=E^n\),那么我们可以找到一个空间\(V = U\),使得\(\mathcal{D,E}\)是描述同一个向量空间的两组基。我们也可以找到特定的一组基\(\mathcal{D}\), 满足\(\mathcal{D} = \mathcal{E}\),这样的基称为是正交的(orthonormal)。因此,正交基,是对偶基的一种特殊情况,\(U = V = E^n\),并且\(\mathcal{D} = \mathcal{E}\)。

对偶坐标系(Dual Coordinates): 对偶基定义了一个对偶坐标系统。我们总是用对偶坐标表示 spatial vectors,大多数情况下都是普吕克坐标系(Plücker coordinates)。 对偶坐标具有空间特性: $$ \boldsymbol{u}\cdot \boldsymbol{v} = \boldsymbol{\underline{u}}^T \boldsymbol{\underline{v}} $$ 其中 \(\boldsymbol{\underline{u}}\) 和 \(\boldsymbol{\underline{v}}\) 是坐标向量,表示 \(\boldsymbol{u} \in U\) 和 \(\boldsymbol{v} \in V\) 是由基 \(\mathcal{D}\) 和 \(\mathcal{E}\) 定义的对偶坐标系统。\(\boldsymbol{u}\) 和 \(\boldsymbol{v}\) 中的元素可以由基的点乘得到: $$ u_i = \boldsymbol{e}_i \cdot \boldsymbol{u} $$ $$ v_i = \boldsymbol{d}_i \cdot \boldsymbol{v} $$

我们需要两个变换方程,才能描述从一个坐标系统到其对偶系统的坐标变换关系,一个作用于 \(\boldsymbol{\underline{u}}\),另一个作用于 \(\boldsymbol{\underline{v}}\)。 如果 \(\boldsymbol{X}\) 是作用于 \(\boldsymbol{\underline{u}}\) 上的变换矩阵,那么作用于 \(\boldsymbol{\underline{v}}\) 的变换矩阵可以记为 \(\boldsymbol{X}^*\),它们满足关系: $$ \boldsymbol{X}^* = \boldsymbol{X}^{-T} $$ 对于所有由\(\boldsymbol{\underline{u}}\) 和 \(\boldsymbol{\underline{v}}\) 派生出来的向量,都有关系 \(\boldsymbol{\underline{u}}^T \boldsymbol{\underline{v}} = (\boldsymbol{X}\boldsymbol{\underline{u}})^T(\boldsymbol{X}^*\boldsymbol{\underline{v}})\)。

操作符 \(\boldsymbol{a} \cdot\) 和 \(\boldsymbol{a} \times\): 我们可以把诸如 \(\boldsymbol{a} \cdot \boldsymbol{b}\) 和 \(\boldsymbol{a} \times \boldsymbol{b}\) 的操作, 看作是作用在 \(\boldsymbol{b}\) 上的操作符。操作符 \(\boldsymbol{a}\cdot\) 将向量 \(\boldsymbol{b}\) 映射到标量 \(\boldsymbol{a} \cdot \boldsymbol{b}\), 而操作符 \(\boldsymbol{a} \times\) 则将\(\boldsymbol{b}\) 映射到 \(\boldsymbol{a} \times \boldsymbol{b}\)。如果 \(\boldsymbol{a}\) 是一个坐标向量, 那么\(\boldsymbol{a} \cdot = \boldsymbol{a}^T\),\(\boldsymbol{a} \times\)则是一个方阵。表 2.1 2.3中列举了一些 \(\boldsymbol{a}\times\) 的性质, 表 2.3 中还列出了其对偶操作符 \(\boldsymbol{a} \times ^*\) 的一些性质。

Dyads and Dyadics: 形如 \(\boldsymbol{ab\cdot}\) 的表达式被称为 dyad。它描述了一种向量到向量之间的线性映射关系。特别的, \(\boldsymbol{ab\cdot}\) 把向量 \(\boldsymbol{c}\) 映射为 \(\boldsymbol{a}(\boldsymbol{b \cdot c})\),相当于向量 \(\boldsymbol{a}\) 乘上一个标量。 如果 \(\boldsymbol{\underline{a}}\) 和 \(\boldsymbol{\underline{b}}\) 是派生向量 \(\boldsymbol{a,b}\) 的坐标向量,那么 \(\boldsymbol{ab\cdot}\) 可以写成矩阵的形式 \(\boldsymbol{\underline{a}}\boldsymbol{\underline{b}}^T\),其秩为 1。一般情况下, 有向量空间\(\boldsymbol{a} \in \boldsymbol{U}, \boldsymbol{b} \in \boldsymbol{V}, \boldsymbol{c} \in \boldsymbol{W}\), 其中蕴含的标量积是定义在空间\(\boldsymbol{V, W}\)中,而 dyad 建立的是向量空间 \(\boldsymbol{W}\) 到 \(\boldsymbol{U}\) 的映射。

dyadic(或者说是 dyadic 张量)描述的是向量的一般线性映射关系。任何 dyadic 都可以写成 \(r\) 个线性无关的 dyad 的和: $$ \boldsymbol{L} = \sum_{i = 1}^r \left( \boldsymbol{a}_i \boldsymbol{b}_i \cdot \right) $$ 其中,\(\boldsymbol{a}_i \in \boldsymbol{U}, \boldsymbol{b}_i \in \boldsymbol{V}, r ≤ \min(m, n)\)。其中,\(m = \dim(\boldsymbol{U}), n = \dim(\boldsymbol{V})\)。 如果 \(\boldsymbol{U}\) 中的向量 \(\boldsymbol{a}_i\) 是线性无关的,并且 \(\boldsymbol{V}\) 中的向量 \(\boldsymbol{b}_i\) 是线性无关的,那么对应的 dyads 集合就是线性无关的。 如果 \(\boldsymbol{a}_i\) 和 \(\boldsymbol{b}_i\) 是坐标向量,那么 \(\boldsymbol{L}\) 可以写作: $$ \boldsymbol{L} = \sum_{i=1}^r \boldsymbol{a}_i \boldsymbol{b}_i^T $$ 这是一个 \(m \times n\) 的矩阵,其秩为 \(r\)。如果 \(m = n = r\) 那么\(\boldsymbol{L}\)就是一个 1:1 映射,一一映射?,并且是不可逆的。 Dyadics 通常于空间惯性张量一起使用。

2.2 空间速度

现在,我们从刚体 \(B\),以及空间中任意选择一个固定的点 \(O\)开始,推导描述刚体空间速度的公式。如图2.1(a)所示,给定点 \(O\), \(B\) 的速度可以由两个3D向量来表述:与刚体固连并在当前瞬间与\(O\)重合的点的线速度 \(\boldsymbol{v}_O\),和角速度向量\(\boldsymbol{\mathcal{w}}\)。 每个瞬间,整个刚体的运动可以归结为,以线速度 \(\boldsymbol{v}_O\) 的平移运动,和一个穿过 \(O\) 点的角速度\(\boldsymbol{\mathcal{w}}\)的旋转运动。

按照这种表述方式,我们可以写出刚体任意一点 \(P\) 的速度 \(\boldsymbol{v}_P\):

$$ \begin{equation}\label{equa_2_1} \boldsymbol{v}_P = \boldsymbol{v}_O + \boldsymbol{\mathcal{w}} \times \vec {OP} \end{equation} $$

其中,\(\vec{OP}\) 是点\(P\)相对于\(O\)的位置矢量。显然 \(\boldsymbol{v}_P\) 由两个部分构成,一个是刚体整体的线速度, 另一个是由旋转和位置偏移量产生的速度。尽管两个分量都与\(O\)的位置有关,但是它们的和会抵消掉这个依赖,所以\(\boldsymbol{v}_P\)只与\(B\)的运动和\(P\)的位置有关。 \(P, \boldsymbol{v}_P, \boldsymbol{\mathcal{w}}\) 与 \(O, \boldsymbol{v}_O, \boldsymbol{\mathcal{w}}\)描述的是同一个刚体运动。

图 2.1. (a) 向量 \(\boldsymbol{\mathcal{w}}\) 和 \(\boldsymbol{v}_O\) 描述的刚体速度。 (b) 普吕克运动坐标的基向量。

现在我们以\(O\)为原点,建立笛卡尔坐标系\(O_{xyz}\)。该坐标系有三个穿过原点的有方向的直线\(Ox, Oy, Oz\),定义了三个相互垂直的方向\(x,y,z\)。 定义了一个正交基\({\boldsymbol{i}, \boldsymbol{j}, \boldsymbol{k}} \subset E^3\),我们可以将 \(\boldsymbol{\mathcal{w}}\) 和 \(\boldsymbol{v}_O\)写成笛卡尔坐标的形式: $$ \boldsymbol{\mathcal{w}} = \mathcal{w}_x \boldsymbol{i} + \mathcal{w}_y \boldsymbol{j} + \mathcal{w}_z \boldsymbol{k} $$ $$ \boldsymbol{v}_O = v_{Ox}\boldsymbol{i} + v_{Oy}\boldsymbol{j} + v_{Oz}\boldsymbol{k} $$ 用坐标系表述 \(\boldsymbol{\mathcal{w}}\) 和 \(\boldsymbol{v}_O\),也可以将 \(B\) 的速度可以分解为6个运动项的和: 分别绕着\(Ox, Oy, Oz\)转动的\(\mathcal{w}_x, \mathcal{w}_y, \mathcal{w}_z\),以及沿着\(x,y,z\)三个方向的平移运动\(v_{Ox}, v_{Oy}, v_{Oz}\)。 我们的目标是获得一个空间向量 \(\hat{\boldsymbol{v}} \in M^6\) 同时描述 \(\boldsymbol{\mathcal{w}}\) 和 \(\boldsymbol{v}_O\)。 如图2.1(b)所示,首先我们需要定义一组 \(M^6\) 的基: $$ \begin{equation}\label{equa_2_2} \mathcal{D}_O = \left\{ \boldsymbol{d}_{Ox}, \boldsymbol{d}_{Oy}, \boldsymbol{d}_{Oz}, \boldsymbol{d}_{x}, \boldsymbol{d}_{y}, \boldsymbol{d}_{z} \right\} \subset M^6 \end{equation} $$ 实际上,这是一个普吕克基(Plücker basis),定义了\(M^6\)上的普吕克坐标系。前三个基向量, \(\boldsymbol{d}_{Ox}, \boldsymbol{d}_{Oy}, \boldsymbol{d}_{Oz}\), 分别是绕着直线\(Ox, Oy, Oz\)转动的三个单位旋转矢量,剩下三个基向量则是沿着\(x,y,z\)平移的三个单位平移矢量。刚体的速度可以写成如下的6项之和: $$ \begin{equation}\label{equa_2_3} \hat{\boldsymbol{v}} = \mathcal{w}_x \boldsymbol{d}_{Ox} + \mathcal{w}_y \boldsymbol{d}_{Oy} + \mathcal{w}_z \boldsymbol{d}_{Oz} + v_{Ox} \boldsymbol{d}_x + v_{Oy} \boldsymbol{d}_y + v_{Oz} \boldsymbol{d}_z \end{equation} $$ 实际上,普吕克坐标系\(\mathcal{D}_O\)下的速度矢量\(\hat{\boldsymbol{v}}\)是笛卡尔坐标系\(\{\boldsymbol{i,j,k}\}\)下的\(\boldsymbol{\mathcal{w}}\)和\(\boldsymbol{v}_O\)。 尽管式(\(\ref{equa_2_3}\)) 中右侧的每一项都与 \(O_{xyz}\) 的位置和方向有关,但是该表达式整体却与之无关(详细参见例2.2)。 \(\mathcal{D}_O\)坐标系下表述 \(\hat{\boldsymbol{v}}\)的坐标向量可以写作: $$ \begin{equation}\label{equa_2_4} \underline{\hat{\boldsymbol{v}}}_O = \begin{bmatrix} \mathcal{w}_x \\ \mathcal{w}_y \\ \mathcal{w}_z \\ v_{Ox} \\ v_{Oy} \\ v_{Oz} \end{bmatrix} = \begin{bmatrix} \underline{\boldsymbol{w}} \\ \underline{\boldsymbol{v}}_O \end{bmatrix} \end{equation} $$

Example 2.1:式(\(\ref{equa_2_1}\))的向量\(\boldsymbol{v}_P\)对空间中的每个点\(P\)都有效。因而定义了一个向量场——刚体\(B\)的速度场。我们可以将之写成如下的形式: $$ \begin{equation}\label{equa_2_5} \boldsymbol{V}(P) = \boldsymbol{v}_O + \boldsymbol{\mathcal{w}} \times \vec {OP} \end{equation} $$ 其中,\(\boldsymbol{V}\)表示向量场,\(\boldsymbol{V}(P)\)是与点\(P\)关联的速度。尽管\(O\)出现在\(V\)的定义里,但是无论\(O\)在什么位置,上式的右侧都是不变的。 空间向量和向量场的联系可以帮助我们对空间向量进行可视化。比如说,\(\hat{\boldsymbol{v}}_1\) 和 \(\hat{\boldsymbol{v}}_2\) 是两个空间向量, 并且\(\boldsymbol{V}_1, \boldsymbol{V}_2\)是与之对应的向量场。如果有\(\hat{\boldsymbol{v}}_{sum} = \hat{\boldsymbol{v}}_1 + \hat{\boldsymbol{v}}_2\) 那么与 \(\hat{\boldsymbol{v}}_{sum}\) 关联的向量场,对于所有点\(P\)都有属性\(\boldsymbol{V}_{sum}(P) = \boldsymbol{V}_1(P) + \boldsymbol{V}_2(P)\)

图 2.2. 在坐标系\(O\)中表示\(\boldsymbol{d}_{Py}, \boldsymbol{d}_{Pz}\)。

Example 2.2:现在我们,以点\(P\)为原点构建空间速度矢量\(\hat{\boldsymbol{v}}'\),并证明 \(\hat{\boldsymbol{v}}' = \hat{\boldsymbol{v}}\), 来研究一下公式(\(\ref{equa_2_3}\))的不变性。其中 \(\hat{\boldsymbol{v}}'\) 可以展开为:

$$ \hat{\boldsymbol{v}}' = \mathcal{w}_x \boldsymbol{d}_{Px} + \mathcal{w}_y \boldsymbol{d}_{Py} + \mathcal{w}_z \boldsymbol{d}_{Pz} + v_{Px} \boldsymbol{d}_x + v_{Py} \boldsymbol{d}_y + v_{Pz} \boldsymbol{d}_z $$

图2.2所示,不妨设\(P\)相对于坐标系\(O_{xyz}\)的坐标为 \((r, 0, 0)\)。根据式(\(\ref{equa_2_1}\))有\(P\)点的线速度:

$$ \begin{bmatrix} v_{Px} \\ v_{Py} \\ v_{Pz} \end{bmatrix} = \underline{\boldsymbol{v}}_O + \underline{\boldsymbol{\mathcal{w}}} \times \begin{bmatrix} r \\ 0 \\ 0 \end{bmatrix} = \begin{bmatrix} v_{Ox} \\ v_{Oy} + \mathcal{w}_z r \\ v_{Oz} - \mathcal{w}_y r \end{bmatrix} $$

那么\(P\)点的三个基向量可以写作:

$$ \begin{align} \boldsymbol{d}_{Px} & = \boldsymbol{d}_{Ox} \\ \boldsymbol{d}_{Py} & = \boldsymbol{d}_{Oy} + r \boldsymbol{d}_z \\ \boldsymbol{d}_{Pz} & = \boldsymbol{d}_{Oz} - r \boldsymbol{d}_y \end{align} $$

将这些式子组合起来,有:

$$ \hat{\boldsymbol{v}}' = \mathcal{w}_x \boldsymbol{d}_{Ox} + \mathcal{w}_y \left(\boldsymbol{d}_{Oy} + r\boldsymbol{d}_{z}\right) + \mathcal{w}_z \left(\boldsymbol{d}_{Oz} - r\boldsymbol{d}_y\right) + v_{Ox} \boldsymbol{d}_x + \left(v_{Oy} + \mathcal{w}_z r\right)\boldsymbol{d}_y + \left(v_{Oz} - \mathcal{w}_y r\right)\boldsymbol{d}_z $$

这正是式(\(\ref{equa_2_3}\))。我们再来看看三个基向量\(\boldsymbol{d}_{Px},\boldsymbol{d}_{Py},\boldsymbol{d}_{Pz}\),因为直线\(Px\)于\(Ox\)重合, 所以有\(\boldsymbol{d}_{Px} = \boldsymbol{d}_{Ox}\)。至于\(Py\),我们可以想象刚体绕着 \(Py\) 转动,刚体上的固定点\(O\)将在 z 方向上产生一个臂长为 \(r\) 的矩, 如图2.2所示,所以\(\boldsymbol{d}_y\) 由矢量\(\boldsymbol{d}_{Oy}\)和矩\(r\boldsymbol{d}_z\)两项构成。 我更愿意理解为,矢量\(\boldsymbol{d}_{Py}\) 沿\(Ox\)平移了\(r\)的距离,所以产生了矩\(r\boldsymbol{d}_z\)。 类似的还有,\(\boldsymbol{d}_{Pz} = \boldsymbol{d}_{Oy} - r \boldsymbol{d}_y\)。

这里的分析可以扩展到\(P\)去任何位置的一般情况。类似的分析也可以用于验证\(O_{xyz}\)的方向,也不会影响式(\(\ref{equa_2_3}\))。

2.3 空间力

图 2.3. (a) 作用在刚体上的力可以归结为力\(\boldsymbol{f}\)和力偶\(\boldsymbol{n}_O\)。 (b) 普吕克力坐标的基向量。

图2.3(a)所示,关于空间中任意一个点\(O\),作用在刚体\(B\)上的力,都可以归结为一个通过点\(O\)的力\(\boldsymbol{f}\),和一个力偶\(\boldsymbol{n}_O\)。 给定点\(O\)力偶\(\boldsymbol{n}_O\)和力\(\boldsymbol{f}\),我们可以用如下的公式计算关于任意点\(P\)的总力矩: $$ \begin{equation}\label{equa_2_6} \boldsymbol{n}_P = \boldsymbol{n}_O + \boldsymbol{f} \times \vec{OP} \end{equation} $$ 该式与式(\(\ref{equa_2_1}\))的形式相同,只是\(\boldsymbol{f}\)替换了\(\boldsymbol{\mathcal{w}}\); \(\boldsymbol{n}_{O}, \boldsymbol{n}_{P}\)替换了\(\boldsymbol{v}_{O}, \boldsymbol{v}_{P}\)。同样的该式的形式,与\(O\)的位置无关, \(O,\boldsymbol{n}_O, \boldsymbol{f}\)与\(P, \boldsymbol{n}_P, \boldsymbol{f}\) 描述的是相同的作用力。以\(O\)为原点,建立笛卡尔坐标系\(O_{xyz}\), 由此定义一组正交基\(\{\boldsymbol{i,j,k} \} \in E^3\),那么\(\boldsymbol{n}_O\)和\(\boldsymbol{f}\)可以写成如下形式: $$ \boldsymbol{n}_O = n_{Ox}\boldsymbol{i} + n_{Oy}\boldsymbol{j} + n_{Oz}\boldsymbol{k} $$ $$ \boldsymbol{f} = f_x \boldsymbol{i} + f_y \boldsymbol{j} + f_z \boldsymbol{k} $$ 我们可以将作用在刚体\(B\)上的力写成6项的和:沿着\(x,y,z\)三个方向的力偶\(n_{Ox}, n_{Oy}, n_{Oz}\),和作用在直线\(Ox, Oy, Oz\)上的力\(f_x, f_y, f_z\)。 构成空间\(F^6\)的普吕克基,如图2.3(b)所示: $$ \begin{equation}\label{equa_2_7} \mathcal{E}_O = \left\{ \boldsymbol{e}_x, \boldsymbol{e}_y, \boldsymbol{e}_z, \boldsymbol{e}_{Ox}, \boldsymbol{e}_{Oy}, \boldsymbol{e}_{Oz} \right\} \subset F^6 \end{equation} $$ 其中,前三项分别是\(x,y,z\)方向上的单位力偶,后三项则是沿着\(Ox, Oy, Oz\)方向的单位线性力。那么空间力向量 \(\hat{\boldsymbol{f}} \in F^6\)可以写成如下的6个项的和 $$ \begin{equation}\label{equa_2_8} \hat{\boldsymbol{f}} = n_{Ox} \boldsymbol{e}_x + n_{Oy} \boldsymbol{e}_y + n_{Oz} \boldsymbol{e}_z + f_x \boldsymbol{e}_{Ox} + f_y \boldsymbol{e}_{Oy} + f_z \boldsymbol{e}_{Oz} \end{equation} $$ 虽然,上式中右侧的每一项都与\(O_{xyz}\)的位置或方向有关系,但是其整体却与之无关,即,\(\hat{\boldsymbol{f}}\) 的取值与 \(O_{xyz}\) 无关,只与作用在刚体\(B\)上的力有关。 \(\mathcal{E}_O\)坐标系中\(\hat{\boldsymbol{f}}\)的坐标向量可以写成: $$ \begin{equation}\label{equa_2_9} \underline{\hat{\boldsymbol{f}}}_O = \begin{bmatrix} n_{Ox} \\ n_{Oy} \\ n_{Oz} \\ f_x \\ f_y \\ f_z \end{bmatrix} = \begin{bmatrix} \underline{n}_O \\ \underline{f} \end{bmatrix} \end{equation} $$ 其中,\(\underline{\boldsymbol{n}}_O = \begin{bmatrix} n_{Ox} & n_{Oy} & n_{Oz} \end{bmatrix}^T, \underline{\boldsymbol{f}} = \begin{bmatrix} f_x & f_y & f_z \end{bmatrix}^T\)。

2.4 普吕克符号(Plücker Notation)

普吕克坐标系可以追溯到19世纪,但是其基向量却是一个比较新的概念。选择普吕克坐标系表达 6D 向量,一方面是他们方便计算机实现,更主要是因为它们十分方便好用。 式(\(\ref{equa_2_4}\))(\(\ref{equa_2_9}\))中出现的符号,就是普吕克坐标系下速度和力的表示方法。在描述速度时,我们分别用了两个不同3D向量\(\boldsymbol{v}\) 和 \(\boldsymbol{\mathcal{w}}\), 来描述线速度和角速度,最后在式(\(\ref{equa_2_4}\))中将之整合到普吕克坐标系下。类似的,对于力,我们也分别用了两个3D向量表示线性力和力矩,在式(\(\ref{equa_2_9}\))中整合到普吕克坐标系下。

一般情况下,坐标可以说是一种向量。如果\(\hat{\boldsymbol{m}}\)和\(\hat{\boldsymbol{f}}\)分别是\(M^6, F^6\)中的元素,那么它们的普吕克坐标可以写作:

$$ \underline{\hat{\boldsymbol{m}}}_O = \begin{bmatrix} m_x \\ m_y \\ m_z \\ m_{Ox} \\ m_{Oy} \\ m_{Oz} \end{bmatrix} = \begin{bmatrix} \underline{\boldsymbol{m}} \\ \underline{\boldsymbol{m}}_O \end{bmatrix} \qquad \text{and} \qquad \underline{\hat{\boldsymbol{f}}}_O = \begin{bmatrix} f_{Ox} \\ f_{Oy} \\ f_{Oz} \\ f_x \\ f_y \\ f_z \end{bmatrix} = \begin{bmatrix} \underline{\boldsymbol{f}} \\ \underline{\boldsymbol{f}}_O \end{bmatrix} $$

我们总是按照 angular-before-linear 的顺序写普吕克坐标。虽然我们总是把三个角度坐标写在前面,但是读者应该知道,把三个线性坐标写在前面也完全没有问题的,只是书写顺序不同而已。 从数学的角度看,坐标的顺序并没有什么特别的作用。但是从计算机的角度看,其顺序会影响数据在内存中的分布,在程序中应当统一一种顺序。

2.5 线向量和自由向量(Line Vectors and Free Vectors)

线向量(line vector)是由有向的直线和长度描述的量。刚体的一个纯旋转运动就是一个线向量,作用在刚体上的一个线性力也是线向量。自由向量则是由方向和长度描述的量。 刚体的纯平移运动就是自由向量,作用在刚体上的一对力偶也是自由向量。我们需要5个数来描述线向量,而自由向量则只需要3个数。线向量也可以由一个自由向量和直线上的一个点来表示。

令\(\hat{\boldsymbol{s}}\)为任意空间向量,\(\boldsymbol{s}, \boldsymbol{s}_O\)分别为构成普吕克坐标\(\hat{\{\boldsymbol{s}}\)的两个3D坐标向量。 有如下一些关于线向量和自由向量的事实:

上式意味着,除自由向量之外的任何空间向量,都可以由一个有向直线、直线长度、转动角度(angular magnitude) 唯一地表示。自由向量也可以按照类似的方式描述, 但是并不唯一,因为它只关心直线的方向。

根据旋量理论(screw theory),螺旋运动(helical or screwing motion)是刚体最一般的运动形式,即,刚体绕着一个轴转动的同时沿着该轴前进。这种运动也被称为twist。 类似的,刚体上最一般的作用力是,沿着空间中某个直线的线性力,以及绕着该直线的力偶,这样的力被称为wrench。对于这两种情况,转轴本身称为螺旋轴screw axis, 自由向量的长度与线向量长度的比值称为螺距pitch。纯自由向量被看作是螺距无穷大的 twist 和 wrench,没有螺旋轴的定义。\(M^6\) 和 \(F^6\) 的元素可以分别看做是 twists 和 wrenches。

空间向量并不是欧式向量,因而没有欧式空间中模长的概念。但是有四种空间向量可以找到有意义的模长定义,它们是旋转、平移、线性力和力偶。 它们的模长只能在同类之间比较,比如说,一个旋转运动只能跟别的旋转运动比转的快慢,不能跟平移比距离长短,也不能跟力比大小。

模长为1的向量被称为单位向量。但是单位"1"的意义由所选择系统单位决定。比如说,单位转动速度可以使一弧度每秒,单位平移速度可以使一米每秒。 因此,普吕克基向量都是单位向量,不仅依赖于坐标系的位置和速度,还依赖于系统的单位。

2.6 标量积(Scalar Product)

空间向量的标量积是指,一个运动向量与一个力向量的乘积,它们的结果是一个标量,表示能量、功率或者类似意义的量。 给定\(\boldsymbol{m} \in M^6, \boldsymbol{f} \in F^6\),标量积可以写成\(\boldsymbol{m} \cdot \boldsymbol{f}\),也可以是\(\boldsymbol{f} \cdot \boldsymbol{m}\),它们的意义是一样的。 但是 \(\boldsymbol{m} \cdot \boldsymbol{m}\) 和 \(\boldsymbol{f} \cdot \boldsymbol{f}\) 并没有定义,或者说空间\(M^6, F^6\)中没有内积的概念。 如果 \(\boldsymbol{f}\) 是作用在刚体上的力,\(\boldsymbol{m}\)是其速度,那么\(\boldsymbol{m} \cdot \boldsymbol{f}\)就是力\(\boldsymbol{f}\)释放的功率。 标量积建立了空间\(M^6\)和\(F^6\)之间的对偶关系。它给空间向量代数带来了如下的一些影响:

  1. 我们在空间\(M^6\)和\(F^6\)上使用对偶坐标系;
  2. 力和运动向量遵循不同的坐标变换规则;
  3. 有两个叉乘运算: 一个用于运动向量,另一个用于力,详细参见§2.9

空间\(M^6\)和\(F^6\)上的一个对偶坐标系,是由两组基 \(\{\boldsymbol{d}_1, \cdots, \boldsymbol{d}_6 \} \subset M^6, \{\boldsymbol{e}_1, \cdots, \boldsymbol{e}_6\} \subset F^6\) 构成的任何坐标系。这两组基向量满足条件:

$$ \begin{equation}\label{equa_2_11} \boldsymbol{d}_i \cdot \boldsymbol{e}_j = \begin{cases} 1 & \text{if}\ i = j \\ 0 & \text{otherwise} \end{cases} \end{equation} $$

式(\(\ref{equa_2_2}\))(\(\ref{equa_2_7}\))中定义的\(\mathcal{D}_O\) 和 \(\mathcal{E}_O\) 就构成了一个对偶坐标系统。对偶坐标系统的最重要特性就是, 如果 \(\underline{\boldsymbol{m}}, \underline{\boldsymbol{f}}\) 分别表示对偶坐标系统中的向量\(\boldsymbol{m} \in M^6, \boldsymbol{f} \in F^6\),那么 $$ \begin{equation}\label{equa_2_12} \boldsymbol{m} \cdot \boldsymbol{f} = \underline{\boldsymbol{m}}^T \underline{\boldsymbol{f}} \end{equation} $$ 这意味着针对运动和力,我们需要不同的坐标变换矩阵。如果矩阵 \(\boldsymbol{X}\) 是作用在运动向量上对的坐标变换矩阵, \(\boldsymbol{X}^*\) 作用在力向量上, 那么有关系: $$ \begin{equation}\label{equa_2_13} \boldsymbol{X}^* = \boldsymbol{X}^{-T} \end{equation} $$ 因为对于所有的\(\underline{\boldsymbol{m}}\)和\(\underline{\boldsymbol{f}}\),都有\(\underline{\boldsymbol{m}}^T\underline{\boldsymbol{f}} = \left(\boldsymbol{X\underline{m}}\right)^T\left(\boldsymbol{X}^*\underline{\boldsymbol{f}}\right)\),所以得出上式(\(\ref{equa_2_13}\))。

2.7 应用空间向量(Using Spatial Vectors)

空间向量是用来表达和分析刚体及刚体系统动力学的工具。本小节将列举一个应用空间向量的规则清单,描述了空间向量及其物理内涵。清单的最后几项涉及了一些我们尚未介绍的内容, 如加速度、动量、惯性。

usage: \(M^6\)中的元素描述了刚体的运动,比如说:速度、加速度、无穷小位移、运动自由度和约束的方向等。\(F^6\)中的元素描述作用在刚体上的力, 以及于力相关的量,比如:动量、冲量、力的自由度和约束的方向。

唯一性(uniqueness):\(M^6\)中的元素与刚体所有可能的运动之间存在一个1:1的映射关系,一一映射? 同样的在\(F^6\)的元素和所有可能作用在刚体上的力之间也存在一个1:1的映射关系。

相对速度(relative velocity):如果刚体\(B_1\)和\(B_2\)分别有速度\(\boldsymbol{v}_1\)和\(\boldsymbol{v}_2\),那么\(B_2\)相对于\(B_1\)的相对速度是 \(\boldsymbol{v}_{rel} = \boldsymbol{v}_2 - \boldsymbol{v}_1\)。

刚性连接(rigid connection): 如果两个物体之间是刚性连接,那么它们的速度就是一样的。

合力(summation of forces):如果力\(\boldsymbol{f}_1\)和\(\boldsymbol{f}_2\)都作用在相同的刚体上, 那么它们等效于一个力\(\boldsymbol{f}_{tot} = \boldsymbol{f}_1 + \boldsymbol{f}_2\)

作用与反作用力(action and reaction):如果刚体 \(B_1\) 在刚体 \(B_2\) 产生了作用\(\boldsymbol{f}\),那么\(B_2\)就会产生一个反作用力\(-\boldsymbol{f}\)给\(B_1\)。

标量积(scalar product):如果一个力\(\boldsymbol{f}\)作用到一个刚体上,并且具有速度\(\boldsymbol{v}\),那么该力发出的功率为\(\boldsymbol{f}\cdot\boldsymbol{v}\)。

scaling:相比于上一条,一个力\(\alpha \boldsymbol{f}\) 作用到具有速度\(\beta \boldsymbol{v}\) 的刚体上将产生\(\alpha\beta\)倍的功率。 一个以速度\(\boldsymbol{v}\)匀速运动的刚体,运动\(\alpha\)个时间单位所产生的位移,与以速度\(\alpha \boldsymbol{v}\)匀速运动一个时间单位产生的位移相同。

加速度(acceleration):空间加速度是空间速度的变化率。空间加速度也是一个向量,它准从于速度相同的矢量和运算规则。 比如说,如果\(\boldsymbol{v}_{rel} = \boldsymbol{v}_2 - \boldsymbol{v}_1\),那么\(\boldsymbol{a}_{rel} = \boldsymbol{a}_2 - \boldsymbol{a}_1\)。

惯性和(summation of inertias):如果刚体\(B_1\)和\(B_2\)分别有惯性\(\boldsymbol{I}_i, \boldsymbol{I}_2\),并且它们刚性连接在一起构成一个刚体, 那么整体的惯性就是\(\boldsymbol{I}_1 + \boldsymbol{I}_2\)

动量(momentum):如果一个刚体有空间惯性\(\boldsymbol{I}\) 和速度\(\boldsymbol{v}\),那么它的动量就是\(\boldsymbol{Iv}\)。

运动方程(equation of motion):刚体动量的变化率等于作用在其上的力,即,\(\boldsymbol{f} = \text{d}/\text{d}t(\boldsymbol{Iv})\)。 如果我们计算该微分,有\(\boldsymbol{f} = \boldsymbol{Ia} + \boldsymbol{v} \times^* \boldsymbol{Iv}\)。

图 2.4. 运动链

Example 2.3: 图 2.4中描述了一堆刚体,它们铰接在一起形成了一条运动链,其一端与一个固定的基座铰接。 具有这样结构的一种经典系统就是工业机械臂。在该系统中一共有\(N\)个移动的刚体和\(N\)个关节,我们把固定的基座记为 0,那么第\(i\)个关节从刚体\(i -1\)连接到刚体\(i\)。 我们采用"从-到"句式(from-to)描述这种关节的连接关系,这样可以通过关节的速度(velocity across the joint)描述 '到to' 刚体相对于 '从from' 刚体的相对速度。 如果\(\boldsymbol{v}_{Ji}\) 是关节 \(i\) 的速度,刚体\(i\)的速度是\(\boldsymbol{v}_i\),那么有 \(\boldsymbol{v}_{Ji} = \boldsymbol{v}_i - \boldsymbol{v}_{i-1}\)。

我们应该假设每个关节只有一个运动自由度,那么\(\boldsymbol{v}_{Ji}\)可以描述成一个标量乘上一个运动向量,即,\(\boldsymbol{v}_{Ji} = \boldsymbol{s}_i \dot{q}_i\)。 其中,\(\boldsymbol{s}_i\)和\(\dot{q}_i\)是关节\(i\)的轴向量和速度。如果关节\(i\)是个旋转关节,那么\(\boldsymbol{s}_i\)将是一个单位旋转向量。此是,若\(\dot{q}_i = 1\), 则\(\boldsymbol{v}_{Ji}\)也是一个单位旋转速度矢量。如果关节\(i\)是个平移关节,那么\(\boldsymbol{s}_i\)将是一个单位平移向量。 固定基座的速度为0,即\(\boldsymbol{v}_0 = \boldsymbol{0}\),那么对于该系统中的每一个刚体,我们可以写出其速度关系: $$ \begin{equation}\label{equa_2_16} \boldsymbol{v}_i = \boldsymbol{v}_{i-1} + \boldsymbol{s}_i \dot{q}_i \end{equation} $$ 根据这个等式,我们集义从基座开始依次计算得到各个刚体的速度。我们也可以将上式写成如下的形式: $$ \begin{equation}\label{equa_2_17} \boldsymbol{v}_i = \sum_{j=1}^i \boldsymbol{s}_j \dot{q}_j \end{equation} $$ 从计算的角度来讲,式(\(\ref{equa_2_16}\))比(\(\ref{equa_2_17}\))的效率高,因为它复用了之前的计算结果。我们还可以将之写成矩阵的形式: $$ \begin{equation}\label{equa_2_18} \boldsymbol{v}_i = \begin{bmatrix} \boldsymbol{s}_1 & \boldsymbol{s}_2 & \cdots & \boldsymbol{s}_i & \boldsymbol{0} & \cdots & \boldsymbol{0} \end{bmatrix} \begin{bmatrix} \dot{q}_1 \\ \vdots \\ \dot{q}_N \end{bmatrix} = \boldsymbol{J}_i \dot{\boldsymbol{q}} \end{equation} $$ 其中,\(\boldsymbol{J}_i\) 是一个\(6\times N\)的矩阵,被称为刚体\(i\)的雅可比矩阵,\(\dot{\boldsymbol{q}}\) 是关节空间(joint-space)的速度向量。

2.8 坐标变换(Coordinate Transforms)

我们把运动向量从 A 到 B 的坐标变换写成\({}^B\!\boldsymbol{X}_A\),力向量的坐标变换写成\({}^B\!\boldsymbol{X}^*_A\)。 两者之间具有关系 \({}^B\!\boldsymbol{X}^*_A = {}^B\!\boldsymbol{X}^{-T}_A\),参见式(\(\ref{equa_2_13}\))。本节我们将要讨论普吕克坐标系统的坐标变换公式。

记\(A\)和\(B\)分别是两个普吕克坐标系,都是由笛卡尔坐标系的位置和方向构成的,每个坐标系都对应一个笛卡尔坐标系。为了表述方便,我们不在符号上区分普吕克坐标系和笛卡尔坐标系。 坐标变换\({}^B\!\boldsymbol{X}_A\)只和\(B\)相对于\(A\)的位置和姿态有关,所以它可以写成两个简单的变换:一个描述\(B\)的相对位置,另一个描述它的相对姿态。

旋转(Rotation)

若\(A\)和\(B\)的笛卡尔坐标系的原点重合在点\(O\),那么,给定\(O\)任何运动向量\(\hat{\boldsymbol{m}} \in M^6\) 都可以由两个3D向量表示,\(\boldsymbol{m}, \boldsymbol{m}_O\), 向量\(\hat{\boldsymbol{m}}\)就是普吕克坐标,对应的\(\boldsymbol{m}, \boldsymbol{m}_O\)则是其笛卡尔坐标。考虑到坐标系, 我们用\({}^A\!\hat{\boldsymbol{m}}, {}^A\!\boldsymbol{m}, {}^A\!\boldsymbol{m}_O, {}^B\!\hat{\boldsymbol{m}}, {}^B\!\boldsymbol{m}, {}^B\!\boldsymbol{m}_O\) 分别表示运动向量在\(A,B\)两个坐标系下的普吕克和笛卡尔坐标。令\(E\)为从\(A\)到\(B\)\(3\times3\)的旋转矩阵。我们有: $$ {}^B\!\hat{\boldsymbol{m}} = \begin{bmatrix} {}^B\!\boldsymbol{m} \\ {}^B\!\boldsymbol{m}_O \end{bmatrix} = \begin{bmatrix} \boldsymbol{E} {}^A\!\boldsymbol{m} \\ E {}^A\!\boldsymbol{m}_O \end{bmatrix} = \begin{bmatrix} \boldsymbol{E} & \boldsymbol{0} \\ \boldsymbol{0} & \boldsymbol{E} \end{bmatrix} {}^A\!\hat{\boldsymbol{m}} $$ 所以,有: $$ \begin{equation}\label{equa_2_19} {}^B\!\boldsymbol{X}_A = \begin{bmatrix} \boldsymbol{E} & \boldsymbol{0} \\ \boldsymbol{0} & \boldsymbol{E} \end{bmatrix} \end{equation} $$ 力向量的坐标变换也完全一样,因为旋转矩阵的转置就是它的逆\(E^T = E^{-1}\)。 $$ \begin{equation}\label{equa_2_20} {}^B\!\boldsymbol{X}^*_A = {}^B\!\boldsymbol{X}^{-T}_A = \begin{bmatrix} \boldsymbol{E} & \boldsymbol{0} \\ \boldsymbol{0} & \boldsymbol{E} \end{bmatrix} \end{equation} $$

平移(Translation)

我们在空间中两个点\(O,P\)上分别建立一个笛卡尔坐标系,并保证这两个坐标系的姿态相同。那么在\(O\)点,运动向量\(\hat{\boldsymbol{m}} \in M^6\)由 3D 向量 \(\boldsymbol{m}, \boldsymbol{m}_O\) 构成,在\(P\)点,则为\(\boldsymbol{m}, \boldsymbol{m}_P\),并且有, \(\boldsymbol{m}_P = \boldsymbol{m}_O - \vec{OP} \times \boldsymbol{m}\),参见公式(\(\ref{equa_2_1}\))。所以我们有 $$ \hat{\boldsymbol{m}}_P = \begin{bmatrix} \boldsymbol{m} \\ \boldsymbol{m}_P \end{bmatrix} = \begin{bmatrix} \boldsymbol{m} \\ \boldsymbol{m}_O - \boldsymbol{r} \times \boldsymbol{m} \end{bmatrix} = \begin{bmatrix} \boldsymbol{1} & \boldsymbol{0} \\ -\boldsymbol{r} \times & \boldsymbol{1} \end{bmatrix} \hat{\boldsymbol{m}}_O $$ 其中,\(\boldsymbol{r} = \vec{OP}\)。因此有 $$ \begin{equation}\label{equa_2_21} {}^P\!\boldsymbol{X}_O = \begin{bmatrix} \boldsymbol{1} & \boldsymbol{0} \\ -\boldsymbol{r}\times & \boldsymbol{1} \end{bmatrix} \end{equation} $$ 对应的,力向量的变换为: $$ \begin{equation}\label{equa_2_22} {}^P\!\boldsymbol{X}^*_O = {}^P\!\boldsymbol{X}^{-T}_O = \begin{bmatrix} \boldsymbol{1} & -\boldsymbol{r} \times \\ \boldsymbol{0} & \boldsymbol{1} \end{bmatrix} \end{equation} $$ 操作符\(\boldsymbol{a}\times\)作用到向量 \(\boldsymbol{b}\) 相当于这两个向量的叉乘,即,\(\boldsymbol{a} \times \boldsymbol{b}\)。如果\(\boldsymbol{a}\)是一个3D坐标向量, 那么\(\boldsymbol{a}\times\) 是一个 \(3\times3\)的矩阵: 参见斜对称矩阵 $$ \begin{equation}\label{equa_2_23} S(\boldsymbol{v}) = \begin{bmatrix} 0 & -z & y \\ z & 0 & -x \\ -y & x & 0 \end{bmatrix} \end{equation} $$

表 2.1列举了该操作符的一些数学特性。此外,我们需要把\(\boldsymbol{a} \times \boldsymbol{b} \times \boldsymbol{c}\), 看做\((\boldsymbol{a}\times)(\boldsymbol{b}\times)\boldsymbol{c}\),或者\(\boldsymbol{a}\times(\boldsymbol{b}\times\boldsymbol{c})\)。 表达式\(\boldsymbol{a} + \boldsymbol{b} \times \boldsymbol{c}\) 和 \(\boldsymbol{E} \boldsymbol{a}\times\)的意思是, \(\boldsymbol{a} + (\boldsymbol{b} \times \boldsymbol{c})\) 和 \(\boldsymbol{E}(\boldsymbol{a}\times)\)。

表 2.1 欧式叉乘操作的一些性质.
Properties of the Euclidean cross operator

\(\boldsymbol{a} \times = - \boldsymbol{a} \times ^T\)
\((\lambda \boldsymbol{a}) \times = \lambda(\boldsymbol{a} \times)\) \(\lambda\) 是一个标量
\((\boldsymbol{a} + \boldsymbol{b}) \times = \boldsymbol{a}\times + \boldsymbol{b}\times\)
\((\boldsymbol{Ea}) \times = \boldsymbol{E} (\boldsymbol{a}\times) \boldsymbol{E}^{-1}\) \(\boldsymbol{E}\) 是正交矩阵
\((\boldsymbol{a} \times) \boldsymbol{b} = -(\boldsymbol{b} \times)\boldsymbol{a}\)
\((\boldsymbol{a} \times \boldsymbol{b})\cdot = \boldsymbol{a} \cdot (\boldsymbol{b}\times)\) \((\boldsymbol{a} \times \boldsymbol{b})^T = \boldsymbol{a}^T\boldsymbol{b}\times\)
\((\boldsymbol{a} \times \boldsymbol{b})\times = (\boldsymbol{a} \times) (\boldsymbol{b} \times) - (\boldsymbol{b}\times)(\boldsymbol{a}\times)\)
\((\boldsymbol{a} \times \boldsymbol{b})\times = \boldsymbol{b} \boldsymbol{a}^T - \boldsymbol{a}\boldsymbol{b}^T\)
\((\boldsymbol{a} \times)(\boldsymbol{b}\times) = \boldsymbol{b} \boldsymbol{a}^T - (\boldsymbol{a} \cdot \boldsymbol{b}) \boldsymbol{1}_{3\times 3}\)

表 2.2 普吕克变换和旋转的一些公式.
Functions for rotations and Plücker transforms

$$ \text{rx}(\theta) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & c & s \\ 0 & -s & c \end{bmatrix} $$ $$ \text{ry}(\theta) = \begin{bmatrix} c & 0 & -s \\ 0 & 1 & 0 \\ s & 0 & c \end{bmatrix} $$ $$ \text{rz}(\theta) = \begin{bmatrix} c & s & 0 \\ -s & c & 0 \\ 0 & 0 & 1 \end{bmatrix} $$
$$ c = \cos(\theta), \quad s = \sin(\theta) $$
$$ \text{rot}(\boldsymbol{E}) = \begin{bmatrix} \boldsymbol{E} & \boldsymbol{0} \\ \boldsymbol{0} & \boldsymbol{E} \end{bmatrix} $$ $$ \text{xlt}(\boldsymbol{r}) = \begin{bmatrix} \boldsymbol{1} & \boldsymbol{0} \\ -\boldsymbol{r}\times & \boldsymbol{1} \end{bmatrix} $$ $$ \begin{array}{rcl} \text{rotx}(\theta) & = & \text{rot}(\text{rx}(\theta)) \\ \text{roty}(\theta) & = & \text{rot}(\text{ry}(\theta)) \\ \text{rotz}(\theta) & = & \text{rot}(\text{rz}(\theta)) \\ \end{array} $$

一般变换(General Transforms)

假设\(A,B\)分别是原点在\(O,P\)上的笛卡尔坐标系,令\(\boldsymbol{r}\)为\(A\)坐标系下\(\vec{OP}\)的向量,\(\boldsymbol{E}\)为从\(A\)到\(B\)的3D旋转矩阵。 那么从\(A\)到\(B\)的普吕克变换可以写成它们乘积,运动向量的变换公式可以写成如下的形式: $$ \begin{equation}\label{equa_2_24} {}^B\!\boldsymbol{X}_A = \begin{bmatrix} \boldsymbol{E} & \boldsymbol{0} \\ \boldsymbol{0} & \boldsymbol{E} \end{bmatrix} \begin{bmatrix} \boldsymbol{1} & \boldsymbol{0} \\ -\boldsymbol{r}\times & \boldsymbol{1} \end{bmatrix} = \begin{bmatrix} \boldsymbol{E} & \boldsymbol{0} \\ -\boldsymbol{E}\boldsymbol{r}\times & \boldsymbol{E} \end{bmatrix} \end{equation} $$ 力向量的变换公式为: $$ \begin{equation}\label{equa_2_25} {}^B\!\boldsymbol{X}^*_A = \begin{bmatrix} \boldsymbol{E} & \boldsymbol{0} \\ \boldsymbol{0} & \boldsymbol{E} \end{bmatrix} \begin{bmatrix} \boldsymbol{1} & -\boldsymbol{r}\times \\ \boldsymbol{0} & \boldsymbol{1} \end{bmatrix} = \begin{bmatrix} \boldsymbol{E} & -\boldsymbol{E}\boldsymbol{r}\times \\ \boldsymbol{0} & \boldsymbol{E} \end{bmatrix} \end{equation} $$ 这两个变换的逆则是: $$ \begin{equation}\label{equa_2_26} {}^A\!\boldsymbol{X}_B = \begin{bmatrix} \boldsymbol{1} & \boldsymbol{0} \\ \boldsymbol{r}\times & \boldsymbol{1} \end{bmatrix} \begin{bmatrix} \boldsymbol{E}^T & \boldsymbol{0} \\ \boldsymbol{0} & \boldsymbol{E}^T \end{bmatrix} = \begin{bmatrix} \boldsymbol{E}^T & \boldsymbol{0} \\ \boldsymbol{r} \times \boldsymbol{E}^T & \boldsymbol{E}^T \end{bmatrix} \end{equation} $$ 和 $$ \begin{equation}\label{equa_2_27} {}^A\!\boldsymbol{X}^*_B = \begin{bmatrix} \boldsymbol{1} & \boldsymbol{r}\times \\ \boldsymbol{0} & \boldsymbol{1} \end{bmatrix} \begin{bmatrix} \boldsymbol{E}^T & \boldsymbol{0} \\ \boldsymbol{0} & \boldsymbol{E}^T \end{bmatrix} = \begin{bmatrix} \boldsymbol{E}^T & \boldsymbol{r}\times \boldsymbol{E}^T \\ \boldsymbol{0} & \boldsymbol{E}^T \end{bmatrix} \end{equation} $$ 作为对比,从\(A\)到\(B\)的\(4 \times 4\)齐次变换矩阵为: $$ \begin{equation}\label{equa_2_28} {}^B\!\boldsymbol{T}_A = \begin{bmatrix} \boldsymbol{E} & -\boldsymbol{Er} \\ \boldsymbol{0} & 1 \end{bmatrix} \end{equation} $$ 为了方便表述普吕克变换,我们有时会使用表 2.2中列举的函数。比如,式(\(\ref{equa_2_24}\))就可以写成\({}^B\!\boldsymbol{X}_A = \text{rot}(\boldsymbol{E}) \text{xlt}(\boldsymbol{r})\)。最后,我们对这些符号表述的坐标变换进行一些说明。\({}^B\!\boldsymbol{X}_A\) 或者 \({}^B\!\boldsymbol{E}_A\) 描述的是, 我们该如何移动坐标系\(A\),使之与坐标系\(B\)重合。比如,表达式 \(\text{rotx}(\theta)\) 表述的是绕着 \(x\) 轴转动 \(\theta\) 角,它所对应的 \({}^B\!\boldsymbol{X}_A\), 就是在讲坐标系\(B\)相对于坐标系\(A\)绕着\(x\)轴转动了\(\theta\)角。

2.9 空间叉积(Spatial Cross Products)

若一个欧式向量\(\boldsymbol{r} \in E^3\)以角速度\(\boldsymbol{\mathcal{w}}\)转动,没有其他运动。 该向量的微分可以通过著名的公式\(\dot{\boldsymbol{r}} = \boldsymbol{\mathcal{w}} \times \boldsymbol{r}\)得到。此时,\(\boldsymbol{\mathcal{w}}\times\)就像是一个微分操作符,将\(\boldsymbol{r}\)映射到\(\dot{\boldsymbol{r}}\)。 这一思想也可以扩展到空间向量中,但是我们需要两个操作符,一个用于用于运动向量,一个用于力向量。

假设刚体的空间运动向量\(\hat{\boldsymbol{m}}\in M^6\)和空间力向量\( \hat{\boldsymbol{f}} \in F^6\)以速度\(\hat{\boldsymbol{v}} \in M^6\)运动。 我们定义两个新的操作符\(\times\) 和\(\times^*\),满足如下的公式。这两个操作符具有类似坐标变换矩阵\(\boldsymbol{X}\)和\(\boldsymbol{X}^*\)的特性,可以说\(\times\)和\(\times^*\)具有对偶关系。

$$ \begin{equation}\label{equa_2_29} \dot{\hat{\boldsymbol{m}}} = \hat{\boldsymbol{v}} \times \hat{\boldsymbol{m}} \end{equation} $$ $$ \begin{equation}\label{equa_2_30} \dot{\hat{\boldsymbol{f}}} = \hat{\boldsymbol{v}} \times^* \hat{\boldsymbol{f}} \end{equation} $$

下图以叉积表的形式给出了这两个操作符的含义。假设空间向量以表中左侧所列的速度运动,那么其各元素都是表头所列的基向量的微分。 比如说,图 2.5(a)一个坐标系正以\(\boldsymbol{d}_{Ox}\)的速度运动,这意味着,它将以单位角速率绕着直线\(Ox\)转动了\(\delta t\)时间。 该运动并不会对\(Ox\)有什么影响,反而会让\(Oy\)在y-z平面上转动\(\delta t\)弧度。

图 2.5. 空间叉积表。

所以我们有\(\boldsymbol{d}_{Ox}(t + \delta t) = \boldsymbol{d}_{Ox}(t)\), \(\boldsymbol{d}_{Oy}(t + \delta t) = \boldsymbol{d}_{Oy}(t) + \delta t \boldsymbol{d}_{Oz}\),其关于时间的导数为: $$ \begin{align} \frac{\text{d}}{\text{d}t} \boldsymbol{d}_{Ox} & = \lim_{\delta \to 0} \frac{\boldsymbol{d}_{Ox}(t + \delta t) - \boldsymbol{d}_{Ox}(t)}{\delta t} \\ & = \lim_{\delta \to 0} \frac{\boldsymbol{d}_{Ox}(t) - \boldsymbol{d}_{Ox}(t)}{\delta t} = \boldsymbol{0} \end{align} $$ 而 $$ \begin{align} \frac{\text{d}}{\text{d}t} \boldsymbol{d}_{Oy} & = \lim_{\delta \to 0} \frac{\boldsymbol{d}_{Oy}(t + \delta t) - \boldsymbol{d}_{Oy}(t)}{\delta t} \\ & = \lim_{\delta \to 0} \frac{\boldsymbol{d}_{Oy}(t) + \delta t \boldsymbol{d}_{Oz} - \boldsymbol{d}_{Oy}(t)}{\delta t} = \boldsymbol{d}_{Oz} \end{align} $$ 这正是第一个表中第一行的前两个元素。类似的,图 2.5(b)描述的是坐标系以\(\boldsymbol{d}_x\)的速度运动了\(\delta t\)的时间, 该运动同样对\(Ox\)没有影响,但会导致\(Oy\)沿\(x\)方向平移了\(\delta t\)个长度单位。因此,我们有\(\boldsymbol{d}_{Ox}(t + \delta t) = \boldsymbol{d}_{Ox}(t)\)。 意味着 \(\dot{\boldsymbol{d}}_{Ox} = \boldsymbol{0}\)。而\(\boldsymbol{d}_{Oy}(t + \delta t) = \boldsymbol{d}_{Oy}(t) + \delta t \boldsymbol{d}_z\),即, \(\dot{\boldsymbol{d}}_{Oy} = \boldsymbol{d}_z\)。这是第一个表中第四行的前两项。表中的其它项都可以类似的方式得到。

通过图 2.5的映射表,我们可以将\(\hat{\boldsymbol{v}}\times\) 和 \(\hat{\boldsymbol{v}}\times^*\) 的\(6 \times 6\)矩阵写成普吕克坐标的形式:

$$ \begin{equation}\label{equa_2_31} \hat{\boldsymbol{v}}_{O} \times = \begin{bmatrix} \boldsymbol{\mathcal{w}} \\ \boldsymbol{v}_O \end{bmatrix} \times = \begin{bmatrix} \boldsymbol{\mathcal{w}}\times & \boldsymbol{0} \\ \boldsymbol{v}_O \times & \boldsymbol{\mathcal{w}} \times \end{bmatrix} \end{equation} $$ $$ \begin{equation}\label{equa_2_32} \hat{\boldsymbol{v}}_O \times ^* = \begin{bmatrix} \boldsymbol{\mathcal{w}} \\ \boldsymbol{v}_O \end{bmatrix} \times ^* = \begin{bmatrix} \boldsymbol{\mathcal{w}} \times & \boldsymbol{v}_O \times \\ \boldsymbol{0} & \boldsymbol{\mathcal{w}} \times \end{bmatrix} = - \left(\hat{\boldsymbol{v}}_O \times \right)^T \end{equation} $$

两个空间向量的叉积可以写成如下的形式,表 2.3中还列举了空间向量叉积的其他一些性质。

$$ \begin{equation}\label{equa_2_33} \begin{bmatrix} \boldsymbol{\mathcal{w}} \\ \boldsymbol{v}_O \end{bmatrix} \times \begin{bmatrix} \boldsymbol{m} \\ \boldsymbol{m}_O \end{bmatrix} = \begin{bmatrix} \boldsymbol{\mathcal{w}} \times \boldsymbol{m} \\ \boldsymbol{\mathcal{w}} \times \boldsymbol{m}_O + \boldsymbol{v}_O \times \boldsymbol{m} \end{bmatrix} \end{equation} $$ $$ \begin{equation}\label{equa_2_34} \begin{bmatrix} \boldsymbol{\mathcal{w}} \\ \boldsymbol{v}_O \end{bmatrix} \times \begin{bmatrix} \boldsymbol{f}_O \\ \boldsymbol{f} \end{bmatrix} = \begin{bmatrix} \boldsymbol{\mathcal{w}} \times \boldsymbol{f}_O + \boldsymbol{v}_O \times \boldsymbol{f} \\ \boldsymbol{\mathcal{w}} \times \boldsymbol{f} \end{bmatrix} \end{equation} $$

表 2.3 空间叉积运算符的一些特性.
Properties of the spatial cross operators

表 2.4 向量形式的微分公式.
Differentiation formulae for vector expressions

2.10 微分(Differentiation)

向量的微分定义与标量的一样。如果\(\boldsymbol{v}(x)\)是关于标量\(x\)的向量函数,并且可微,那么它的微分定义为: $$ \begin{equation}\label{equa_2_35} \frac{\text{d}}{\text{d}x} \boldsymbol{v}(x) = \lim_{\delta x \to 0} \frac{\boldsymbol{v}(x + \delta x) - \boldsymbol{v}(x)}{\delta x} \end{equation} $$ 对向量的微分,实际上是对它的各个元素的微分,因此上式可以展开成如下的形式: $$ \frac{\text{d}}{\text{d}x} \begin{bmatrix} v_1(x) \\ \vdots \\ v_n(x) \end{bmatrix} = \lim_{\delta x \to 0} \frac{1}{\delta x}\begin{bmatrix} v_1(x + \delta x) - v_1(x) \\ \vdots \\ v_n(x + \delta x) - v_n(x) \end{bmatrix} = \begin{bmatrix} \frac{\text{d} v_1}{\text{d} x} \\ \vdots \\ \frac{\text{d} v_n}{\text{d} x} \end{bmatrix} $$ 上式也适用于矩阵和 dyadics。大多数时候,我们都在研究关于时间的微分,常常将微分运算写成点的形式,即,\(\text{d}\boldsymbol{v} / \text{d} t = \dot{\boldsymbol{v}}, \text{d}\dot{\boldsymbol{v}} / \text{d} t = \ddot{\boldsymbol{v}}\)。向量的微分仍然是一个向量,运动向量的微分还是运动向量,力向量的微分还是力向量。 表 2.4 中列举了多种向量的微分公式。

运动坐标的微分(Differentiation in Moving Coordinates)

运动坐标的微分问题是,将一个坐标向量\(\boldsymbol{v}\),映射到另一个坐标向量\(\dot{\boldsymbol{v}}\)。如果基向量是固定的,那么它的解就是坐标向量的各个分量的微分。 否则,运动坐标的微分还需要考虑基向量的运动。

假设普吕克坐标系\(A\)正以空间速度\(\boldsymbol{v}_A\)相对于一个笛卡尔坐标系运动。我们有两个坐标向量\({}^A\!\boldsymbol{m}, {}^A\!\boldsymbol{f}\), 分别表示空间向量\(\boldsymbol{m} \in M^6, \boldsymbol{f} \in F^6\)。那么在\(A\)坐标系下这两个向量的微分\(\dot{\boldsymbol{m}}, \dot{\boldsymbol{f}}\)可以写作:

$$ \begin{equation}\label{equa_2_36} {}^A\!\left(\frac{\text{d}\boldsymbol{m}}{\text{d} t}\right) = \frac{\text{d}{}^A\!\boldsymbol{m}}{\text{d}t} + {}^A\!\boldsymbol{v}_A \times {}^A\!\boldsymbol{m} \end{equation} $$ $$ \begin{equation}\label{equa_2_37} {}^A\!\left(\frac{\text{d}\boldsymbol{f}}{\text{d} t}\right) = \frac{\text{d}{}^A\!\boldsymbol{f}}{\text{d}t} + {}^A\!\boldsymbol{v}_A \times^* {}^A\!\boldsymbol{f} \end{equation} $$

上式左侧是\(A\)坐标系下的坐标向量\(\dot{\boldsymbol{m}}, \dot{\boldsymbol{f}}\),右侧的\(\text{d} {}^A\!\boldsymbol{m} / \text{d} t\) 和 \(\text{d} {}^A\!\boldsymbol{f}/\text{d}t\)表示\({}^A\!\boldsymbol{m}, {}^A\!\boldsymbol{f}\)逐项微分的向量, \({}^A\!\boldsymbol{v}_A\)则是坐标向量\(\boldsymbol{v}_A\)在\(A\)坐标系下的表达。 这个形式与3D欧式向量的微分形式类似:

$$ \begin{equation}\label{equa_2_38} {}^A\!\left(\frac{\text{d}\boldsymbol{u}}{\text{d}t} = \frac{\text{d}{}^A\!\boldsymbol{u}}{\text{d} t} + {}^A\!\boldsymbol{\mathcal{w}}_A \times {}^A\!\boldsymbol{u} \right) \end{equation} $$

式中,\(\boldsymbol{u} \in E^3\)是被微分的3D欧式向量,\(\boldsymbol{\mathcal{w}}_A\)是坐标系的角速度矢量。 需要注意的是,我们在后续章节中介绍动力学算法的时候,会尽量避免在移动的坐标系中求微分。通常会选择一个,在当前瞬时与目标坐标系恰好重合的,静止坐标系。

点、圈符号(Dot and Ring Notation)

符号\({}^A\!\dot{\boldsymbol{m}}\)是有歧义的,我们搞不清楚它是想表达的是\({}^A\!(\text{d}\boldsymbol{m}/\text{d}t)\)还是\(\text{d}({}^A\!\boldsymbol{m}/\text{d}t)\)。 因此,对于任意的抽象向量\(\boldsymbol{v}\),及其在指定坐标系\(A\)下的坐标向量\({}^A\!\boldsymbol{v}\),我们做如下约定:

$$ {}^A\!\dot{\boldsymbol{v}} = {}^A\!\left(\frac{\text{d}\boldsymbol{v}}{\text{d}t}\right) \qquad {}^A\!\mathring{\boldsymbol{v}} = \frac{\text{d}{}^A\!\boldsymbol{v}}{\text{d}t} $$

那么式(\(\ref{equa_2_36}\))和式(\(\ref{equa_2_37}\))可以写成如下的形式:

$$ \begin{equation}\label{equa_2_41} {}^A\!\dot{\boldsymbol{m}} = {}^A\!\mathring{\boldsymbol{m}} + {}^A\boldsymbol{v}_A \times {}^A\!\boldsymbol{m} \end{equation} $$ $$ \begin{equation}\label{equa_2_42} {}^A\!\dot{\boldsymbol{f}} = {}^A\!\mathring{\boldsymbol{f}} + {}^A\boldsymbol{v}_A \times^* {}^A\!\boldsymbol{f} \end{equation} $$

如果在上下文中,我们可以很容易确定坐标系的话,也可以省略到左上角标,写成:

$$ \begin{equation}\label{equa_2_43} \dot{\boldsymbol{m}} = \mathring{\boldsymbol{m}} + \boldsymbol{v}_A \times \boldsymbol{m} \end{equation} $$ $$ \begin{equation}\label{equa_2_44} \dot{\boldsymbol{f}} = \mathring{\boldsymbol{f}} + \boldsymbol{v}_A \times^* \boldsymbol{f} \end{equation} $$

符号\(\mathring{\boldsymbol{m}}\)和\(\mathring{\boldsymbol{f}}\)可以理解为, 一个速度为\(\boldsymbol{v}_A\)的观察者眼中的\(\boldsymbol{m}\)和\(\boldsymbol{f}\)的变化率。

Example 2.4: 记\(A\)和\(B\)分别是以速度\(\boldsymbol{v}_A\)和\(\boldsymbol{v}_B\)运动的两个笛卡尔坐标系, 令\({}^B\!\boldsymbol{X}_A\)为从\(A\)到\(B\)的普吕克坐标变换。我们可以写出如下四个等式:

$$ \begin{align} & {}^B\!\dot{\boldsymbol{m}} = {}^B\!\boldsymbol{X}_A {}^A\!\dot{\boldsymbol{m}} \\ & {}^B\!\mathring{\boldsymbol{m}} = \frac{\text{d}}{\text{d}t} \left({}^B\!\boldsymbol{X}_A {}^A\!\boldsymbol{m}\right) = \left(\frac{\text{d}}{\text{d}t} {}^B\!\boldsymbol{X}_A\right) {}^A\!\boldsymbol{m} + {}^B\!\boldsymbol{X}_A {}^A\!\mathring{\boldsymbol{m}} \\ & {}^A\!\dot{\boldsymbol{m}} = {}^A\!\mathring{\boldsymbol{m}} + {}^A\!\boldsymbol{v}_A \times {}^A\!\boldsymbol{m} \\ & {}^B\!\dot{\boldsymbol{m}} = {}^B\!\mathring{\boldsymbol{m}} + {}^B\!\boldsymbol{v}_B \times {}^B\!\boldsymbol{m} \end{align} $$

我们可以按照如下关系,推导\({}^B\!\boldsymbol{X}_A\)的微分:

$$ \begin{align} \left(\frac{\text{d}}{\text{d}t} {}^B\!\boldsymbol{X}_A\right) {}^A\!\boldsymbol{m} & = {}^B\!\mathring{\boldsymbol{m}} - {}^B\!\boldsymbol{X}_A {}^A\!\mathring{\boldsymbol{m}} \\ & = {}^B\!\dot{\boldsymbol{m}} - {}^B\!\boldsymbol{v}_B \times {}^B\!\boldsymbol{m} - {}^B\!\boldsymbol{X}_A \left( {}^A\!\dot{\boldsymbol{m}} - {}^A\!\boldsymbol{v}_A \times {}^A\!\boldsymbol{m} \right) \\ & = {}^B\!\dot{\boldsymbol{m}} - {}^B\boldsymbol{X}_A {}^A\!\dot{\boldsymbol{m}} - {}^B\!\boldsymbol{v}_B \times {}^B\!\boldsymbol{X}_A {}^A\boldsymbol{m} + {}^B\!\boldsymbol{X}_A {}^A\!\boldsymbol{v}_A \times {}^A\!\boldsymbol{m} \\ & = \left({}^B\!\boldsymbol{X}_A {}^A\!\boldsymbol{v}_A \times - {}^B\!\boldsymbol{v}_B \times {}^B\!\boldsymbol{X}_A\right) {}^A\!\boldsymbol{m} \end{align} $$

上式对所有的\({}^A\!\boldsymbol{m}\)都成立,我们有:

$$ \begin{equation}\label{equa_2_45} \frac{\text{d}}{\text{d}t} {}^B\!\boldsymbol{X}_A = {}^B\!\left(\boldsymbol{v}_A - \boldsymbol{v}_B\right)\times {}^B\!\boldsymbol{X}_A \end{equation} $$

2.11 加速度(Acceleration)

刚体的空间速度关于时间的微分就是空间加速度(spatial acceleration)。因此,如果一个刚体的空间速度为\(\begin{bmatrix} \boldsymbol{\mathcal{w}}^T & \boldsymbol{v}_O^T \end{bmatrix}^T\),那么它的空间加速度就是: $$ \begin{equation}\label{equa_2_46} \hat{\boldsymbol{a}}_O = \frac{\text{d}}{\text{d}t} \begin{bmatrix} \boldsymbol{\mathcal{w}} \\ \boldsymbol{v}_O \end{bmatrix} = \lim_{\delta t \to 0} \frac{1}{\delta t} \begin{bmatrix} \boldsymbol{\mathcal{w}}(t + \delta t) - \boldsymbol{\mathcal{w}}(t) \\ \boldsymbol{v}_O(t + \delta t) - \boldsymbol{v}_O(t) \end{bmatrix} = \begin{bmatrix} \dot{\boldsymbol{\mathcal{w}}} \\ \dot{\boldsymbol{v}}_O \end{bmatrix} \end{equation} $$ 这个定义看起来很显然,但是对于那些熟悉刚体加速度的传统表示方法的人来说,会有点不太适应。如下图 2.6所示, 一个刚体绕着空间中一个固定的轴线匀速转动。有人可能认为,刚体有一个固定的空间速度,那么它的空间加速度就应该是零呀。 实际上,刚体的整个运动过程都是都是在做圆周运动,因此它一直有加速度。这个悖论很好解。首先,空间加速度描述的是整个刚体的属性, 而不是刚体上某个点的属性。其次,\(\boldsymbol{v}_O\)也不是刚体上某个点的速度,而是通过\(O\)的点流(flow of points)的测量值。 因此,\(\dot{\boldsymbol{v}}_O\)不是一个点的加速度,而是点流的变化率。如果点流是恒定的,那么即使每个点有加速度,\(\dot{\boldsymbol{v}}_O\)也还是0。

图 2.6. 匀速转动的刚体加速度
图 2.7. 从\(\ddot{\boldsymbol{r}}\) 计算 \(\dot{\boldsymbol{v}}_O\)

现在我们来对比一下空间加速度与传统描述加速度的方法。假设刚体上有一个点\(O'\)在瞬时\(t\)与点\(O\)重合,其位置矢量为\(\boldsymbol{r}\)。 那么点\(O'\)的速度矢量为\(\dot{\boldsymbol{r}}\),加速度矢量为\(\ddot{\boldsymbol{r}}\)。在传统的教科书中, 刚体的加速度将由两个3D向量\(\dot{\boldsymbol{\mathcal{w}}}\)和\(\ddot{\boldsymbol{r}}\)表示。 我们先来看一下\(\dot{\boldsymbol{v}}_O\)与\(\ddot{\boldsymbol{r}}\)的差异,根据式(\(\ref{equa_2_46}\)),我们有: $$ \dot{\boldsymbol{v}}_O = \lim_{\delta t \to 0} \frac{\boldsymbol{v}_O(t + \delta t) - \boldsymbol{v}_O(t)}{\delta t} $$ 因为\(O'\)在瞬时\(t\)与\(O\)重合,所以\(\boldsymbol{v}_O(t) = \dot{\boldsymbol{r}}(t)\),但是\(\boldsymbol{v}_O(t+\delta t)\) 并不等于\(\dot{\boldsymbol{r}}(t + \delta t)\),因为此时\(O'\)偏离\(O\)点\(\delta t \dot{\boldsymbol{r}}(t)\)了, 如图 2.7所示,所以: $$ \boldsymbol{v}_O(t + \delta t) = \dot{\boldsymbol{r}}(t + \delta t) - \boldsymbol{\mathcal{w}} \times \delta t \dot{\boldsymbol{r}}(t) $$ 代入上式,有: $$ \begin{align}\label{equa_2_47} \dot{\boldsymbol{v}}_O & = \lim_{\delta t \to 0} \frac{\dot{\boldsymbol{r}}(t + \delta t) - \dot{\boldsymbol{r}}(t) - \boldsymbol{\mathcal{w}} \times \delta t \dot{\boldsymbol{r}}(t)}{\delta t} \\ & = \ddot{\boldsymbol{r}} - \boldsymbol{\mathcal{w}} \times \dot{\boldsymbol{r}} \end{align} $$ 因此有: $$ \begin{equation}\label{equa_2_48} \hat{\boldsymbol{a}}_O = \begin{bmatrix} \dot{\boldsymbol{\mathcal{w}}} \\ \ddot{\boldsymbol{r}} - \boldsymbol{\mathcal{w}} \times \dot{\boldsymbol{r}} \end{bmatrix} \end{equation} $$ 对应的,我们定义一个新的 6D 向量 $$ \hat{\boldsymbol{a}}_O' = \begin{bmatrix} \dot{\boldsymbol{\mathcal{w}}} \\ \ddot{\boldsymbol{r}} \end{bmatrix} $$ 我们称之为刚体的经典加速度(classical acceleration),在传统的方式中,用两个3D向量来描述刚体加速度。 经典加速度的物理意义是空间向量在原点为\(O'\)的普吕克坐标系中的微分,不是\(O\),意味着该坐标系有一个线速度\(\dot{\boldsymbol{r}}\)。 根据式(\(\ref{equa_2_43}\))的定义,\(\hat{\boldsymbol{a}}_O\)和\(\hat{\boldsymbol{a}}_O'\)具有如下的关系: $$ \begin{equation}\label{equa_2_50} \hat{\boldsymbol{a}}_O = \hat{\boldsymbol{a}}_O' + \begin{bmatrix} \boldsymbol{0} \\ \dot{\boldsymbol{r}} \end{bmatrix} \times \hat{\boldsymbol{v}}_O \end{equation} $$ 空间加速度的优势在于它却是是一个向量,并且满足一些运算规则。比如说,如果\(\hat{\boldsymbol{v}}_1\) 和\(\hat{\boldsymbol{v}}_1\)分别是刚体\(B_1, B_2\)的空间速度, \(B_2\)相对于\(B_1\)的相对速度,为: $$ \hat{\boldsymbol{v}}_{rel} = \hat{\boldsymbol{v}}_2 - \hat{\boldsymbol{v}}_1 $$ 我们可以直接通过速度公式写出其空间加速度: $$ \frac{\text{d}}{\text{d}t} \hat{\boldsymbol{v}}_{rel} = \frac{\text{d}}{\text{d}t} \hat{\boldsymbol{v}}_2 - \frac{\text{d}}{\text{d}t} \hat{\boldsymbol{v}}_1 \qquad \Longrightarrow \qquad \hat{\boldsymbol{a}}_{rel} = \hat{\boldsymbol{a}}_2 - \hat{\boldsymbol{a}}_1 $$ 因此,空间加速度可以像速度那样做加法。这比需要引入科氏力的传统加速度表示方法要好用一点。

Example 2.5: Example 2.3中介绍了一条运动链中计算各个刚体速度的公式。现在我们来计算它们的加速度。 首先,我们定义关节\(i\)的加速度为\(\boldsymbol{a}_{Ji}\),刚体\(i\)的加速度为\(\boldsymbol{a}_i\)。 First, we define \(\boldsymbol{a}_{Ji}\) to be the acceleration across joint \(i\) and \(\boldsymbol{a}_i\) to be the acceleration of body \(i\);有 \(\boldsymbol{a}_{Ji} = \dot{\boldsymbol{v}}_{Ji}, \boldsymbol{a}_i = \dot{\boldsymbol{v}}_i\)。 由于空间加速度是可以相加的,我们可以立即得到: $$ \begin{equation}\label{equa_2_52} \boldsymbol{a}_{Ji} = \boldsymbol{a}_i - \boldsymbol{a}_{i-1} \end{equation} $$ 它是速度关系\(\boldsymbol{v}_{Ji} = \boldsymbol{v}_i - \boldsymbol{v}_{i-1}\)关于时间的微分。 对\(\boldsymbol{v}_{Ji} = \boldsymbol{s}_i \dot{q}_i\)微分,有 $$ \begin{equation}\label{equa_2_53} \boldsymbol{a}_{Ji} = \boldsymbol{s}_i \ddot{q}_i + \dot{\boldsymbol{s}}_i \dot{q}_i \end{equation} $$ 其中\(\ddot{q}_i\)是关节\(i\)的acceleration variable。若\(\boldsymbol{s}_i\)是固定刚体\(i\)和\(i-1\)的运动轴,我们有 $$ \begin{equation}\label{equa_2_54} \dot{\boldsymbol{s}}_i = \boldsymbol{v}_i \times \boldsymbol{s}_i \end{equation} $$ 联立上述三个公式,有: $$ \begin{equation}\label{equa_2_55} \boldsymbol{a}_i = \boldsymbol{a}_{i-1} + \boldsymbol{s}_i \ddot{q}_i + \boldsymbol{v}_i \times \boldsymbol{s}_i \dot{q}_i \end{equation} $$ 这正是式(\(\ref{equa_2_16}\))的微分。式(\(\ref{equa_2_17}\))的微分为: $$ \begin{align}\label{equa_2_56} \boldsymbol{a}_i & = \sum_{j=1}^i \boldsymbol{s}_j \ddot{q}_j + \boldsymbol{v}_j \times \boldsymbol{s}_j \dot{q}_j \\ & = \sum_{j=1}^i \boldsymbol{s}_j \ddot{q}_j + \sum_{j=1}^i\sum_{k=1}^{j-1} \boldsymbol{s}_k \times \boldsymbol{s}_j \dot{q}_j \dot{q}_k \end{align} $$ 最后,式(\(\ref{equa_2_18}\))的微分为: $$ \begin{equation}\label{equa_2_57} \boldsymbol{a}_i = \boldsymbol{J}_i \ddot{q} + \dot{\boldsymbol{J}}_i \dot{\boldsymbol{q}} \end{equation} $$ 其中,\(\ddot{\boldsymbol{q}}\)是关节空间的加速度向量,\(\dot{\boldsymbol{J}}_i = \begin{bmatrix} \dot{\boldsymbol{s}}_1 & \dot{\boldsymbol{s}}_2 & \cdots & \dot{\boldsymbol{s}}_i & \boldsymbol{0} \cdots \boldsymbol{0} \end{bmatrix}\)

图 2.8. 空间动量

2.12 动量(Momentum)

图 2.8所示,一个质心为\(C\)的刚体在空间中运动。此时,刚体有空间速度\(\hat{\boldsymbol{v}}\),参考质心有两个 3D 向量\(\boldsymbol{\mathcal{w}}\)和 \(\boldsymbol{v}_C\)。如果该刚体的质量为\(m\),其关于质心的转动惯量为\(\bar{\boldsymbol{I}}_C\),那么它的动量可以由两个 3D 向量表示, \(\boldsymbol{h} = m \boldsymbol{v}_C\) 描述了刚体线性动量的大小和方向,它实际上是一个通过质心的线向量(line vector)。 \(\boldsymbol{h}_C = \bar{\boldsymbol{I}}_C \boldsymbol{\mathcal{w}}\) 描述的是刚体的角动量。与式(\(\ref{equa_2_6}\))类似,刚体关于给定点\(O\)的动量,则是角动量和线性动量关于该点的矩之和:

$$ \boldsymbol{h}_O = \boldsymbol{h}_C + \vec{OC} \times \boldsymbol{h} $$

用符号\(\hat{\boldsymbol{h}}\)表示刚体的空间动量,\(\hat{\boldsymbol{h}}_C\) 和 \(\hat{\boldsymbol{h}}_O\) 分别是 \(\hat{\boldsymbol{h}}\)在普吕克坐标系下关于\(C\)点和\(O\)点的坐标向量, 可以写成:

$$ \hat{\boldsymbol{h}}_C = \begin{bmatrix} \boldsymbol{h}_C \\ \boldsymbol{h} \end{bmatrix} = \begin{bmatrix} \bar{\boldsymbol{I}}_C \boldsymbol{\mathcal{w}} \\ m \boldsymbol{v}_C \end{bmatrix} $$ $$ \hat{\boldsymbol{h}}_O = \begin{bmatrix} \boldsymbol{h}_O \\ \boldsymbol{h} \end{bmatrix} = \begin{bmatrix} \bar{\boldsymbol{I}}_C \boldsymbol{\mathcal{w}} + \vec{OC} \times m \boldsymbol{v}_C \\ m \boldsymbol{v}_C \end{bmatrix} = \begin{bmatrix} \boldsymbol{1} & \vec{OC}\times \\ \boldsymbol{0} & \boldsymbol{1} \end{bmatrix} \hat{\boldsymbol{h}}_C $$

因为空间动量是 \(F^6\) 空间中的向量,所以他们具有和空间力向量相同的代数特性。它们的空间变换可以写成\({}^B\!\hat{\boldsymbol{h}} = {}^B\!\boldsymbol{X}_A^* {}^A\!\hat{\boldsymbol{h}}\), and a scalar product is defined between momenta and elements of \(M^6\).不知所云,没敢翻译。 图 2.8中刚体的动能为\(\frac{1}{2}\hat{\boldsymbol{h}} \cdot \hat{\boldsymbol{v}}\)。

2.13 惯性(Inertia)

刚体的空间惯性张量描述了其速度与动量之间的关系,建立了从空间\(M^6\)到空间\(F^6\)之间的映射关系。如果一个刚体的空间速度为\(\boldsymbol{v}\),空间质量为\(\boldsymbol{I}\), 那额它的动量可以由下式写出: $$ \begin{equation}\label{equa_2_61} \boldsymbol{h} = \boldsymbol{I}\boldsymbol{v} \end{equation} $$ 如果 \(\boldsymbol{h}\)和\(\boldsymbol{v}\)是坐标向量,那么\(\boldsymbol{I}\)就是一个\(6\times 6\)的矩阵。 我们用符号\(\boldsymbol{I}_O\)和\(\boldsymbol{I}_C\)分别表示普吕克坐标系下刚体相对于点\(O\)和\(C\)的空间质量。其中点\(O\)是空间中任意一点,\(C\)是刚体的质心。 有: $$ \boldsymbol{h}_C = \begin{bmatrix} \bar{\boldsymbol{I}}_C & \boldsymbol{0} \\ \boldsymbol{0} & m \boldsymbol{1} \end{bmatrix} \boldsymbol{v}_C $$ 如下式,只要参考原点与质心重合,惯性矩阵\(\boldsymbol{I}_C\)都可以写成这个形式。 $$ \begin{equation}\label{equa_2_62} \boldsymbol{I}_C = \begin{bmatrix} \bar{\boldsymbol{I}}_C & \boldsymbol{0} \\ \boldsymbol{0} & m \boldsymbol{1} \end{bmatrix} \end{equation} $$ 对于 \(\boldsymbol{h}_O\),我们有: $$ \boldsymbol{h}_O = \begin{bmatrix} \boldsymbol{1} & \boldsymbol{c}\times \\ \boldsymbol{0} & \boldsymbol{1} \end{bmatrix} \boldsymbol{I}_C \boldsymbol{v}_C = \begin{bmatrix} \boldsymbol{1} & \boldsymbol{c}\times \\ \boldsymbol{0} & \boldsymbol{1} \end{bmatrix} \boldsymbol{I}_C \begin{bmatrix} \boldsymbol{1} & \boldsymbol{0} \\ \boldsymbol{c}\times ^T & \boldsymbol{1} \end{bmatrix} \boldsymbol{v}_O $$ 式中,\(\boldsymbol{c} = \vec{OC}\),有惯性矩阵 \(\boldsymbol{I}_O\): $$ \begin{equation}\label{equa_2_63} \boldsymbol{I}_O = \begin{bmatrix} \bar{\boldsymbol{I}}_C + m\boldsymbol{c}\times \boldsymbol{c}\times^T & m \boldsymbol{c}\times \\ m \boldsymbol{c}\times^T & m \boldsymbol{1} \end{bmatrix} \end{equation} $$ 这是普吕克坐标系下惯性矩阵的一般形式。其中\(\bar{\boldsymbol{I}}_C + m \boldsymbol{c}\times\boldsymbol{c}\times^T\)是刚体关于点\(O\)的转动惯量。 由于\(\bar{\boldsymbol{I}}_C\)是一个对称矩阵,所以\(\boldsymbol{I}_C\)和\(\boldsymbol{I}_O\)也都是对称的。此外,如果\(m > 0\)并且\(\bar{\boldsymbol{I}}_C\)是正定的, 那么\(\boldsymbol{I}_C\)和\(\boldsymbol{I}_O\)也是正定的。

惯性的 Dyadic 表示(Dyadic Representation of Inertia)

对于向量\(\boldsymbol{f, g} \in F^6\),dyad \(\boldsymbol{fg}\cdot\) 将运动向量 \(\boldsymbol{m} \in M^6\) 映射到力向量上\(\boldsymbol{f}(\boldsymbol{g} \cdot \boldsymbol{m})\)。 dyad 是个 \(6 \times 6\) 的矩阵 \(\underline{\boldsymbol{f}} \underline{\boldsymbol{g}}^T\),其中,\(\underline{\boldsymbol{f}}\)和\(\underline{\boldsymbol{g}}\)分别是 \(\boldsymbol{f}\)和\(\boldsymbol{g}\)的坐标向量。如果\(\boldsymbol{f} = \boldsymbol{g}\),那么 dyad 就是对称的。空间惯性就是一个对称的 dyadic 张量,建立了\(M^6\)到\(F^6\)的映射关系。 它可以写成如下的6个对称 dyad 的和: $$ \begin{equation}\label{equa_2_64} \boldsymbol{I} = \sum_{i=1}^6 \boldsymbol{g}_i \boldsymbol{g}_i \cdot \qquad (\boldsymbol{g}_i \in F^6) \end{equation} $$ 这个\(\boldsymbol{g}\)是从哪里来的?重力? 刚体的空间质量是其内部的一个固定量,它除了作为物体运动的函数外,并不会变化。 Furthermore, a body’s spatial inertia is a quantity that is fixed in the body: it does not vary except as a function of the body’s motion. 因此可以将\(\boldsymbol{I}\)表示成 dyad 的和的形式,其中每个向量\(\boldsymbol{g}_i\)对于其描述的刚体而言都是固定的。基于此,我们可以写出空间惯性关于时间的微分形式: $$ \begin{align}\label{equa_2_65} \frac{\text{d}}{\text{d}t} \boldsymbol{I} & = \sum_{i=1}^6 \left(\dot{\boldsymbol{g}}_i \boldsymbol{g}_i \cdot + \boldsymbol{g}_i \dot{\boldsymbol{g}}_i \cdot \right) \\ & = \sum_{i=1}^6 \left(\boldsymbol{v} \times^* \boldsymbol{g}_i\right)\boldsymbol{g}_i \cdot + \sum_{i=1}^6 \boldsymbol{g}_i\left(\boldsymbol{v} \times^* \boldsymbol{g}_i\right)\cdot \\ & = \boldsymbol{v} \times ^* \sum_{i=1}^6 \boldsymbol{g}_i \boldsymbol{g}_i \cdot - \left(\sum_{i=1}^6 \boldsymbol{g}_i \boldsymbol{g}_i \cdot \right) \boldsymbol{v} \times \\ & = \boldsymbol{v}\times^* \boldsymbol{I} - \boldsymbol{I}\boldsymbol{v} \times \end{align} $$ 其中\(\boldsymbol{v}\)是刚体的速度。为了得到上式,我们使用了式(\(\ref{equa_2_30}\)) 以及 表 2.3表 2.4中的公式。 根据式(\(\ref{equa_2_64}\)),还可以导出空间惯性的坐标变换的公式。令\({}^A\boldsymbol{I}\)和\({}^B\boldsymbol{I}\)分别表示\(A\)和\(B\)坐标系下同一刚体的空间惯性,有: $$ {}^A\!\boldsymbol{I} = \sum_{i=1}^6 {}^A\!\boldsymbol{g}_i {}^A\!\boldsymbol{g}_i^T \qquad \text{and} \qquad {}^B\!\boldsymbol{I} = \sum_{i=1}^6 {}^B\!\boldsymbol{g}_i {}^B\!\boldsymbol{g}_i^T $$ 其中,\({}^A\!\boldsymbol{g}_i\)和\({}^B\!\boldsymbol{g}_i\)分别是\(A,B\)坐标系中\(\boldsymbol{g}_i\)的坐标向量。存在关系, \({}^B\!\boldsymbol{g}_i = {}^B\!\boldsymbol{X}_A^* {}^A\!\boldsymbol{g}_i\),所以我们有: $$ \begin{align}\label{equa_2_66} {}^B\!\boldsymbol{I} & = \sum_{i=1}^6 {}^B\!\boldsymbol{X}_A^* {}^A\!\boldsymbol{g}_i {}^A\!\boldsymbol{g}_i^T \left({}^B\!\boldsymbol{X}_A^*\right)^T \\ & = {}^B\!\boldsymbol{X}_A^* {}^A\!\boldsymbol{I} {}^A\!\boldsymbol{X}_B \end{align} $$

空间 Dyadics(Spatial Dyadics)

空间惯性是从\(M^6\)到\(F^6\)的映射,除此之外,这两个空间之间还有三个映射关系,它们一起构成了四种空间 dyadic 张量。 表2.5中列出了它们的一些基础性质。

表 2.5 dyadics的特性.
Properties of dyadics

其中符号\(\boldsymbol{\mathit{\Phi}}\)描述的是空间惯性的逆\(\boldsymbol{\mathit{\Phi}} = \boldsymbol{I}^{-1}\)。 表中"dyad form"列描述的是各种 dyad 张量中,运动向量和力向量的组合模式。如果我们把 dyadic 看做是从 From 空间到 To 空间的映射关系,那么dyad 的第一个向量必须是 To 空间中的元素, 第二个向量则是 From 空间中的元素。各个坐标变换公式分别记为相似变换(similarity transform)或者全等变换(congruence transform)。相似变换中能够保持矩阵的秩和特征值不变, 但不能保持其对称性或者正定性。全等变换保持的是矩阵的秩、对称性、正定性,但是不能保持特征值。

空间惯性的特性(Propertie of Spatial Inertia)

我们已经讨论了空间惯性的坐标变换(\(\ref{equa_2_66}\)),关于时间的微分(\(\ref{equa_2_65}\)),普吕克坐标系下空间惯性的一般形式(\(\ref{equa_2_63}\)), 以及将速度映射到动量的物理意义(\(\ref{equa_2_61}\))。此外空间惯性还有如下的一些特性:

2.14 运动方程(Equation of Motion)

刚体的空间运动方程的物理意义是,作用在刚体上的合力与其动量变化率相等: $$ \begin{align}\label{equa_2_68} \boldsymbol{f} = \frac{\text{d}}{\text{d}t}\left(\boldsymbol{Iv}\right) & = \boldsymbol{Ia} + \left(\boldsymbol{v} \times^* \boldsymbol{I} - \boldsymbol{I}\boldsymbol{v}\times \right) \boldsymbol{v} \\ & = \boldsymbol{Ia} + \boldsymbol{v}\times^*\boldsymbol{Iv} \end{align} $$ 通常,我们把上式写成齐次线性方程的形式: $$ \begin{equation}\label{equa_2_69} \boldsymbol{f} = \boldsymbol{I}\boldsymbol{a} + \boldsymbol{p} \end{equation} $$ 其中,\(\boldsymbol{I}\)和\(\boldsymbol{p}\)是参数,\(\boldsymbol{f}\)和\(\boldsymbol{a}\)是变量。一般情况下,都会认为参数是已知的,变量有可能是未知的。 \(\boldsymbol{p}\)被称为偏置力(bias force),如果\(\boldsymbol{f}\)是作用在刚体上的合力,那么\(\boldsymbol{p} = \boldsymbol{v} \times^* \boldsymbol{Iv}\)。

式(\(\ref{equa_2_68}\))中的\(\boldsymbol{f}\)表示作用在刚体上的合力,而式(\(\ref{equa_2_69}\))提供了一种将合力中的已知部分从\(\boldsymbol{f}\)分解到\(\boldsymbol{p}\)的方法。 假设有合力\(\boldsymbol{f}_{net}\)是由未知力\(\boldsymbol{f}_u\)和已知重力\(\boldsymbol{f}_g\)构成。根据式(\(\ref{equa_2_68}\)),有: $$ \boldsymbol{f}_{net} = \boldsymbol{Ia} + \boldsymbol{v} \times^* \boldsymbol{Iv} $$ 根据式(\(\ref{equa_2_69}\)),我们也可以把\(\boldsymbol{f}_u\)放到等式的左边: $$ \boldsymbol{f}_u = \boldsymbol{Ia} + \boldsymbol{p}, \qquad \boldsymbol{p} = \boldsymbol{v} \times^* \boldsymbol{Iv} - \boldsymbol{f}_g $$

Example 2.6: 我们可以从式(\(\ref{equa_2_68}\))中恢复处传统的 3D 运动方程。为了简化,我们将原点放到质心处,那么式(\(\ref{equa_2_68}\))可以展开如下: $$ \begin{align} \begin{bmatrix} \boldsymbol{n}_C \\ \boldsymbol{f} \end{bmatrix} & = \begin{bmatrix} \bar{\boldsymbol{I}}_C & \boldsymbol{0} \\ \boldsymbol{0} & m \boldsymbol{1} \end{bmatrix} \begin{bmatrix} \dot{\boldsymbol{\mathcal{w}}} \\ \ddot{c} - \boldsymbol{\mathcal{w}} \times \boldsymbol{v}_C \end{bmatrix} + \begin{bmatrix} \boldsymbol{\mathcal{w}}\times & \boldsymbol{v}_C \times \\ \boldsymbol{0} & \boldsymbol{\mathcal{w}}\times \end{bmatrix} \begin{bmatrix} \bar{\boldsymbol{I}}_C & \boldsymbol{0} \\ \boldsymbol{0} & m \boldsymbol{1} \end{bmatrix} \begin{bmatrix} \boldsymbol{\mathcal{w}} \\ \boldsymbol{v}_C \end{bmatrix} \\ & = \begin{bmatrix} \bar{\boldsymbol{I}}_C \dot{\boldsymbol{\mathcal{w}}} \\ m \ddot{\boldsymbol{c}} - m\boldsymbol{\mathcal{w}} \times \boldsymbol{v}_C \end{bmatrix} + \begin{bmatrix} \boldsymbol{\mathcal{w}} \times \bar{\boldsymbol{I}}_C \boldsymbol{w} + m\boldsymbol{v}_C \times \boldsymbol{v}_C \\ m \boldsymbol{\mathcal{w}} \times \boldsymbol{v}_C \end{bmatrix} \\ & = \begin{bmatrix} \bar{\boldsymbol{I}}_C \dot{\boldsymbol{\mathcal{w}}} + \boldsymbol{\mathcal{w}} \times \bar{\boldsymbol{I}}_C \boldsymbol{\mathcal{w}} \\ m \ddot{\boldsymbol{c}} \end{bmatrix} \end{align} $$ 在上述推到过程中,我们用了式(\(\ref{equa_2_48}\)),将刚体的空间加速度写成\(\dot{\boldsymbol{\mathcal{w}}}, \ddot{\boldsymbol{c}}, \boldsymbol{v}_C = \dot{\boldsymbol{c}}\)的形式。 由此,可以推出质心的运动方程的牛顿公式: $$ \begin{equation}\label{equa_2_70} \boldsymbol{f} = m \ddot{\boldsymbol{c}} \end{equation} $$ 以及描述刚体关于其质心的旋转运动的欧拉方程: $$ \begin{equation}\label{equa_2_71} \boldsymbol{n}_C = \bar{\boldsymbol{I}}_C \dot{\boldsymbol{\mathcal{w}}} + \boldsymbol{\mathcal{w}} \times \bar{\boldsymbol{I}}_C \boldsymbol{\mathcal{w}} \end{equation} $$

2.15 惯性的逆(Inverse Inertia)

有时为了方便,我们会把运动方程写成如下的形式: $$ \begin{equation}\label{equa_2_72} \boldsymbol{a} = \boldsymbol{\mathit{\Phi}} \boldsymbol{f} + \boldsymbol{b} \end{equation} $$ 其中\(\boldsymbol{\mathit{\Phi}}\)是刚体惯性矩阵的逆,\(\boldsymbol{b}\)是它的偏置加速度,如果\(\boldsymbol{f} = \boldsymbol{0}\),那么它就是刚体的加速度。 如果该方程是式(\(\ref{equa_2_69}\))的逆,那么有\(\boldsymbol{\mathit{\Phi}} = \boldsymbol{I}^{-1}\) 并且 \(\boldsymbol{b} = - \boldsymbol{\mathit{\Phi}}\boldsymbol{p}\)。 式(\(\ref{equa_2_72}\))相比于式(\(\ref{equa_2_69}\))的优势在于它可以应用于带约束的刚体。

惯性的逆是一个从空间\(F^6\)映射到\(M^6\)的对称 dyadic 张量。表 2.5中已经列举了一些它的特性。此外,惯性的逆是\(M^6\)的一个子空间,刚体可以在该空间内自由移动。 换句话说,惯性的逆的秩与刚体的运动自由度相等。因此,如果一个刚体的自由度少于 6 个,那么\(\boldsymbol{\mathit{\Phi}}\)就是奇异的,but \boldsymbol{I} will not exist. 对于一个无约束的刚体,其惯性的逆相对于质心\(C\)和原点\(O\)的普吕克坐标为: $$ \begin{equation}\label{equa_2_73} \boldsymbol{\mathit{\Phi}}_C = \begin{bmatrix} \bar{\boldsymbol{I}}_C^{-1} & \boldsymbol{0} \\ \boldsymbol{0} & \frac{1}{m}\boldsymbol{1} \end{bmatrix} \qquad \boldsymbol{\mathit{\Phi}}_O = \begin{bmatrix} \bar{\boldsymbol{I}}_C^{-1} & \bar{\boldsymbol{I}}_C^{-1} \boldsymbol{c}\times^T \\ \boldsymbol{c}\times \bar{\boldsymbol{I}}_C^{-1} & \frac{1}{m}\boldsymbol{1} + \boldsymbol{c}\times \bar{\boldsymbol{I}}_C^{-1} \boldsymbol{c}\times^T \end{bmatrix} \end{equation} $$ 这实际上就是\(\ref{equa_2_62}\)和\(\ref{equa_2_63}\)的逆。

2.16 平面向量(Plannar Vectors)

如果约束一个刚体平行于一个平面上运动,那么它就变成了一个平面刚体(planar rigid body)。如果刚体系统中的每个刚体被约束平行于相同的平面运动,那么他就是一个"planar"刚体系统。 有很多实际的刚体系统就是平面的。

空间向量完全可以描述平面刚体的运动,因为平面运动式空间运动的一个子集。但,有时使用精简的空间向量代数——平面向量代数,来描述平面刚体会更方便。 一个平面刚体有三个自由度,所以其向量空间就是\(M^3\)和\(F^3\)。推导平面向量代数的最简单方法是从空间向量代数开始,并将其限制在\(x-y\)平面上。 本质上,就是删除第一、二、六的基向量及其相应的坐标。,即

在上面的式子中,我们移除了旋转基向量和坐标的\(z\)下角标。平面版的空间叉乘运算、坐标变换、惯性矩阵可以通过从\(6\times6\)的矩阵中抽取\(3\times 3\)的子矩阵获得。 比如说平面叉乘运算矩阵就是:
按照类似的方式,我们可以推导出平面坐标变换矩阵的公式。如果坐标系的原点先从\((0, 0)\)移动到\((x, y)\),然后在新的位置上转动了\(\theta\)角度,那么有: $$ \begin{equation}\label{equa_2_77} \boldsymbol{X} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & c & s \\ 0 & -s & c \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ -y & 1 & 0 \\ x & 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 \\ sx - cy & c & s \\ cx + sy & -s & c \end{bmatrix} \end{equation} $$ 其中,\(c = \cos(\theta)\), \(s = \sin(\theta)\)。平面向量也继承了空间向量的特性: \(\boldsymbol{v}\times ^* = -(\boldsymbol{v}\times)^T, \boldsymbol{X}^* = \boldsymbol{X}^{-T}\)。 此外,平面刚体的惯性矩阵可以写成: $$ \begin{equation}\label{equa_2_78} \boldsymbol{I} = \begin{bmatrix} I_C + m(c_x^2 + c_y^2) & - m c_y & m c_x \\ - m c_y & m & 0 \\ m c_x & 0 & m \end{bmatrix} = \begin{bmatrix} I_O & - m c_y & m c_x \\ - m c_y & m & 0 \\ m c_x & 0 & m \end{bmatrix} \end{equation} $$ 其中,\(m\)是质量,\(c_x, c_y\)分别是刚体的质心坐标,\(I_C, I_O\)则分别是刚体关于质心和坐标原点的转动惯量。我们只需要四个参数,就可以确定一个平面刚体的惯量。

2.17 扩展阅读

Spatial vectors resemble the twists and wrenches of screw theory, the realnumber motors and the elements of the Lie algebra \(se(3)\) and its dual, \(se^*(3)\). Screw 理论出现地比现代向量的概念要早,它从 19 世纪就开始发展了。 Screw 理论的主要工作是 Ball (1900)。Angeles (2003) Hunt (1978) 和 Selig (1996) 对这一理论进行了更为现代的阐述。 Motors 有两种类型: 实数范围内的 6D 矢量and 3D vectors over the ring of dual numbers. 前者的描述在 von Mises (1924a,b),后者的描述在 Brand (1953)。 空间向量和 motors 之间的主要不同在于,所有的 motors 都处在一个单向量的空间中。在这方面,Featherstone (1987) 所描述的空间向量与 motor 代数非常相似。 形式上,李代数式是李群的切空间。空间\(M^6\) 和 \(M^3\) 分别对应李代数 \(se(3)\)和\(se(2)\),而\(F^6, F^3\) 则是它们的对偶空间,\(se^*(3), se^*(2)\)。 \(se(3), se(2)\) 是关于特殊欧式群 \(SE(3), SE(2)\) 的代数,它们是 3D 或 2D 欧几里得空间中刚体的每个可能存在的位置集合。 关于李代数可以参见 Murray et al. (1994) and Selig (1996). 读者可能还会 Jain (1991); Park et al. (1995); Plücker (1866); Rodriguez et al. (1991); Woo and Freudenstein (1970) 有兴趣。 当然关于 6D 是向量还有很多各种各样的参考文献。




Copyright @ 高乙超. All Rights Reserved. 京ICP备16033081号-1