# 多旋翼飞行器 PID 调整指南(手动/高级)

本主题提供有关 PX4 控制器及其调试方式的详细信息。

TIP

自动调整飞行稳定参数 建议用于调整载具 悬停推力点周围因为所述方法直观、简单、快捷。这对许多载具来说都是必需的。

当围绕悬停推力点进行调整参数还不够时(例如,在更高推力下存在非线性和振荡的载具),请使用此主题。它还有助于深入了解基本调整参数的工作原理,并了解如何使用 空气模式 设置。

# 调整参数步骤

备注

出于安全考虑,默认增益设置为较低值。必须先提高增益,才能获得良好的控制响应。

下面是一些调试时需要遵循的一般要点:

  • 所有增益的增加都应该非常缓慢,因为过大的增益可能会导致危险的振荡!通常每次迭代增益增加 20-30%,最后微调时减至 5-10%。
  • 在更改参数前降落。缓慢加大油门,检查是否有摆动。
  • 围绕悬停推力点调整飞行器,并使用 推力曲线参数 以考虑推力非线性或高推力振荡。
  • 可选择使用 SDLOG_PROFILE 参数,这样就可以使用日志来评估速率和姿态跟踪性能(之后可以禁用该选项)。

警告

始终禁用 MC_AIRMODE 在调试载具时。

# 费率控制器

速率控制器是最内环,由三个独立的 PID 控制器控制车身速率(偏航、俯仰、滚动)。

备注

调整良好的速率控制器非常重要,因为它会影响 一应俱全 飞行模式。调整参数不良的速率控制器在以下情况下会显现出来 位置模式例如,"抽搐"(载具在空中不会完全静止)。

# 速率控制器结构/形式

PX4 支持在单个混合实施中使用两种(数学上等效的)PID 速率控制器: 平行标准.

用户可以通过将另一种形式的比例增益设置为 1 来选择所使用的形式(如下图所示)。 K 为 1 表示平行形式,或 P 如果是标准格式,则将 K 或 P 块替换为一行)。

PID_Mixed

  • G(s) 表示载具的角速率动力学特性
  • r 是速率设定点
  • y 是机身角速率(由陀螺仪测量)
  • e 是速率设定值与测量速率之间的误差
  • u 是 PID 控制器的输出

下面介绍这两种形式。

备注

导数项 (D)位于反馈路径上,以避免一种称为 衍生踢 (打开新窗口).

# 平行形式

平行形式 是最简单的形式,因此也是教科书中常用的形式。在这种情况下,控制器的输出只是比例、积分和导数动作的总和。

PID_Parallel

# 标准形式

这种形式在数学上等同于并联形式,但其主要优势在于(即使看起来有悖直觉)它将比例增益调整与积分和导数增益分离开来。这就意味着,只需利用大小/惯性相似的无人机的增益,并简单调整 K 增益,就能轻松调整新平台,使其飞行正常。

PID_Standard

# 速率 PID 调节

用于调整 PID 速率控制器的相关参数为

速率控制器可在以下情况下调整 Acro 模式手动/稳定模式:

  • Acro 模式 是首选,但较难飞行。如果选择这种模式,请禁用所有操纵杆展开功能:
    • MC_ACRO_EXPO = 0, MC_ACRO_EXPO_Y = 0, 亚洲超级博览会 = 0, 麦克超商 = 0
    • MC_ACRO_P_MAX = 200, MC_ACRO_R_MAX = 200
    • MC_ACRO_Y_MAX = 100
  • 手动/稳定模式 飞行更简单,但也更难发现姿态或速率控制器是否需要进一步调整。

如果载具根本不会飞:

  • 如果在第一次尝试起飞时出现强烈摆动(以至于无法飞行),则减少所有 PD 直到起飞。
  • 如果对 RC 运动的反应微乎其微,则增加 P 收益。

