关于用欧拉角表示的坐标系姿态旋转变换,大多数教科书和博客上的讲解不甚明晰,自己多方研究分析后,根据自己的理解做如下记录,一方面帮助自己加深巩固,另一方面欢迎各位方家指正。

1. 概念定义



绕坐标系单轴旋转的矩阵:

2 描述坐标系旋转变换的两种形式:


内在旋转与外在旋转的转换关系:互换第一次和第三次旋转的位置则两者结果相同。例如Z-Y-X旋转和内部旋转和X-Y-Z旋转的外部旋转的旋转矩阵相同。详见文章的 “6. 附录:两种旋转标准对应的24种旋转矩阵” 部分。

关于内旋和外旋这两个概念,只不过是对于两种旋转方式的欧拉角的简称。

多数教科书中少有提及“内旋”和“外旋”这两个名词,但是对于相应的两种情况都会进行详细介绍,例如本博客中第4点引用的《机器人学导论》(John J. Craig版)中内容所示。这两种情况都属于欧拉角的范畴,两者不同之处是旋转的参考对象和旋转顺序不同,但是最终变换后的结果是相同的,所谓殊途同归,可参见本博客第6点【附录:两种旋转标准对应的24种旋转矩阵】,发现两种情况下的矩阵乘积结果是相同。

至于以下问题:

默认情况下,即在不指定说明“内旋”或“外旋”情况下,欧拉角的解算属于其中的一种呢?

答案是:在航空、航海和工业机器人末端姿态描述中,通常默认采用的欧拉角形式是“XYZ固定角坐标系”,即“外旋”形式;又称“RPY角“,分别先后按照X轴偏转(Yaw)、Y轴俯仰(Pitch)和绕Z轴滚动(Roll),对应的矩阵变换形式为 Rxyz=R(Z)*R(Y)*R(X)。在实际应用中,选用哪种形式要根据对象的特点(固定工位机器人or 移动机器人or无人机)和计算方便性选择合适的欧拉角。

内旋和外旋的区分方法是:根据矩阵相乘顺序与旋转顺序是否一致,两者一致的为内旋,不一致的为外旋。

3 基于旋转轴分类的欧拉角:

4 文献引用说明:

以下内容选自《机器人学导论》(John J. Craig版)的第31~34页。








5 常见误区:

下面内容摘自博客:欧拉角转旋转矩阵(Matlab内部函数&公式实现)

该博客作者混淆了欧拉角的两种不同转换标准,文章中写的

“S表示旋转顺序,我习惯上将‘XYZ’定义为“先旋转X,再旋转Y,最后旋转Z”,所以最后的R=RzRyRx(特别注意这里!不同的地方表示的含义不一样,有些工具(比如Matlab)里面’XYZ’,表示的是“先旋转Z,再旋转Y,最后旋转X”,所以最后的R=RxRyRz)”

这一部分,作者的旋转命名习惯(R=RzRyRx)是按照【欧拉角外旋】标准中的顺序,即每次旋转的轴是固定坐标系中的轴(绕固定坐标系旋转),所以R(XYZ)=RzRyRx;而MATLAB中计算欧拉角和旋转矩阵选用的是【欧拉角内旋】标准,即每次旋转围绕的轴是上次旋转之后坐标系的某个轴(绕动坐标系中的轴旋转),所以R(XYZ)=RxRyRz。

具体可通过MATLAB官方help文档中的案例来证明其错误,具体如下:

MATLAB官方help文档中计算欧拉角与旋转矩阵的函数说明:
由欧拉角计算旋转矩阵:eul2rotm

由旋转矩阵计算欧拉角:rotm2eul

6. 附录:两种旋转标准对应的24种旋转矩阵



参考文献:

  1. 欧拉角 图解释

  2. [Matlab科学计算] 1.欧拉角和坐标变换个人总结

  3. 欧拉角转旋转矩阵(Matlab内部函数&公式实现)

  4. JohnJ.Craig. 机器人学导论[M]. 2006.

