惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
月光博客
月光博客
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
博客园 - 叶小钗
博客园 - 司徒正美
美团技术团队
博客园_首页
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News

博客园 - longyue

[BF学院_卷1] -- 第30讲:mixTable() 总结 —— Mixer 完整控制模型 [BF学院_卷1] -- 第29讲:applyMixToMotors() —— 最终 Motor Output 生成 [BF学院_卷1] -- 第28讲:applyMixerAdjustment() —— 为什么 Mixer 需要重新分配控制权限 [BF学院_卷1] -- 第27讲:PID Output 如何进入 Mixer —— 从控制需求到 motorMix [BF学院_卷1] -- 第26讲:calculateThrottleAndCurrentMotorEndpoints() —— Mixer 如何确定油门基础范围 [BF学院_卷1] -- 第25讲:mixTable() 总览 —— Mixer 在控制循环中的位置 [BF学院_卷1] -- 第24讲:mixer_init.c —— 飞控启动时如何准备 Mixer [BF学院_卷1] -- 第23讲:Mixer 数学模型 —— motorMixer_t 如何形成 Motor Output [BF学院_卷1] -- 第22讲:Betaflight 如何描述 Mixer —— mixer.h 数据结构 [BF学院_卷1] -- 第21讲:四旋翼为什么可以通过电机控制姿态 —— Mixer 背后的物理基础 [BF学院_卷1] -- 第20讲:从 PID Output 到 Motor Command(电机指令)——为什么飞控需要 Mixer [BF学院_卷1] -- 第19讲:PID Controller(PID控制器)——飞控到底如何理解误差并控制飞机? [BF学院_卷1] -- 第18讲:PID Controller 的最后一环——为什么飞控还需要 Feedforward(前馈控制)? [BF学院_卷1] -- 第17讲:D Term(微分控制项)——飞控如何提前感知运动变化? [BF学院_卷1] -- 第16讲:I Term(积分控制项)——飞机为什么总是差一点? [BF学院_卷1] -- 第14讲:Rate Error(角速度误差)——PID 真正控制的到底是什么? [BF学院_卷1] -- 第15讲:P Term(比例控制项)——飞控是如何利用误差开始控制飞机的? [BF学院_卷1] -- 第13讲:Outer Loop 的终点——为什么还要读取 Current Angular Rate(当前角速度)? [BF学院_卷1] -- 第十二讲:Yaw Compensation(偏航补偿) [BF学院_卷1] -- 第12讲脚本 [BF学院_卷1] -- 第十一讲:Current Angular Rate(当前角速度)——飞控怎样知道飞机现在转得有多快? [BF学院_卷1] -- 第十讲:Angle Error(姿态角误差)如何变成 Desired Angular Rate(目标角速度) [BF学院_卷1] -- 第九讲:Current Angle(当前姿态角)遇见 Target Angle(目标姿态角) [BF学院_卷1] -- 第八讲:飞手打杆以后,飞控首先得到什么? [BF学院_卷1] -- 第七讲:为什么 Pitch Flip 只在 180° 看起来正确 [BF学院_卷1] -- 第7讲脚本 [BF学院_卷1] -- 第6讲脚本 [BF学院_卷1] -- 第五讲:第一次修正——Pitch Flip 为什么看起来有效 [BF学院_卷1] -- 第5讲脚本 - longyue [BF学院_卷1] -- 第4讲:为什么"绕飞机自己转"不等于"朝世界转" - longyue
[BF学院_卷1] -- 第6讲:为什么 Pitch Flip 会骗人
longyue · 2026-08-03 · via 博客园 - longyue

第6讲:为什么 Pitch Flip 会骗人

本讲目标:

观察 Pitch Flip 在不同 Yaw 角度下的表现,

回答一个问题:

为什么它有时候看起来正确,
有时候却完全错误?


6.1 回顾上一讲

在第5讲中,我们发现了一个非常奇怪的现象:

假设飞机当前姿态为:

Pitch = +30°
Roll  = 0°
Yaw   = 0°

如果执行:

Yaw = 180°