在以下情况下,实际调整大致相同 手动模式Acro 模式:您可以反复调整 PD 滚动和俯仰增益,然后 I 增益。起初,您可以对横滚和俯仰使用相同的值,一旦有了好的值,您就可以通过分别查看横滚和俯仰响应对其进行微调(如果载具是对称的,则不需要这样做)。对于偏航,情况非常相似,只是 D 可以保持为 0。

# 比例增益 (P/K)

比例增益用于最小化跟踪误差(下面我们使用 P 既指 PK).它的作用是快速响应,因此应尽可能设置得高一些,但不要产生振荡。

  • 如果 P 增益过高:会出现高频振荡。
  • 如果 P 增益过低:
    • 载具会对输入变化反应缓慢。
    • Acro 模式 载具就会漂移,您需要不断纠正以保持水平。
# 衍生收益 (D)

D (导数)增益用于速率阻尼。它是必需的,但应根据需要设置,以避免过冲。

  • 如果 D 增益过高:电机会变得抽搐(可能还会发热),这是因为 D 术语会放大噪音。
  • 如果 D 增益过低:阶跃输入后会出现过冲。

典型值为

  • 标准格式P = 1):介于 0.01(4"赛手)和 0.04(500 尺寸)之间,对于任何值的 K
  • 平行形式(K = 1):介于 0.0004 和 0.005 之间,具体数值取决于 P
# 积分增益 (I)

I (积分)增益对误差进行记忆。增益 I 如果在一段时间内未达到所需的速率,期限就会增加。重要的是(特别是在飞行时 Acro 模式),但不宜设置过高。

  • 如果 I 增益过高:您将看到缓慢的振荡。
  • 如果 I 增益过低:最好在以下情况下进行测试 Acro 模式将载具向一侧倾斜约 45 度,并保持这个角度。应该保持相同的角度。如果它向后偏移,请增加 I 增益。低 I 当预期速率与实际速率在较长时间内出现偏移时,日志中也会显示增益。

典型值为

  • 标准格式P = 1):介于 0.5(VTOL 飞机)、1(500 型)和 8(4"竞赛)之间,对于任何数值的 K
  • 平行形式(K = 1):在 0.3 和 0.5 之间,如果 P 俯仰增益通常需要比滚动增益高一些。

# 测试程序

要测试电流增益,请提供快速 步进输入 悬停时,观察飞行器的反应。它应立即执行命令,既不会摆动,也不会过冲(感觉 "锁定")。

例如,您可以通过快速将滚动杆推向一侧,然后让它快速回转来创建一个阶跃输入(请注意,如果您只是松开滚动杆,它也会摆动,因为它是由弹簧加载的--经过良好调试的载具会跟随这些摆动)。

备注

经过精心调试的载具在 Acro 模式 不会随意向一侧倾斜,而是在没有任何校正的情况下保持姿态数十秒。

# 日志

查看日志也有助于评估跟踪性能。下面是一个良好的滚动和偏航率跟踪示例:

滚动跟踪 偏航率跟踪

这里有一个很好的例子,说明在几次翻转后的滚动率跟踪情况,翻转产生了极大的步进输入。可以看到,载具的过冲量非常小: 滚动率跟踪翻转

# 姿态控制仪

它通过以下调整参数控制方向并输出所需的机身速率:

姿态控制器更容易调整。事实上,大多数情况下根本不需要更改默认值。

要调整姿态控制仪,请在 手动/稳定模式 并增加 P 逐渐增益。如果开始出现振荡或超调,说明增益过高。

还可以调整以下参数。这些参数决定了围绕所有三个轴的最大旋转速率:

# 推力曲线

上述调整优化了悬停油门附近的性能。但是,当接近全油门时,您可能会开始看到振荡。

为了解决这个问题,可以调整 推力曲线THR_MDL_FAC 参数。

备注

如果更改该参数,可能需要重新调整速率控制器。

默认情况下,电机控制信号(如 PWM)与预期推力之间的映射是线性的。 THR_MDL_FAC 为 1 则为二次方。介于二者之间的值则采用线性插值。典型值介于 0.3 和 0.5 之间。

如果您有 推力架 (打开新窗口) (或能 衡量 通过同时使用推力和电机命令),可以确定电机控制信号和电机实际推力之间的关系,并对数据进行函数拟合。PX4 中的电机指令称为 致动器输出 可以是 PWM、Dshot 或 UAVCAN 命令,分别用于所用的电调。 本笔记本 (打开新窗口) 说明了推力模型系数 THR_MDL_FAC 可根据之前测得的推力和 PWM 数据计算得出。本图中的曲线以 α 和 k 为参数,并以实际单位(kgf 和 μs)显示推力和 PWM。为了简化曲线拟合问题,可以将 0 和 1 之间的数据归一化,从而得出 k 无需估计 α(数据标准化后,α = 1)。

推力曲线补偿]

