2.13 非奇异广义坐标

欧拉角为参数化刚体取向提供了一种便捷的方法。然而,由此导出的运动方程具有奇异性。虽然我们可以通过使用具有不同奇异性的其他欧拉式组合来避免奇异性,但这种权宜之计并不令人满意。让我们集思广益一下,看看能否想出更好的办法。

指定一个取向需要什么?也许我们可以从欧拉定理中得到启发。回忆一下,欧拉定理指出,任何取向都可以通过一次旋转达到。因此,指定刚体取向的一个思路是参数化完成这一任务的那一次旋转。要指定这次旋转,我们需要指定旋转轴和旋转量。与此对比,欧拉角指定了三次连续旋转。这三次旋转不一定与给出取向的那一次复合旋转有任何关系。欧拉角没有利用欧拉定理,这难道不奇怪吗?

我们可以想到几种指定旋转的方法。一种方法是通过旋转轴穿过球面的纬度和经度来指定旋转轴。将刚体从参考位置旋转所需的角度可以用另一个角度来指定。不过,我们可以预测,这种坐标选择会遇到与欧拉角类似的问题:如果旋转量为零,则旋转轴的纬度和经度是未定义的。因此,这些角度的拉格朗日方程很可能是奇异的。另一个没有这个缺陷的想法是,用一个取向矢量 的直角坐标分量来表示旋转;我们将取向矢量的方向取为与将刚体从参考取向带到当前取向的旋转轴相同,取向矢量的长度是刚体必须绕取向矢量(按右手定则)旋转的角度。采用这种坐标选择时,如果旋转角为零,则矢量的长度为零,没有不需要的方向。这种选择看起来很有希望。

我们用以下符号表示 的直角坐标分量:( ox, oy, oz );这些将作为我们的广义坐标。模长 o = (ox2 + oy2 + oz2)1/2 为旋转角。旋转轴为 = / o。我们用 xyz 表示 的分量。将取向矢量的分量作为广义坐标的第一步是构造 对应的旋转 M。设 ' 为参考取向下刚体某个质量元的矢量, 为经过旋转 M 后该质量元的矢量:

