欧拉角与旋转矩阵

news2024/10/6 12:28:44

目录

  • 1. 欧拉角
    • 1.1欧拉角的表示
    • 1.2内旋和外旋
    • 1.3 欧拉角的缺点
  • 2 欧拉角到旋转矩阵的表示
    • 3 值得注意的点
  • 4. 非常感谢您的阅读!

1. 欧拉角

在这里插入图片描述

1.1欧拉角的表示

我们想描述刚体在现实世界的旋转时,可以用旋转矩阵、旋转向量,四元数等来表示,虽然它们能描述旋转,但对我们人类是非常不直观的。很难说,给你一个旋转矩阵R或者四元数q,我们能想象出他是怎么旋转的。

欧拉角就可以很直观的展现这种旋转的过程。因为他把整个旋转过程分解成了绕指定坐标轴顺序的三次旋转。当然,由于分解方式有许多种,所以欧拉角也存在着不同的定义方法。

①绕轴顺序, 比如按ZYX顺序来转如下图。
在这里插入图片描述
当然,也有别的顺序,比如XYZ,ZXY,XZY等。
②围绕的轴的类型,是绕固定轴还是绕自身轴,上面那个例子就是绕自身轴转的,下面给出一个绕固定轴转的欧拉角情况。
可以看到下面每次的旋转都绕黑色实线构成的坐标系转动。
在这里插入图片描述

1.2内旋和外旋

有了1.1的介绍,知道了欧拉角的表示有两个条件,一个是绕轴顺序,一个是绕的轴是不是固定轴,那么就有了内旋和外旋的概念。

①每次旋转是绕固定轴(一个固定参考系,比如世界坐标系)旋转,称为外旋。
②每次旋转是绕自身旋转之后的轴旋转,称为内旋。

人们对概念的理解很容易,最容易忽视的点就是我们通过欧拉角来进行旋转矩阵的计算的时候,用公式怎么表示这两种旋转方式:
下面我们用公式来表示上面两个图的表示情况:
在这里插入图片描述
解析:首先旋转顺序是ZYX,其次是绕自身轴旋转的,这种情况就叫做内旋。
注意:内旋是右乘
在这里插入图片描述
我们按照ZYX的顺序从左到右依次相乘。
在这里插入图片描述
解析:首先旋转顺序是XYZ,其次是绕固定轴旋转的,这种情况就叫做外。
注意:内旋是左乘
在这里插入图片描述
我们按照XYZ的顺序从右到左依次相乘。
值得注意的是在旋转相同的角度的情况下不同的旋转顺序得到的姿态是不一样的。这个你可以自己去验证。
但是上面的例子得出来的旋转矩阵是一样的,这说明了绕ZYX顺序的内旋方式和绕XYZ的外旋方式,得到的姿态一样的,也就是他俩等价

1.3 欧拉角的缺点

欧拉角的缺点就是万向锁问题。
在这里插入图片描述
上方为 ZYX 角定义。下方为 pitch=90 度时,第三次旋转与第一次滚转角相同,使得系统丢失了一个自由度。也就是说第一次旋转和第三次旋转虽说是绕各自不同的轴转动的,但实际上他绕的就是同一个轴。按照欧拉角的思想,只用两个角就可以表示出来啊,就是想让除了绕Z轴之外的两个轴,其中一个先转180°,然后再只调整一个轴就好了。
关于万向锁的理解这里有一篇博客,可以参考一下。

2 欧拉角到旋转矩阵的表示

假设绕XYZ三个轴旋转的角度分别为α , β , γ,则三次旋转的旋转矩阵计算方法如下:
在这里插入图片描述
把这个套到1.2节的公式中就可以了。

3 值得注意的点

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

为什么不同专业选用的欧拉角不同呢?一个是传统,另一重要的原因是不同的转序和不同的轴对应的万向节死锁的位置是不一样的,因此每个专业都想把万向节死锁的位置安排在自己最不常用的位置。但是,无论哪一种欧拉角都是避免不了万向节死锁的。

欧拉角不可以做连续旋转的计算。
假设我们对物体进行一次欧拉角描述的旋转,三个欧拉角分别是(a1,a2,a3),之后我们再进行一次旋转,三个欧拉角描述是(b1,b2,b3),那么我们能否只用一次旋转(使用欧拉角描述(c1,c2,c3))来达到这两次旋转相同的效果呢?事实上这样是非常困难的,我们不能够仅仅使用(a1+b1,a2+b2,a3+b3)来得到这三个角度。一般来说我们会将欧拉角转换成旋转矩阵或者是四元数来进行连续旋转的叠加计算,之后再转换回欧拉角。但是这样做的次数多了可能会引入很大的误差导致旋转结果出错。因此比较好的方案是直接使用旋转矩阵或四元数来计算这类问题。

4. 非常感谢您的阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chromedriver依赖安装失败 解决办法

1.问题描述 在使用npm下载chromedriver依赖时报错: chromedriver2.27.2 install: node install.js2.解决办法 第一步:根据报错信息中的地址,手动下载 chromedriver 依赖。 https://cdn.npmmirror.com/binaries/chromedriver/2.27/chromedr…

VOLTE呼叫流程介绍

VOLTE呼叫流程介绍: A和B均在IDLE模式,A用户(主叫Caller)呼叫B用户(被叫Callee)流程图; A、B均在MME附着,已在AS服务器注册; VOLTE呼叫业务流程 VOLTE呼叫业务流程 VOL…

[附源码]java毕业设计天悦酒店管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

java高级篇 Mybatis-Plus

