万向节死锁问题

欧拉角

欧拉角是用于一种处理空间中物体位姿的数学模型。

欧拉角提供一种非常直观的方式用来描述旋转——它使用3个分离的转角,把一个旋转分解成三次绕不同轴地旋转。

——《视觉slam十四讲》

欧拉角的描述方式多种多样,我习惯于用yaw(偏航角),roll(横滚角),pitch(俯仰角)也就是Z-Y-X(右手坐标系)地旋转模式来进行描述。

静态欧拉角

万向节模型就是指一个用这种描述方式旋转的一个模型。三个有同轴的圆环,立体组合在一起,如果将一个一个箭头放置在三个轴的交点处,那么当这个箭头以不同的圆环的轴心为依靠,进行旋转的时候,这个箭头就可以指向空间中的任意方向,这种情况被称为静态欧拉角。在这种情景下,箭头是一个静止的物体,不会移动,我们需要关注的是它的指向,因此不会存在死锁问题。

动态欧拉角

所谓动态欧拉角就是指,我们需要关注,这个箭头的移动轨迹。也就是我们的关注点是箭头如何从一个角度移动到另一个角度,我们需要让箭头从一个指定角度移动到另一个角度,这个移动轨迹应当是直线,或者说是非欧几何意义下的直线,总之,如果我们将球面投影到二维z平面上,两个球坐标下指向的角度必然分别在z平面上分别代表两个点。而这个轨迹的投影在z平面上必须是直线(按照我的理解)。换句话说,两个角度之间移动的轨迹的形状都是相同的,是可预料的。但是在欧拉角下,是不可能的,当三个圆环中的两个重合时,也就是最外侧的两个圆环处于同一平面时,想要进行以第三个环的中心为轴进行旋转的操作是不可实现的,必须将这个旋转分解为三次不同的旋转,如果将这三个旋转叠加起来就会看到,从一个角度到另一个角度的旋转的轨迹变成了一条曲线,这种情况在动态环境下是不可接受的。这就是著名的万向节死锁(Gimbal lock)问题,当出现了外两圈重合的情况时,向某一特定方向的直接旋转就不可实现。

下面是一个youku上的视频说的很清楚

万向节死锁解析

你可能感兴趣的:(万向节死锁问题)