四元数和欧拉角以及方向余弦的区别

捷联惯导基础知识解析之九万向节死锁/奇异点 背景知识 导航坐标系:东-北-天 载体坐标系:右-前-上 一、平衡环架 平衡环架(英语:Gimbal)为一具有枢纽的装置,使得一物体能以单一轴旋转。由彼此垂直的枢纽轴所组成的一组三只平衡环架,则可使架在最内的环架的物体维持旋转轴不变,而应用在船上的陀螺仪、罗盘、饮料杯架等用途上,而不受船体因波浪上下震动、船身转向的影响。 上图就是一个Gimbal装置了,它是一个陀螺仪。中间有一根... 阅读详情

四元数和欧拉角以及方向余弦的区别

  2078人阅读  评论(0)  收藏  举报
  分类:

欧拉角定义的是三次基本旋转的三个角度,旋转顺序和旋转参考轴随不同领域有不同,在飞机上常用的是Z-X-Y规则,三次顺序旋转角度是偏航,俯仰,横滚,具体还要指明是旋转的

参考系还是旋转的体坐标系通过这三个基本旋转角度可以得到坐标变换矩阵,也叫姿态矩阵,一个3*3矩阵


欧拉角法是直接迭代欧拉角微分方程,但是当转动规则中的第二次基本旋转接近90度的时候,第一次和第三次基本旋转将变得作用相同,称为万向锁,因此受到一定限制

方向余弦法实际上就是直接迭代姿态矩阵微分方程求解姿态,但是是一个3*3矩阵,计算起来比较多

而四元数是将旋转描述为一次旋转,四元数微分方程也比较简洁,迭代起来相对方便快捷

一般传感器应该是采用的四元数迭代,然后由四元数可以算出姿态矩阵,最后算出欧拉角


一,什么是欧拉角?
用一句话说,欧拉角就是物体绕坐标系三个坐标轴(x,y,z轴)的旋转角度。

在这里,坐标系可以是世界坐标系,也可以是物体坐标系,旋转顺序也是任意的,可以是xyz,xzy,yxz,zxy,yzx,zyx中的任何一种,甚至可以是xyx,xyy,xzz,zxz等等等等。。。。。。

所以说欧拉角多种多样。欧拉角可分为两种情况:

1,静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态。

2,动态:即绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动,所以称为动态。

对于分别绕三个坐标轴旋转的情况,下述定理成立:

物体的任何一种旋转都可分解为分别绕三个轴的旋转,但分解方式不唯一。如:

假设绕y轴旋转为heading,绕x轴旋转为pitch,绕z轴旋转为bank,则先heading45°再pitch90°等价于先pitch90°再bank45°。


二,万向锁是一种什么现象?
对于动态欧拉角,即绕物体坐标系旋转。(静态不存在万向锁的问题)无论heading和bank为多少度,只要pitch为±90°(即绕第二个轴的旋转),就会出现万向锁现象。

为了对这一现象有一个感性的认识,请拿起自己的手机(没有?不会吧)和一支笔(用作旋转轴),亲手做如下的几个旋转。

首先确定手机的物体坐标系朝向,为了方便记忆,我们假设z轴与手机屏幕垂直(手机平放于桌面)指向上方,手机较短的一条边为x轴,较长的一条边为y轴

(方向由手机尾部指向头部),物体坐标系的原点是手机左下角的顶点。(注意旋转顺序为zyx)绕z轴旋转任意角度(注意x和y轴也跟着一起旋转),再绕y轴旋转90°,

再绕x轴旋转任意角度。通过多次尝试,你会发现一个共同点:z轴永远是水平的,通俗的说,手机永远也不会立起来!本来我们以为手机会指向任何方向,

但实际上手机好像是被锁在桌面上,只能指向水平的某个方向,这个现象就称为万向锁。
而如果绕y轴旋转不等于90°(1°也好89°也好),只要选择适当的绕x和z的角度,就可以让手机指向三维空间中的任何一个方向,手机是自由的,也就不会遇到万向锁现象。


三,游戏动画中遇到万向锁时会发生什么?

之所以会出现万向锁现象,本质原因是,当第二次旋转角度为90°时,第三个轴就被转到了与第一个轴相同的方向,因此手机缺失了一个自由度(竖直方向的自由度缺失),

