刚体三维运动学【旋转矩阵】【欧拉角】【四元素】

news2024/11/24 3:22:18

一些概念

  • 轴角法、旋转矩阵、欧拉角、四元数主要用于:向量的旋转、坐标系之间的转换、角位移的计算、方位的平滑插值计算。
  • 坐标系的旋转一共有三种表示方法:旋转矩阵、欧拉角和四元数。
  • 一般指地面系(世界系)和机体系之间的旋转关系。
  • 已知点p在机体系的坐标,求在地面系的坐标。
  • 为什么要进行坐标转换??一个公式的所有物理量要表示在同一个坐标系内。
  • 欧拉角 、四元素和旋转矩阵这些表示方式都是为 表示一种旋转过程。从姿态A转到姿态B,使用旋转T,则T可用这些方式表示。

对比

旋转矩阵,欧拉角,四元数主要用于:向量的旋转、坐标系之间的转换、角位移的计算、方位的平滑插值计算。
不同的方位表示方法适用于不同的情况:

  • 欧拉角最容易使用。当需要为世界中的物体指定方位时,欧拉角能大大简化人机交互,包括直接键盘输入方位、在代码中指定方位(如为渲染设定摄像机)、在调试中测试。
  • 如果需要在坐标系之间转换向量,就选择矩阵形式。另一种方法是用欧拉角作为方位的“主拷贝“,但同时维护一个旋转矩阵,当欧拉角发生改变时,矩阵也要同时进行更新。
  • 当需要大量保存方位数据(如动画)时,就使用欧拉角或者四元数,欧拉角少占用25%内存,但是转换到矩阵慢。如果动画数据需要嵌套坐标系之间的连接,四元数可能是最好的选择。
  • 平滑插值只能用四元数。用其它形式则必须转到四元数,插值完毕再转回去。
    在这里插入图片描述

轴角法

描述两个坐标系之间的旋转关系;
用一次旋转表示两坐标系的旋转关系;

原理概述

在三维空间中。一个xyz坐标系绕某一个定轴旋转某一个角度就得到了新的坐标系x’y’z’。那反过来说,一个xyz坐标系和另一个x’y’‘z’,是否可以找到一个轴和一角,旋转一次就可以使两个坐标系重合呢?答案是肯定的,那就是轴角法!
轴角法用一个以单位矢量定义的旋转轴,再加上一个标量定义的旋转角来表示旋转。通常的表示[x,y,z,theta],前面三个表示轴,最后一个表示角度。表示非常直观,也很紧凑。

优缺点

优点一:同轴的两次旋转可以直接相加来等效为一次旋转。
优点二:定义简单,相对直观。
硬伤一:当旋转角度是0的时候,旋转轴可以是任意的,即当旋转角是0时旋转关系不唯一。
硬伤二:两次连续的旋转怎样合成呢?或者说是两个旋转如何做差呢?答案是没办法,除非借助其他表示方法。

事实上,有人已经证明了,虽然旋转的自由度是三,但是仅仅用三个数表示必然会出问题。
那需要几个呢?最少四个数,即四元素。
四元数和轴角法什么关系呢?是如何解决轴角法两大硬伤的呢??
参考:https://zhuanlan.zhihu.com/p/94584704

四元素

描述两个坐标系之间的旋转关系;
用一次旋转表示两坐标系的旋转关系;
四元数和轴角法的关系?因此可以把四元数认为是轴角法的一个数学工具. 它解决了轴角法两个致命的缺点!
解决了轴角法、旋转矩阵发中,旋转关系不唯一(死锁?万向锁?)的致命问题!

旋转矩阵

描述两个坐标系之间的旋转关系;
经过三次旋转;

用途

  • 两坐标之间的旋转关系(坐标转换);
  • 点p绕某轴旋转了某个角度,求旋转后的坐标(向量旋转);
  • 方位的平滑插值计算;

坐标系的旋转问题

点绕坐轴系旋转后的坐标求解问题

欧拉角

