旋转表示法

一、向量和坐标系

要想确定一个坐标,首先要建立坐标系。在三维空间中建立的坐标系通常都是两两垂直的,坐标系也叫做线性空间中的一组基 $(e_{1},e_{2},e_{3})$ ,向量 $a$ 在这组基的坐标就可以表示成:

向量有内积和外积之分,
内积表示为 $a^Tb$ ,可以描述为两个向量之间的投影关系。
外积表示为 $ab^T$ ,外积大小是两个向量张成四边形的有向面积,之所以有向,是因为外积方向垂直于这两个向量构成的平面,且满足右手定理, $ab^T$ 和 $ba^T$ 会得到大小相同,方向相反的结果。

二、旋转向量

向量的外积是可以表示旋转的,假设物体从 $a$ 旋转到 $b$ 转过的角度为 $\theta$ ,那么旋转的方向和大小分别可以用有向面积的正负和大小来表示,它们的外积方向垂直于它们构成的平面(右手定律),长度等于张成四边形的面积。
于是,我们可以使用一个向量,其方向与旋转轴一致,长度等于旋转角来描述旋转,表示为 $\theta n$ ($\theta$为旋转角, $n$ 为旋转轴)。在三维空间中,只需要三个这样的向量,并且它们可以构成线性空间中的一组基,就可以描述三维空间中任意的刚体旋转。
根据3条旋转轴建立空间坐标,可以略去对转轴的描述,因此,通过一个空间中的三维向量就可以描述旋转,这就是旋转向量。
旋转向量通过3个参数控制了6个自由度的旋转。其表示非常紧凑。

三、旋转矩阵

旋转向量描述的是物体原地做旋转,给人感觉并不关心坐标系,在使用旋转向量的时候,就默认自己是坐标系的中心了。
设某个单位正交基 $(e_{1},e_{2},e_{3})$ 经过一次旋转变成了 $(e_{1}’,e_{2}’,e_{3}’)$ ,那么对于同一个向量 $a$ (注意向量并没有跟随坐标系的旋转而发生运动),它在两个坐标系下的坐标为 $[a_{1},a_{2},a_{3}]^T$ 和 $[a_{1}’,a_{2}’,a_{3}’]^T$ 。根据坐标定义,有:

可以得到 $a=Ra’$ ,这里的 矩阵$R$ 称为旋转矩阵。可以把旋转矩阵的集合定义为

$R^T$ 刻画了一个相反的旋转,这算一个重要性质吧,求逆非常方便。
$SO(3)$ 的旋转矩阵有9个量,但一次旋转只有3个自由度,这种表示法是冗余的。
旋转矩阵自身带有约束太多:必须是一个单位正交矩阵,且行列式为1。

四、四元数

复数由一个实部和一个虚部构成,两个参数可以表示二维平面内所有的旋转,直觉上推广到三个参数就能表示三维旋转,这是错误的,必须4个量才可以表示。
在表达三维空间的旋转时,有一种类似复数的代数:四元数。它和复数一样有实部和虚部,表示为

考虑到三维空间需要3个轴,四元数也有3个虚部。三维空间中的点是通过虚四元数来标识的,此时四元数的实部没有任何作用。而在旋转的过程中,这个实部才会起作用,某种意义上来讲,这个四元数的实部不是三维空间的量。
更详细的四元数内容可以参考https://www.3dgep.com/understanding-quaternions/
这里关心的只是旋转,旋转向量、旋转矩阵、四元数的相互转化,

这里的 $n$ 表示旋转轴,和旋转向量的轴是一根轴,而这跟轴所表示的向量正是旋转矩阵的特征向量。
从旋转向量到旋转矩阵由著名的Rodrigues公式表示。

五、李群李代数

$R$ 是旋转矩阵,设$\phi$ 为 $R$ 的导数,反应了 $R$ 的导数性质,故它在 $SO(3)$ 原点附近的正切空间上。同时在 $t_{0}$ 附近,设 $\phi(t_{0})=\phi_{0}$ ,所以有

李代数对应的反对称矩阵正是李群的导数,而李群李代数存在指数映射,这意味这求导很方便。
李群李代数的关系,正是旋转矩阵与旋转向量的关系。旋转向量其实就是李代数,而旋转矩阵构成的集合就是李群。指数映射即是Rodrigues公式。

任意矩阵的指数映射可以写成一个泰勒展开,但是只有在收敛的情况下才会有结果,其结果仍是一个矩阵。
$\exp(\phi^\wedge)=\sum_{n=0}^{\infty}\frac{1}{n!}(\phi^\wedge)^n$ 公式展开,可以证明Rodrigues公式

$\mathfrak{s}\mathfrak{o}(3)$ 是由一个三维向量组成的集合,每一个向量对应到一个反对成矩阵,可以表达旋转矩阵的倒导数。每个 $SO(3)$ 中的元素都可以对应一个 $\mathfrak{s}\mathfrak{o}(3)$ 的元素,但是可能存在多个 $\mathfrak{s}\mathfrak{o}(3)$ 中的元素对应到同一个 SO(3) 中的元素。

六、李代数求导与扰动模型

BCH公式(Baker-Campbell-Hausdorff)给出

左乘与右乘情况不同。
其中

它的逆

右乘雅可比仅需要取负号

假设对某一个旋转 $\boldsymbol{R}$ 对应的李代数是 $\phi$ ,给它左乘一个微小的旋转,记作 $ \Delta\boldsymbol{R}$ ,对应的李代数为 $\Delta\phi$ 。那么在李群上得到的结果为 $\Delta\boldsymbol{R}·\boldsymbol{R}$ ,而在李代数上根据BCH近似,为 $\boldsymbol{J}^{-1}(\phi)\Delta\phi+\phi$ ,合并起来可以写成:

李代数求导,因为太菜了,照着书没推下来。还是直接上结论吧。

扰动模型,左乘

写在最后:
以前学习都是先学习理论,后学习实践。现在顺序倒过来才发现数学作为工具存在的意义。看高博的书更像看综述,能很快建立知识的闭环,对系统有个了解,然后情不自禁地查更多资料,看更多书来填充知识的框架。
最后推荐一本好书《旋量代数与李群、李代数》,系统学习一波再来补充这篇文章。