备注

PWM 和静态推力之间的映射在很大程度上取决于电池电压。

进行该实验的另一种方法是绘制归一化发动机指令和推力值的散点图,并通过实验迭代调整推力曲线。 THR_MDL_FAC 参数。下面是该图表的一个示例:

显示相对推力和 PWM 散点的图表

如果在实验的整个全量程范围内都收集了原始的电机指令和推力数据,则可以使用公式对数据进行归一化处理:

normalized_value = ( raw_value - min (raw_value) )/ ( max ( raw_value ) - min ( raw_value ) )

在绘制出归一化值的散点图后,您可以尝试绘制等式,使曲线相匹配

rel_thrust = ( THR_MDL_FAC )* rel_signal^2 + ( 1 - ) THR_MDL_FAC )* rel_signal

在 0 和 1 之间的归一化电机指令值的线性范围内,请注意这是固件中用于映射推力和电机指令的等式,如 THR_MDL_FAC 参数参考。这里、 相对推力 是介于 0 和 1 之间的归一化推力值,以及 相关信号 是介于 0 和 1 之间的归一化电机指令信号值。

在上面这个例子中,当 THR_MDL_FAC 设为 0.7。

如果没有推力台,也可以根据经验调整建模系数。从 0.3 开始,每次增加 0.1。如果过高,您会发现在油门值较低时出现振荡。如果过低,则会在油门值较高时出现振荡。

# 气模 & 混频器饱和度

速率控制器输出所有三个轴(滚动、俯仰和偏航)的扭矩指令和一个标量推力值,需要将其转换为单个电机的推力指令。这一步骤称为混合。

例如,在低推力和大滚转指令的情况下,可能会出现其中一个电机指令变为负值的情况(同样,也可能超过 100%)。这就是混合器饱和。实际上,飞行器不可能执行这些指令(可逆电机除外)。PX4 有两种模式可以解决这个问题:

  • 要么降低滚转的指令扭矩,使电机指令都不低于零(禁用气动模式)。在指令推力为零的极端情况下,这意味着不再可能进行姿态修正,这也是该模式始终需要最小推力的原因。

  • 或者通过增加(提升)指令推力,使电机指令都不是负的(启用 Airmode)。这样做的最大好处是,即使在低油门或零油门时也能正确跟踪姿态/速率。一般来说,它能改善飞行性能。

    然而,它增加了总推力,可能导致即使油门减小到零,飞行器仍继续上升的情况。对于调校良好、功能正常的载具来说,这种情况并不存在,但例如,由于 P 调校增益过高而导致载具强烈摆动时,就会出现这种情况。

下图显示了这两种模式,并附有两个电机的二维图示和滚动扭矩指令 r.左侧电机 r 的推力与指令推力相加,而右侧电机的推力则与指令推力相减。电机推力以 绿化.启用气动模式后,指令推力将增加 b.禁用时 r 减少。

Airmode

如果混合饱和度接近上限,则会降低指令推力,以确保不会指令任何电机提供超过 100% 的推力。这种行为与 Airmode 逻辑类似,无论启用或禁用 Airmode 都会应用。

载具飞行正常后,您可以通过 MC_AIRMODE 参数。