数学概率 | 旋转矩阵、欧拉角、四元数

这篇具有很好参考价值的文章主要介绍了数学概率 | 旋转矩阵、欧拉角、四元数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一,旋转矩阵

二维旋转矩阵

三维旋转矩阵

二,欧拉角

三,四元数

四,矩阵、欧拉角、四元数相互转换

四元数转矩阵

矩阵转四元数

欧拉角转矩阵

矩阵转欧拉角

欧拉角转四元数

四元数转欧拉角


一,旋转矩阵

二维旋转矩阵

R() = 

推导,以二维平面为例旋转:

  •  = cos( + ) = coscos - sinsin =  cos * x - sin * y 
  •  = sin( + ) = sincos + cossin = sin * x + cos * y

( , ) = (x , y) *   =(cos * x - sin * y ,sin * x + cos * y)

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

//Houdini vex 验证
matrix2 m = ch2('m');
vector2 p = set(@P.x, @P.y);
p *= m;

@P.x = p.x;
@P.y = p.y;

三维旋转矩阵

() = 

 () = 

 () = 

参考二维推导,如绕z轴旋转:

 ( , ,z) = (x , y , z) *  = (cos * x - sin * y ,sin * x + cos * y , z)

注,已经过Houdini vex 验证;

二,欧拉角

        欧拉角(Euler Angle),由著名数学家莱昂哈德·欧拉(1707-1783)提出,旨在用三个角度来表示刚体在三维空间的旋转,自身有一些局限性;

  • 在坐标系中描述物体姿态的三个角,依据绕x轴Roll,绕y轴Pitch、绕z轴Yaw的三个角度旋转可还原描述的姿态;

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学 数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

