欧拉角的理解

news/2024/12/28 22:48:22/

1 欧拉角概念

  • 百度百科:欧拉角,用来确定定点转动刚体位置的3个一组独立角参量,欧拉角由章动角θ、旋进角(即进动角)ψ和自转角Φ组成。欧拉角为欧拉首先提出而得名。
  • 维基百科:Euler angles,莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于任何参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。所以,刚体的取向可以用三个基本旋转矩阵来决定。换句话说,任何关于刚体旋转的旋转矩阵是由三个基本旋转矩阵复合而成的。

2 欧拉角定义

对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现。参考系又称为实验室参考系,是静止不动的,而坐标系则固定于刚体,随着刚体的旋转而旋转。
以下规定:XYZ坐标轴是旋转的刚体坐标轴;而xyz坐标轴是静止不动的实验室参考轴。
参考下图,坐标系XYZ原与参考系xyz重合,旋转后,称xy平面与XY平面的交线为交点线,用英文字母N代表。zXZ顺规的欧拉角可以静态地定义如下:

  • α是x轴与交点线的夹角;
  • β是z轴与Z轴的夹角;
  • γ是交点线与X轴的夹角。
    欧拉角欧拉角

右图用动画描述了旋转的过程:即第一绕z轴旋转α,第二绕交点线(即X轴旋转后的轴)旋转β,第三绕Z轴旋转γ.
因此,此过程可分解为三个基本的旋转,从左到右依次代表绕着z轴的旋转、绕着交点线的旋转、绕着Z轴的旋转。即其旋转矩阵为
R = R Z ( α ) R X ( β ) R z ( γ ) = [ c o s α − s i n α 0 s i n α c o s α 0 0 0 1 ] [ 1 0 0 0 c o s β − s i n β 0 s i n β c o s β ] [ c o s γ − s i n γ 0 s i n γ c o s γ 0 0 0 1 ] = R z − 1 ( γ ) R X − 1 ( β ) R Z − 1 ( α ) = [ c o s γ s i n γ 0 − s i n γ c o s γ 0 0 0 1 ] [ 1 0 0 0 c o s β s i n β 0 − s i n β c o s β ] [ c o s α s i n α 0 − s i n α c o s α 0 0 0 1 ] R=R_Z(α)R_X(β)R_z(γ)= \left[\begin{matrix} cosα&-sinα&0\\ sinα&cosα&0\\ 0&0&1\\ \end{matrix}\right] \left[\begin{matrix} 1&0&0\\ 0&cosβ&-sinβ\\ 0&sinβ&cosβ\\ \end{matrix}\right] \left[\begin{matrix} cosγ&-sinγ&0\\ sinγ&cosγ&0\\ 0&0&1\\ \end{matrix}\right]\\ =R_z^{-1}(γ)R_X^{-1}(β)R_Z^{-1}(α)= \left[\begin{matrix} cosγ&sinγ&0\\ -sinγ&cosγ&0\\ 0&0&1\\ \end{matrix}\right] \left[\begin{matrix} 1&0&0\\ 0&cosβ&sinβ\\ 0&-sinβ&cosβ\\ \end{matrix}\right] \left[\begin{matrix} cosα&sinα&0\\ -sinα&cosα&0\\ 0&0&1\\ \end{matrix}\right] R=RZ(α)RX(β)Rz(γ)=cosαsinα0sinαcosα00011000cosβsinβ0sinβcosβcosγsinγ0sinγcosγ0001=Rz1(γ)RX1(β)RZ1(α)=cosγsinγ0sinγcosγ00011000cosβsinβ0sinβcosβcosαsinα0sinαcosα0001
合法的欧拉角组中,唯一的限制是,任何两个连续的旋转,必须绕着不同的转动轴旋转。因此,一共有12种顺规,分别被划分为两类:

  • 经典欧拉角: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-x-z,或者 z-x’-z’‘),而Tait-Bryan角使用三个轴上的旋转角度去表示(例如 x-y-z或者x-y’-z’‘)。
