
想象你在手里拿着一个魔方,你可以:先绕竖直方向(Z轴)旋转它(称为偏航 yaw);再绕横向(Y轴)翻转它(称为俯仰 pitch);最后绕前后方向(X轴)滚转它(称为滚转 roll)。这三个动作按固定顺序依次执行,就能把魔方从任何初始方向转到任何姿态。 这三个旋转角度:yaw、pitch、roll:就是欧拉角。
网上很多可以在线演示欧拉角的网站,可以直观理解欧拉角,例如下面3个:
https://compsci290-s2016.github.io/CoursePage/Materials/EulerAnglesViz/
Rotation Calculator | Articulated Robotics
Euler Angle Tool
当你 pitch = 90° 时(也就是魔方被仰起来),原本水平旋转(yaw)和滚转(roll)方向重合了! 这就像飞机抬头90°时,左右摇头和自身翻滚成了一回事,你再也分不清它是在“转头”还是在翻滚。这就叫 奇异性(singularity)或 万向节锁死(gimbal lock)。
四元数把旋转映射到单位四维球面上,使姿态变化可以在球面上平滑插值(SLERP),避免锁死与突变,这对机器人关节、人体姿态、相机运动等都至关重要。
关于四元数自身的理解与计算,得单开很多问题了,可以网上看3b1b的视频,不过普通人依然很难理解,这块有空我再补上。
在人体工学或机器人运动学里,我们研究的是多关节的姿态(比如肩关节、腕关节、眼睛的注视方向),这些姿态变化需要:连续平滑(关节不会“跳变”);避免奇异点(姿态不会突然丢自由度);方便插值(计算“从姿态A到姿态B”的中间姿态)。
而四元数刚好满足这几点:首先它是平滑的;其次它没有奇异点;最后它可以在单位球上做球面线性插值(SLERP),让姿态自然过渡。
机器人学中,位姿表示与变换是基础中的基础,这里面以四元数最难直观理解,本来也没法直观理解,因为人的大脑结构与生活的空间决定了,大脑构建不出直观的四维空间,所有理解都是强行投影到三维、二维空间去理解。而且知乎四元数相关的问题似乎挺多,看了很多答案,大多都讲不明白。要么条理不清晰,要么废话一箩筐,干脆有空我都来答一遍:
