总结了包括旋转矩阵、旋转矢量、欧拉角、四元数在内的四种旋转方式及其变换关系。
参考资料:
33558 math world.wolfram.com/rodriguesrotationformula.html
3358 blog.csdn.net/scudz/article/details/8284666
3358 www.cn blogs.com/wqj 1212/archive/2010/11/21/1883033.html
目录:
0、基本概念准备
一、旋转矩阵
二、旋转向量
三、欧拉角
四、四元数
五、相互关系
5.1 旋转向量与旋转矩阵
5.2 旋转矩阵与欧拉角
5.3 四元数与旋转矩阵
5.4 四元数与欧拉角
0、基本概念准备
(如果您对以下概念非常了解,请跳过此部分。)
笛卡尔坐标系:我们在中学学过的平面笛卡尔坐标系也叫笛卡尔坐标系。
欧拉角:用于确定定点旋转刚体位置的一组独立角度参数。 用三个角度表示。
旋转变换:在欧式空间中,通过围绕固定点或固定轴旋转刚体元素来获取转换后元素的位置坐标。
旋转矩阵:乘以矩阵左边的元素,可以实现对其进行旋转变换的操作。 具有正交特性。
旋转矢量:解释旋转变换的另一种方法,有时也称为旋转的轴角表示。 也就是说,向量的模值是旋转弧度值,单位化后向量为选取轴。
四元数:也用作旋转变换的表示。 将旋转轴和旋转角分开导出。
另外,滚转角、俯仰角、航向角(roll、pitch、yaw )这3种惯性导航中常见的姿势角可以与这边的欧拉角统一看待。 Roll绕x轴,pitch绕y轴,yaw绕z轴。
请注意,此处讨论的所有坐标系都是右手坐标系。
一、旋转矩阵
在视觉几何中,旋转矩阵是重要的数学工具,可以对元素进行左乘旋转操作。 根据勤奋的鸭子的旋转式,通过原点的旋转轴[x,y,z]旋转角的旋转矩阵如下
在二维的情况下,简要推导如下: (图片来自百度百科) )。
在这种情况下,旋转变换矩阵如下:
在此,以旋转中心为原点,逆时针旋转角度。
写成齐次形式的话:
上图的变换为R * X=X ',在齐次形式中,r (1,3 )和r ) 2,3 )可以表示旋转中心。
在知道变换前后的点坐标,想逆解r的情况下,当默认的旋转中心位于原点时,由于2维的情况下的r只有1个自由度,所以只要知道一对x和x’,就能够解r; 否则,为了将r (1,3 )和r ) 2,3 )视为变量,需要增加两个自由度,总共需要两对点。
对于三维,每个刚体绕三个坐标轴旋转的旋转矩阵都是(非齐次)。
最终,一次旋转的结果是,按照旋转顺序,依次左乘这3个矩阵。 三维时,旋转矩阵有3个自由度,需要3对对应点才能求解。
如果在一次变换中不仅考虑旋转,还考虑平移,则与二维的情况相同,取出齐次矩阵,加上三维坐标平移量即可。
另外,旋转矩阵为正交特性,即。
二、旋转向量
旋转向量也称为旋转轴的轴角表示,顾名思义是以3358www.Sina.com/旋转某轴表示旋转。 旋转矢量的3358www.Sina.com/是物体旋转的欧拉角(弧度),旋转轴是将旋转矢量单位化后的某角度
向量。设旋转向量为 ,则旋转角为 ,旋转轴为 。
这里旋转的方向定义为,延旋转轴向原点看,选转方向是逆时针则为正,顺时针则为负。
三、欧拉角
用来唯一地确定定点转动刚体位置的三个一组独立角参量,由章动角θ、旋进角(即进动角)ψ和自转角j组成,上文已经说过了,与姿态角 roll、pitch、yaw,可统一看成刚体绕坐标轴的转动角度。 后文会具体介绍与其他表达形式的关系。
四、四元数
四元数是四维空间中的一个复数:w+xi+yj+zk,其中: 可将四元数记为 或 或 四元数既不是标量,也不是矢量,由一个标量和三个矢量组合而成。 更加清晰的定义形式为:
上式表示刚体围绕某一过原点的旋转轴旋转θ角,而旋转轴为 ,这里注意四元数模值为1。 用四元数表示旋转,过程如下: 首先,将待旋转的点 p 表示成四元数的形式(只是写成这个形式,模不一定满足为1这个条件): 然后,通过四元数叉乘运算计算 p'(即旋转后的坐标位置): 其中,关键的两步是四元数叉乘和四元数逆变换: 四元数叉乘公式为: 四元数的逆为: 最后,根据公式求解即可。
五、相互关系
5.1 旋转向量与旋转矩阵
旋转向量与旋转矩阵可以通过勤奋的鸭子斯(Rodrigues)变换进行转换:
设旋转向量为 ,则旋转角为 ,于是可将向量单位化 ,最终旋转向量到旋转矩阵的变换公式为:
反变换公式为:
5.2 旋转矩阵与欧拉角
欧拉角到旋转矩阵变换公式上文已给出,反变换请看下文四元数部分。
5.3 四元数与旋转矩阵
设旋转矩阵为:
则由旋转矩阵到四元数q的变换公式为:
不过存在一些特殊情况,此时w等于或接近0,这时候对求解方式做调整:
若r11最大,则:
若r22最大,则:
若r33最大,则:
由四元输到旋转矩阵的变换公式,只需要将四元数表示法带入旋转矩阵公式即可:
5.4 四元数与欧拉角
使用四元数可以有效的解决因欧拉角旋转顺序的制约关系而有可能出现的不合理旋转现象(万向锁)。
欧拉角转换为四元数:刚体按照Z-Y-X顺序依次旋转的欧拉角分别为ψ-θ-φ,则转换公式为:
若坐标轴,即旋转顺序发生变换,则直接交换向量各行的值即可。
四元数转为欧拉角:
其中函数atan2(x,y)的作用是,当x的绝对值比y的绝对值大时使用atan(y/x),反之使用 atan(x/y)。
====================================
如有错误,欢迎指正;如果哪里写的不清楚,欢迎留言