泰特-布莱恩角(Tait–Bryan angles)又常称为:yaw(偏航,绕z旋转)-pitch(俯仰,绕y’旋转)-roll(翻滚,绕x’'旋转)

3 欧拉角的计算

同样的一个旋转,按旋转的坐标系又可分为内旋和外旋:
定义A:内旋,绕着XYZ坐标轴旋转,旋转轴是动态的:最初,两个坐标系统xyz与XYZ的坐标轴是重合的。开始先绕着Z轴旋转α角值。然后,绕着X轴旋转β角值。最后,绕着Z轴作角值γ的旋转。上面动态图表示的就是这个内旋过程。实际上,内旋就是以上的欧拉角静态定义
内旋的旋转矩阵:
R = R Z ( α ) R X ( β ) R Z ( γ ) R=R_Z(α)R_X(β)R_Z(γ) R=RZ(α)RX(β)RZ(γ)
内旋按顺序右乘。
定义B:外旋,绕着xyz坐标轴旋转,旋转轴始终不变:最初,两个坐标系统xyz与XYZ的坐标轴是重合的。开始先绕着z轴旋转γ角值。然后,绕着x轴旋转 β角值。最后,绕着z轴作角值α的旋转。
外旋的旋转矩阵:
R = R z ( α ) R x ( β ) R z ( γ ) R=R_z(α)R_x(β)R_z(γ) R=Rz(α)Rx(β)Rz(γ)
外旋按顺序左乘。

可以证明,以上定义A和定义B两者是等效的。
(原证明方法存在疑义,已移除,谢谢热心读者指点)。

4 万向锁

万向锁(Gimbal lock)是在使用动态欧拉角表示三维物体的旋转时出现的问题。一旦选择±90°作为pitch角,就会导致第一次旋转和第三次旋转等价,整个旋转表示系统被限制在只能绕竖直轴旋转,丢失了一个表示维度。

参考

https://blog.csdn.net/qq_38288618/article/details/77195271
https://blog.csdn.net/qq_21834027/article/details/85144454


http://www.ppmy.cn/news/415879.html

相关文章

ODA是什么

ODA全称(Open Design Alliance) 注:与autocad兼容的软件,大部分基于Intellicad,另外刚冒出一个bricscad,天河的PCCAD V10就是基于bricscad,bricscad是用ODA的库开发的,而开发bricscad的公司原来…

欧达Shine4 root教程_方法

欧达Shine4的root教程在这里整理了一下,之前有机友说自己的手机想删除系统自带的一些无用软件,可是怎么也删除不了,所以需要先进行root才可以删除,不然的话是 删除不了的,这个方法也是大家在root过程中总结出来了&…

EHCI接口概述(三)

EHCI主机接口寄存器在BAR0所示的PCI MEM地址空间中,主要包括两部分: 1)能力寄存器组 2)操作寄存器组 下面先介绍能力寄存器组 CAPLENGTH寄存器,8位只读寄存器,给出了控制寄存器组的偏移量。 HCIVERSION…

在Mybatis执行插入数据时,如何将Date类型字段设置为“yyyy-MM-dd”的格式

1、问题描述 使用mybatis新增插入一条数据到MySQL数据库时, 其中实体类对象的一个属性”hiredate“的类型是日期类型Date, 此属性在数据库中对应的字段“hiredate”类型也是日期Date类型, 但是在数据库中要求“hiredate”字段的字段值为“yy…

INTERSPEECH 2023论文|基于多频带时频注意力的复调音乐旋律提取

论文题目: MTANet: Multi-band Time-frequency Attention Network for Singing Melody Extraction from Polyphonic Music 作者列表: 高虞安,胡英,王柳淞,黄浩,何亮 研究背景 复调音乐是一种具有多个声…

CentOS 7 防火墙设置及配置

1、查看firewall服务状态 systemctl status firewalld2、查看firewall的状态 firewall-cmd --state3、开机启动防火墙: systemctl enable firewalld.service4、启动防火墙: systemctl start firewalld.service5、 停止防火墙: systemctl…

1.9C++不同数据类型转换

C不同数据类型转换 在 C中,不同类型之间的数据转换可以通过强制类型转换(类型转换运算符)来实现。 C 中强制类型转换有以下三种: 1、static_cast static_cast 可以用于基本数据类型之间的转换,也可以用于类层次结构…

imu的静态标定过程-使用imu_utils

IMU标定使用imu_utils工具包,开源见https://github.com/gaowenliang/imu_utils[1],通过该工具包完成标定可以提供IMU的随机误差——noise和random walk。 imu_utils 测量结果:零偏 随机噪音 1.安装imu_utils git clone --recursive https…