网上也有不少关于万向节死锁的文章,但写的都比较繁琐,这个问题只需知道个概念即可。
在机器人学中这个问题一般被称为动力学奇点(Kinematic singularity)。如图1,可以看到连接坐标轴的有三个旋转关节,旋转关节1是绕X6轴旋转的,旋转关节2是绕Y6轴旋转的,旋转关节3是绕Z6轴旋转的。我们现在可以将三个旋转关节看成一个整体,相当于手腕,因为手腕也就是三个自由度。那么为什么把这个称为动力学奇点呢?我们做个小小的变化,我们将整个结构绕Y6轴向外旋转90度。这个时候旋转关节1和旋转关节2是在一条直线上的,X6和Z6是重合的。这就出现状况了,因为我们失去了一个自由度,我们这个时候只能绕X6轴或者Y6轴旋转,Z6轴“消失”了。
图1
下面介绍图形学中的情况。如图2,我们先将坐标系绕z轴旋转30度,然后绕y轴旋转90度,然后绕x轴旋转40度(方向图中都有标识),最终得到最右边的红色坐标。我们把整个过程记为(30,90,-40)。然后我们可以发现其实我们只要绕z轴旋转70度,然后再绕y轴旋转90度,也能达到最后边的效果。我们把这个过程记为(70,90,0)。那么为什么(30,90,-40)=(70,90,0)?这个看起来只是一个位置的两种途径,并没有太大的问题。但是细心的人可以发现,这其实跟上面的机器人学中的动力学奇点是一样。本来我用三个自由度完成的旋转用两个自由度就可以完成了。追其根本,就是因为我们旋转了一个90度,让x轴和z轴重合了,导致自由度“消失”了。这就是万向节死锁问题。这个问题的是不可避免的,一个较好的办法就是用四元数代替欧拉角。
图2
时间: 2024-10-17 13:30:01