【机器人-基础知识】欧拉角、旋转矩阵和四元数

1. 欧拉角

在这里插入图片描述

1.1. 欧拉角的定义

欧拉角是一组三个角度,用于描述一个刚体在三维空间中的定向关系。具体来说,它们表示从一个固定参考坐标系到刚体坐标系的一系列旋转。常见的定义方式是将总体旋转分解为三个连续的简单旋转,每次旋转都绕着当前坐标系的某一固定轴进行。

例如,一种常用的欧拉角序列是 Z–Y–X(或称为航向、俯仰、滚转顺序),其含义如下:

  • Yaw 第一个旋转(航向/偏航):绕固定坐标系的 Z 轴旋转角度 ψ \psi ψ
  • Pitch 第二个旋转(俯仰):绕新坐标系的 Y 轴旋转角度 θ \theta θ
  • Roll 第三个旋转(滚转):绕再次更新后的 X 轴旋转角度 ϕ \phi ϕ

这种分解使得三维旋转问题转化为三个独立旋转角度的叠加。

1.2. 欧拉角的公式

以 Z–Y–X 顺序为例,刚体总旋转矩阵 R R R 可以写成三个旋转矩阵的乘积:

R = R x ( ϕ )    R y ( θ )    R z ( ψ ) R = R_x(\phi) \; R_y(\theta) \; R_z(\psi) R=Rx(ϕ)Ry(θ)Rz(ψ)

其中:

  • 绕 X 轴旋转的矩阵:

    R x ( ϕ ) = [ 1 0 0 0 cos ⁡ ϕ − sin ⁡ ϕ 0 sin ⁡ ϕ cos ⁡ ϕ ] R_x(\phi) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\phi & -\sin\phi \\ 0 & \sin\phi & \cos\phi \end{bmatrix} Rx(ϕ)=1000cosϕsinϕ0sinϕcosϕ

  • 绕 Y 轴旋转的矩阵:

    R y ( θ ) = [ cos ⁡ θ 0 sin ⁡ θ 0 1 0 − sin ⁡ θ 0 cos ⁡ θ ] R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} Ry(θ)=cosθ0sinθ010sinθ0cosθ

  • 绕 Z 轴旋转的矩阵:

    R z ( ψ ) = [ cos ⁡ ψ − sin ⁡ ψ 0 sin ⁡ ψ cos ⁡ ψ 0 0 0 1 ] R_z(\psi) = \begin{bmatrix} \cos\psi & -\sin\psi & 0 \\ \sin\psi & \cos\psi & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(ψ)=cosψsinψ0sinψcosψ0001

将上述三个矩阵依次相乘,就可以得到描述刚体最终定向的旋转矩阵 R R R

1.3. 欧拉角的常见问题

在使用欧拉角描述旋转时,需要注意以下问题:

  1. 万向锁(Gimbal Lock)
    以常见的ZYX欧拉角为例,即首先绕全局z轴旋转,然后绕新的y轴旋转,最后绕新的x轴旋转。当第二次旋转(即绕y轴的旋转)旋转角(例如上例中的 θ \theta θ)达到 ± 9 0 ∘ \pm90^\circ ±90 时。
    第一次和第三次旋转将会围绕同一个轴。这意味着,在这些特殊的角度下,系统失去了一个自由度,因为两次旋转现在作用于相同的轴,不能独立地控制物体的方向。

  2. 多值性与奇异性
    欧拉角存在多值性,即不同的角度组合可能表示相同的旋转。此外,某些角度组合可能使反求公式退化,导致奇异性问题,增加了数值计算的复杂性。

2. 旋转矩阵

2.1. 旋转矩阵的定义

旋转矩阵是一种用于描述刚体或坐标系在欧几里得空间中旋转变换的矩阵。其主要特点包括:

  • 正交性:旋转矩阵 R R R 满足 R T R = I R^T R = I RTR=I,其中 R T R^T RT R R R 的转置, I I I 为单位矩阵。这一性质保证了向量的长度和旋转前后向量间的夹角不变。
  • 行列式为1:即 det ⁡ ( R ) = 1 \det(R) = 1 det(R)=1,这一性质表明旋转矩阵不含有镜像或反射分量。
  • 参数冗余性:在三维空间中,尽管旋转矩阵有 9 个元素,但由于正交性和行列式约束,其实际自由度仅为 3 个。

2.2. 常见旋转矩阵的公式

1. 二维旋转矩阵

在二维平面上,绕原点逆时针旋转角度 θ \theta θ 的旋转矩阵为:
R ( θ ) = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} R(θ)=[cosθsinθsinθcosθ]

