欧拉角和万向节死锁

一、什么是欧拉角

        欧拉角就是物体绕坐标系三个坐标轴(x, y, z轴)的旋转角度,在这里坐标系可以是世界坐标系,也可以是物体坐标系,旋转顺序也是任意的,可以是xyz,xzy,yxz,zxy,yzx,zyx中的任何一种,这种绕三个轴旋转的方式称为卡尔丹式,或者xyx,yxy,xzx,zxz,zyz,yzy中的任何一种,这种绕两个轴旋转的方式称为欧拉式。

        欧拉角可以看做一个坐标,此坐标都是相对于同一个初始状态即(0,0,0)即物体坐标系和世界坐标系重合,且三角度都是0,从此初试状态开始,按照定义的旋转顺序,按照静态或动态的方式,旋转指定的角度,从而得到最终的状态。

        1.欧拉角给出旋转角度的同时也要给出旋转顺序,顺序不同结果也不同

        2.根据旋转选择的坐标系,可以分为静态和动态:

             a. 静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态。

             b. 动态:即绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动,所以称为动态。使用动态欧拉角会出现万向锁现象;静态欧拉角不存在万向锁的问题(参见wiki百科:环架锁定)。

        3.航空次序欧拉角,它的旋转次序为Z-Y-X,为动态欧拉角。(6轴传感器用到的欧拉角)

                绕Z轴旋转ψ,代表航向角yaw

                绕Y轴旋转 https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D12/sign=65dc5397003b5bb5bad724fc37d3f4a7/4034970a304e251fd822b6c4a486c9177f3e5330.jpg,代表俯仰角pitch

                绕X轴旋转 https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D14/sign=6557f8e375c6a7efbd26ac22fdfa3e07/c995d143ad4bd113f1b6ea0e59afa40f4bfb0596.jpg,代表滚转角roll

        飞行器的物体坐标系定义如下图:

        转动方式如下图:

        航向角ψ   yaw

        俯仰角https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D12/sign=65dc5397003b5bb5bad724fc37d3f4a7/4034970a304e251fd822b6c4a486c9177f3e5330.jpg    pitch

        滚转角 https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D14/sign=6557f8e375c6a7efbd26ac22fdfa3e07/c995d143ad4bd113f1b6ea0e59afa40f4bfb0596.jpg    roll

三个角度的示意图:x_{}g, y_{}g, z_{}g为世界坐标系,x_{}b, y_{}b, z_{}b为物体坐标系

        4.静态欧拉角和动态欧拉角的关系:

        对于坐标系E下的欧拉角(α,β,r)和以下哪个旋转矩阵是等价的
               1.绕坐标系E下的x轴旋转α,绕坐标系E下的y轴旋转β,绕坐标系E下的z轴旋转r,三个矩阵的复合
               2.绕坐标系E下的x轴旋转α,绕 坐标系E在绕x轴旋转α后的新系E'下的y轴旋转β,绕 坐标系E'在绕y轴旋转β后的新系                          E''下的z轴旋转r,三个矩阵的复合
        通俗的讲,我们在旋转时,要不要把坐标系一起转动?
事实上两种理解都可以,当然,两种转法并不等价,下面我来解释这个问题,
当我们讲到坐标系E下的欧拉角(α,β,r)时,这句话是有歧义的,我们必须定义旋转顺序,因为旋转顺序会影响旋转结果。
如果假设旋转顺序是先绕x轴再y轴再z轴,x-y-z,那么这个欧拉角对应的旋转矩阵是指上述的2所表示的旋转矩阵。
如果假设旋转顺序是先绕z轴再y轴再x轴,z-y-x,那么这个欧拉角对应的旋转矩阵是指上述的1所表示的旋转矩阵,等等,你肯定会问,这难道不是把2中的先后顺序换一下就行了吗,"绕坐标系E下的z轴旋转r,绕 坐标系E在绕z轴旋转r后的新系E'下的y轴旋转β,绕 坐标系E'在绕y轴旋转β后的新系E''下的x轴旋转α,三个矩阵的复合"难道不是这样吗?是的,当然也是这样。

下面我来证明两种复合方式是相等的,
为了方便证明我先定义一些记号,
记:
绕坐标系E下的x轴旋转α的旋转矩阵为Rx,
绕坐标系E下的y轴旋转β的旋转矩阵为Ry,
绕坐标系E下的z轴旋转r的旋转矩阵为Rz,

绕坐标系E下的z轴旋转r的旋转矩阵为Rr(Rr=Rz),
绕 坐标系E在绕z轴旋转r后的新系E'下的y轴旋转β的旋转矩阵为Rb,
绕 坐标系E'在绕y轴旋转β后的新系E''下的x轴旋转α的旋转矩阵为Ra,

