2. 航向控制核心:偏航角、滚转角与航向的关系、PID控制基础、航向保持原理
各位同学,欢迎来到航向控制的核心章节。说实话,固定翼飞控里最让我着迷的就是航向控制——它不像四旋翼那么直接,但那种通过倾斜机身优雅转弯的感觉,才是飞行的精髓。今天我们就来拆解这个核心问题。
2.1 偏航角、滚转角与航向的关系
先问大家一个问题:固定翼飞机是怎么转弯的?
很多人第一反应是「打方向舵」。嗯,方向舵确实能产生偏航力矩,但光靠它转弯效率极低,而且会让飞机侧滑,像个醉汉一样飘忽不定。真正的固定翼转弯,靠的是滚转。
这里有个关键公式,我建议你刻在脑子里:
航向角变化率 ≈ (重力加速度 × tan(滚转角)) / 空速
说白了:你滚转多少度,决定了航向变化有多快。
为什么会这样?因为当你让飞机滚转时,升力不再垂直向上,而是分解出一个水平分量。这个水平分量拉着飞机转弯。滚转角越大,水平分量越大,转弯就越急。
我在项目中遇到过一架飞翼布局的无人机,试飞时发现它转弯特别迟钝。排查了半天,发现是空速传感器读数偏大,导致飞控以为速度很快,于是给的滚转角偏小。你看,一个传感器误差,直接影响了整个航向控制的表现。
三者关系可以这样理解:
- 偏航角:飞机机头指向与北向的夹角,也就是我们常说的「航向」
- 滚转角:机翼绕机体纵轴的旋转角度,是控制航向的「手段」
- 航向变化:滚转后升力水平分量带来的结果
记住一句话:固定翼不滚转,就别想好好转弯。
2.2 PID控制基础
讲PID之前,我想先说说我的理解。PID这东西,说白了就是一个「纠错器」。你告诉它目标航向是多少,它看看当前航向差多少,然后算一算该给多大的控制量。
ArduPilot里航向控制的PID结构是这样的:
// 伪代码示意
error = target_yaw - current_yaw // 航向误差
// 归一化到 [-180, 180]
if (error > 180) error -= 360;
if (error < -180) error += 360;
// PID计算
P_term = Kp * error
I_term += Ki * error * dt
D_term = Kd * (error - last_error) / dt
output = P_term + I_term + D_term
嗯,这里要注意一个坑:航向误差的归一化。如果不做这个处理,当目标航向是350度、当前是10度时,误差会算成340度,飞控会以为要转一大圈。实际上只差20度,往反方向转就行。我曾经因为这个bug,让飞机在天上画了个大圈才回到航向,场面一度很尴尬。
三个参数的作用,我用大白话解释一下:
| 参数 | 作用 | 调大后的效果 |
|---|---|---|
| Kp(比例) | 看到误差就猛打方向 | 响应快,但容易过头(超调) |
| Ki(积分) | 长期偏航就慢慢加力 | 消除静差,但可能震荡 |
| Kd(微分) | 看到误差变化快就刹车 | 抑制震荡,但会放大噪声 |
我的调参习惯:先只给P,让飞机能大致跟上航向但不震荡。然后加一点点D,让响应更平滑。最后加I,消除侧风带来的稳态误差。千万别一上来三个参数全给,你会后悔的。
2.3 航向保持原理
航向保持,说白了就是让飞机沿着你设定的方向飞。但现实世界不完美——有风、有气流、有传感器噪声。航向保持的本质,就是跟这些干扰对着干。
ArduPilot的航向保持逻辑大致分三步:
- 计算期望滚转角:根据航向误差,通过PID算出应该滚多少度
- 限制滚转角:防止飞机滚转过度(一般限制在45度以内)
- 执行滚转:内环的滚转控制器去实现这个目标滚转角
这里有个重要的概念——内外环结构。外环是航向环,输出期望滚转角;内环是滚转环,执行滚转动作。外环慢、内环快,这样系统才稳定。
我画了一张图,帮你理解这个结构:
你看,目标航向和当前航向做差,误差进外环PID算出期望滚转角,再和内环的当前滚转角做差,最后驱动舵面。这个级联结构,是固定翼飞控的经典设计。
避坑指南:我曾经在调一架大翼展的滑翔机时,把外环的P给得太大。结果航向误差一出现,外环直接要求45度滚转,内环拼命执行,飞机在天上左右猛晃,差点失控。后来我把外环P减半,内环D加了一点,飞机才稳下来。
记住:外环要温柔,内环要果断。
最后说说风的影响。有侧风时,飞机为了保持航向,会有一个偏流角——机头指向和实际航迹方向不一致。这时候航向保持PID里的积分项就派上用场了,它会慢慢累积一个偏置,让飞机始终带着一定的滚转角来对抗侧风。
嗯,航向控制的核心就这些。说白了就是:用滚转来转弯,用PID来纠偏,用内外环来分层。理解了这个,你就掌握了固定翼飞控的半壁江山。
本章要点速记:
- 固定翼转弯靠滚转,不靠偏航
- 航向变化率 = g * tan(滚转角) / 空速
- PID三参数:P管响应、I管静差、D管震荡
- 内外环结构:外环算滚转角,内环执行滚转
- 积分项是抗侧风的关键