2. 三维旋转矩阵

在三维空间中,常用的旋转矩阵包括绕各个坐标轴旋转的矩阵:

  • 绕 X 轴旋转角度 ϕ \phi ϕ 的矩阵

    R x ( ϕ ) = [ 1 0 0 0 cos ⁡ ϕ − sin ⁡ ϕ 0 sin ⁡ ϕ cos ⁡ ϕ ] R_x(\phi) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\phi & -\sin\phi \\ 0 & \sin\phi & \cos\phi \end{bmatrix} Rx(ϕ)=1000cosϕsinϕ0sinϕcosϕ

  • 绕 Y 轴旋转角度 θ \theta θ 的矩阵

    R y ( θ ) = [ cos ⁡ θ 0 sin ⁡ θ 0 1 0 − sin ⁡ θ 0 cos ⁡ θ ] R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} Ry(θ)=cosθ0sinθ010sinθ0cosθ

  • 绕 Z 轴旋转角度 ψ \psi ψ 的矩阵

    R z ( ψ ) = [ cos ⁡ ψ − sin ⁡ ψ 0 sin ⁡ ψ cos ⁡ ψ 0 0 0 1 ] R_z(\psi) = \begin{bmatrix} \cos\psi & -\sin\psi & 0 \\ \sin\psi & \cos\psi & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(ψ)=cosψsinψ0sinψcosψ0001

2.3. 旋转矩阵的示例

1. 二维示例

