锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

欧拉角、万向节死锁理解

时间:2022-11-02 11:00:00 传感器20000psi

了解欧拉角、万向节

  • 欧拉角理解
    • 举例讲解
    • 顺规,内旋和外旋
      • 顺规
      • 内旋与外旋
      • 总结
    • 东北天坐标系
    • 数学表示
      • 公式推导
      • 举例计算
  • 了解万向节死锁
    • 说明
    • 形象表示
    • 数学表示

欧拉角理解


举例讲解

欧拉角用三次独立绕组确定的轴旋转角度表示姿态。如下图所示
在这里插入图片描述
旋转角度分别为三个旋转角度 α \alpha α β \beta β γ \gamma γ,由初始的 x y z xyz xyz坐标系到了坐标系 x ′ ′ ′ y ′ ′ ′ z ′ ′ ′ x'''y'''z''' xyz坐标系。这就是欧拉角表达姿势的方法。

如图所示,它是航空航天中常用的欧拉角。 ψ \psi ψ θ \theta θ ϕ \phi ϕ 对应于上图中的 α \alpha α β \beta β γ \gamma γ

航空航天中常用的欧拉角

顺规、内旋与外旋

上面所举的例子中,旋转的顺序是按照 z − y − x z-y-x zyx 的顺序来进行旋转的,并且每一次旋转都是绕自身轴(运动轴)进行的, 这只是欧拉角的一种表示方式。欧拉角共有12种表示方式。

顺规

顺规即欧拉角三次转动的顺序规定,欧拉角一共有12种顺规

三个轴只用两个的:Proper Euler angles (z−x−z, x−y−x, y−z−y, z−y−z, x−z−x, y−x−y)
三个轴全都用的:Tait-Bryan angles (x−y−z, y−z−x, z−x−y, x−z−y, z−y−x, y−x−z)

上文举例所用的 z − y − x z-y-x zyx 是三个轴都用的一种顺规,即 先绕 z z z轴旋转,再绕 y y y轴旋转,最后绕 x x x轴旋转

内旋与外旋

根据绕旋转轴的不同,可以分为内旋和外旋。

内旋 Intrinsic rotations:绕运动轴
外旋 Extrinsic rotations:绕固定轴

上文所举的例子每次旋转都是绕上一次旋转所新产生的坐标轴旋转的(这句话有点绕),比如第二次旋转绕的是 y ′ ′ y'' y而不是固定的坐标轴 y y y所以是绕运动轴,即内旋。

  • 如下图所示,每一次旋转都是绕蓝色的固定轴旋转


绕固定坐标轴旋转
  • 如下图所示,每一次旋转都是绕红色(第一张图)绿色(第二张图)紫色(第三张图)的运动轴旋转

绕运动坐标轴旋转

这里图片应引用了台大林沛群老师讲解的机器人运动学。

在绕轴旋转的时候,顺规有12种,内外旋有2种,但是一般情况下,欧拉角都是说的绕自身轴(运动轴)旋转,即 内旋 。所以欧拉角共有 1 × 12 = 12 1\times12=12 1×12=12 种表示方式。


总结

首先说一个很有意思却很不直观的结论:三次绕固定轴旋转的最终姿态和以相反顺序三次绕运动轴旋转的最终姿态相同。

一般情况下,每一个领域有自己默认的欧拉角定义,也就是24种的其中之一。比如经典力学中使用 z x z zxz zxz,量子力学使用的是 z y z zyz zyz,航空航天使用 z y x zyx zyx z x y zxy zxy。所以在跨行业或者跨模块协作的时候,一定要问清楚对方是哪一种欧拉角。


东北天坐标系

我在调一款九轴姿态传感器的时候,看到这样的表述:

这里面东北天坐标系是指,旋转前的 x y z xyz xyz坐标轴与东北天这三个方向是对应的,即 x x x轴指向东方, y y y轴指向北方, z z z轴指向天空。
或者这么理解:当计算出的欧拉角的 α = 0 , β = 0 , γ = 0 \alpha=0,\beta=0,\gamma=0 α=0,β=0,γ=0 的时候, x x x轴指向东方, y y y轴指向北方, z z z轴指向天空。如下图所示


数学表示

公式推导

z − y − x z-y-x zyx 顺规和绕自身轴(运动轴)旋转为例,介绍一下欧拉角与旋转矩阵的关系。
规定:
先绕 z z z 轴旋转 α \alpha α ; 再绕 y y y 轴旋转 β \beta β ; 再绕 x x x 轴旋转 γ \gamma γ
c c c 表示 c o s cos cos ,用 s s s 表示 s i n sin sin

z z z 轴旋转 α \alpha α 所产生的旋转矩阵为

R 1 = [ c α − s α 0 s α c α 0 0 0 1 ] R_1=\begin{bmatrix} c\alpha & -s\alpha & 0 \\ s\alpha & c\alpha & 0 \\ 0 & 0 & 1 \end{bmatrix} R1=cαsα0sαcα0001

y y y 轴旋转 β \beta β 所产生的旋转矩阵为

R 2 = [ c β 0 s β 0 1 0 − s β 0 c β ] R_2=\begin{bmatrix} c\beta & 0 & s\beta \\ 0 & 1 & 0 \\ -s\beta & 0 & c\beta \end{bmatrix} R2=cβ0sβ010sβ0cβ

x x x 轴旋转 γ \gamma γ 所产生的旋转矩阵为

R 3 = [ 1 0 0 0 c γ − s γ 0 s γ c γ ] R_3=\begin{bmatrix} 1 & 0 & 0 \\ 0 & c\gamma & -s\gamma \\ 0 & s\gamma & c\gamma \end{bmatrix} R3=1000cγsγ0sγcγ

绕自身轴(运动轴)转动时,先转动的放在前面,求得旋转矩阵为

R Z Y X = R 1 R 2 R 3 = [ c α c β c α s β s γ − c γ s α s α s γ + c α c γ s β c β s α c α c γ + s α s β s γ c γ s α s β − c α s γ − s β c β s γ c β c γ ] \begin{aligned} R_{ZYX} &=R_1 R_2 R_3 \\ &=\begin{bmatrix} c\alpha c\beta & c\alpha s\beta s\gamma - c\gamma s\alpha& s\alpha s\gamma + c\alpha c\gamma s\beta \\ c\beta s\alpha & c\alpha c\gamma + s\alpha s\beta s\gamma & c\gamma s\alpha s\beta - c\alpha s\gamma \\ -s\beta & c\beta s\gamma & c\beta c\gamma \end{bmatrix} \end{aligned} RZYX=R1R2R3=cαcβcβsαsβcαsβsγcγsαcαcγ+sαsβsγcβsγsαsγ+cαcγsβcγsαsβcαsγcβcγ

举例计算

假设先对 z z z 轴旋转 45 ° 45° 45° ,再对 y y y 轴旋转 30 ° 30° 30° ,最后对 x x x 轴旋转 60 ° 60° 60°

计算得到最终结果为

R Z Y X = R 1 R 2 R 3 = [ 0.6124 0.3062 0.1768 0.6124 0.6597 0.1768 0 0.75 0.4330 ] \begin{aligned} R_{ZYX} &=R_1 R_2 R_3 \\ &=\begin{bmatrix} 0.6124 & 0.3062 & 0.1768 \\ 0.6124 & 0.6597 & 0.1768 \\ 0 & 0.75 & 0.4330 \end{bmatrix} \end{aligned} RZYX=R1R2R3=0.61240.612400.30620.659

相关文章