我们可以通过考虑 表示的旋转如何影响矢量 ' 来确定 M' 中平行于 的分量不受影响。垂直分量按旋转角的余弦缩减,并且还会产生一个垂直于这两者的分量,该分量正比于旋转角的正弦和垂直分量的大小。设 (')|| = (' · ) 和 (')| = ' - (')||,则

从这个表达式我们可以构造出等价的旋转矩阵。首先定义一些有用的基本矩阵:

以及

其中单位矩阵为

矩阵 __P2__ 是反对称的,__P3__ 分量的对称外积。矩阵 __P4__ 实现 与其他矢量的叉积,矩阵 __P5__ 将矢量投影到取向矢量上。我们有以下恒等式:

用这些矩阵表示,旋转矩阵为

旋转的逆是绕同一轴旋转负的旋转角。因此 __P0__ 的逆可以立即写出:

通过回忆 __P0____P1__ 是对称的,__P2__ 是反对称的,我们验证旋转矩阵的逆就是旋转矩阵的转置。

__P1__TD__P3__ 计算角速度矢量虽然繁琐但很直接;角速度矢量结果具有简单形式:

角速度矢量在主轴上分量可以通过将上式乘以 __P1__-1 = __P2__T 得到:

则有

求解得到

矩阵 __P0__ 不是正交矩阵,因此其逆并不平凡,但我们可以利用基本矩阵的性质来求逆。假设我们有一个形式如下的矩阵

需要求逆。我们猜测逆矩阵具有类似的形式:

我们希望找到系数 a'、b' 和 c',使得 __P3____P4__-1 = I。我们得到关于系数的三个条件:

解为

现在我们可以利用基本矩阵表示来求矩阵 __P0__ 的逆,得到

注意,所有项在 o --> 0 时都具有有限极限。然而,出现了一个新的奇异性。当 o --> 2 时,两个分母变为奇异,但分子中的零点不足以消除奇异性。这是预期的奇异性,对应于在半径为 2 时取向矢量对应零旋转,但仍然指定了一个旋转轴。这个奇异性很容易避免:每当取向矢量的模长变得大于 时,只需用等价的取向矢量 - 2 替换它。

我们可以将控制取向演化的方程写成关于 ' = M-1 的矢量方程:

以及两个辅助函数

取向矢量的运动方程出奇地简单。两个辅助函数在零处都有有限的极限:

模长小于或等于 的取向矢量足以指定所有取向,并且该区域内的运动方程没有奇异性。取向矢量的模长可能变得大于 ,但这时我们将其替换为模长小于 的等价的取向矢量。而且不必急于这样做,因为方程直到模长达到 2 时才会奇异。因此,我们得到了一个刚体动力学的完全非奇异描述。

一个实际的问题

为了使用取向矢量,我们面临一个实际问题:在取向矢量的表示与其他表示之间进行转换。我们可以将旋转矩阵 __P0__ 视为一种中间的通用表示。无论选择了何种广义坐标,我们都必须能够计算出这些坐标所对应的旋转矩阵。我们还必须解决反问题——从旋转矩阵确定广义坐标。

我们在方程(2.118)中已经有了旋转矩阵用取向矢量表示的显式形式,为方便起见在此重复:

我们可以通过考察同一个方程来解决反问题。我们注意到,对 __P0__ 的贡献中两部分是对称的,一部分是反对称的。我们可以通过减去转置来分离出反对称部分。我们有

但矩阵 __P0__ 与取向矢量有简单的关系:

我们使用从反对称的 3 × 3 矩阵提取 3 维矢量分量的逆运算 A-1。因此我们有

注意,仅靠 __P1__ 本身无法提供旋转角模长 o 的信息。然而,__P2__ 及其转置的组合产生了一个缩放版本的 __P3__,从中可以恢复旋转角的模长:

左侧分量所表示的矢量的长度就是 sin o。这不能唯一地确定 o,因为 o 的取值范围是 0 到 。要完全确定 o 从而确定 ,我们需要更多信息,例如通过确定 cos o

我们可以很容易地得到 cos o。考察分量可得

在确定了 o 的正弦和余弦后,我们可以确定 o。其中一些表达式包含除以 o 的运算,可能为零,但如果 o = 0,则取向矢量就是零矢量。这完成了取向矢量来回转换的实际问题的求解。

旋转的复合

我们可以提出以下问题:“两个旋转的复合对应哪个旋转?”或者等价地,“取向矢量的代数是什么?”我们已经具备所有要素;回答这个问题只是一个计算问题。给定由旋转矩阵 __P3__1 和 __P4__2 表示的两个旋转,这两个旋转的复合旋转矩阵为 __P5__ = __P6__2 __P7__1。这些旋转矩阵中的每一个都可以转换为等价的取向矢量。我们可以定义复合 = 2 o 1。

= (sin o) / o,ß = (1 - cos o)/o2,以及 = cos o。通过直接计算我们得到

以及

这两者共同确定了

嗯,公式相当复杂,但稍加整理后它们可以变得非常简单。设 c = cos ( o/2 ) 和 s = sin ( o/2),并定义 = (s / o) 。矢量 的缩放版本;与 具有大小 o 不同,矢量 具有大小 s = sin (o/2)。注意,如果 o 被限制在小于 的模长,则旋转的大小 o 可以从 的大小恢复。因此,在此限制下,矢量 对应一个唯一的旋转,不需要额外的信息。尽管如此,同时跟踪半角的余弦和正弦是方便的;因此设 q = c = cos ( o/2)。22 矢量 = s 的大小和 q = c,所以 q2 + · = 1。我们可以用每个旋转的 q 重新表达两个旋转复合的公式。我们有

这是一个显著的简化!由 q 的三个分量构成的四元组就是汉密尔顿四元数的分量。我们看到,表示取向的四元数的矢量部分是取向矢量的缩放版本。

汉密尔顿发现了一种更优雅的方式来撰写两个旋转复合的公式。引入三个单位四元数 ijk,使得 i2 = j2 = k2 = - 1,ij = kjk = iki = j,并且每对不同的单位四元数反对易:ij = - ji,以此类推。将 的三个分量记为 ( q1, q2, q3 ),并将 q 记为 q0。然后定义复合四元数 __P25__ = q0 + i q1 + j q2 + k q3。利用单位四元数的乘法规则,两个旋转复合的公式就简化为一个乘法。四元数推广了复数的概念。事实上,它们是除复数之外唯一代数封闭的域。单位四元数不能简单地表示为实数或复数,特别是由于它们的反对易性质。然而,它们确实有复数的 2 × 2 矩阵表示。这些单位元为

其中右边的 i 是虚数单位 i2 = - 1。这些矩阵与泡利自旋矩阵有关。还有其他表示,但关于旋转表示的进一步讨论会使我们离题太远。

如果我们需要反复复合旋转,那么四元数将是一个方便的中间表示。四元数还有另一个优点,即我们不需要担心旋转角是否在适当的范围内。然而,取向矢量的运动方程比四元数的运动方程更简单,因此当我们需要非奇异的取向运动方程时,我们将坚持使用取向矢量。

练习 2.18。复合 验证用取向矢量表示的两个旋转的复合规则(方程 2.144 和 2.144)等价于两个四元数相乘的规则(方程 2.147)。

练习 2.19。运动方程 求取向四元数关于角速度矢量的运动方程。


22 这种记法有可能造成很大混淆:q 不是矢量 的模长。小心!