姿态的三种描述方式——欧拉角、轴角、四元数

欧拉角

  旋转矩阵对于坐标系的描述是冗余的。旋转矩阵用了9个元素来描述姿态,而事实上,由正交性条件带来6个约束,这9个元素之间不是独立的,而是相关的。这就意味着,只要三个参数就能描述一个刚体在空间中的姿态。
(1)X-Y-Z固定角坐标系
  先将{B}绕{A}的X轴旋转 γ \gamma γ,然后绕{A}的Y轴旋转 β \beta β,最后绕{A}的Z轴旋转 α \alpha α,每个旋转都是绕着固定参考坐标系{A}的轴。
B A R X Y Z ( γ , β , α ) = R Z ( α ) R Y ( β ) R X ( γ ) = [ c α c β c α s β s γ − s α c γ c α s β c γ + s α s γ s α s β s α s β s γ + c α c γ s α s β c γ − c α s γ − s β c β s γ c β c γ ] {^A_B}R_{XYZ}(\gamma,\beta,\alpha)=R_Z(\alpha)R_Y(\beta)R_X(\gamma)=\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 s\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(γ,β,α)=RZ(α)RY(β)RX(γ)=cαcβsαsβ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γ
当已知一个旋转矩阵,可以通过以下计算其X-Y-Z固定角坐标系
B A R X Y Z ( γ , β , α ) = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] {^A_B}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

β = A t a n 2 ( − r 31 , r 11 2 + r 21 2 ) α = A t a n 2 ( r 21 / c β , r 11 / c β ) γ = A t a n 2 ( r 32 / c β , r 33 / c β ) \begin{aligned} \beta=Atan2(-r_{31},\sqrt{r^2_{11}+r^2_{21}}) \\ \alpha=Atan2(r_{21}/c\beta,r_{11}/c\beta)\\ \gamma=Atan2(r_{32}/c\beta,r_{33}/c\beta) \end{aligned} β=Atan2(r31,r112+r212 )α=Atan2(r21/cβ,r11/cβ)γ=Atan2(r32/cβ,r33/cβ)

如果 β = ± 9 0 ∘ \beta=\pm90^\circ β=±90,在这种情况下,仅能求出 α \alpha α γ \gamma γ的和或差。在这种情况下一般取 α \alpha α=0.0,结果如下:当 β = 9 0 ∘ \beta=90^\circ β=90,解得:

β = 9 0 ∘ α = 0 γ = A t a n 2 ( r 12 , r 2 ) \begin{aligned} \beta=90^\circ \\ \alpha=0\\ \gamma=Atan2(r_{12},r_{2}) \end{aligned} β=90α=0γ=Atan2(r12,r2)

β = − 9 0 ∘ \beta=-90^\circ β=90,解得:

β = − 9 0 ∘ α = 0 γ = − A t a n 2 ( r 12 , r 2 ) \begin{aligned} \beta=-90^\circ \\ \alpha=0\\ \gamma=-Atan2(r_{12},r_{2}) \end{aligned} β=90α=0γ=Atan2(r12,r2)
(2)Z-Y-X欧拉角
假设开始两个坐标系重合,先将{B}绕自身的Z轴旋转 α \alpha α,然后绕Y轴旋转 β \beta β,最后绕X轴旋转 γ \gamma γ,就能旋转到当前姿态。称其为Z-Y-X欧拉角,由于是绕自身坐标轴进行旋转,则旋转矩阵为:
B A R Z ′ Y ′ X ′ ( γ , β , α ) = R Z ( α ) R Y ( β ) R X ( γ ) = [ c α c β c α s β s γ − s α c γ c α s β c γ + s α s γ s α s β s α s β s γ + c α c γ s α s β c γ − c α s γ − s β c β s γ c β c γ ] {^A_B}R_{Z\prime Y\prime X\prime}(\gamma,\beta,\alpha)=R_Z(\alpha)R_Y(\beta)R_X(\gamma)=\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 s\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} BARZYX(γ,β,α)=RZ(α)RY(β)RX(γ)=cαcβsαsβ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γ
由旋转矩阵得出Z-Y-X欧拉角的方法与上述X-Y-Z固定角坐标系计算过程相同,在此不再推导。

轴角

  绕空间中某一轴旋转指定角度,可以采用4个参数进行表示。令r为关于参考坐标系O-xyz的旋转轴的单位向量。为了表示绕轴r旋转角度 θ \theta θ的旋转矩阵 R ( θ , r ) R(\theta,r) R(θ,r),方便的做法是对绕参考坐标系的坐标轴的基本旋转进行合成。
  于是发现相应于给定角度和轴的旋转矩阵为:
