在机器人学中,表示旋转的有四种方式。不同的人可能习惯于用不同的方法,现将四种方式之间的转换整理出来如下。

  • 旋转矩阵
旋转矩阵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,zAx_A,y_A,z_AxA,yA,zA旋转γ,β,α\gamma, \beta, \alphaγ,β,α后,和{B}重合,{A}和{B}之间的旋转方程:
    BARxyz=(γ,β,α)=R(zA,α)R(yA,β)R(xA,α) _B^A R_{xyz} = (\gamma, \beta, \alpha) = R(z_A, \alpha)R(y_A, \beta)R(x_A,\alpha )BARxyz=(γ,β,α)=R(zA,α)R(yA,β)R(xA,α)

  • 四元数

      是角/轴的扩展。
    
  • 轴/角

      描述一个坐标系沿某一条直线旋转一定的角度,即与另一个坐标系重合。
    

经常要用到他们之间的相互转换。

##一、旋转矩阵

###1、旋转矩阵转换为欧拉角

BARxyz(γ,β,α)=[r11r12r13r21r22r23r31r32r33] _B^A R_{xyz} (\gamma, \beta, \alpha)= \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}BARxyz(γ,β,α)=r11r21r31r12r22r32r13r23r33

{β=atan2(−r31,r112+r212)α=atan2(r21,r11),ifβ∈[−π/2,π/2]γ=atan2(r32,r33),ifβ∈[−π/2,π/2]\begin{cases} \beta = atan2(-r_{31}, \sqrt{r_{11}^2 + r_{21}^2}) \\ \alpha = atan2(r_{21}, r_{11}), if \beta \in [-\pi/2,\pi/2]\\ \gamma = atan2(r_{32},r_{33}), if \beta \in [-\pi/2,\pi/2] \end{cases}β=atan2(r31,r112+r212 )α=atan2(r21,r11),ifβ[π/2,π/2]γ=atan2(r32,r33),ifβ[π/2,π/2]
或者:
{β=atan2(−r31,r112+r212)α=atan2(−r21,−r11),ifβ∈[π/2,3π/2]γ=atan2(−r32,−r33),ifβ∈[π/2,3π/2]\begin{cases} \beta = atan2(-r_{31}, \sqrt{r_{11}^2 + r_{21}^2}) \\ \alpha = atan2(-r_{21}, -r_{11}), if \beta \in [\pi/2,3\pi/2]\\ \gamma = atan2(-r_{32},-r_{33}), if \beta \in [\pi/2,3\pi/2] \end{cases}β=atan2(r31,r112+r212 )α=atan2(r21,r11),ifβ[π/2,3π/2]γ=atan2(r32,r33),ifβ[π/2,3π/2]

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

R=[r11r12r13r21r22r23r31r32r33] R= \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}R=r11r21r31r12r22r32r13r23r33

θ=acos(r11+r22+r33−12)\theta =acos(\frac{ r_{11} + r_{22} + r_{33} -1}{2})θ=acos(2r11+r22+r331)
r→=12sinθ[r32−r23r13−r31r21−r12]\overrightarrow r = \frac{1}{2sin \theta}\begin{bmatrix} r_{32}-r_{23} \\ r_{13}-r_{31} \\ r_{21} - r_{12} \end{bmatrix}r =2sinθ1r32r23r13r31r21r12

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

R=[r11r12r13r21r22r23r31r32r33] R= \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}R=r11r21r31r12r22r32r13r23r33

w=r11+r22+r33+12w = \frac {\sqrt { r_{11} + r_{22} + r_{33} +1}}{2}w=2r11+r22+r33+1

v→=12[sgn(r32−r23)r11−r22−r33+1sgn(r13−r31)r22−r11−r33+1sgn(r21−r12)r33−r22−r11+1]\overrightarrow v = \frac{1}{2}\begin{bmatrix} sgn (r_{32}-r_{23}) \sqrt {r_{11} - r_{22} - r_{33} +1} \\ sgn(r_{13}-r_{31}) \sqrt {r_{22} - r_{11} - r_{33} +1}\\ sgn(r_{21}-r_{12}) \sqrt {r_{33} - r_{22} - r_{11} +1} \end{bmatrix}v =21sgn(r32r23)r11r22r33+1 sgn(r13r31)r22r11r33+1 sgn(r21r12)r33r22r11+1

##二、欧拉角(RPY)

1、欧拉角转换为旋转矩阵

BARxyz(γ,β,α)=[cαcβcαsβsγ−sαcγcαsβcγ−sαsγsαcβsαsβsγ−cαcγsαsβcγ−cαsγ−sβcβsγcβcγ] _B^A R_{xyz} (\gamma, \beta, \alpha) = \begin{bmatrix} c_\alpha c_ \beta & c_\alpha s_ \beta s_ \gamma - s_ \alpha c_ \gamma & c_\alpha s_ \beta c_\gamma - s_ \alpha s_ \gamma \\ s_\alpha c_ \beta & s_\alpha s_ \beta s_ \gamma - c_ \alpha c_ \gamma & s_\alpha s_ \beta c_\gamma - c _\alpha s_ \gamma \\ -s_ \beta & c_\beta s_\gamma & c_\beta c_\gamma \end{bmatrix}BARxyz(γ,β,α)=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+vx2)−12(vxvy−wvz)2(vxvz+wvx)2(vxvy+wvz)2(w2+vy2)−12(vyvz−wvx)2(vxvz−wvx)2(vyvz+wvx)2(w2+vz2)−1]R= \begin{bmatrix} 2(w^2+v_x^2)-1 & 2(v_xv_y-wv_z) & 2(v_xv_z+wv_x) \\ 2(v_xv_y+wv_z) & 2(w^2+v_y^2)-1 & 2(v_yv_z-wv_x) \\ 2(v_xv_z-wv_x) & 2(v_yv_z+wv_x) & 2(w^2+v_z^2)-1 \end{bmatrix}R=2(w2+vx2)12(vxvy+wvz)2(vxvzwvx)2(vxvywvz)2(w2+vy2)12(vyvz+wvx)2(vxvz+wvx)2(vyvzwvx)2(w2+vz2)1

##四、轴/角

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

R=[rx2(1−cθ)+cθrxry(1−cθ)−rzsθrxrz(1−cθ)+rysθrxry(1−cθ)+rzsθry2(1−cθ)+cθryrz(1−cθ)−rxsθrxrz(1−cθ)−rysθryrz(1−cθ)+rxsθrz2(1−cθ)+cθ] R= \begin{bmatrix} r_x^2(1-c\theta) + c\theta & r_xr_y(1-c\theta) -r_zs\theta & r_xr_z(1-c\theta) +r_ys\theta \\ r_xr_y(1-c\theta) +r_zs\theta & r_y^2(1-c\theta) + c\theta & r_yr_z(1-c\theta) -r_xs\theta \\ r_xr_z(1-c\theta) -r_ys\theta & r_yr_z(1-c\theta) +r_xs\theta & r_z^2(1-c\theta) + c\theta \end{bmatrix}R=rx2(1cθ)+cθrxry(1cθ)+rzsθrxrz(1cθ)rysθrxry(1cθ)rzsθry2(1cθ)+cθryrz(1cθ)+rxsθrxrz(1cθ)+rysθryrz(1cθ)rxsθrz2(1cθ)+cθ

Logo

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

更多推荐