欧拉角和旋转变换:易混淆概念区分MATLAB计算相关推荐

  1. 【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类...

    目录: [C#小知识]C#中一些易混淆概念总结 [C#小知识]C#中一些易混淆概念总结(二) ---------------------------------------分割线----------- ...

  2. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  3. 数字电视的几个易混淆概念

      了解数字电视需要分清的五个易混淆概念 2008年北京奥运会一天天在临近,奥组委承诺北京奥运会将使用高清信号直播.为了让全国的观众收看到在自己家门口举行的这一盛大的体育赛事,广电总局已经开始在全国推 ...

  4. C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用...

    这几天一直在复习C#基础知识,过程中也发现了自己以前理解不清楚和混淆的概念.现在给大家分享出来我的笔记: 一,.NET平台的重要组成部分都是有哪些 1)FCL (所谓的.NET框架类库) 这些类是微软 ...

  5. 线代[2]|对极易混淆概念的梳理—线性相关与线性无关、极大线性无关部分组与秩与基础解系、向量空间的基与维数

    原创首发于CSDN,转载请注明出处(CSDN:古希腊的汉密士),谢谢! 文章目录 一般形式的线性方程组 线性相关与线性无关 线性极大无关部分组与秩与基础解系 |齐次线性方程组的解 向量空间的基与维数 ...

  6. 5、【易混淆概念集】-第四章 1 项目启动会 VS 项目开工会 变更控制的流程

    本讲主要介绍PMBOK第四章中的重要知识点,帮助你进一步理解. 本节目录 一.项目启动会 VS 项目开工会 二.变更控制的流程 一.项目启动会 VS 项目开工会 [出处]PMBOK P86,4.2.2 ...

  7. H.264中的一些易混淆概念

    Q:PSNR 峰值信噪比 Q:是根据它来取qp是不是? A:不是, 和QP没有直接关系, 但是QP的选择会影响到PSNR Q: 如果不用率失真最优化, 为什么选择SATD+delta×r(mv,mod ...

  8. 13、【易混淆概念集】-第七章 质量成本 项目预算 成本基准 应急储备 VS 管理储备 挣值分析

    本讲主要介绍PMBOK第七章中的重要知识点,帮助你进一步理解. 本节目录 一.质量成本 二.项目预算 三.成本基准 四.应急储备 VS 管理储备 五.几种计算 一.质量成本 [出处]PMBOK P24 ...

  9. EMV中易混淆概念总结

     CDOL(卡风险管理数据对象列表):GAC命令中需要传送给卡片的数据对象列表.CDOL是终端在读应用记录处理过程中从卡片中读取的 TDOL(交易证书数据对象列表):列出生成交易证书(TC)哈希计 ...

最新文章

  1. 庖丁解牛-图解MySQL 8.0优化器查询解析篇
  2. LiveVideoStack线上分享第四季(二):基于内容的自适应视频传输算法及其应用...
  3. 操作系统中的同步和异步
  4. ccleaner无法更新_CCleaner正在静默更新关闭自动更新的用户
  5. [转载] Python中pass的作用
  6. linux 设置pip 镜像 Pip Warning:–trusted-host 问题解决方案
  7. 二分--1043 - Triangle Partitioning
  8. 22. Declare data members private
  9. 非常强的用户体验的网站功能
  10. 职工档案管理系统报告与c语言,[职工档案管理系统C语言.doc
  11. Adobe Illustrator CS6 出现错误报告16
  12. java 资格证_程序员从业资格证
  13. 如何提高Windows 系统性能
  14. prev_permutation函数
  15. 基于C++的考试试卷成绩管理系统
  16. 15. 弱人工智能、强人工智能、超人工智能
  17. 蓝桥杯 STEMA 考试 C++ 编程题模拟题
  18. 鸿蒙天钟壁纸,时间数字罗盘屏保
  19. 学习太极创客 — MQTT(五)发布、订阅和取消订阅
  20. 计算机专业 拒绝清华,我国最任性的学霸,因离家太远拒绝清华,因专业不合适拒绝哈佛...

热门文章

  1. 五连阳回调买入法_5日均线和20日均线波浪买入法
  2. CS224n-Lecture12-Information from parts of words (Subword Models)
  3. 公式编写1000问26-28
  4. [编]在Web站点中创建和使用Rss源
  5. OSSH免费版华为Portal系统ISO镜像版发布
  6. 使用Share Sdk 实现第三方登录和分享
  7. Maya面片根据材质分离并导出alembic
  8. 【阅读记录】3DSSD:Point-based 3D Single Stage Object Detector
  9. 非常好用的android 特效
  10. 优化算法2--遗传算法(原理)