R ( θ , r ) = [ r x 2 ( 1 − c θ ) + c θ r x r y ( 1 − c θ ) − r z s θ r x r z ( 1 − c θ ) + r y s θ r x r y ( 1 − c θ ) + r z s θ r y 2 ( 1 − c θ ) + c θ r y r z ( 1 − c θ ) − r x s θ r x r z ( 1 − c θ ) − r y s θ r y r z ( 1 − c θ ) + r x s θ r z 2 ( 1 − c θ ) + c θ ] R(\theta,r)=\begin{bmatrix} r{^2_x}(1-c\theta)+c\theta & r_x r_y(1-c\theta)-r_zs\theta &r_xr_z(1-c\theta)+r_ys\theta \\ r_x r_y(1-c\theta)+r_zs\theta & r{^2_y}(1-c\theta)+c\theta & r_y r_z(1-c\theta)-r_xs\theta \\ r_xr_z(1-c\theta)-r_ys\theta& r_y r_z(1-c\theta)+r_xs\theta & r{^2_z}(1-c\theta)+c\theta \end{bmatrix} R(θ,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θ
  如果需要计算逆解以计算相应于如下给定旋转矩阵的轴和角度:
R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] 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

θ = a r c c o s ( r 11 + r 22 + r 33 − 1 2 ) r = 1 2 s i n θ [ r 32 − r 23 r 13 − r 31 r 21 − r 12 ] \begin{aligned} \theta=arccos(\frac{r_{11}+r_{22}+r_{33}-1}{2})\\ r=\frac{1}{2sin\theta}\begin{bmatrix} r_{32}-r_{23}\\ r_{13}-r_{31}\\ r_{21}-r_{12}\end{bmatrix} \end{aligned} θ=arccos(2r11+r22+r331)r=2sinθ1r32r23r13r31r21r12
注意:当 θ = 0 或 p i \theta=0或pi θ=0pi单位向量任意是奇异的。

四元数

  轴角的表达式的不足可以通过一个不同的四参数表达式加以克服,即单位四元数,定义为:Q={ η \eta η ε \varepsilon ε},其中:
ε = c o s θ 2 ε = s i n θ 2 r \begin{aligned}\varepsilon=cos \frac{\theta}{2}\\ \varepsilon=sin \frac{\theta}{2}r\end{aligned} ε=cos2θε=sin2θr

η 2 + ε x 2 + ε y 2 + ε z 2 = 1 \begin{aligned}\eta^2+\varepsilon{^2_x}+\varepsilon{^2_y}+\varepsilon{^2_z}=1\end{aligned} η2+εx2+εy2+εz2=1

  相应于给定四元数的旋转矩阵有以下形式:
R ( θ , r ) = [ 2 ( η 2 + ε x 2 ) − 1 2 ( ε x ε y − η ε z ) 2 ( ε x ε z + η ε y ) 2 ( ε x ε y + η ε z ) 2 ( η 2 + ε y 2 ) − 1 2 ( ε y ε z − η ε x ) 2 ( ε x ε z − η ε y ) 2 ( ε y ε x ) 2 ( η 2 + ε z 2 ) − 1 ] R(\theta,r)=\begin{bmatrix} 2(\eta^2+\varepsilon{^2_x}) -1& 2(\varepsilon_x\varepsilon_y-\eta\varepsilon_z)& 2(\varepsilon_x\varepsilon_z+\eta\varepsilon_y)\\ 2(\varepsilon_x\varepsilon_y+\eta\varepsilon_z) & 2(\eta^2+\varepsilon{^2_y}) -1& 2(\varepsilon_y\varepsilon_z-\eta\varepsilon_x) \\ 2(\varepsilon_x\varepsilon_z-\eta\varepsilon_y)& 2(\varepsilon_y\varepsilon_x) &2(\eta^2+\varepsilon{^2_z}) -1\end{bmatrix} R(θ,r)=2(η2+εx2)12(εxεy+ηεz)2(εxεzηεy)2(εxεyηεz)2(η2+εy2)12(εyεx)2(εxεz+ηεy)2(εyεzηεx)2(η2+εz2)1

  如果需要计算逆解以计算相应于如下给定旋转矩阵的四元数:

R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] 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

ε = 1 2 r 11 + r 22 + r 33 + 1 \begin{aligned}\varepsilon= \frac{1}{2}\sqrt{r_{11}+r_{22}+r_{33}+1}\end{aligned} ε=21r11+r22+r33+1