只剩下第一个轴和第二个轴的自由度。而只有两个自由度意味着手机的运动被限制在了二维空间中,因此手机永远立不起来。

在游戏中,当角色旋转的动画触发时,角色就会做一系列连续的旋转变换,每一个变换都要用一组欧拉角来表示,但是不可能吧每一个方位的欧拉角都存储起来,

因此动画师定义了一系列关键帧,指定关键帧处角色的方位(用一组欧拉角描述),然后计算机根据时间t对这几组欧拉角进行插值,得到一系列欧拉角。

如果pitch不是±90°,就不会出现万向锁现象,插值后的一系列欧拉角完全可以刻画出我们所期望的角色旋转路径。

如果某个关键帧的pitch即绕第二个轴的旋转为90°,就会遇到万向锁,这时手机只能在水平面内旋转,如果动画师指定下一个关键帧手机的方位不是立起来的,

没有任何问题,但如果指定的下一个关键帧的方位是立起来的,会出现什么情况呢?

为了能有一个感性的认识,还是以手机为例,下面我指定了四个关键帧,四个关键帧处手机的方位分别用R0,R1,R2,R3四组欧拉角表示(逆时针为正方向,右手法则):

(注意R0处的物体坐标系与世界坐标系的指向是相同的,我假定z轴向上,x轴向右,y轴指向自己的胸口)

绕z轴旋转角度 绕y轴旋转角度 绕x轴旋转角度

R0: 0 0 0


R1: 90 0 0


R2: 90 -90 0


R3: 0 0 90

请先分别对手机做这四个变换,然后记住手机的这四个方位,想象一下你“期望”的连续的动画应该是什么样子的。

简单说明如下:初始时刻,手机位于桌面上,屏幕朝上,手机头部指向你的胸口,然后,手机在桌面内逆时针旋转90°,知道手机头部指向右侧,然后手机的右边

开始高起来,直到与桌面垂直,此时手机头部仍然指向右侧,由于R2的第二次旋转是90°,因此手机进入万向锁模式。然后手机应该背对着你,垂直于桌面站立起来,

直到手机是竖直的背对你。

但实际情况是否是这样的呢?

你可以自己尝试对这个四个方位角插值,然后进行旋转,看看得到的路径是否和上述我们所期望的相同。

以下是我的尝试:

求出R0 到R1以及R1到R2的插值,然后旋转,完全符合上面的路径。但是再求出R2到R3的几个插值后,旋转得到的路径与期望不符。比如这两个插值:

z:60 y:60 x:30

z: 45 y:45 x:45.

做这两个旋转,你会发现手机与桌面不垂直,也就是R2到R3的路径与期望的发生了偏移。这就是《3D数学基础:图形与游戏开发》中提到的“路径偏移”和“摄像机抖动”。

总结:如果动画师在某个关键帧处指定了会引发万向锁的方位,则下一个关键帧的方位一旦超出了万向锁的约束范围,则这两个关键帧之间的路径就会发生偏移,反映

在角色动画上是旋转偏移,反映在镜头控制上就是镜头抖动。

要获得路径偏移的感性认识,可以参考这个视频:这个视频和我的描述有些不同,该视频使用一个称为万向节的奇怪装置解释的,而我是直接用的物体坐标系

但路径偏移都是一样的。

四,怎样解决万向锁这个问题?

出现这个问题的根本原因是在万向锁情况下对欧拉角的插值不是线性的,因此旋转路径发生偏移。

解决方法是:

将欧拉角转换为四元数,对四元数进行slerp即球面线性插值,再将这一系列四元数转换为对应的欧拉角,而后作用于角色。缺点是耗费一定的内存,但角色可以任意旋转,

灵活度高。

STM32之MPU6050获取欧拉角 mpu6050 集成了三轴 MEMS 陀螺仪,三轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor)。辅助I2C接口可以连接一个第三方的数字传感器,比如磁力计。扩展了磁力计之后就可以通过其主要I2C接口输出一个 9 轴的信号(否则只能输出一个6轴的信号)。mpu6050 也可以通过其辅助I2C接口连接非惯性的数字传感器,如压力传感器。总之,mpu6050 就是通过陀螺仪和加速度计来分别测量三轴的角速度和角加速度的数据,继而获得俯仰角(Pitch) 阅读详情

