欧拉角及其旋转矩阵,旋转顺序与内旋/外旋及其代码

 目录

欧拉角介绍

旋转矩阵公式推导

旋转顺序

内旋/外旋


欧拉角介绍

欧拉角:

横滚:roll(绕X轴旋转);

俯仰:pitch(绕Y轴旋转);

偏航(也称航向角):yaw(绕Z轴旋转)。

旋转矩阵公式推导

旋转符合右手定则。假设旋转轴顺序为zyx,分别对应yaw(γ)、pitch(β)、roll(α),则旋转矩阵表示为:

 旋转矩阵的推导资料很多了,此处不加赘述。

本文章主要针对旋转顺序内旋/外旋做明确的解释。

旋转顺序

旋转顺序可以是任意设置的。但常见的默认顺序是zyx,对应yaw,pitch,roll。尤其是在做INS/GPS全局局部数据互相转化时。

内旋/外旋

import numpy as np
from scipy.spatial.transform import Rotation as Rot

point = np.array([1,0,0])
rpy = np.array([0, np.pi/4, np.pi/2])

#####################        内旋
# 内旋@need_trans_point = 对n坐标系中的点进行活动坐标旋转后(将n系中的点转到b系中后)(也就是b坐标系中的点)在n坐标系下的位置,用ZYX,ypr,此中need_trans_point表示在n系下的初始位置。和下面一个意思。
# 内旋@need_trans_point =   b坐标系中的点在n坐标系下的位置,用ZYX,ypr,此中need_trans_point表示在b系下的初始位置
# 内旋.T@need_trans_point = n坐标系中的点在b坐标系下的位置,用ZYX,ypr,此中need_trans_point表示在n系下的初始位置
nx=Rot.from_euler('ZYX', rpy[::-1], degrees=False).as_matrix()   ##  注意:zyx需要对应yaw,pitch,roll。
nx1=Rot.from_euler('xyz', rpy, degrees=False).as_matrix()        ##  每种特定顺序的外旋等价于其相反顺序的内旋。结果和上面等价

#####################        外旋
# 外旋@need_trans_point = 对原坐标系中的点进行固定坐标旋转后在原坐标系下的位置,用zyx,ypr,此中need_trans_point表示在n系下的初始位置
# 外旋.T@need_trans_point = 原坐标系中的点在经固定坐标旋转后的新坐标系下的位置,用zyx,ypr
wx=Rot.from_euler('zyx', rpy[::-1], degrees=False).as_matrix()
wx1=Rot.from_euler('XYZ', rpy, degrees=False).as_matrix()

print(wx@point, wx1@point, nx@point, nx1@point, )
print(wx.T@point, wx1.T@point, nx.T@point, nx1.T@point,)

解释:以上代码以scipy,rotation为工具。其中,'ZYX'大写为内旋,'zyx'小写时为外旋(具体参照下面官方说明)。

可查看scipy文档有关rotation说明:

https://www.osgeo.cn/scipy/reference/generated/scipy.spatial.transform.Rotation.from_euler.htmlicon-default.png?t=N7T8https://www.osgeo.cn/scipy/reference/generated/scipy.spatial.transform.Rotation.from_euler.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云服务器4核8g配置好不好?用它干啥使?

腾讯云4核8G服务器多少钱?腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月,活动页面 txybk.com/go/txy 活动链接打开如下图所示: 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器,详细配置为:轻量4核…

CSS简介

1. CSS简介 CSS(Cascading Style Sheets)层叠样式表&#xff0c;又叫级联样式表&#xff0c;简称样式表&#xff0c;文件后缀名为.css&#xff0c;用于HTML文档中元素样式的定义。CSS语法&#xff1a; <!DOCTYPE html> <html lang"en"> <head><…

C语言—用EasyX实现反弹球消砖块游戏

代码效果如下 #undef UNICODE #undef _UNICODE #include<graphics.h> #include<conio.h> #include<time.h> #include<stdio.h>#define width 640 #define high 480 #define brick_num 10int ball_x, ball_y; int ball_vx, ball_vy; int radius; int ba…

删除中间节点(狸猫换太子法)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 每一个裂缝都是为透出光而努力&#…

香橙派OPI Airpro上的智能交通监管系统(保姆级代码)

首先&#xff0c;你需要安装必要的软件包和库&#xff0c;例如Python3和TensorFlow。然后&#xff0c;你可以编写脚本来处理数据采集、分析和报告生成等任务。以下是一个简单的示例&#xff1a; # 安装必要的软件包 sudo apt-get update sudo apt-get install -y python3 pyth…

腾讯云4核8G服务器性能怎么样?大明白来说说

腾讯云4核8G服务器价格&#xff1a;轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线&#xff1f;支持30个并发数&#xff0c;可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

4月4号总结

