这段代码是飞行控制系统(固定翼)中Mode
的类的成员函数run()
,主要实现飞机的稳定控制逻辑。
cpp
void Mode::run()
{
// Direct stick mixing functionality has been removed, so as not to remove all stick mixing from the user completely
// the old direct option is now used to enable fbw mixing, this is easier than doing a param conversion.
if ((plane.g.stick_mixing == StickMixing::FBW) || (plane.g.stick_mixing == StickMixing::DIRECT_REMOVED)) {
plane.stabilize_stick_mixing_fbw();
}
plane.stabilize_roll();
plane.stabilize_pitch();
plane.stabilize_yaw();
}
以下是分步解析:
---1. 注释部分
cpp
// Direct stick mixing functionality has been removed, so as not to remove all stick mixing from the user completely// the old direct option is now used to enable fbw mixing, this is easier than doing a param conversion.
- 翻译:移除了直接杆混功能,但为了不完全剥夺用户的杆混能力,旧的直接选项现在被用来启用飞控混合(FBW)功能,这比参数转换更简单。
背景说明:- 杆混功能
(Stick Mixing)是指直接将油门/副翼/升降舵等操纵杆输入直接映射到执行器(如电机、舵机)。- 飞控混合(FBW, Fly-By-Wire)是通过飞控算法对杆混输入进行运算后输出到执行器,提升操控性和安全性。- 注释表示旧的DIRECT
选项被重新定义为启用FBW功能,而非完全移除。
---2. 条件判断:启用FBW混合
cpp
if ((plane.g.stick_mixing == StickMixing::FBW) || (plane.g.stick_mixing == StickMixing::DIRECT_REMOVED)) { plane.stabilize_stick_mixing_fbw();}
- 功能:当飞行模式满足以下条件之一时,执行FBW混合逻辑:
- 用户设置为
StickMixing::FBW
(显式启用飞控混合) - 用户设置为
StickMixing::DIRECT_REMOVED
(原直接杆混选项,已被重新定义)- 核心操作:调用plane.stabilize_stick_mixing_fbw()
,对操纵杆输入进行飞控算法处理(如姿态解算、PID控制等)。
---3. 三轴稳定化控制
cpp
plane.stabilize_roll(); // 滚转轴稳定化plane.stabilize_pitch(); // 俯仰轴稳定化plane.stabilize_yaw(); // 偏航轴稳定化
- 功能:无论条件是否满足,都会对飞机的三个主要运动轴进行稳定化处理:
- 滚转轴(Roll):控制飞机绕纵轴的旋转(如左右倾斜)。
- 俯仰轴(Pitch):控制飞机绕横轴的旋转(如抬头/低头)。
- 偏航轴(Yaw):控制飞机绕垂直轴的旋转(如航向转向)。
---代码逻辑总结
- FBW混合逻辑:仅在特定模式(FBW或旧的DIRECT选项)下启用,对杆混输入进行飞控算法处理。
- 三轴稳定化:无论模式如何,都会执行滚转、俯仰和偏航的稳定控制。实际应用场景这段代码可能属于开源飞控系统(如APM、PX4),用于实现:- 手动模式下的姿态稳定(如ACRO模式)- 半自动模式中的辅助控制(如FBW模式)- 飞行安全的底层保障(防止快速滚转/俯仰导致失速)
---注:关键术语解释
- Stick Mixing(杆混):将操纵杆输入直接映射到执行器(如电机、舵机)。
- . FBW(Fly-By-Wire):通过飞控算法对杆混输入进行运算后输出,提升操控性。
- 三轴稳定化:通过传感器(如IMU)反馈,对飞机姿态进行实时调整。