设有一个二维向量 v = [ 1 0 ] \mathbf{v} = \begin{bmatrix} 1 \\ 0 \end{bmatrix} v=[10

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

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

相关文章

xxl-job部署在docker-destop,实现定时发送预警信息给指定邮箱

XXL-JOB XXL-JOB是一个分布式任务调度平台(XXL是作者徐雪里姓名拼音的首字母),其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 源码仓库地址:https://github.com/xuxueli/xxl-job 源码结构: 系统架构 在xxl-j…

大数据学习(63)- Zookeeper详解

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦🤞 &#x1f…

【数据结构】3顺序表

0 章节 2.1到2.3小节。 理解与表达线性表的逻辑结构; 线性表的结构、结构与操作; 顺序表的表示与实现;顺序表应用; 重点 线性表概念、顺序表定义运算与实现&a…

CUDA编程之OpenCV与CUDA结合使用

OpenCV与CUDA的结合使用可显著提升图像处理性能。 一、版本匹配与环境配置 CUDA与OpenCV版本兼容性‌ OpenCV各版本对CUDA的支持存在差异,例如OpenCV 4.5.4需搭配CUDA 10.0‌2,而较新的OpenCV 4.8.0需使用更高版本CUDA‌。 需注意部分模块(…

WPF从初学者到专家:实战项目经验分享与总结

WPF从初学者到专家:实战项目经验分享与总结 一、前言二、WPF 基础概念与入门2.1 什么是 WPF2.2 XAML 基础2.3 数据绑定基础 三、第一个 WPF 项目:简单的待办事项列表3.1 项目需求分析3.2 项目搭建与界面设计3.3 业务逻辑实现 四、中级项目:音…

一学就会的深度学习基础指令及操作步骤(3)模型训练验证

文章目录 模型训练验证损失函数和优化器模型优化训练函数验证函数模型保存 模型训练验证 损失函数和优化器 loss_function nn.CrossEntropyLoss() # 损失函数 optimizer Adam(model.parameters()) # 优化器,优化参数模型优化 获得模型所有的可训练参数&#x…

Spring Boot 注解大全:全面解析与实战应用

目录 一、Spring Boot 启动与配置相关注解 1.1 SpringBootApplication 1.2 EnableAutoConfiguration 1.3 Configuration 1.4 ComponentScan 二、依赖注入与组件管理注解 2.1 Component 2.2 Service 2.3 Repository 2.4 Controller 2.5 RestController 2.6 Autowired…

【语料数据爬虫】Python爬虫|批量采集征集意见稿数据(1)

前言 本文是该专栏的第5篇,后面会持续分享Python爬虫采集各种语料数据的的干货知识,值得关注。 在本文中,笔者将主要来介绍基于Python,来实现批量采集“征集意见稿”数据。同时,本文也是采集“征集意见稿”数据系列的第1篇。 采集相关数据的具体细节部分以及详细思路逻辑…

企业招聘能力提升之道:突破困境,精准纳才

企业招聘能力提升之道:突破困境,精准纳才 在企业运营的广袤版图中,招聘工作无疑是一块至关重要的拼图。然而,不少企业在这片领域中举步维艰,尽管投入了海量的时间与精力,收获的成果却不尽人意。面试环节仿…

AI对前端开发的冲击

Cursor cursor新版本0.46版本号中有部分是改成了新布局其实 Agent 和 Edit 和 Composer 是一样的,为了方便大家使用,我们把它们合并了,Edit 相当于普通模式下的 Composer,Agent 就是代理模式。 快捷键ctrli、ctrll、ctrlk 4o适合…

java中如何把json转化的字符串再转化成json格式

使用org.json库 首先&#xff0c;确保你的项目中已经包含了org.json库。如果你使用Maven&#xff0c;可以在pom.xml中添加以下依赖&#xff1a; <dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20210307…

泛型、泛型上限、泛型下限、泛型通配符

DAY8.1 Java核心基础 泛型 Generics 是指在类定义时不指定类中信息的具体数据类型&#xff0c;而是用一个标识符来代替&#xff0c;当外部实例化对象时再指定具体的数据类型。 在定义类或者接口时不明确指定类中信息的具体数据类型&#xff0c;在实例化时再来指定具体的数据类…

Win10 下搭建免费的 FTP 服务器 FileZilla

一、概述 FileZilla 服务器是一个免费的开源FTP和FTPS服务器&#xff0c;是根据GNU通用公共许可证条款免费发布的开源软件。FileZilla支持FTP、FTPS、SFTP等文件传输协议&#xff0c;相比其他FTP服务器&#xff0c;最大的优势是FileZilla自由(免费)。 FileZilla的官网地址是&a…

C/C++中对字符处理的常用函数

C语言中的 ctype.h 头文件提供了一系列字符分类和转换函数&#xff0c;用于高效处理字符相关操作。这些函数通过接受 int 类型参数&#xff08;需为 unsigned char 或 EOF &#xff08;-1&#xff09;值&#xff09;&#xff0c;返回非零值表示条件正确&#xff0c;返回0表示错…

双指针算法介绍+算法练习(2025)

一、介绍双指针算法 双指针&#xff08;或称为双索引&#xff09;算法是一种高效的算法技巧&#xff0c;常用于处理数组或链表等线性数据结构。它通过使用两个指针来遍历数据&#xff0c;从而减少时间复杂度&#xff0c;避免使用嵌套循环。双指针算法在解决诸如查找、排序、去重…

【每日八股】计算机网络篇(四):HTTP

目录 HTTP 与 HTTPS 的区别&#xff1f;HTTPS 加密与认证的过程&#xff1f;ClientHelloServerHello客户端回应服务端回应 HTTPS 一定安全可靠吗&#xff1f;HTTPS 状态码的含义&#xff1f;HTTP 缓存有哪些实现方式&#xff1f;HTTP 1.0、HTTP 1.1、HTTP 2.0 和 HTTP 3.0 的区…

TMS320F28P550SJ9学习笔记10:软件模拟I2C通信_驱动1.3寸OLED

现在有了具体的I2C通信器件&#xff0c;一块1.3寸OLED屏幕&#xff0c;今日尝试移植配置一下: 本文主要讲的是&#xff0c;使用软件模拟I2C通信 文章提供测试代码讲解、完整工程下载、测试效果图 目录 前置文章&#xff1a; I2C通信引脚&#xff1a; 软件I2C 引脚的初始化&am…

spring boot 发送邮件验证码

一、前置需求 1、准备邮箱 2、登录授权码 qq邮箱在–>设置–>账号POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 开启服务 二、发送邮件 1、简单邮件 包含邮件标题、邮件正文 2、引入mail启动器 <dependency><groupId>org.springframework.boot</groupI…

塔能科技:智能机箱,为城市安防 “智” 造坚实堡垒

在当今智慧城市建设的浪潮中&#xff0c;城市安防面临着诸多挑战。设备管理难&#xff0c;众多分散的安防设备犹如一盘散沙&#xff0c;难以实现高效统一的管控&#xff1b;数据传输不稳定&#xff0c;关键时刻信息的延迟或丢失&#xff0c;可能导致严重后果。这些问题严重制约…

电商数据分析 电商平台销售数据分析 电商平台数据库设计 揭秘电商怎么做数据分析

《电商参谋数据分析平台方案》&#xff08;28页PPT&#xff09;是一套为电商行业量身定制的一体化解决方案&#xff0c;它通过全链路打通从数据获取到分析的全过程&#xff0c;帮助电商企业实现精细化运营和市场机会的挖掘。该方案针对电商行业在数据获取、加工整合及业务赋能方…