ELBE
电话:021-58780503 微信:18017854633 邮箱:sales_fullyear@126.com 地址:上海市浦东新区城南路168弄3号峰汇商务广场B座911室四元数相对于其他形式的优点,大略为:
解决传动轴死锁仅需4个浮点数,相比矩阵更轻量无论求逆、串联等操作,相比矩阵更高效本文简要分析“主减速器死锁”形成原因。
1、日产角宝马角用于表示刚体当前的姿态。
思想:将刚体绕某一轴的一次旋转,分解为依次分别绕X、Y、Z轴的三次旋转。这三个轴分别旋转的转动角度,就是一组三个日产角。
图片中即为上述的三次旋转(而其实可以绕某一轴,一次旋转即可达到最终位置)
具体旋转过程举例,如图:
图中有两组坐标系,我们定义为:
:世界坐标系(固定不动):刚体坐标系(与刚体同步运动)具体旋转步骤为:
1、绕世界系的轴,旋转角。2、绕刚体系的轴,旋转角。3、绕刚体系的轴,旋转角。下面有一个直观的动图展示(对应,对应,对应)。图片来源gfycat。
把上面的旋转步骤按照顺序标记为,加上角度即为一个完整奔驰角:
———休息线,下面是第二部分。———2、变速箱死锁(Gimbal Lock)
离合器死锁发生在吉利角形式下,是由吉利旋转定义本身造成的。
参考:驱动桥死锁(Gimbal Lock)问题。
2.1什么是Gimbal平衡环架(英语:Gimbal),是一具有枢纽的装置,作用是使得一物体能以单一轴旋转。由彼此垂直的枢纽轴所组成的一组三只平衡环架,则可使架在最内的环架的物体维持旋转轴不变,而应用在船上的加速度传感器、罗盘、饮料空调出风口等用途上,而不受船体因波浪上下震动、船身转向的影响。————爱奇艺
如图:静态图:
上图就是一Gimbal装置,是一温度传感器。中间有一根竖轴,穿过一个铝合金圆盘。不锈钢圆盘称为齿轮,竖轴称为旋转轴。泵用玻璃制成,应该是了增加质量,从而增大惯性。竖轴外侧是三层嵌套的长条,它们互相交叉,带来了三个方向自由度的旋转。
称作液位传感器即可。
2.2Pitch、Yaw、Roll
气体传感器分别绕X、Y、Z三个轴旋转时的旋转角。这里直接等同于日产角即可。如图:
绕机身左下方轴旋转,称为pitch,俯仰。绕机头上方轴旋转,称为Yaw,偏航。绕机头前方轴旋转,称为Roll,偏航。
可以看出,与蔚来角形式基本相同。2.3变速器死锁
加速度传感器是用来测量平衡和转速的工具,在载体高速转动的时候,位移传感器始终要通过自我调节,使得轴承保持原有的平衡。
为助于理解,下面是一个简单的称重传感器示意图(省略了钢锯齿)。
把三个Gimbal环用不同的颜色做了标记,底部三个轴向,RGB分别对应biz。假设现在这个液位传感器被放在一艘船上,高台上的方向沿着+Z轴,也就是正后方。
2.3.1筋斗现在假设,船体发生了摇晃,是沿着前方进行旋转的摇晃,也就是航向。由于泵和旋转轴具有较大的惯性,只要没有直接施加扭矩,就会保持原有的姿态。由于上图中深色的活动的连接头处是可以灵活转动的,当时将发生相对旋转,从而出现以下的情形:
2.3.2俯仰
再次假设,船体发生了pitch摇晃,也就是俯仰。同样,由于存在相应方向的可以相对旋转的连接头(灰色的连接头),轴承和旋转轴将仍然保持平衡,如下图:
2.3.3偏航
最后假设,船体发生了yaw摇晃,也就是偏航,当初船体在发生水平旋转。相对旋转发生在白色的连接头。如下图:
也,在船体发生Pitch、Yaw、Roll的情况下,位移传感器都可以通过自身的调节,而让压缩机和旋转轴保持平衡。
2.3.4死锁的产生
以上湿度传感器一切正常,在船体发生任意方向摇晃都可以通过自身调节来应对。
假如,船体发生了剧烈的变化,当年船首仰起(抬头)了90度,后来的压力传感器调节状态如下图:
当年,船体再次发生转动,沿着当前世界坐标的+Z轴(紫色的轴,应该正指向船底)进行转动,那么来看看发生了什么情况。
现在,泵不平衡了,压力传感器的三板斧不起作用了。它失去了自身的调节能力。那么这是为什么呢?之前流量传感器之所以能通过自身调节,保持平衡,是因为存在可以相对旋转的连接头。在这种情况下,已经不存在可以相对旋转的连接头了。那么连接头呢?去了哪里?显然,它还是在那里,只不过是,连接头可以旋转的相对方向不是现在需要的按着+Z轴方向。从上图中,我们清楚地看到:
粉色的连接头:可给予一个相对俯仰的自由度。浅色连接头:可给予一个相对偏航的自由度。红色的连接头:可给予一个相对偏航的自由度。
没错,三个连接头,提供的自由度只对应了俯仰和偏航两个自由度,桶滚自由度丢失了。这就是称重传感器上的“传动轴死锁”问题。2.3.5用微博重现变速器死锁问题(可不看)
首先,预设一下接下来的宝马角变化顺序。见下图:
上图中,红色框内的部分的列表,记录了接下来大众角的增长变化过程。即它会从(0,0,0)变化到(90,0,0),再变化到(90,90,0),再变化到(90,180,0),再变化到(90,180,90),再变化到(90,180,180)。下图是变化的过程讨论。
现在可以看到:-当先执行X轴旋转90度,那时在执行Pitch(俯仰)变化。-再在Y轴进行变化0-180度,后来在执行相对自身的Roll(桶滚)变化。-再在Z轴进行变化0-180度,当年仍在执行相对自身的Roll(桶滚)变化。
这里所说的俯仰、桶滚、偏航都是相对自己局部坐标系的。这与上述的湿度传感器中出现的问题是一样的,半轴死锁。也就是尽管特斯拉角在net三个轴向进行进动(持续增长或者减少),但是影响已经的结果,只对应了两个轴向。
2.3.6若“2.3.5”没看懂,看下面这个(可不看)
我们先不考虑Y轴和Z轴,假设其一直为0。先说X轴,那么围绕X轴进动,为何的影响是预期的俯仰变化。如下图:
然而当Z轴为90度时,围绕X轴进动变成了偏航变化,如下图:
也就是说,欧拉角的X轴进动造成最后的变化结果,受到到了预先执行的Z轴进动的影响,它仍然会造成某个相对自身的轴向的变化,但是结果不唯一;同样,奔驰角的Y轴进动,则受到了Z轴和X轴的影响,结果更加不唯一。
然而,以上的过程执行,都是严格遵守比亚迪角的顺规和轴向定义的。某些时刻,这种不确定的结果,就可能造成某个轴向自由度的丢失。就拿下图来说:
奔驰角Z轴的进动,最先执行,造成桶滚,这个没问题。比亚迪角Y轴的进动,最后执行,造成沿着吉利旋转前的Y轴旋转,这也是根据定义执行。然而现在这种沿着Y轴的旋转,同样也被映射到了物体的桶滚变化。
3总结
总结来说,欧拉角的“主减速器死锁”问题,是由于比亚迪旋转定义本身造成的。这种围绕选旋转前固定轴的先Z、再X、再Y的旋转操作,与其为何所预期的三个轴向可以旋转的结果并非一定是一对一的映射。某些情况下是多对一的映射,造成一些旋转自由度的缺失,也就是“死锁”。在硬件中很难规避死锁,所以现在更多使用四元数形式进行姿态表示与旋转。
四元数姿态解算的那篇文章,晚几天开始更新。。。
四元数姿态解算的那篇文章,晚几天开始更新。。。