欧拉角的理解

2023-11-11

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

欧拉角的理解 的相关文章

  • 华为主题包hwt下载_hwt主题文件下载猫和老鼠

    hwt主题文件下载猫和老鼠app是一款针对华为手机精心设定的一款主题软件 软件主题是以经典的猫和老鼠动态图为主 各种不同风格的搞笑图片可以任意下载使用 当它们出现在你的手机屏保上时 让你聊天时更开心 设置方法比较简单 会有相关的教程 hwt

随机推荐

  • 动画的应用,西游记动画效果

    实现背景向后移动以及人物走路的动画效果 实现代码如下
  • AngularJS(13)-包含

    AngularJS 包含 使用 AngularJS 你可以使用 ng include 指令来包含 HTML 内容 实例
  • WIN10下搭建gcc编译环境

    安装make 1 下载make 3 81 链接 https pan baidu com s 1kj2CzmLvl tDTuHJRXKnBg 提取码 v7fh 2 直接安装 全选next 安装路径最好不要改动 3 进入系统属性 选择环境变量
  • 合天Weekly第二十一周

    分析代码可以看出是sql注入 首先使用order by 看下有几列 这里空格被过滤使用 绕过 当输入4的时候不回显所以为3列 提示flag在 falg 表里构造payload 1 union select 1 flag 3 from fla
  • mybatis.type-aliases-package的作用和用法

    第一种在mapper xml文件中的resultMap的type或者parameterType会用到自定义的POJO 其中resultType User 中 User就是自定义的POJO 此时可以使用完全限定名来指定这些POJO的引用 第二
  • lambda 和 Predicate 的妙用示例

    1 过滤集合数据的多种常用方法 public class DemoTest1 public static void main String args List
  • 数据挖掘和机器学习之间,主要有什么区别和联系?

    数据挖掘和机器学习的区别和联系 周志华有一篇很好的论述 机器学习和数据挖掘 可以帮助大家理解 数据挖掘受到很多学科领域的影响 其中数据库 机器学习 统计学无疑影响最大 简言之 对数据挖掘而言 数据库提供数据管理技术 机器学习和统计学提供数据
  • 手势识别Python-OpenCV

    目录 一 选题背景 5 二 设计理念 5 2 1 搭建平台 5 2 2 问题描述 5 2 3 过程概述 6 三 过程论述 6 3 1 数据集生成 6 3 1 1 标准化图片的采集 6 3 1 2肤色检测 7 3 1 3 特征提取 8 3 1
  • Linux系统基础命令

    Linux系统常用基本命令 ls 查看当前目录下所有文件 注 蓝色 文件夹 白色 普通文件 绿色 拥有执行权限的文件 红色 压缩文件 touch 示例 touch filename txt 在当前目录下创建一个文件 注 文件名区分大小写 文
  • 【LeetCode】83. 删除排序链表中的重复元素

    83 删除排序链表中的重复元素 简单 方法 一次遍历 思路 由于给定的链表是排好序的 因此重复的元素在链表中出现的位置是连续的 因此我们只需要对链表进行一次遍历 就可以删除重复的元素 从指针 cur 指向链表的头节点 随后开始对链表进行遍历
  • 【时间序列数据挖掘】ARIMA模型

    目录 0 前言 一 移动平均模型MA 二 自回归模型AR 三 自回归移动平均模型ARMA 四 自回归移动平均模型ARIMA 总结 0 前言 传统时间序列分析模型 ARIMA模型是一个非常灵活的模型 对于时间序列的好多特征都能够进行描述 比如
  • MYSQL数据库测评及整改

    1 查询数据库版本 select version 2 查询已安装的插件 show plugins 3 查询插件安装的位置 show variables like plugin dir 4 查询用户 选择数据库 select host use
  • 阿里云OCR图片识别

    阿里云OCR图片识别 请求参数 Body 请求示例 java 正常返回示例 错误码定义 阿里云OCR图片识别 单字识别 表格识别 旋转功能 准备条件 阿里云OCR图片识别API购买 初次购买1分钱500次接口调用 请求参数 Body 图像数
  • Java多线程——为什么弃用stop、suspend、resume方法

    初始的Java版本定义了一个stop方法用来终止一个线程 以及一个suspend方法用来阻塞一个线程直至另一个线程调用resume stop和suspend方法有一些共同点 都试图控制一个给定线程的行为 stop suspend和resum
  • 利用Python写Api

    初学者 仅作笔记参考 因为没使用web框架 采用的原生sql进行数据查询有点呆板 from mysql Database import Demo from utils tools import Tools import flask json
  • 运行快捷指令_iOS 13 快捷指令无法运行的解决办法

    升级 iOS13 以后 快捷指令 App 也迎来全新版本 新设计的快捷指令 App 有诸多不同 尤其在权限控制上更为严格 这导致部分快捷指令打开时报错的问题 首次添加快捷指令规则后 运行时提示 无法打开 XXX 这个问题其实很容易解决 方法
  • linux 下 redis 设置密码

    在服务器上 这里以linux服务器为例 为redis配置密码 1 第一种方式 当前这种linux配置redis密码的方法是一种临时的 如果redis重启之后密码就会失效 1 首先进入redis 如果没有开启redis则需要先开启 root
  • matlab函数结果,从Matlab函数返回多个输出变量

    一些选择 添加一个参数以指定控制台的详细输出 但默认情况下将其设置为false function A B C test x y z verbose if nargin 3 verbose false end A 2 x B 2 y C 2
  • JavaScript基础--es6新增的数组方法

    今天给大家介绍一些es6新增的常用数组方法 1 映射数组 map 方法 目的 为了操作原数组 但不改变原数组的值 作用 map 方法返回一个新数组 数组中的元素为原始数组元素调用函数处理后的值 不会对空数组进行检测 返回值 新数组 一定和原
  • 欧拉角的理解

    1 欧拉角概念 百度百科 欧拉角 用来确定定点转动刚体位置的3个一组独立角参量 欧拉角由章动角 旋进角 即进动角 和自转角 组成 欧拉角为欧拉首先提出而得名 维基百科 Euler angles 莱昂哈德 欧拉用欧拉角来描述刚体在三维欧几里得