相关推荐

APM姿态旋转理论基础

Ardupilot姿态控制器解析(二)—— 理论基础欧拉角 阅读源码的过程中发现对于一些基础理论的掌握还是不够深,因此本篇先把一些理论知识部分汇总一下。本博文会持续更新修改,所有引用均会表明出处。 欧拉角 借一张已经被用烂了的图简单来说一下欧拉角的一些基本概念: 欧拉角是利用3次独立的绕轴旋转运动来确定三维空间中的某一刚体姿态; 欧拉角可以绕着固定轴(大地坐标系) 和 运动轴(机体坐标系) 两种类型的轴进行旋转,运动过程对于前者称为外旋,后者称为内旋; 对于绕轴的顺序,科学界并没有明确的规定,实

moumde的博客 5089

MPU6050 6轴姿态传感器的分析与使用(一)

MPU6050是一个6轴姿态传感器(3轴加速度计和3轴陀螺仪传感器),可以测量芯片自身X、Y、Z轴的加速度、角度参数,通过数据融合,可以得到姿态角。

白云苍狗 8万+

【惯性导航与组合定位技术相关岗位问题总结】

由于网上针对惯性导航与组合定位技术相关岗位的面经较少,自己在学习相关知识的同时,记录了对应的一些基础问题。

qq_39461452的博客 2288

姿态解算--欧拉角、四元数、方向余弦的理解,方便以后回顾

序 大概从去年冬天就开始接触姿态解算的内容了,中间走过很多弯路,当时一度迷糊在理论中,那时前辈让先学习方向余弦矩阵,但实际上,这个实际不常用。不过关于旋转矩阵的那个不正交矫正的原理倒是可以看看,非常巧妙。 本篇主要讲欧拉角与四元数旋转的关系,对方向余弦感兴趣的小伙伴可以评论区评论,我有时间会更新补上详细的方向余弦(可能在年后了,最近有点忙) 如果你有什么迷糊的点,相信读完本文,你说不定就茅塞顿开,恍然大悟,豁然开朗了 欧拉角 讲3个概念: 静态欧拉角; 动态欧拉角; 欧拉角旋转矩阵与次序的关系; 静态欧

EricHai的博客 2192

PX4从放弃到精通(五):PX4中的姿态表示方法及转换关系

文章目录机体坐标系与地理坐标系一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 机体坐标系与地理坐标系 在实际应用中,加速度计的测量轴是由运动平台安装固定此器件的轴向决定的。这些坐标轴就形成了载体坐标系,定义如下: 坐标原点设在载体质心(这样可简化运动方程的推导); y轴指向载体前方,称为横滚轴,横滚角以y轴为起始旋转轴而得到,符合右手定则; x轴与y轴夹角90°,指向载体横向,称为俯仰轴,俯仰角以x轴为起始旋转轴而得到,符合右手定则; z轴与x轴、y轴构成右手笛卡儿坐标系,指向载体垂直方向

超维空间科技的博客 8113

MPU6050姿态传感器实验_欧拉角_frontf4r_mpu6050欧拉角_mpu6050四元数_MPU6050_

实现了MPU6050的硬件驱动,通过DMP库函数读出四元数,并换算成欧拉角,通过串口输出欧拉角

欧拉角以及方向余弦

目前,描述两个坐标系之间关系的常用方法主要有欧拉角法、方向余弦矩阵法和四元数法。因此要弄懂这三种方法的定义及关系,我们必须先从坐标系转化开始了解。下面以四旋翼为例,定义两个坐标系。导航坐标系(参考坐标系)n,选取东北天右手直角坐标系作为导航坐标系n、载体坐标系(机体坐标系)b,选取右手直角坐标系定义:四轴向右为X正方向,向前为Y轴正方向,向上为Z轴正方向。   欧拉角:欧拉角是一种常用的描述方位

luhanser_xin的博客 7438

BurpSuite实战:5分钟搞定DVWA的CSRF漏洞测试(附详细截图)

本文详细介绍了如何使用BurpSuite在DVWA靶场中进行CSRF漏洞测试,包括环境配置、攻击原理剖析、分步攻击演示及企业级防御方案。通过实战案例,帮助读者深入理解CSRF漏洞的危害与防护措施,提升Web应用安全防护能力。

