无人机三轴稳定化控制(1)____飞机的稳定控制逻辑

这段代码是飞行控制系统(固定翼)中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混合逻辑:
  1. 用户设置为StickMixing::FBW(显式启用飞控混合)
  2. 用户设置为StickMixing::DIRECT_REMOVED(原直接杆混选项,已被重新定义)- 核心操作:调用plane.stabilize_stick_mixing_fbw(),对操纵杆输入进行飞控算法处理(如姿态解算、PID控制等)。

---3. 三轴稳定化控制

cpp 复制代码
plane.stabilize_roll();    // 滚转轴稳定化plane.stabilize_pitch();   // 俯仰轴稳定化plane.stabilize_yaw();     // 偏航轴稳定化
  • 功能:无论条件是否满足,都会对飞机的三个主要运动轴进行稳定化处理:
  1. 滚转轴(Roll):控制飞机绕纵轴的旋转(如左右倾斜)。
  2. 俯仰轴(Pitch):控制飞机绕横轴的旋转(如抬头/低头)。
  3. 偏航轴(Yaw):控制飞机绕垂直轴的旋转(如航向转向)。

---代码逻辑总结

  1. FBW混合逻辑:仅在特定模式(FBW或旧的DIRECT选项)下启用,对杆混输入进行飞控算法处理。
  2. 三轴稳定化:无论模式如何,都会执行滚转、俯仰和偏航的稳定控制。实际应用场景这段代码可能属于开源飞控系统(如APM、PX4),用于实现:- 手动模式下的姿态稳定(如ACRO模式)- 半自动模式中的辅助控制(如FBW模式)- 飞行安全的底层保障(防止快速滚转/俯仰导致失速)

---注:关键术语解释

  1. Stick Mixing(杆混):将操纵杆输入直接映射到执行器(如电机、舵机)。
  2. . FBW(Fly-By-Wire):通过飞控算法对杆混输入进行运算后输出,提升操控性。
  3. 三轴稳定化:通过传感器(如IMU)反馈,对飞机姿态进行实时调整。
相关推荐
2401_8541515513 分钟前
STM32 位带操作——像 51 一样操作 GPIO
单片机·嵌入式硬件
Jerry3 小时前
LeetCode 28. 找出字符串中第一个匹配项的下标
算法
Jerry5 小时前
LeetCode 459. 重复的子字符串
算法
海石8 小时前
1500分的题目,确实有实力,不过还是我略胜一筹
算法·leetcode
海石8 小时前
【记忆化搜索】条条大路通AC,走好适合你的那一条,走到后再考虑走得快
算法·leetcode
gugucoding9 小时前
21. 【C语言】打包不同类型:结构体
c语言·开发语言
zlinear数据采集卡9 小时前
从0到1硬核拆解:工业级数据采集卡的隔离设计与Modbus通信实战
arm开发·单片机·嵌入式硬件·fpga开发·开源
Jerry10 小时前
LeetCode 151. 反转字符串中的单词
算法
gugucoding10 小时前
31. 【C语言】堆栈与队列的实现
c语言·开发语言·数据结构·链表
a11177612 小时前
LM 算法迭代过程动画演示(SLAM)
算法