Skip to content

控制分配 (混控)

INFO

控制分配取代了 PX4 v1.13 及更早版本中使用的传统混控方法。 有关 PX4 v1.13 的文档,请参阅:混控与执行器几何文件 以及 添加新的机架配置

PX4从核心控制器获取所需的扭矩和推力指令,并将它们转换为控制电机或作动器的驱动指令。

指令间的转换取决于飞行器的物理构型。 例如,给“向右转”需要给出一个扭矩指令:

  • 对于每个副翼都有一个舵机的飞机来说,该指令将会控制一个舵机向高处偏转,另一个向低处偏转。
  • 多旋翼将会通过改变所有电机的转速来向右偏航。

PX4将这个转换逻辑区分开,这个逻辑被称为从姿态/角速率控制器输出的“混控”。 这样可以确保核心控制器不需要对每个机型构型进行特殊处理,可以大大提高复用性。

此外,PX4还将输出函数映射至指定的硬件输出。 这也意味着任何电机或舵机可以分配给几乎任何物理输出。

混控概述

作动器控制流程

模块和uORB话题混控流程概览(点击全屏查看):

流程概述

备注:

  • 角速率控制器输出力矩和推力设定值
  • “控制分配器”模块:
    • 根据配置参数处理不同飞行器构型
    • 进行混控计算
    • 处理电机失效
    • 发布电机和作动器控制信号
    • 单独发布舵机微调值,以便在 测试作动器(使用测试滑块)时将其作为偏移量添加。
  • 输出驱动:
    • 处理硬件初始化和更新
    • 使用共享库 src/libs/mixer_module。 驱动程序定义一个参数前缀,例如 PWM_MAIN,库随后使用该前缀进行配置。 其主要任务是从输入话题中进行选择,并根据用户设置的 <param_prefix>_FUNCx 参数值将正确的数据分配给输出。 例如,如果 PWM_MAIN_FUNC3 设置为 电机 2,则第 3 个输出将设置为 actuator_motors 中的第 2 个电机。
    • 输出函数在 src/lib/mixer_module/output_functions.yaml 中定义。
  • 如果你想通过MAVLink控制一个输出,将相关的输出函数设置为 外置作动器设置 x,然后发送 MAV_CMD_DO_SET_ACTUATOR MAVLink 命令。

添加新构型或输出函数

有关如何添加新的几何构型,请参阅 此提交。 然后,当 CA_AIRFRAME 设置为新的几何构型时,QGC 用户界面将自动显示正确的配置界面。

此提交 展示了如何添加新的输出函数。 任何 uORB 话题都可以被订阅并分配给一个函数。

请注意,控制分配的参数在 src/modules/control_allocator/module.yaml 中定义。 此文件的架构在 这里(特别地,搜索键 mixer:)。

设置默认机型构型

添加新的机架配置 时,为该几何构型设置合适的 CA_AIRFRAME 以及其他默认的混控器值。

例如,你可以在机架配置文件 13200_generic_vtol_tailsitter 中看到这一点:

sh
...
param set-default CA_AIRFRAME 4
param set-default CA_ROTOR_COUNT 2
param set-default CA_ROTOR0_KM -0.05
param set-default CA_ROTOR0_PY 0.2
...

设置构型和输出

在 QGroundControl 中选择机架时(从机架配置文件)设置飞行器的大致几何构型和默认参数:基本配置 > 机架

然后,使用 QGroundControl 的 作动器 设置屏幕来配置特定机架和飞行控制器硬件的几何参数和输出映射:基本配置 > 作动器配置与测试