然后再执行:

Pitch = -30°

最终机头方向竟然与正确的 Earth Yaw 非常接近。

于是我们得到了一个看起来合理的修正方法:

Yaw 180°
↓

Pitch 翻转

这就是我们称为 Pitch Flip 的东西。


6.2 一个危险的地方

很多初学者看到这里会自然得出一个结论:

既然180°有效,

那么其它角度应该也有效。

例如:

Yaw 45°
Yaw 90°
Yaw 135°

是不是也可以用类似方法修正?

这是本讲要验证的问题。


6.3 本讲实验

请运行:

06_pitch_flip_breakdown.py

默认参数:

yaw_deg = 45

6.4 运行脚本前先知道要看什么

本课程有一个重要原则:

先知道看什么

再开始分析图

因此不要急着运行。

先明确观察目标。


图中主要有两条轨迹:

蓝色轨迹

表示:

Correct Earth Yaw

即:

真正正确的世界坐标系Yaw

这是标准答案。


红色轨迹

表示:

Pitch Flip

即:

错误模型
↓

Pitch翻转修正

得到的结果。


因此:

蓝色
=
正确答案

红色
=
Pitch Flip答案

本讲唯一需要观察的事情:

红色轨迹

距离蓝色轨迹

到底有多远

6.5 先观察 45°

把脚本保持默认:

yaw_deg = 45

运行。


观察结果:

红色终点

明显偏离

蓝色终点

此时说明:

Pitch Flip
无法正确修正45°

6.6 再观察 90°

修改:

yaw_deg = 90

重新运行。


观察:

偏差继续增大

你会发现:

Pitch Flip
并没有越来越正确

反而越来越错误

6.7 再观察 135°

修改:

yaw_deg = 135

重新运行。


观察:

偏差仍然存在

此时应该已经得到一个重要结论:

Pitch Flip

并不是通用补偿方法

6.8 最后观察 180°

修改:

yaw_deg = 180

重新运行。


这一次会看到:

红色终点

突然接近

蓝色终点

注意:

这里非常容易产生错觉。

很多人会认为:

Pitch Flip成功了

但实际上:

我们前面已经验证过:

45°
失败

90°
失败

135°
失败

因此:

180°能够接近正确结果

一定是特殊情况

而不是通用规律。


6.9 为什么180°会变得特殊

先观察一个简单现象。


当:

Yaw = 180°

时:

机头方向:

前

↓

后

同时:

Pitch = +30°

变成:

Pitch = -30°

如果只观察机头方向:

会发现:

空间中出现了一种镜像关系

也就是说:

Pitch Flip

并没有真的修正错误

它只是利用了:

180°位置

天然存在的空间对称性

6.10 一个更容易理解的比喻

想象你在镜子前。


正常情况:

左手
≠
右手

但如果:

正好面对镜子

会发现:

镜像

看起来像正确答案

Pitch Flip也是类似情况。


它不是:

真的正确

而是:

碰巧对称

6.11 本讲最重要的发现

通过实验:

45°
90°
135°
180°

我们已经证明:

Pitch Flip

不是通用补偿

它只是在:

Yaw ≈ 180°

附近,

因为空间对称关系,

看起来能够修正错误。


6.12 本讲结论

如果只记住一句话:

Pitch Flip 并没有修正 Body Yaw 与 Earth Yaw 的差异。

它只是利用了:

180°附近的空间对称性

让结果看起来接近正确。


因此:

Pitch Flip

不是答案

只是:

一个会骗人的现象

第6讲总结

本讲通过实验验证:

45° 失败
90° 失败
135° 失败
180° 接近正确

因此:

Pitch Flip
不是通用补偿方法

它只能解释:

为什么180°看起来正确

却不能解释:

为什么其它角度失败

这意味着:

还有新的因素

尚未被考虑

下一讲预告

第7讲:Pitch Flip 的失效

核心问题:

如果 Pitch Flip 不是真正答案,

那么从 45° 到 180°,

偏差究竟是怎样变化的?

我们能否找到一个连续规律?