Skip to content

多旋翼PID调参(手动/高级)

本主题提供有关PX4控制器以及如何调参的详细信息。

TIP

对于在悬停推力点附近对飞行器进行调参,建议使用自动调参功能,因为其方法直观、简便且快速。这满足了许多飞行器的需求。

当自动调参在悬停推力点附近调整效果不佳时(例如,飞行器在更高推力时存在非线性和振荡情况),手动调参就派上用场了。此外,深入了解基本调参的工作原理以及如何使用飞行模式(Airmode)设置,手动调参也很有帮助。

调参步骤

INFO

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

以下是调参时需遵循的要点:

  • 调整增益时,所有增益值都应缓慢增加,因为增益过大可能会引发危险的振荡!一般每次增益值的调整幅度约为20% - 30%,在获得最优增益值后,基于该最优值再下调5% - 10%。
  • 在修改参数前务必先着陆。缓慢增加油门,观察是否出现振荡现象。
  • 在悬停推力点附近对飞行器进行调参,并使用推力曲线参数来解决推力非线性或高推力振荡问题。
  • 可选择使用SDLOG_PROFILE参数启用高速率日志记录配置文件,以便通过日志评估速率和姿态跟踪性能(之后可禁用该选项)。

WARNING

调参时务必禁用MC_AIRMODE

角速度控制器

速率控制器是最内层的控制环,包含三个独立的PID控制器,用于控制机体的角速度(横滚、俯仰、偏航)。

INFO

一个调校良好的速率控制器非常重要,因为它会影响所有飞行模式。例如,在位置模式下,如果速率控制器调校不佳,飞行器会出现“抖动”或振荡(飞行器无法在空中完全静止悬停)。

速率控制器架构/形式

PX4在单一的“混合”实现中支持两种(数学上等效)形式的PID速率控制器:并行模式(Parallel)标准模式(Standard)

用户可以通过将另一种形式的比例增益设置为“1”来选择使用的形式(即在下面的图表中,对于并行模式,将K设置为1;对于标准模式,将P设置为1 - 这将用一条线替换K或P模块)。

PID混合形式

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

这两种形式将在后面详细介绍。

INFO

微分项(D)位于反馈路径上,以避免一种称为微分冲击的效应。

TIP

有关详细信息,请参阅:

并行模式

并行模式 是最简单的形式,因此在教科书中经常使用。在这种情况下,控制器的输出只是简单地将比例项、积分项和微分项相加。

PID并行模式

标准模式

这种形式在数学上与并行模式等效。其主要优点(尽管看似有点违反直觉)是将比例增益的调试与积分增益和微分增益分离开来。这意味着对于一个新的平台,通过使用相同尺寸/推力无人机的增益,只需简单调整K增益就更容易使其正常飞行。

PID标准模式

角速度PID调试

调试角速度PID控制器涉及以下参数:

速率控制器可在特技飞行模式(Acro mode)稳定模式(Stabilized mode)下进行调试:

  • 特技飞行模式 更受青睐,因为它允许进行独立的速率控制测试。然而,驾驶难度会显著增加。

    WARNING

    如果选择此模式,您必须禁用所有摇杆指数,并为所有轴设置合理的最大速率

    • MC_ACRO_EXPO = 0, MC_ACRO_EXPO_Y = 0, MC_ACRO_SUPEXPO = 0, MC_ACRO_SUPEXPOY = 0
    • MC_ACRO_P_MAX = 200, MC_ACRO_R_MAX = 200
    • MC_ACRO_Y_MAX = 100

    对于PX4 v1.15及更高版本,默认设置为此目的,所有轴的最大速率为100°/s线性映射。

  • 稳定模式 飞行更简单,但要区分特定行为是由姿态控制器还是速率控制器引起的,则要困难得多。

如果您的飞行器根本无法起飞:

  • 如果首次尝试起飞时出现强烈振荡(以至于无法起飞),降低所有的PD增益,直至飞行器能够起飞。
  • 如果对遥控器操作的反应极小,增大P增益。

手动模式特技飞行模式 下,实际调参过程大致相同:您需要反复调试横滚和俯仰的PD增益,然后调试I增益。一开始,横滚和俯仰可以使用相同的值,待大致调好后,在精细调试阶段可分别对横滚和俯仰进行调整(如果您的飞行器是对称的,就无需再进行精细调整)。对于偏航,过程非常相似,只是D增益可以设为0。

比例增益 (P/K)

比例增益用于最小化跟踪误差(以下我们用P来指代PK)。它可以加快响应速度,因此应在不引发振荡的前提下尽量设高。

  • 如果P增益过高:您会看到高频振荡。
  • 如果P增益过低:
    • 飞行器对遥控器的输入反应迟钝。
    • 特技飞行模式 下,飞行器会漂移,您需要不断修正以保持其水平。
微分增益 (D)

D(微分)增益用于速率阻尼。同样,此值应尽量设大以避免超调。

  • 如果D增益过高:电机会变得抖动(可能还会发热),因为D项会放大噪声。
  • 如果D增益过低:在阶跃输入后会出现超调。