另外,将矩阵R的逆记作R~

求证:Rx*Ry*Rz = Rr*Rb*Ra

证明:
Rr = Rz  定义就是一样的,显然相等

Rb = Rr~*Ry*Rr 要得到绕 坐标系E在绕z轴旋转r后的新系E'下的y轴旋转β的旋转矩阵为Rb,可以先应用Rr~这时可以视作在E下,然后使用E下的旋转Ry绕旧的y轴旋转,在应用Rr转回到E'

Ra = (Rr*Rb)~*Rx*(Rr*Rb) 理由同上

所以 右边=Rr*Rb * Ra
         =Rr*Rb * (Rr*Rb)~*Rx*(Rr*Rb)
         =(Rr*Rb)* (Rr*Rb)~*Rx*(Rr*Rb)
         =Rx*(Rr*Rb)
         =Rx*(Rr*Rr~*Ry*Rr)
         =Rx*Ry*Rz =左边 
#证毕

        5.环架结构和动态欧拉角以及静态欧拉角的关系:

        假设环架结构最外层圆环代表z轴,中间圆环代表y轴,最内层圆环代表x轴,旋转顺序为z-y-x。即旋转z轴y和x轴都变,旋转y轴只有x轴变化,旋转x轴其它轴不变。则,按照z-y-x顺序转动的环架结构就和上述航空次序欧拉角,即为动态欧拉角,但有稍许区别,按照动态欧拉角的定义,物体坐标系在转动的过程中,先旋转z轴,y和x轴都变化,再转动y轴,z轴和x轴都变化,最后转动x轴,z轴和y轴都变化。但由于每一个欧拉角都相当于一个空间坐标,他都是基于世界坐标系的,而不是基于上一帧中的物体坐标系,所以不会有影响,通俗点说:环架结构旋转后得到的方位和动态欧拉角定义得到的方位一致,但环架结构旋转后的形成的新的物体坐标系已经不能满足轴与轴之间两两垂直,甚至可能轴与轴重合,但按照动态欧拉角定义旋转后所得的新的物体坐标系仍然满足轴与轴两两垂直,但是下一帧物体的动态欧拉角坐标是基于世界坐标系的,而不是此时得到的新的物体坐标系,所以无影响。可以对比环架结构和https://blog.csdn.net/xiaoyink/article/details/84504878中的动态欧拉角定义所得的物体坐标系。

       环架节后若按照x-y-z的顺序转动,则 等同于上述航空次序欧拉角的静态定义,根据第4点的理论,环架结构的x-y-z和z-y-x顺序是等价的,因为x轴旋转y、z轴不变化,y轴旋转,z轴不变化,x轴虽然变化,但已经绕x轴旋转过了,所以不影响最终结果,z轴旋转同理,所以x、y、z轴可看成世界坐标系的三轴。

二、万向节死锁(环架死锁)

既然欧拉角是从初试状态是世界坐标系的三个角度都为0,来确定最终方位的,而不是上一帧的物体坐标系来确定最终方位的,那为什么还会出现在死锁状态附近不可思议的运动轨迹?我还没想明白,因为下面动图演示的万向节锁是以上一帧转动所形成的两个坐标轴重合的物体坐标系为基准开始转动的,而不是从世界坐标系开始的。下述环架结构旋转时,以上述z-y-x的顺序为例,当绕y轴旋转90度时,得到的新的物体坐标系 中z轴和x轴共线,并且下一帧图像以此新的物体坐标系为参考旋转到特定的方位时会产生不符合我们需求的轨迹,如视频https://www.bilibili.com/video/av9140886中所讲的。

箭头在环架中(环架初始位置是上次转动所形成的的两轴重合的物体坐标系)要转动到虚影位置时,不能笔直向下转动直接到位(最小球面举例旋转),而是按照奇怪的弧形路线,这就是万向节锁。

也就是锁,万向节锁产生的条件是

1. 动态欧拉角,且是环架结构,保证物体坐标系的三个轴的角度不能固定,保证其中两个轴可以重合,而不能向动态欧拉角的定义中,物体转动完成后,形成的新的物体坐标系轴与轴之间仍然是两两垂直。

2. 必须以上一次转动所形成的有两个轴重合的物体坐标系为基准开始转动,而不能每次都以世界坐标系为基准

显然,在实际应用中第二点都是不满足的,那为什么还会产生奇怪的转动,如下图。难道和欧拉角的非平滑插值有关,没有深入研究

 

一种旋转状态可能对应多种欧拉角甚至无数种,可能一个状态到另一个状态之间插值时产生了这种效果

  • 17
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值