weixin_30879169的博客 494

姿态解算三法对比:欧拉角、四元数、DCM

本文系统对比了三种主流姿态解算算法:欧拉角法、四元数法和方向余弦矩阵法(DCM)。欧拉角法直观易懂但存在万向节死锁问题,适用于简单姿态显示;四元数法计算高效且无奇异性,广泛应用于无人机、机器人等领域;DCM精度最高但计算量大,多用于惯性导航等对精度要求苛刻的场景。文章详细阐述了各算法的数学原理、软件实现方法(包括Python代码示例)及典型应用场景,指出四元数法凭借综合优势成为姿态解算的首选方案,同时强调应根据具体需求选择合适算法。

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1140

win2012 r2 + IIS8.5 伪静态设置脚本映射

win2012 r2 + IIS8.5 伪静态设置脚本映射,网站用的.net fromwork 2.0 ,应用程序池设置了32位支持

xueking87的专栏 3240

别再到处找模板了!手把手教你用Vue3+Element Plus搭建一个‘能跑起来’的管理后台原型

本文详细介绍了如何利用Vue3和Element Plus在72小时内快速搭建一个功能完整的管理后台原型。从环境准备到项目获取、依赖安装、原型定制、数据模拟以及构建优化,手把手教你打造一个可直接演示的后台系统,特别适合创业者快速验证产品逻辑。

weixin_26854555的博客 182

matlab和Eigen库中的一些旋转矩阵(方向余弦矩阵)、四元数和欧拉角之间的转换和绘图的注意事项

* \returns the Euler-angles of the rotation matrix \c *this using the convention defined by the triplet (\a a0,\a a1,\a a2) * * Each of the three parameters \a a0,\a a1,\a a2 represents the respective rotation axis as an integer in {0,1,2}. * For in.

mxdsdo09的博客 4961

LWIP协议栈在STM32H7上的内存优化实战:如何用32KB RAM实现稳定千兆以太网通信

本文深入探讨了在STM32H7微控制器上,如何通过内存优化策略,在仅32KB的D2 SRAM中稳定运行LWIP协议栈以实现千兆以太网通信。文章详细分析了STM32H7的内存架构、LWIP的内存消耗瓶颈,并提供了从描述符表与PBUF池精确分配、链接脚本修改到MPU区域划分的一整套实战优化方案,旨在解决大数据量传输卡死等常见配置问题。

gg901的博客 603

欧拉角与四元数

1.欧拉角 欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度。      参考坐标系: 第一张:pitch,航空领域表示飞机的俯仰角。绕X轴转动结果; 第二张:yaw,表示飞机的偏航角,绕Y轴转动结果; 第三张:roll,表示飞机的翻滚角,绕Z轴转动结果。 2.四元数 四元数

沈春旭的博客 3933

滚动轴承振动信号特征解析与故障诊断模型构建

本文深入解析了滚动轴承振动信号的三大来源与特征,并详细阐述了从时域、频域到时频域的特征提取方法。通过构建基于机器学习(如随机森林、SVM)或深度学习的故障诊断模型,结合实战代码示例,为设备维护工程师提供了一套从信号分析到智能诊断的完整解决方案,旨在实现精准的故障识别与预测性维护。

qsc901234567的博客 368

Excel VBA+Adobe Acrobat Pro PDF发票识别全流程(附避坑指南)

本文详细介绍了如何利用Excel VBA与Adobe Acrobat Pro的API接口,构建一套企业级PDF发票智能识别与处理系统。内容涵盖从环境配置、核心文本提取原理、数据解析清洗到工程化脚本设计的全流程,并针对密码区干扰、不征税发票等常见问题提供避坑指南,旨在帮助财务人员和开发者实现高效、精准的财务数据处理自动化。

weixin_29207439的博客 348

概念解析:欧拉角、姿态角、旋转矩阵、方向余弦矩阵、四元数、万向死锁

