旋转矩阵、欧拉角、四元数、轴/角之间的转换
2017-07-12 17:24
561 查看
在机器人学中,表示旋转的有四种方式。不同的人可能习惯于用不同的方法,现将四种方式之间的转换整理出来如下。
旋转矩阵
欧拉角(RPY)
绕
{A}为参考坐标系,将{A}分别按顺序沿xA,yA,zA旋转γ,β,α后,和{B}重合,{A}和{B}之间的旋转方程:
ABRxyz=(γ,β,α)=R(zA,α)R(yA,β)R(xA,α)
四元数
轴/角
经常要用到他们之间的相互转换。
⎧⎩⎨⎪⎪⎪⎪β=atan2(−r31,r211+r221−−−−−−−√)α=atan2(r21,r11),ifβ∈[−π/2,π/2]γ=atan2(r32,r33),ifβ∈[−π/2,π/2]
或者:
⎧⎩⎨⎪⎪⎪⎪β=atan2(−r31,r211+r221−−−−−−−√)α=atan2(−r21,−r11),ifβ∈[π/2,3π/2]γ=atan2(−r32,−r33),ifβ∈[π/2,3π/2]
θ=acos(r11+r22+r33−12)
r→=12sinθ⎡⎣⎢r32−r23r13−r31r21−r12⎤⎦⎥
w=r11+r22+r33+12
v→=12⎡⎣⎢⎢sgn(r32−r23)r11−r22−r33+1−−−−−−−−−−−−−−√sgn(r13−r31)r22−r11−r33+1−−−−−−−−−−−−−−√sgn(r21−r12)r33−r22−r11+1−−−−−−−−−−−−−−√⎤⎦⎥⎥
ABRxyz(γ,β,α)=⎡⎣⎢cαcβsαcβ−sβcαsβsγ−sαcγsαsβsγ−cαcγcβsγcαsβcγ−sαsγsαsβcγ−cαsγcβcγ⎤⎦⎥
R=⎡⎣⎢⎢2(w2+v2x)−12(vxvy+wvz)2(vxvz−wvx)2(vxvy−wvz)2(w2+v2y)−12(vyvz+wvx)2(vxvz+wvx)2(vyvz−wvx)2(w2+v2z)−1⎤⎦⎥⎥
R=⎡⎣⎢r2x(1−cθ)+cθrxry(1−cθ)+rzsθrxrz(1−cθ)−rysθrxry(1−cθ)−rzsθr2y(1−cθ)+cθryrz(1−cθ)+rxsθrxrz(1−cθ)+rysθryrz(1−cθ)−rxsθr2z(1−cθ)+cθ⎤⎦⎥
旋转矩阵
旋转矩阵R表示坐标系`O-x'y'z'`中的向量坐标变换为同一向量在坐标系`O-xyz`中的坐标的变换矩阵(transformation matrix)。 p=Rp' p'=R'p 旋转矩阵属于特殊正交群(special orthonormal group);正交矩阵,每一列为单位矩阵,行列式为1。 - 描述了两个坐标系之间的相对指向。 - 表示了同一点在不同坐标系下(原点相同,即只有转动,没用平动)的坐标之间的坐标变换。 - 是将向量在同一坐标系下进行旋转的算子。
欧拉角(RPY)
绕
Z轴旋转称为回转(Roll),绕
Y轴旋转称为俯仰(Pitch),绕
X轴旋转称为偏转(Yaw)。
{A}为参考坐标系,将{A}分别按顺序沿xA,yA,zA旋转γ,β,α后,和{B}重合,{A}和{B}之间的旋转方程:
ABRxyz=(γ,β,α)=R(zA,α)R(yA,β)R(xA,α)
四元数
是角/轴的扩展。
轴/角
描述一个坐标系沿某一条直线旋转一定的角度,即与另一个坐标系重合。
经常要用到他们之间的相互转换。
一、旋转矩阵
1、旋转矩阵转换为欧拉角
ABRxyz(γ,β,α)=⎡⎣⎢r11r21r31r12r22r32r13r23r33⎤⎦⎥⎧⎩⎨⎪⎪⎪⎪β=atan2(−r31,r211+r221−−−−−−−√)α=atan2(r21,r11),ifβ∈[−π/2,π/2]γ=atan2(r32,r33),ifβ∈[−π/2,π/2]
或者:
⎧⎩⎨⎪⎪⎪⎪β=atan2(−r31,r211+r221−−−−−−−√)α=atan2(−r21,−r11),ifβ∈[π/2,3π/2]γ=atan2(−r32,−r33),ifβ∈[π/2,3π/2]
2、旋转矩阵转化为 角/轴
R=⎡⎣⎢r11r21r31r12r22r32r13r23r33⎤⎦⎥θ=acos(r11+r22+r33−12)
r→=12sinθ⎡⎣⎢r32−r23r13−r31r21−r12⎤⎦⎥
3、旋转矩阵转化为四元数
R=⎡⎣⎢r11r21r31r12r22r32r13r23r33⎤⎦⎥w=r11+r22+r33+12
v→=12⎡⎣⎢⎢sgn(r32−r23)r11−r22−r33+1−−−−−−−−−−−−−−√sgn(r13−r31)r22−r11−r33+1−−−−−−−−−−−−−−√sgn(r21−r12)r33−r22−r11+1−−−−−−−−−−−−−−√⎤⎦⎥⎥
二、欧拉角(RPY)
1、欧拉角转换为旋转矩阵ABRxyz(γ,β,α)=⎡⎣⎢cαcβsαcβ−sβcαsβsγ−sαcγsαsβsγ−cαcγcβsγcαsβcγ−sαsγsαsβcγ−cαsγcβcγ⎤⎦⎥
三、四元数
1、四元数转化为旋转矩阵R=⎡⎣⎢⎢2(w2+v2x)−12(vxvy+wvz)2(vxvz−wvx)2(vxvy−wvz)2(w2+v2y)−12(vyvz+wvx)2(vxvz+wvx)2(vyvz−wvx)2(w2+v2z)−1⎤⎦⎥⎥
四、轴/角
1、轴/角 转化为旋转矩阵R=⎡⎣⎢r2x(1−cθ)+cθrxry(1−cθ)+rzsθrxrz(1−cθ)−rysθrxry(1−cθ)−rzsθr2y(1−cθ)+cθryrz(1−cθ)+rxsθrxrz(1−cθ)+rysθryrz(1−cθ)−rxsθr2z(1−cθ)+cθ⎤⎦⎥
相关文章推荐
- 旋转矩阵、欧拉角、四元数、轴/角之间的转换
- 四元数、欧拉角、旋转矩阵之间互相转换C++源码
- 四元数、欧拉角、旋转矩阵之间互相转换C++源码
- 旋转矩阵、四元数和欧拉角之间的转换——Matlab
- Eigen中欧拉角,旋转向量,旋转矩阵,四元数的转换
- 3D数学基础公式------>矩阵,欧拉角,四元数,之间转换<2>
- 旋转矩阵、欧拉角、四元数理论及其转换关系
- 三维空间 旋转矩阵 四元数 欧拉角 相互转换 组合旋转
- Eigen库中( 旋转矩阵,变换矩阵,轴向量,欧拉角,四元数) 表示及转换
- 坐标系转换之三:欧拉角、四元数、旋转矩阵、方向余弦矩阵、旋转向量、轴角表示
- 四元数与欧拉角之间的转换
- 四元数和旋转轴及旋转角度之间的转换理解实例
- 3d数学基础-欧拉角转换与旋转矩阵或旋转矩阵转换成欧拉角-用C++代码实现
- 旋转矩阵——四元数,欧拉角
- 四元数、欧拉角和旋转矩阵
- 三维旋转:旋转矩阵,欧拉角,四元数
- 学习笔记—四元数与欧拉角之间的转换
- 四元数与欧拉角之间的转换
- 欧拉角和旋转矩阵相互转换
- 三维旋转:旋转矩阵,欧拉角,四元数