坐标系中,一个刚体的状态可用位置和姿态来描述,位置即为该刚体在坐标系中的空间位置,用一个坐标向量即可表达。而要描述刚体的姿态,有很多种表示方法,以下列出常用的:
1 旋转矩阵(Rotation matrix)
旋转矩阵是在乘以一个向量的时候有改变向量的方向但不改变大小的效果的矩阵,旋转矩阵可以直接运算,它是用9个量来表达一个旋转,但实际上一次旋转只有3个自由度。因此旋转矩阵表达式是冗余的。同时,对于旋转矩阵自身也有约束,它必须是正交矩阵,且行列式为1,这些约束会使求解变得困难。
旋转矩阵比较好理解,这里不多说,可见:坐标变换及旋转矩阵
2 欧拉角(Euler angles)
2.1 欧拉角
欧拉角是描述刚体姿态的一组3个角值的参量,同时需要指定三个角度转动时分别围绕的坐标轴,以及旋转的顺序,一旦确定了这些,那么这个欧拉角的描述就可以分解为三个基本的旋转,三个基本旋转的旋转矩阵为:
2.1 欧拉角与旋转矩阵
任何关于刚体旋转的旋转矩阵均可以由三个基本旋转矩阵复合而成。但要考虑到欧拉角分为内旋和外旋,内旋和外旋的三个基本旋转组合顺序是有区别的,内旋时三个基本旋转矩阵需右乘,外旋时三个基本旋转矩阵需左乘。
设三个轴x,y,z的欧拉角分别为α,β,γ,外旋,那么旋转矩阵为(为了简洁,以下sin和cos分别用s和c表达)
3 轴角(Axial angle)
3.1 轴角
轴角是用两个参数表示旋转: 一个轴或直线,和绕这个轴的旋转的角度。它也叫做旋转的指数坐标。
给定一个向量K ^ = ( k x , k y , k z ) ,以这个向量K ^ 为旋转轴,旋转θ角,这样我们用一个四维向量( k x , k y , k z , θ ) 就可以来表示这个旋转。
3.2 旋转向量
轴角有时候也用旋转向量表示,以上说轴角是用一个四维向量来表达一个旋转,而更紧凑的表示方式是用一个单位向量来表示轴,而用该三维向量的长度来表示角度值θ。这样一来,就可以简化到用一个三维向量来表示这个旋转,这就是旋转向量。
3.3 轴角与旋转矩阵
已知轴角矢量( k x , k y , k z , θ ) ,根据Rodrigue旋转公式,可求得旋转矩阵为
4 四元数(Quaternions)
4.1 四元数
引入四元数以解决欧拉角、轴角、旋转矩阵等的不足:
- 欧拉角的万向节锁问题;
- 轴角的奇异问题;
- 旋转矩阵的9个数值不相互独立。