旋转遵循右手定则;
旋转方式不同领域有不同的规范,不同之处在于以下两点:
(1)绕定轴还是动轴;
(2)xyz轴先绕哪个轴再绕哪个轴?
在航天航空领域,欧拉角的定义为:
将坐标系旋转关系分解为3个方向上的转动;
按照Z–>Y–>X的顺序转动;
步骤:
一开始,地面系oxyz与机体系o’x’y’z’重合;
机体系先绕z轴旋转得到偏航角yaw;
再绕旋转后的y’轴旋转得到俯仰角pitch;
最后绕旋转后的x’轴旋转得到横滚角roll;

参考:https://zhuanlan.zhihu.com/p/98320567

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

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

相关文章

UE4.27 编译及打包HTML5相关资料

UE4.27 编译及打包HTML5相关资料 UE官方资料 https://docs.unrealengine.com/4.27/zh-CN/SharingAndReleasing/HTML5/GettingStarted/ B站视频资料 UE4.27可以打包HTML5啦 Github 中文文档 https://github.com/Xi3Chen/UE4.27PackingH5DDoc emsdk 交叉编译环境安装 Emscripte…

零售数字化转型如何破局?这篇文章全说清了!

“数字化转型”,一个老生常谈的话题。自19世纪互联网崭露头角,亚马逊和eBay等电商平台崛起,引领电子商务的发展。传统零售业开始意识到在线渠道的重要性,并纷纷推出自己的电子商务网站,从自此进入数字化转型的赛道当中…

【UniApp开发小程序】请求包创建+登录功能实现

文章目录 请求包创建创建文件夹请求工具request.js 登录功能实现请求方法页面涉及知识点错误提示前端校验设置token到客户端缓存中路由跳转 请求包创建 小程序的数据需要向后端发请求进行获取,为了简化后续的开发,需要创建一个包专门存放所有发请求的js…

Kong 自定义插件安装和调试

文件格式 官方文档 ├── kong-plugin-mepjwt-0.1.0-1.all.rock # luarocks安装依赖 luarocks pack生成的文件 ├── kong-plugin-mepjwt-0.1.0-1.rockspec # luarocks的安装依赖 └── mepjwt├── handler.lua # 主要处理业务逻辑的文件├── jwt_parser.lua # 依…

Android Framework岗位面试真题分享

Handler是Android中的消息处理机制,是一种线程间通信的解决方案,同时你也可以理解为它天然的为我们在主线程创建一个队列,队列中的消息顺序就是我们设置的延迟的时间,如果你想在Android中实现一个队列的功能,不妨第一时…

【量化课程】02_1.宏观经济学基础概念

2.1_宏观经济学基础概念 文章目录 2.1_宏观经济学基础概念1. 宏观经济简单背景1.1 微观经济学时期1.2 宏观经济学开端1.3 宏观经济学研究的问题1.4 宏观经济与理财的联系 2. 宏观经济分析及关键指标2.1 教材中的宏观经济分析框架和指标2.1.1 国内生产总值GDP2.1.2 边际消费倾向…

vcruntime140.dll重新安装方法,vcruntime140.dll修复教程

vcruntime140.dll是Microsoft Visual C Redistributable的一部分,它是Windows操作系统上非常重要的一个动态链接库文件。这个文件包含了一些运行时库函数,用于支持运行在Windows上使用了Microsoft Visual C开发的软件。如果电脑系统中缺失vcruntime140.d…

【Unity面试篇】Unity 面试题总结甄选 |Unity性能优化 | ❤️持续更新❤️

前言 关于Unity面试题相关的所有知识点:🐱‍🏍2023年Unity面试题大全,共十万字面试题总结【收藏一篇足够面试,持续更新】为了方便大家可以重点复习某个模块,所以将各方面的知识点进行了拆分并更新整理了新…

SOEM_1(笔记,从别的博客文章学的笔记)

目录介绍: doc:帮助文档、 osal:主要是用于符合OSADL和实时进程创建。也就是说:发送EtherCAT数据包不能抖动太大,如果直接使用linux提供的原生线程,可能实时性无法满足。需要对Linux内核打上实时补丁&…

高等数学❤️第一章~第二节~极限❤️极限的概念与性质~数列极限详解

【精讲】高等数学中的数列极限解析 博主:命运之光的主页 专栏:高等数学 目录 导言 一、数列极限的定义 二、数列极限的判定方法 三、数列极限的性质 必需记忆知识点 例题(用于熟悉数列极限) 例题1 例题2 例题3 结论 导言…

【QQ好友列表展示-设置HeaderView Objective-C语言】

一、好,看一下,刚才我们这个btnGroupTitle的frame为什么是0 现在我们首先知道,当你程序一运行起来以后,你这里的self,就是 当你程序运行起来以后,这个headerView 的frame,默认应该是0的 就是我们看到的效果,它应该都是0 的 一开始都是0 的 那么其实也就是说,是这样…

Pruning 系列 (十)Pruning VGG 实战

环境 python 3.9numpy 1.24.1pytorch 2.0.0+cu117流程 一、 VGG 模型代码 # -*- coding: utf-8 -*- import torch import torch.nn as nndefault_cfg = {11: [64, M, 128, M, 256, 256, M, 512, 512, M, 512, 512],13: [64, 64, M, 128, 128, M, 256, 256, M, 512, 512, M, …

认识企业级定时任务Quartz

文章目录 前言一、实现一个Quartz的小案例1.创建一个maven项目2.添加Quartz依赖3.创建一个配置文件配置Quartz信息4.创建一个Job类继承Job接口5.编写主方法逻辑进行测试6.测试运行结果 二、Job和JobDetail总结 前言 目前仍有大部分企业仍在使用Quartz这种定时任务框架&#xf…

【分布式应用】ceph分布式存储

目录 一、存储基础1.1单机存储设备1.2单机存储的问题1.3分布式存储的类型 二、Ceph简介2.1Ceph 优势2.2Ceph 架构2.3Ceph核心组件OSD(Object Storage Daemon,守护进程 ceph-osd)PG(Placement Group 归置组)PoolMonitor…

【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析

实际上 Nginx 除了承担代理网关角色外还会应用于 7 层应用上的负载均衡,本课时重点讲解 Nginx 的负载均衡应用架构,及最常见的问题。 学前提示 Nginx 作为负载均衡是基于代理模式的基础之上,所以在学习本课时前,你需要对 Nginx …

Codeforces Round 884 (Div. 1 + Div. 2)(视频讲解A--D)

[TOC](Codeforces Round 884 (Div. 1 Div. 2)&#xff08;视频讲解A–D&#xff09;) 视频链接&#xff1a;Codeforces Round 884 (Div. 1 Div. 2)&#xff08;视频讲解A–D&#xff09; A Subtraction Game 1、 板书&#xff1a; 2、代码 #include<bits/stdc.h> #…

网络协议与攻击模拟-19-FTP协议

FTP 协议 1、了解 FTP 协议 2、使用在 Windows 操作系统上使用 serv - U 软件搭建 FTP 服务器 3、分析 FTP 流量 一、 FTP 协议 1、概念 FTP &#xff08;文件传输协议&#xff09;&#xff0c;由两部分组成&#xff1a;客户端&#xff0f;服务器 C / S 架构&#xff0c;应…

Uniapp 版本更新

文章目录 前言Uniapp更新确定接口是否能够使用基本代码封装更新软件区别 前言 软件发布之后更新是经常出现的需求。我们希望软件能够自动连网更新软件&#xff0c;而不是重新去手动安装一个apk安装包。不需要更新的软件只有两个&#xff0c;一个是微信小程序&#xff0c;另一个…

C++浅谈const

在学C的时候&#xff0c;必不可少的是const&#xff0c;他或许在C语言中是可有可无的&#xff0c;但是在C中绝对不是&#xff0c;我们在学习C语言的时候&#xff0c;我们知道的是&#xff0c;经常有人说加const是为了保证“安全”&#xff0c;那么&#xff0c;所谓的“安全”是…

MFC第十六天 CFileDialog、CEdit简介、(线程)进程的启动,以及Notepad的开发(托盘技术-->菜单功能)

文章目录 CCommonDialogCFileDialogCEdit托盘技术进程的启动附录1:启动线程方式附录2:MFC对话框的退出过程 CCommonDialog 通用对话框 CCommonDialog 这些对话框类封装 Windows 公共对话框。 它们提供了易于使用的复杂对话框实现。 CFileDialog 提供用于打开或保存文件的标准对…