任意物体绕自己的各个轴旋转,其【姿态的变化】情况可以用旋转矩阵R来表示。所谓【姿态的变化】情况,可以这样理解: 前提:大地坐标系G系与大地固连,物体坐标系B系与飞机固连(X轴的方向为机头方向,Y轴的方向为左翼,Z轴方向朝天),初始状态下,令两个坐标系完全重合。 问题:现在我在飞机上任取一点A,该点在大地系的坐标为A0=(x0,y0,z0),(显然此时该点在机体系的坐标是一模一样的),那么当飞机...

野生猿-群号1025127672 1万+

大数据Alluxio面试题及参考答案

Alluxio 在大数据生态里的定位是作为数据编排层,能在不同计算框架和存储系统之间起到桥梁的作用。它的核心功能在于加速数据访问,让大数据应用能够更高效地使用数据。Alluxio 把数据存储和数据处理分离开来,使计算框架可以在不考虑底层存储细节的情况下访问数据,这样就提高了系统的灵活性和可扩展性。Alluxio 和 HDFS 既存在关联又有区别。从关联方面来看,HDFS 是一种广泛使用的分布式文件系统,很多大数据应用都将其作为主要的数据存储系统。Alluxio 可以和 HDFS 集成,把 HDFS 当作底层

大模型大数据攻城狮的专栏 862

从原理到代码 梳理姿态更新计算的四元数算法

前言 姿态解算过程涉及到两个坐标系,一个是运载体的机体坐标系,该坐标系与运载体固连,当运载体转动的时候,这个坐标系也跟着转动,我们假设运载体的坐标系为b系。另外一个是地理坐标系,即东北天坐标系,X轴指向东,Y轴指向北,Z轴指向天,这个坐标系也称为导航坐标系,我们假设这个坐标系为n系。 所谓的姿态解算,就是求出当前的机体坐标系b相对于地理坐标系n的变化。由于n系和b 系均为直角坐...

LancerZhang的博客 3万+

【图像去噪】论文精读:AKDT: Adaptive Kernel Dilation Transformer for Effective Image Denoising

论文题目:AKDT: Adaptive Kernel Dilation Transformer for Effective Image Denoising —— AKDT:用于有效图像去噪的自适应核膨胀Transformer图像去噪是一项基本但具有挑战性的任务,特别是在处理高分辨率图像和复杂的噪声模式时。大多数现有方法依赖于标准的 Transformer 架构,该架构通常计算复杂度高,并且对不同噪声水平的适应性有限。在本文中,我们介绍了自适应核膨胀Transformer(AKDT)

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1045

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

旋转的描述【3】——欧拉角

目录一级目录二级目录三级目录 一级目录 二级目录 三级目录

卡尔曼和舒拉 1362

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

方向余弦阵、四元数、等效旋转矢量的关系和不可交换误差的分析

四元数、等效旋转矢量意义及其原理 四元数:因为旋转轴的位置(定轴或不定轴)、旋转角度是四个数,故而矩阵的变换可以由四个数表示,即四元数的表达矩阵旋转形式 等效旋转矢量:矩阵沿着旋转轴u(定轴或不定轴)旋转一定的角度(白phi)的到新的矩阵,进而可以的到一种新的矩阵变化的关系表达式,即等效旋转矢量(黑phi) u为旋转轴,白phi为旋转的角度,黑phi为等效旋转矢量。对上面两个公式进行分析: 1.当u为定轴时,此时不存在不可交换误差,此时的黑phi为角速度的变化值。 2.当u为不定轴时,此时的存在不可交换

qq_48247261的博客 2914

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

学习姿态解算的笔记(包括四元数和融合算法)

Mahony互补滤波算法 姿态解算简介 卡尔曼滤波 B站

qq_45529612的博客 5801

惯性导航之认识欧拉角

惯性导航中不用到欧拉角是不太可能的,特别是飞控等一些需要用到3轴角度的地方,这一篇写一下这段时间对欧拉角的一些认识。 工具: 欧拉旋转、矩阵运算MEMS陀螺仪(微机电陀螺仪) 开始正文 一、什么是欧拉角? 欧拉角是用来唯一地确定定点转动明体位置的三个一组独立角参量,由章动角θ、进动角ψ和自转角φ组成,为L.欧拉首先提出,故得名。 欧拉角是一种常用

linuxheik的专栏 3223
上一篇: 透视投影详解
下一篇: 齐次坐标概念&&透视投影变换推导
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值