转自:http://blog.csdn.net/xuehuafeiwu123/article/details/74942989

并做修改
参考:

http://blog.csdn.net/yc461515457/article/details/51126352

http://www.xieguofang.cn/Maths/3D_Rotation/Guofang_Xie%27s_Formulas_for_3D_Rotation_Ch.htm

https://en.wikipedia.org/wiki/Rotation_matrix

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


机器人学中,表示旋转的有四种方式。四种方式之间的转换整理出来如下。

  • 欧拉角(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)[π/2,π/2]α=atan2(r21,r11)γ=atan2(r32,r33)

β=atan2(r31,r211+r221)[π/2,3π/2]α=atan2(r21,r11)γ=atan2(r32,r33)

2、旋转矩阵转化为 角/轴

R=r11r21r31r12r22r32r13r23r33

θ=acos(r11+r22+r3312)

r=12sinθr32r23r13r31r21r12

3、旋转矩阵转化为四元数

R=r11r21r31r12r22r32r13r23r33

w=r11+r22+r33+12

v=12sgn(r32r23)r11r22r33+1sgn(r13r31)r22r11r33+1sgn(r21r12)r33r22r11+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(vxvzwvx)2(vxvywvz)2(w2+v2y)12(vyvz+wvx)2(vxvz+wvx)2(vyvzwvx)2(w2+v2z)1

四、轴/角

1、轴/角 转化为旋转矩阵


R=r2x(1cθ)+cθrxry(1cθ)+rzsθrxrz(1cθ)-rysθrxry(1cθ)rzsθr2y(1cθ)+cθryrz(1cθ)+rxsθrxrz(1cθ)+rysθryrz(1cθ)rxsθr2z(1cθ)+cθ



Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