目录 一、Mybatis-Plus概述 二、特性 三、快速搭建Mybatis-Plus框架 3.1 创建数据库以及表结构和数据 3.2 创建一个springboot工程并引入相关的依赖 3.3 修改配置文件 3.4 创建实体类 3.5 创建dao接口 3.6 为dao接口生成带来实现类 3.7 测试 四、使用mp完成crud操作 4.1 添加…

Linux 基础IO

目录 一、复习C文件IO相关操作 示例代码 fopen的打开模式 C标准库默认打开的三个输入输出流 理解当前路径 二、认识文件相关系统调用接口 示例代码 open函数简介 三、文件描述符 初步认识... 文件描述符的本质: 三个默认打开的文件 文件描述符的分配规则…

SSH客户端工具MobaXterm

前言 SSH客户端远程连接服务器的有xshell(xmanager套件下),需要收费,也可以通过一些和谐的方式使用。 但是有时候,我们需要使用光明正大的软件SSH到远程服务器,MobaXterm家庭版可以正常的使用。 其他产品: SecureCRT&…

任意代码执行漏洞复现

漏洞简介 在 PostgreSQL 数据库的 jdbc 驱动程序中发现一个安全漏洞。当攻击者控制 jdbc url 或者属性时,使用 PostgreSQL 数据库的系统将受到攻击。 pgjdbc 根据通过 authenticationPluginClassName、sslhostnameverifier、socketFactory 、sslfactory、sslpasswo…

021_SSSS_Diffusion Models Already Have a Semantic Latent Space

Diffusion Models Already Have a Semantic Latent Space 1. Introduction 本文指出,现有的Diffusion模型可以在不同的领域有出色的表现,但是缺少可以控制其生成过程的语义隐空间(Semantic Latent Sapce)。本文提出了非对称的反…

C++模拟OpenGL库——图片处理及纹理系统(三):图片缩放操作:简单插值二次线性插值

目录 简单插值 二次线性插值 简单插值 如图,我们想把一张小图缩放成一张大图,自然的想法就是按照它们的长宽比例进行缩放(zoomX)。 但是问题也显而易见,在缩放的过程中,小图的像素并不能一一映射到大图的…

蜂巢能源冲刺科创板上市:拟募资150亿元,上半年收入37亿元

11月18日,蜂巢能源科技股份有限公司(下称“蜂巢能源”)在上海证券交易所递交招股书,准备在科创板上市。本次冲刺科创板上市,蜂巢能源计划募资150亿元,主要用于动力锂离子电池项目、研发中心建设项目等。 据…

Unity游戏Mod/插件制作教程02 - 开发环境准备

前言 虽然本教程的目标读者是有C#基础的玩家,但是作为流程,基础的开发软件部分我还是要记录一下。 安装VisualStudio VisualStudio是我们开发插件最重要的工具,也许你习惯其他开发.net的工具,但是免费的VisualStudio已经足够好用…

王道OS 1.1_1 操作系统的概念、功能和目标

王道OS 1.1_1 操作系统的概念、功能和目标 chap1 计算机系统概述 参考资料 B站王道考研操作系统概念 第9版 (原书、译本) 好久没有写博客总结整理和输出了,学习的惰性在一次次的考试周从零开始的经历中达到了巅峰,现在想重振旗鼓…

换工作有感

最近很长一段时间没有更新博客,更新关于vim相关的操作,主要是最近在忙于换工作的事情。其实本来我也没打算换工作的,主要是最近公司的一些骚操作让我觉得心里很不爽,所以一怒之下提出离职。 背景 先来说说这个事情的背景吧&#…

2022年 SecXOps 安全智能分析技术白皮书 附下载地址

近年来,互联网、大数据和人工智能 等技术都得到了飞速的发展,网络攻击的方法也越来越复杂,过去广泛、漫无目的的攻击威胁,在数年内迅速地转化为有目标、有组织、长期 潜伏的多阶段组合式高级可持续威胁(Advanced Persi…

计算机网络——第五章网络层笔记(5)

网络地址翻译(NAT) Private IP address:不可路由的地址、也可用于广域网链路上 NAT:net address translate 私有IP地址和公有IP地址之间的转换。 PAT:port address translate 将多个私有IP地址影射到同一个公有IP地址的不同…

跑步时戴什么耳机好、分享五款最适合跑步的运动耳机排名清单

在进行户外跑步、骑行等运动,往往会感到枯燥乏味,很难坚持下去,就像我经常跑一圈就觉得没了动力,但是当我戴上耳机听音乐跑步时,不知不觉就结束了,就感觉时间过得很快。不过话有说回来,适合跑步…

【JVM】jvm的体系结构

JVM体系结构如下图所示: JVM大致可以分为五大模块: 类加载子系统(Class Loader SubSystem)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)Java本地接口(Ja…

Java native关键字 实现

需要用到gcc mingw64: 下载安装MinGW-w64详细步骤(c/c的编译器gcc的windows版,win10真实可用)_jjxcsdn的博客-CSDN博客_mingw-w64 我也是根据上面地址安装的 在d盘创建一个.java文件 编写内容 testInt方法用 native关键字修饰 静态块里需要…

Tauri 打包

1、第一次打包运行命令 npm run tauri build 2、可能会出现下面问题 我们需要在tauri.conf.json里面查找identifier这个名称 原来是com.tauri.dev 随便改下名字,我这里改成build了 3、修改配置后,继续打包又出现问题,如下图 我们就单独去下…

Google Earth Engine(GEE)——join连接在GEE中的应用(同一sentinel-2影像集合)含滑动窗口平滑影像过程

JOIN联接允许您根据一个或多个条件组合不同的集合。 ImageCollection 到 ImageCollection 在数据融合中很有用(从不同的数据集中找到匹配的图像) FeatureCollection 到 ImageCollection 用于数据提取(在多个位置提取图像) FeatureCollection 到 FeatureCollection 在地理处…