旋转矩阵的表示方法

来源:互联网 发布:mac的user 编辑:程序博客网 时间:2024/05/18 21:47

最近实习面试被问到了这个问题,当时只想到了两种表示方法,现在就总结一下,算是复习了。
旋转矩阵在机器人学中用得比较多,同时在计算机视觉领域中也需要用到旋转矩阵来表示摄像机的姿态。

1.欧拉角(Euler angles)

欧拉角是用三个角度来表示绕三个旋转轴的旋转,来构成最终的旋转矩阵。但是旋转轴的选择和顺序可以不同。同时旋转轴的方向可以是相对于原本的坐标轴的方向(Extrinsic rotations),也可以是每次旋转都是相对当前的坐标轴方向(Intrinsic rotations)。所以用欧拉角来表示旋转矩阵会有很多种表达方式。以绕 XYZ 轴依次旋转 αβγ 角度的Intrinsic rotations 旋转为例,可以将此旋转矩阵表示为:R=X(α)Y(β)Z(γ

2.轴角(Axis–angle)

欧拉旋转定理说明任何一个三维空间中的旋转都可以用绕着一个固定旋转轴的纯旋转来表示。所以可以用一个单位向量 w 来表示旋转轴的方向,和一个角度 θ 来表示旋转角来参数化旋转矩阵。因为旋转轴是用单位向量表示的,所以可以把角度 θ 和旋转轴相乘,表示为轴角向量(axis-angle vector):

θ =wθ

K 来表示w的叉乘矩阵,即对任意三维向量 v 都有 Kv=w×v
那么旋转矩阵就可以表示为:
这里写图片描述
这里写图片描述
拆开来得到R的具体的表达式:
这里写图片描述

四元数(Quaternion)

用一个单位向量 u 来表示旋转轴,绕该旋转轴旋转 θ 角的旋转矩阵可以用四元数 q 来表示,使用欧拉公式的扩展式来计算:
这里写图片描述
这里写图片描述
这里四元数q=(i,j,k,d)=(sinθ2ux,sinθ2uy,sinθ2uz,cosθ2)
也就是说,四元数的虚数部分组成一个向量,对应旋转轴,不过该向量乘了sinθ2不是单位向量了,实数部分就是 cosθ2

可以直接由四元数得到旋转矩阵:
这里写图片描述

也可以很方便地通过四元数得到轴角表示方式,进而得到旋转矩阵:
这里写图片描述

这里写图片描述
上式中cs 分别是cossin的缩写。

参考资料

https://en.wikipedia.org/wiki/Rotation_matrix
https://en.wikipedia.org/wiki/Axis%E2%80%93angle_representation

0 0
原创粉丝点击