首页 > 其他分享 >万向锁与欧拉角

万向锁与欧拉角

时间:2024-03-29 21:11:25浏览次数:28  
标签:欧拉角 万向 陀螺仪 旋转 90 我们

万向锁与欧拉角

image

附赠自动驾驶学习资料和量产经验:链接

前言

上一篇中我们讲了欧拉角与旋转变化,最后留了一个悬念,就是欧拉角在俯仰角为±90°时会出现万向锁现象,这是欧拉角表征飞行器姿态的一个局限性,今天我们就来谈谈这个局限性是怎么产生的,以及如何解决这个问题。

陀螺仪

为了能够清晰得看到欧拉旋转产生的万向锁现象,我们来观察一个三轴的万向节装置,它也是一个陀螺仪:

image

大家可以看到中间是一根竖轴穿过一个盘子,而盘子处于高速旋转状态,是陀螺的转子,根据陀螺的定轴性,竖轴也就是陀螺的自转轴在惯性空间内的方向保持不变。在这里我们要说明一点,我们拿陀螺仪出来说明欧拉角的万向锁现象不是因为我们飞机上用的陀螺仪就是这个样子,而是欧拉角中的欧拉旋转与我们陀螺仪的这个旋转状态是一样的,我们拿陀螺仪来解释万向锁产生的原因,而我们之所以称呼它为万向锁,也是因为这是三轴万向节装置中会出现的现象。

接下来我们先来看看这个陀螺仪的旋转状态。我们把飞行器放到陀螺仪旁边进行对比。首先,我们先来解释一下上面那个旋转的陀螺仪的三个环是怎么旋转的,每一个环都连有一根或者两根轴,这根轴就是每个环的旋转轴,我们可以看到最外面那个环旋转不会影响里面两个环的位置,中间那个环的旋转不会影响最里面那个环的位置,但是最外面的那个环会跟着动,而最里面那个环旋转会影响到外面两个环的位置,这种现象跟我们上一次讲欧拉旋转里的三次旋转是一样的,这也是我们拿陀螺仪来解释欧拉角万向锁现象的原因。

万向锁

我们先来看一下最外侧那个环的旋转情况,我们上次采用的是ZYX的顺序进行旋转,所以最外面那个环对应的就是绕X轴的旋转,对应的是飞行器的滚转运动:

image

image

俯仰运动:

image

image

偏航运动:

image

image

但是如果我们的飞机俯仰角到达±90°时,你会发现此时绿色代表的滚转运动和蓝色代表的偏航运动他们的旋转轴重合了,这时候你必须要改变最里面自转轴的角度才能够达到你需要的空间位置,而这是违背陀螺定轴性规律的,所以下图陀螺仪中运动的那个方向其实是被锁住了的,你在俯仰角达到±90°时就不可能有这个方向的运动,这是因为当你俯仰角达到±90°时,你改变了第三个要旋转的轴的方向,它与你第一次旋转的Z轴重合了,所以在空间中失去了一个自由度:

image

image

image

这就是欧拉角的万向锁现象,为了更好的理解这个现象,我们再用自己的手机做一个试验,你把手机屏幕朝上,手机的长边为X轴,短边为Y轴,Z轴垂直屏幕向下,那你先绕Z轴旋转一下手机,假设旋转30度,然后再把手机绕Y轴旋转90度,也就是把手机长边接触桌面竖立起来,这时候你再绕手机的短边旋转,你会发现手机的长边一直定在桌面上不可能脱离桌面,这就是万向锁现象。

数学解释

最后,再让我们用数据公式来解释一下万向锁现象产生的原因,我们来回顾一下昨天的旋转矩阵:

image

如果俯仰角为±90°,那么公式就变成了:

image

这说明你改变φ和ψ的值都是一个效果,而矩阵的第一行和最后一列始终是保持不变,这说明无论你怎么改变φ和ψ,你的旋转轴一直是Z轴不变,要想改变φ和ψ有不同的效果,你只能是去改变θ的值,以上就是用数学方法来解释为什么俯仰角在±90°时欧拉角出现万向锁的过程。