ε = [ s g n ( r 32 − r 23 ) r 11 − r 22 − r 33 + 1 s g n ( r 13 − r 31 ) r 22 − r 33 − r 11 + 1 s g n ( r 21 − r 12 ) r 33 − r 11 − r 22 + 1 ] \varepsilon=\begin{bmatrix} sgn(r_{32}-r_{23}) \sqrt{r_{11}-r_{22}-r_{33}+1}\\ sgn(r_{13}-r_{31}) \sqrt{r_{22}-r_{33}-r_{11}+1}\\sgn(r_{21}-r_{12}) \sqrt{r_{33}-r_{11}-r_{22}+1}\end{bmatrix} ε=sgn(r32r23)r11r22r33+1 sgn(r13r31)r22r33r11+1 sgn(r21r12)r33r11r22+1

  其中,当 x ≥ 0 x\geq0 x0时sgn(x)=1;当x<0时,sgn(x)=-1;与轴角逆解相比,没有奇点现象。

  • 10
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 欧拉角四元数、旋转矩阵和轴角都是表示三维旋转的不同方式欧拉角是由三个轴角组成,按照顺序分别表示绕x轴旋转的角度、绕y轴旋转的角度、绕z轴旋转的角度。 四元数是由四个实数组成,表示旋转的方向和角度。 旋转矩阵是由3*3的实数组成的矩阵,表示旋转的线性变换。 轴角就是由一个单位向量和一个角度组成,表示绕着该单位向量旋转角度的意思。 它们之间可以相互转换。具体方法需要根据需要选择相应的公式进行转换. ### 回答2: 欧拉角四元数、旋转矩阵和轴角是用于表示物体在三维空间中旋转的常见方法。它们可以相互之间进行转换。 首先,欧拉角是使用三个旋转角度来描述物体的旋转。通常使用的欧拉角包括俯仰角(pitch angle)、偏航角(yaw angle)和滚转角(roll angle)。欧拉角的转换通常涉及将欧拉角转换为旋转矩阵或四元数,并且转换顺序也很重要。 其次,四元数是一种用于表示旋转的数学工具,可以使用具有四个实数部分的向量进行表示。四元数的转换通常涉及将四元数转换为旋转矩阵或欧拉角,或者将旋转矩阵或欧拉角转换为四元数。 旋转矩阵是一个3x3矩阵,用于表示物体的旋转。它是通过将欧拉角四元数转换为矩阵来实现的,也可以将矩阵转换为欧拉角四元数轴角是用于表示旋转的方法之一。它由一个向量和一个表示旋转角度的标量组成。轴角可以通过将轴角转换为旋转矩阵来实现,也可以通过将旋转矩阵转换为轴角来实现。使用轴角进行旋转时,常用的转轴包括x轴、y轴和z轴。 总结起来,欧拉角四元数、旋转矩阵和轴角可以相互转换来表示物体的旋转。这些转换过程在计算机图形学、机器人学和游戏开发等领域经常被使用。理解它们之间的转换关系可以帮助我们更好地理解和应用旋转的概念。 ### 回答3: 欧拉角四元数、旋转矩阵、轴角都是用于描述物体在三维空间中的旋转变换的方法,它们之间可以相互转换。 欧拉角是指通过绕着三个坐标轴的旋转来实现的旋转变换。通常使用三个连续的旋转角度来表示,在航空航天领域经常使用俯仰角、偏航角和滚转角来描述。但欧拉角存在万向锁问题,即在某些情况下会导致旋转变换不唯一。 四元数是一种四维复数,可以用一个实部和三个虚部来表示。它们可以直接表示旋转变换,并且不存在万向锁问题。通过四元数的乘法运算可以实现旋转变换的组合。同时,由于四元数是一个四维向量,所以它们的存储空间比旋转矩阵小。 旋转矩阵是一个3x3的矩阵,用于表示旋转变换。在旋转矩阵中,每一列表示一个旋转后的坐标轴方向。旋转矩阵可以通过将三个坐标轴绕着相应的角度进行旋转得到。但旋转矩阵存在正交性约束,即必须是正交矩阵,并且行列式为1,不满足时需要进行正则化处理。 轴角表示旋转轴和旋转角度的方法。它将旋转变换转化为绕着一个轴旋转一定角度的方式描述轴角与旋转矩阵之间的转换比较直观,可以通过旋转矩阵的特征向量和特征值得到旋转轴和旋转角度。但轴角存在方向的不唯一性,即旋转轴可以有两个相反的方向与同一个旋转变换对应。 以上是欧拉角四元数、旋转矩阵、轴角之间的转换方法及特点的简介。它们在三维空间中描述旋转变换时各有优劣,可以根据具体需求选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值