欧拉角与旋转矩阵

一、欧拉角与旋转矩阵

 

1、欧拉角的定义
     定义一个欧拉角,需要明确下面5条:

           1.三个旋转角的组合方式
           2.旋转角度的参考坐标系统(旋转是相对于固定的坐标系还是相对于自身的坐标系)
           3.使用旋转角度是左手系还是右手系
           4.三个旋转角的记法
           5.主动旋转还是被动旋转
1.1 表示旋转的欧拉角旋转顺序有12种

     Proper/classic Euler angle
                                                  z-x-z,x-y-x,y-z-y,z-y-z, x-z-x,y-x-y
    Tait-Bryan angle(也称作:Cardan angles; nautical angles; heading、elevation、bank; yaw、pitch、rooll)
                                                 x-y-z,y-z-x,z-x-y,x-z-y,z-y-x,y-x-z
      
        Proper/classic Euler angle说明这些角度并不是独立的,例如当下面的旋转组合:先绕x轴旋转90度,再绕y轴旋转90度,最后绕x轴旋转-90度,
这一些列组合得到的效果与只绕z轴旋转-90度是一样的。
       也就是说我们仅仅在2个平面上进行旋转(其中一个平面上必须进行两次旋转)就可以得到任意的三维旋转!

1.2 内在旋转(intrinsic rotations)和外在旋转(extrinsic rotations)
       内在旋转每次旋转围绕的轴是上次旋转之后坐标系的某个轴,外在旋转每次旋转的轴是固定坐标系中的轴。内在旋转与外在旋转的转换关系:
互换第一次和第三次旋转的位置则两者结果相同。例如Z-Y-X旋转的内部旋转和X-Y-Z旋转的外部旋转的旋转矩阵相同:

 

                                                             

 

 

                                                                                                                                                     Fig.2外在旋转

 

1.3 使用旋转角度是左手系还是右手系

    使用右手的大拇指指向旋转轴,其他4个手指在握拳过程中的指向便是正的角度

 

  • 右手系是逆时针
  • 左手系是顺时针

 

1.4 主动旋转和被动旋转

 

     主动旋转是指将向量逆时针围绕旋转轴旋转,被动旋转是对坐标轴进行的逆时针旋转,相当于主动旋转的逆操作

2、不同轴的欧拉角转换成旋转矩阵

     给出逆时针旋转的角度为正时(与右手系旋转方向相同的为旋转正方向),绕不同轴的旋转结果:

 

      

 

 

3、旋转的本质
 

 

4、内部旋转(Z-Y-X)对应的旋转矩阵

 

5、为什么内部旋转(Z-Y-X)和外部旋转(X-Y-Z)对应的旋转矩阵是相同的

  

 

 6.相机坐标系中欧拉角与旋转矩阵的关系

    对于两个三维点 p_1(x_1,y_1,z_1)p_2(x_2,y_2,z_2)由点p_1经过旋转矩阵R旋转到p_2则有:

 

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

                                                     \begin{bmatrix}x_2 \\ y_2 \\ z_2 \end{bmatrix} = R\begin{bmatrix}x_1 \\ y_1 \\ z_1 \end{bmatrix}

       任何一个旋转可以表示为依次绕着三个旋转轴旋三个角度的组合。这三个角度称为欧拉角。 对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现,

如下图(蓝色是起始坐标系,而红色的是旋转之后的坐标系) :

                                                                               
                                                                       

                                                  R_x({\theta}) =\begin{bmatrix}1 & 0 & 0 \\ 0 & cos\theta & -sin\theta \\0 & sin\theta & cos\theta \end{bmatrix}
                                                  R_y({\theta}) =\begin{bmatrix}cos\theta & 0 & sin\theta \\ 0 & 1 & 0 \\ -sin\theta & 0 & cos\theta \end{bmatrix}
                                                  R_z({\theta}) =\begin{bmatrix}cos\theta & -sin\theta & 0 \\ sin\theta & cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

 

因此欧拉角转旋转矩阵如下:
R =R_z(\phi)R_y(\theta)R_x(\psi)=\begin{bmatrix} cos\theta cos\phi & sin\psi sin\theta cos\phi - cos\psi sin\theta & cos \psi sin\theta cos\phi +sin\psi sin\phi \\cos\theta sin\phi & sin\psi sin\theta sin\phi+cos\psi cos\phi & cos\psi sin\theta sin\phi -sin\psi cos\theta \\ -sin\theta & sin\psi cos\theta & cos\psi cos\theta\end{bmatrix}
则可以如下表示欧拉角:
                                                         \theta_x=atan2(r_{32},r_{33})
                                                        \theta_y=atan2(-r_{31},\sqrt{r_{32}^2+r_{33}^2})
                                                        \theta_z=atan2(r_{21},r_{11})

 
 
 
posted @ 2022-02-23 15:51  量子与太极  阅读(2321)  评论(0编辑  收藏  举报