标签:欧拉角,万向,陀螺仪,旋转,90,我们
From: https://www.cnblogs.com/autodriver/p/18104624

相关文章

  • Unity在旋转时出现万向节锁的解决方案
    关于万向节锁在Unity官方文档中有这样的描述:欧拉角在变换坐标中,Unity使用矢量属性Transform.eulerAngles X、Y和Z显示旋转。与法线矢量不同,这些值实际上表示绕X、Y和Z轴旋转的角度(以度为单位)。欧拉角旋转围绕三个轴执行三个单独的旋转。Unity依次围绕z轴、x轴和y......
  • 欧拉角位姿变换
    欧拉角姿态变换姿态B相对于姿态A的变换:欧拉角为rx,ry,rz,绕Z-Y-X轴进行旋转。那么姿态A相对于姿态B的变换:欧拉角为-rx,-ry,-rz,绕X-Y-Z轴进行旋转。doublerx,ry,rz,px,py,pz;rx=10;ry=20;rz=30;px=1;py=2;pz=3;std::c......
  • Unity中欧拉角
    什么是欧拉角?(1)使用单个角度来保存方位(2)X与Z沿自身坐标系旋转,Y沿世界坐标旋转(3)API:Vector3eulerAngle=this.tranform.rulerAngles;优点:(1)仅使用三个数字表达方位,占用空间小(2)沿坐标轴旋转的单位维角度,符合人的思考方式(3)任意三个数字都是合法的,不存在不合法的欧拉角缺点:(1)方......
  • WebGL_0019:three.js 欧拉角和四元数
    1,这篇说说欧拉角和四元数,欧拉角和四元数的优缺点是老生常谈的话题了,使用条件我就不多说了,我只说一下使用方法。1.欧拉角(Euler)欧拉角描述一个旋转变换,通过指定轴顺序和其各个轴向上的指定旋转角度来旋转一个物体。下面我们开看看它的方法1.set(x:number,y:number,z:......
  • 【转载】如何通俗地解释欧拉角?之后为何要引入四元数?
    转载自:https://www.zhihu.com/tardis/bd/ans/236284413?source_id=1001   为何要引入四元数?首先是因为欧拉角有万向节死锁的问题。3D游戏或者3D电影中,比如黑客帝国中酷炫的旋转是怎么实现的?旋转的算法有很多,这里主要介绍其中一种:欧拉角。1欧拉角1.1欧拉角的算法......
  • 旋转矩阵与欧拉角
    旋转矩阵与欧拉角参考文献:[ComputingEuleranglesfromarotationmatrix——GregoryG.Slabaugh]三个主轴的旋转矩阵右手坐标系,逆时针转动角度为正(右手螺旋定则确定)。关于绕\(x\)轴旋转\(\psi\)弧度的主动旋转定义为\[R_x(\psi)=\begin{bmatrix}......
  • 内旋外旋万向锁
    内旋(intrinsicrotations)=旋转轴(rotatedaxis),右乘(R矩阵在右),应用于SLAM,机械臂运动学。 在新坐标系下,P点的坐标变为P′ 外旋(extrinsicrotations)=固定轴(static/fixedaxis),左乘(R矩阵在左),应用于机器人的姿态估计。P点旋转α,得到新的点P′ 内旋与外旋的区......
  • imu 话题数据,欧拉角
    header:消息头,包含序列号、时间戳和坐标系等信息。orientation:IMU的当前朝向,用四元数表示,包括$x,y,z$和$w$四个值。orientation_covariance:朝向协方差矩阵,包含$9$个元素,描述IMU测量的朝向误差。angular_velocity:IMU的角速度,包含$x,y,z$三个分量。ang......
  • 内旋外旋万向锁
    首先了解下内旋(静态)和外旋(动态):静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态,此时各个变换顺序的旋转矩阵是左乘的动态:即绕物体坐标系......
  • 零基础理解万向节锁 gimbal lock 造成的影响
    前情提要昨天想突发奇想想去理解之前一直没搞懂的万向节锁,网上看了许多资料说实话没看懂,可能是理论和实际脱离太多了。就连万向节和经常用来演示的平衡环架是啥我都不知道......