














在第四讲中,我们建立了一个错误模型:
Yaw = 绕机体 z' 轴旋转
并且发现:
当飞机已经存在 Pitch 时,
这种理解会产生错误结果。
本讲暂时不讨论正确答案。
只观察一个有趣的现象:
Pitch Flip
为什么在某些情况下看起来能够修正问题。
05_pitch_flip_demo.py
运行脚本后,会得到:
3D View
Top View
Side View
三个视图。
本讲所有结论都来自对这三个视图的观察。
在分析之前,
先认识图中的每一个元素。
否则后面的观察会非常困难。
蓝色轨迹表示:
正确模型
下,
飞机机头的位置变化轨迹。
这里采用:
绕 Earth Z 轴旋转
的方式进行 Yaw。
因此:
蓝色 = 正确答案
红色轨迹表示:
错误模型
下,
飞机机头的位置变化轨迹。
这里采用:
绕 Body Z' 轴旋转
的方式进行 Yaw。
因此:
红色 = 错误答案
红色轨迹中的后半段,
会变成橙色。
表示:
机头已经进入水平面下方
即:
Pitch < 0°
区域。
这样可以帮助我们快速发现:
飞机什么时候开始出现错误。
灰色平面表示:
Pitch = 0°
即:
飞机水平放置时所在的平面。
可以简单理解成:
地平线
或者:
飞机水平飞行时所在平面
黑色虚线圆表示:
Pitch 始终保持 30°
时,
机头理论上应该运动的轨迹。
因此:
如果某条轨迹始终贴着这个圆,
说明:
Pitch 没有发生变化
Top View 是:
从天空向下看
得到的视角。
主要观察:
Yaw 是否完成旋转
Side View 是:
从飞机侧面观察
得到的视角。
主要观察:
Pitch 是否发生变化
3D View 同时展示:
Yaw
Pitch
空间轨迹
三者关系。
这是本讲最重要的视图。
先不要看 3D 图。
只观察:
Top View
中的两条轨迹。
会发现:
蓝色轨迹和红色轨迹都完成了:
Yaw = 180°
旋转。
机头最终都转到了飞机后方。
从俯视角度看:
两条轨迹似乎没有本质区别。
此时很容易产生一个错觉:
绕 Earth Z 转
和
绕 Body Z' 转
结果一样
如果只看 Top View,
这个结论似乎成立。
但这只是表面现象。
现在观察:
Side View
中的蓝色轨迹。
可以发现:
整个旋转过程中,
蓝色轨迹始终保持在:
Z = +0.5
附近。
即:
Pitch = +30°
始终没有变化。
这符合我们的直觉。
因为:
飞机只是改变朝向。
并没有抬头或低头。
再观察红色轨迹。
会发现:
机头高度不断下降。
最终从:
+0.5
下降到:
-0.5
这意味着:
原本:
Pitch = +30°
最终变成:
Pitch = -30°
现在回到 3D View。
观察:
红色轨迹
↓
橙色轨迹
发生变化的位置。
这个位置代表:
机头穿过水平面
即:
Pitch = 0°
的位置。
从这里开始,
飞机已经进入:
Pitch < 0°
区域。
错误开始变得明显。
现在只比较最终结果。
正确结果:
Pitch = +30°
错误结果:
Pitch = -30°
会发现:
两者刚好满足:
Pitch *= -1
关系。
于是产生一个非常诱人的想法:
pitch = -pitch;
似乎就能够修正错误。
因为:
对于本讲这个特殊案例:
Pitch = 30°
Yaw = 180°
翻转后的结果确实正确。
于是会得到:
很多人会得到一种错觉:
Pitch Flip 就是正确解法。
这样的结论。
事实上:
这只是一个巧合。
对于:
Yaw = 180°
这个特殊角度。
错误模型最终会得到:
Pitch = -Pitch
的结果。
因此:
Pitch Flip
看起来能够修正问题。
但是:
我们还没有证明:
Yaw = 45°
Yaw = 60°
Yaw = 90°
Yaw = 120°
时,
Pitch Flip 是否仍然有效。
下一讲将验证:
Pitch Flip
到底是真正的解法,
还是:
180° 特殊情况下产生的错觉。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。