由两种旋转方式(静态、动态,这两种方式的所获得的旋转矩阵转是一样的:

  • 绕固定(参考)坐标轴旋转(静态),绕自身坐标轴旋转(动态),旋转轴会发生变化,按照不同的旋转轴顺序,所获欧拉角也不同;
  • 如在VEX中,绕固定(参考)坐标轴X-Y-Z旋转角度对应 (α,β,γ) ,旋转矩阵为(注意坐标轴顺序):

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

注,已经过Houdini vex 验证(使用上述旋转矩阵或transfrom节点),默认计算旋转顺序为XYZ,则其他实际顺序结果如下:

  • 旋转顺序XYZ,其过程为先绕X轴(世界坐标轴),在绕Y轴(世界坐标轴),在绕Z轴(世界坐标轴);
  • 旋转顺序XZY,其过程为先绕X轴(世界坐标轴),在绕Z轴(世界坐标轴),在绕特定轴(世界坐标轴);
  • 旋转顺序YXZ,其过程为先绕Y轴(世界坐标轴),在绕X轴(局部坐标轴),在绕Z轴(世界坐标轴);
  • 旋转顺序YZX,其过程为先绕Y轴(世界坐标轴),在绕Z轴(世界坐标轴),在绕X轴(局部坐标轴);
  • 旋转顺序ZXY,其过程为先绕Z轴(世界坐标轴),在绕X轴(局部坐标轴),在绕特定轴(世界坐标轴);
  • 旋转顺序ZYX,其过程为先绕Z轴(世界坐标轴),在绕Y轴(局部坐标轴),在绕X轴(局部坐标轴);

如欧拉角在俯仰角出现±90°,会出现万向锁现象,是欧拉角表征姿态的一个固有缺陷;

在进行姿态解算时往往会优先使用四元数方法进行描述;

三,四元数

        四元数是由爱尔兰数学家Hamilton发明的,由1个实数加上3个复数组合而成,通常可以表示成 w + xi + yj + zk 或者(w,(x,y,z)),其中w、x、y、z都是实数;

对于i、j、k本身的几何意义可以理解为一种旋转:

  • i,旋转代表Y轴与Z轴相交平面中,Y轴正向向Z轴正向的旋转(数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学);
  • j,旋转代表Z轴与X轴相交平面中,Z轴正向向X轴正向的旋转(数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学);
  • k,旋转代表X轴与Y轴相交平面中,X轴正向向Y轴正向的旋转(数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学);
  • -i、-j、-k分别代表i、j、k旋转的反向旋转;

q = w + xi + yj + zk

  数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

如绕某向量 K=(, , ) 旋转,则四元数为:

  • (x,y,z)  =  (, , ) *   
  • w =   
  • 且满足条件:+++=1

注,已经过Houdini vex 验证,在vex内四元数为((x,y,z),w);

四,欧拉角与四元数比较

欧拉角

  • 单轴旋转,两轴旋转,使用欧拉角,不必使用四元数;;
  • 需考虑旋转顺序;
  • 万向锁及奇怪的插值;

四元数

  • 三轴旋转,使用四元数;
  • 无万向锁或变化轴问题(gimbal lock/changing axes )
  • 插值即平滑且有方向,一致可预测;
  • 计算简单;

五,矩阵、欧拉角、四元数相互转换

四元数转矩阵

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

矩阵转四元数

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

欧拉角转矩阵

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

矩阵转欧拉角

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

欧拉角转四元数

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

四元数转欧拉角

数学概率 | 旋转矩阵、欧拉角、四元数,数学,数学

注:文章来源地址https://www.toymoban.com/news/detail-742126.html

  • 欧拉角,直观易理解,存在万向锁问题;
  • 旋转矩阵,不直观,计算复杂(尤其求微积分时);
  • 四元数,不直观,但无奇点,能表征任何旋转关系,且表示简单,只有四个元素,计算量小;

到了这里,关于数学概率 | 旋转矩阵、欧拉角、四元数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Eigen库使用】角轴、旋转矩阵、欧拉角、四元数转换

    在slam中经常用到的四种描述机器人orientation的变量,他们之间可以相互转化,使用Eigen库可以很容易的做到这一点, 需要特别关注的是:欧拉角与其余量之间的转换关系 : 1)首先要明确的是, 必须要明确欧拉角的旋转次序 ,你可以选择RPY、YPR等方式,在相同的orientation下,

    2024年01月18日
    浏览(50)
  • 欧拉角,四元数和旋转矩阵互转代码【python版】

    欧拉角以 Roll、Pitch、Yaw 的顺序表示 四元数以[ q w q_w q w ​ , q x q_x q x ​ , q y q_y q y ​ , q z q_z q z ​ ]的顺序表示 代码包括了 欧拉角与四元数互转 , 旋转矩阵与四元数互转 , 欧拉角与旋转矩阵互转 ,输入参数均为 np.array 形式 代码内置了角度制和弧度制😃😃 当时因为这块

    2023年04月22日
    浏览(53)
  • 持之以恒(一)位姿转换:姿态 / 四元数 / 旋转矩阵 / 欧拉角 及 位姿矩阵

    姿态的几种表示形式, 姿态角 、 四元数 、 欧拉角 、 旋转矩阵 、 位姿矩阵 。 姿态 说明 表示形式 Eigen 姿态角 指的是机体坐标系与地理坐标系的夹角,即旋转向量 rx,ry,rz Eigen::Vector3f(Degrees) 四元数 四元素不存在万向节死锁问题、利用球面插值可以获得均匀的转速 w,x,y,z

    2024年02月15日
    浏览(53)
  • ABB机器人欧拉角与四元数的相互转化以及旋转矩阵的求法

    做项目时用到ABB机器人,直接通过ABB内置的函数可以轻松实现四元数读数与欧拉角的相互转化。但实际项目需要从示教器读出相关位置并自行计算,尤其需要计算旋转矩阵。 本文以 ABB IRB120机器人 (不确定其他机器人是否与ABB机器人一致)为例如下姿态为例来描述上述几个量

    2024年02月03日
    浏览(57)
  • 车辆姿态表达:旋转矩阵、欧拉角、四元数的转换以及eigen、matlab、pathon方法实现

    旋转矩阵、欧拉角、四元数主要用于表示坐标系中的旋转关系,通过三者之间的转换可以减小一些算法的复杂度。 本文主要概述旋转矩阵、欧拉角、四元数的基本理论、三者之间的转换关系以及三者转换在eigen、matlab和pathon上的方法实现。 对于两个三维点 p1 、 p2 : p 1 ( x

    2023年04月11日
    浏览(47)
  • 《动手学机器人学》7.2.4姿态之间的互相转换,Python&&C++支持四元数,欧拉角旋转矩阵、轴角

    本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途。 上一节小鱼带你一起学习了四种姿态表示方式,这节课我们就利用相关的开源库,来完成姿态的不同表示方式之间的转

    2024年02月02日
    浏览(47)
  • 【数理知识】三维空间旋转矩阵的欧拉角表示法,四元数表示法,两者之间的转换,Matlab 代码实现

    序号 内容 1 【数理知识】自由度 degree of freedom 及自由度的计算方法 2 【数理知识】刚体 rigid body 及刚体的运动 3 【数理知识】刚体基本运动,平动,转动 4 【数理知识】向量数乘,内积,外积,matlab代码实现 5 【数理知识】最小二乘法,从线性回归出发,数值举例并用最小

    2024年02月12日
    浏览(50)
  • ROS系列——使用python的transforms3d、numpy库实现四元数、旋转矩阵、欧拉角、轴角等的相互转换

    pip3 install transforms3d 四元数模块在transforms3d.quaternions里,直接导入即可使用 2.1.1四元数转旋转矩阵 2.1.2 旋转矩阵转四元数 2.2.1 四元数转轴角 2.2.2 轴角转四元数 四元数模块在transforms3d.euler里,直接导入即可使用 3.1.1 固定轴欧拉角转四元数 3.1.2 四元数转固定轴欧拉角 3.2.1 固定

    2024年02月07日
    浏览(93)
  • Unity旋转 欧拉角和四元数

    Unity中的旋转最为常知的是Transform.rotation,但其内部实现是由 Quaternion (四元数)进行计算处理,而Inspactor中显示的旋转值是由 EulerAngles (欧拉角)处理。 Unity使用四元数对实际的旋转值进行计算和存储,使用欧拉角对基于世界空间坐标的旋转进行描述和显示,而Inspacetor中显示

    2024年02月13日
    浏览(47)
  • Unity --- 三维数学 --- 欧拉角与四元数

      1.Transfrom中的Rotation中的x,y,z三个值就是对应着三个方向上的欧拉角 2.注意物体沿Y轴方向旋转时,是沿世界坐标系的Y轴旋转,而不是沿自身的Y轴旋转 3.一个物体三个方向上的欧拉角是用一个Vector3三维向量对象来表示的 --- (x,y,z)分别对应三个方向上的欧拉角 1.接下来开始

    2024年01月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包