典型值如下:

  • 标准模式(P = 1):对于任何K值,在0.01(4英寸竞速机)到0.04(500尺寸飞行器)之间。
  • 并行模式(K = 1):根据P的值,在0.0004到0.005之间。
积分增益 (I)

I(积分)增益会记住误差。当一段时间内未达到期望速率时,I项会增加。它很重要(特别是在飞行 特技飞行模式 时),但不应设置得过高。

  • 如果积分增益过高:您会看到缓慢振荡。
  • 如果I增益过低:在 特技飞行模式 下测试最佳,将飞行器向一侧倾斜约45度并保持。它应该始终保持该角度。如果它漂移回来,增大I增益。在日志中,如果期望速率与实际速率在较长时间内存在偏差,也表明I增益较低。

典型值如下:

  • 标准模式(P = 1):对于任何K值,在0.5(垂直起降固定翼飞机)、1(500尺寸飞行器)和8(4英寸竞速机)之间。
  • 并行模式(K = 1):如果P约为0.15,在0.3到0.5之间。俯仰增益通常需要比横滚增益略高。

测试步骤

要测试当前增益,在悬停时提供快速的阶跃输入,观察飞行器的反应。它应该反应迅速,振荡和超调量都较小(有一种“锁定”的感觉)。

例如,在横滚方向上进行阶跃输入,将横滚摇杆推向一侧,然后迅速回中(注意,如果直接松手,由于摇杆的弹簧结构,它会振荡 - 调好的无人机会跟随这些振荡)。

INFO

特技飞行模式 下,调参良好的飞行器不会随机向一侧倾斜,即使不进行任何修正,也能保持姿态数十秒。

日志

查看日志有助于评估调参效果。以下是一份调参良好的横滚和偏航角速度日志。

横滚速率跟踪偏航速率跟踪

以下日志中横滚角速度调试良好,其中有几个翻转动作,即非常极限的阶跃输入。您可以看到飞行器的超调量非常小: 横滚速率跟踪翻转动作

角度控制

角度控制环控制机体的姿态角,并通过以下参数输出目标角速度:

姿态角控制环的调试要容易得多。实际上,大多数情况下默认值就足够了,无需调整。

要调试姿态控制器,在 稳定模式 下飞行,逐步增大P增益。如果看到振荡或超调,说明增益调得过高。

以下几个参数也可调整,它们决定了绕三个轴的最大角速度:

推力曲线

上述调整均基于悬停油门。但当逐渐增大到满油门时,飞行器可能会再次出现振荡。

为解决此问题,可使用THR_MDL_FAC参数调整推力曲线

INFO

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

默认情况下,从电机控制信号(例如PWM)到预期推力的映射是线性的 - 将THR_MDL_FAC设置为1可使其变为二次方关系。介于两者之间的值使用两者的线性插值。典型值在0.3到0.5之间。

如果您有推力测试台 (或者能够同时测量推力和电机指令),您可以确定电机控制信号与电机实际推力之间的关系,并为数据拟合一个函数。PX4中称为actuator_output的电机指令可以是相应电调使用的PWM、Dshot、UAVCAN指令。此笔记本展示了一种如何根据先前测量的推力和PWM数据计算推力模型因子THR_MDL_FAC的方法。此图中显示的曲线由α和k参数化,并且还以实际单位(kgf和μs)显示推力和PWM。为了简化曲线拟合问题,您可以将数据在0到1之间归一化,以找到k而无需估计α(当数据归一化时,α = 1)。

推力曲线补偿]

INFO

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参数参考中所示。这里,rel_thrust 是0到1之间的归一化推力值,rel_signal 是0到1之间的归一化电机指令信号值。

在上述示例中,当THR_MDL_FAC设置为0.7时,曲线似乎拟合得最佳。

如果您没有推力测试台,也可以凭经验调整建模因子。从0.3开始,每次增加0.1。如果该值过高,在较低油门值时会开始注意到振荡。如果该值过低,在较高油门值时会注意到振荡。

Airmode与混合器饱和

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

可能会出现某个电机指令变为负值的情况,例如在低推力和大横滚指令时(类似地,它也可能超过100%)。这就是混合器饱和。除了可反转电机外,飞行器在物理上无法执行这些指令。PX4有两种模式来解决此问题:

  • 要么通过降低横滚的指令扭矩,使电机指令均不低于零(Airmode禁用)。在极端情况下,当指令推力为零时,这意味着无法再进行姿态校正,这就是为什么此模式始终需要最小推力的原因。

  • 要么通过增加(提升)指令推力,使电机指令均不为负(Airmode启用)。这具有很大的优势,即使在低油门或零油门时,姿态/速率也能正确跟踪。它通常会提高飞行性能。

    然而,这会增加总推力,可能导致即使将油门降至零,飞行器仍继续上升的情况。对于调参良好、功能正常的飞行器,这种情况不会发生,但例如当飞行器因P调参增益过高而强烈振荡时,就可能出现这种情况