Tech learning

· Last updated: 2025-09-13 404 字 · 2 分钟

Gimbal Lock and Quaternion

  • 万向锁的问题可以用头来辅助理解。当仰头90度望天的时候,左右转头(原来的yaw)和之前的歪头(roll)就完全一样了。
  • 但是举例理解容易hacking,万向锁的含义在GPT和不少帖子里面都解释得只见树木不见森林,令人摸不着头脑(也许是因为我太笨了qaq)。更令人信服的是用线代的旋转矩阵。
    • roll, pitch, yaw表示的是绕着外部$x, y, z$轴旋转的角度。数学推出来之后,其含义就是当pitch取90度时,yaw和roll会作用到同一个外部自由度上,从数学上来看,问题的核心在于选择的是固定的旋转顺序,3D中的旋转一般是不能交换的。推导如下:
    • 小学二年级就学过的旋转矩阵一份(这里只考虑外旋咯,内旋外旋的公式为什么互逆我还没搞明白): $$ R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \ \end{bmatrix} $$ $$ R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \ \end{bmatrix} $$ $$ R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \ \end{bmatrix} $$
    • $$ R(yaw, \frac{\pi}{2}, roll) = R_z(yaw)R_y(\frac{\pi}{2})R_x(roll) \ = R_z(yaw - roll)R_y(\frac{\pi}{2})$$
    • $$ R(yaw, \frac{\pi}{2}, roll) = R_x(roll)R_y(\frac{\pi}{2})R_z(yaw) \ = R_x(yaw + roll)R_y(\frac{\pi}{2})$$
    • 最后的结果中我们只得到了两个自由度,做出旋转之后z轴的旋转效果永远只能停留在外部的x轴上

© Nataraj Basappa 2025