java学习 一.接口 1.介绍 定义接口需要使用到关键字interface去定义接口。 格式如下&#xff1a; 类与接口的关系不是继承&#xff0c;而是实现&#xff0c;用关键字 implements &#xff0c;格式如下&#xff1a; 这个类去实现接口&#xff0c;其中的关系就相当于&#xf…

DFS(基础,回溯,剪枝,记忆化)搜索

DFS基础 DFS(深度优先搜索) 基于递归求解问题&#xff0c;而针对搜索的过程 对于问题的介入状态叫初始状态&#xff0c;要求的状态叫目标状态 这里的搜索就是对实时产生的状态进行分析检测&#xff0c;直到得到一个目标状态或符合要求的最佳状态为止。对于实时产生新的状态…

不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式

大家好&#xff0c;我是知微&#xff01; 学习过单片机的小伙伴对GPIO肯定不陌生&#xff0c;GPIO &#xff08;general purpose input output&#xff09;是通用输入输出端口的简称&#xff0c;通俗来讲就是单片机上的引脚。 在STM32中&#xff0c;GPIO的工作模式被细分为8种…

gitcode 配置 SSH 公钥

在 gitcode 上配置SSH公钥后&#xff0c;可以通过SSH协议安全地访问远程仓库&#xff0c;无需每次都输入用户名和密码。以下是配置SSH公钥的步骤&#xff1a; 5分钟解决方案 用 OpenSSH公钥生成器 生成 公钥和私钥&#xff0c;私钥文件&#xff08;id_rsa&#xff09;下载&am…

算法设计与分析实验报告python实现(排序算法、三壶谜题、交替放置的碟子、带锁的门)

一、 实验目的 1&#xff0e;加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、排序算法…

python中如何使用help()

help()函数帮助我们了解模块、类型、对象、方法、属性的详细信息。 1、帮助查看类型详细信息&#xff0c;包含类的创建方式、属性、方法 >>> help(list) Help on class list in module builtins: class list(object)| list() -> new empty list| list(iterable)…

EmpireCMS:帝国源码cms网站搬家/数据迁移方法教程

帝国cms迁移数据&#xff0c;从一台旧的服务器把网站文件都搬迁到新的服务器&#xff0c;会涉及到附件&#xff0c;数据库信息等&#xff0c;很多人在搬迁的时候也会遇到各种问题&#xff0c;下面是小编整理的关于如何搬迁帝国cms数据的解决方案和思路&#xff0c;方便新手站长…

957: 逆置单链表

学习版 【C语言】 #include<iostream> using namespace std; typedef struct LNode {char data;struct LNode* next;LNode(char x) :data(x), next(nullptr) {} }LNode; void creatlist(LNode *&L) {int n;char e;cin >> n;LNode* p1, * p2;p1 L;for (int i…

Kubernetes的基础概念

目录 一、概述 二、为什么要用Kubernetes 2.1 从技术层面分析 2.1.1 问题解答 2.1.2 Docker等“裸容器”的不足 2.1.2.1 宕机无法自动恢复 2.1.2.2 健康检查不到位 2.1.2.3 部署、回滚、扩容问题 2.1.2.4 运维难 2.1.3 总结 2.2 从开发人员层面分析 2.2.1 分析日志 …

关于首助编辑高手

首助编辑高手是一款专为现代办公场景设计的集合软件&#xff0c;致力于提升用户的办公效率和便利性。它集成了多种实用的办公辅助工具&#xff0c;包括但不限于文档编辑、图片处理、PDF编辑、文本批量操作等功能&#xff0c;帮助用户轻松应对各种办公挑战。 首助编辑高手主要功…

ChatGPT 在做什么,为什么有效?

原文&#xff1a;What Is ChatGPT Doing … and Why Does It Work? 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 序言 这本简短的书试图从第一原理解释 ChatGPT 是如何工作的。在某种程度上&#xff0c;这是关于技术的故事。但它也是关于科学的故事。以及关于哲学…

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(五)- 向量加载和存储

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容&#xff1a; 这是一份关于向量扩展的详细技术文档&#xff0c;内容覆盖了向量指令集的多个关键方面&#xff0c;如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…

七大开源基金会联合制定符合 CRA 法案的共同标准

欧洲议会上个月通过的《欧洲网络弹性法案》(CRA) 制定通用规范和标准 Apache 软件基金会、Blender 基金会、Eclipse 基金会、OpenSSL 软件基金会、PHP 基金会、Python 软件基金会 和 Rust 基金会 这项工作由 Eclipse 基金会牵头&#xff0c;旨在建立基于现有开源最佳实践的安全…

我认识的Git-Git工作流

WorkFlow 的字面意思&#xff0c;工作流&#xff0c;即工作流程。工作流不涉及任何命令&#xff0c;因为它就是一个规则&#xff0c;完全由开发者自定义&#xff0c;并且自遵守。 集中式工作流 集中式工作流以中央仓库作为项目所有修改的单点实体。相比svn缺省的开发分支trunk…