多旋翼飞行器 PID 调整指南
本教程将介绍如何调整 PX4 上的 PID 循环,使其适用于以下所有情况 多旋翼飞行器设置 (四边形、六边形、八边形等)。
一般来说,如果您使用的是 支持的特定配置 (例如,在以下情况下使用机身 QGroundControl > 机身默认的调整应该足以让飞行器安全飞行。要获得最佳性能,通常最好对新飞行器进行调整。例如,不同的电调或发动机需要不同的调整增益才能获得最佳飞行效果。
本指南适用于高级用户。未经调试或部分调试的载具很可能不稳定,容易撞车。请务必指定一个关闭开关。
导言
PX4 的用途 P比例、 Integral、 DPID)控制器(这是最普遍的控制技术)。
控制器是分层的,这意味着较高层次的控制器将其结果传递给较低层次的控制器。最低级的控制器是 速率控制器然后是 态度控制员然后 速度放大器;位置控制器.PID 调整需要按照相同的顺序进行,从速率控制器开始,因为这将影响所有其他控制器。
先决条件
- 您选择了最匹配的 默认机身配置 您的载具。这样,您就可以拥有一辆会飞的汽车了。
- 你应该 电调校准.
PWM_MIN 设置正确。它需要设置得低一些,但要使 电机永不停歇 当载具处于上膛状态时。
- 拆除螺旋桨
- 启动载具并将油门降至最低
- 将载具向各个方向倾斜约 60 度
- 检查电机是否关闭
- 可选择使用 SDLOG_PROFILE 参数,这样就可以使用日志来评估速率和姿态跟踪性能(之后可以禁用该选项)。
始终禁用 MC_AIRMODE 在调试载具时。
调整参数步骤
出于安全考虑,默认增益设置为较低值。必须先提高增益,才能获得良好的控制响应。
下面是一些调试时需要遵循的一般要点:
- 所有增益的增加都应该非常缓慢,因为过大的增益可能会导致危险的振荡!通常每次迭代增益增加 20-30%,最后微调时减至 5-10%。
- 在更改参数前降落。缓慢加大油门,检查是否有摆动。
- 围绕悬停推力点调整飞行器,并使用 推力曲线参数 以考虑推力非线性或高推力振荡。
费率控制器
速率控制器是最内环,由三个独立的 PID 控制器控制车身速率(偏航、俯仰、滚动)。
调整良好的速率控制器非常重要,因为它会影响 一应俱全 飞行模式。调整参数不良的速率控制器在以下情况下会显现出来 位置模式例如,"抽搐"(载具在空中不会完全静止)。
速率控制器结构/形式
PX4 支持在单个混合实施中使用两种(数学上等效的)PID 速率控制器: 平行 和 标准.
用户可以通过将另一种形式的比例增益设置为 1 来选择所使用的形式(如下图所示)。 K 为 1 表示平行形式,或 P 如果是标准格式,则将 K 或 P 块替换为一行)。
- G(s) 表示载具的角速率动力学特性
- r 是速率设定点
- y 是机身角速率(由陀螺仪测量)
- e 是速率设定值与测量速率之间的误差
- u 是 PID 控制器的输出
下面介绍这两种形式。
导数项 (D)位于反馈路径上,以避免一种称为 衍生踢.
欲了解更多信息,请参阅
- 并非所有 PID 控制器都一样 (www.controleng.com)
- PID 控制器> 标准与并联(理想)PID 形式比较_PID_form)(维基百科)
平行形式
平行形式 是最简单的形式,因此也是教科书中常用的形式。在这种情况下,控制器的输出只是比例、积分和导数动作的总和。
标准形式
这种形式在数学上等同于并联形式,但其主要优势在于(即使看起来有悖直觉)它将比例增益调整与积分和导数增益分离开来。这就意味着,只需利用大小/惯性相似的无人机的增益,并简单调整 K 增益,就能轻松调整新平台,使其飞行正常。
速率 PID 调节
用于调整 PID 速率控制器的相关参数为
- 滚动率控制 (MC_ROLLRATE_P, MC_ROLLRATE_I, MC_ROLLRATE_D, MC_ROLLRATE_K)
- 螺距速率控制 (MC_PITCHRATE_P, MC_PITCHRATE_I, MC_PITCHRATE_D, MC_PITCHRATE_K)
- 偏航率控制 (MC_YAWRATE_P, MC_YAWRATE_I, MC_YAWRATE_D, MC_YAWRATE_K)
速率控制器可在以下情况下调整 Acro 模式 或 手动/稳定模式:
- Acro 模式 是首选,但较难飞行。如果选择这种模式,请禁用所有操纵杆展开功能:
MC_ACRO_EXPO
= 0,MC_ACRO_EXPO_Y
= 0,亚洲超级博览会
= 0,麦克超商
= 0MC_ACRO_P_MAX
= 200,MC_ACRO_R_MAX
= 200MC_ACRO_Y_MAX
= 100
- 手动/稳定模式 飞行更简单,但也更难发现姿态或速率控制器是否需要进一步调整。
如果载具根本不会飞:
- 如果在第一次尝试起飞时出现强烈摆动(以至于无法飞行),则减少所有 P 和 D 直到起飞。
- 如果对 RC 运动的反应微乎其微,则增加 P 收益。
在以下情况下,实际调整大致相同 手动模式 或 Acro 模式:您可以反复调整 P 和 D 滚动和俯仰增益,然后 I 增益。起初,您可以对横滚和俯仰使用相同的值,一旦有了好的值,您就可以通过分别查看横滚和俯仰响应对其进行微调(如果载具是对称的,则不需要这样做)。对于偏航,情况非常相似,只是 D 可以保持为 0。
比例增益 (P/K)
比例增益用于最小化跟踪误差(下面我们使用 P 既指 P 或 K).它的作用是快速响应,因此应尽可能设置得高一些,但不要产生振荡。
- 如果 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 模式 不会随意向一侧倾斜,而是在没有任何校正的情况下保持姿态数十秒。
日志
查看日志也有助于评估跟踪性能。下面是一个良好的滚动和偏航率跟踪示例:
这里有一个很好的例子,说明在几次翻转后的滚动率跟踪情况,翻转产生了极大的步进输入。可以看到,载具的过冲量非常小:
姿态控制仪
它通过以下调整参数控制方向并输出所需的机身速率:
- 滚动控制 (MC_ROLL_P)
- 螺距控制 (MC_PITCH_P
- 偏航控制 (MC_YAW_P)
姿态控制器更容易调整。事实上,大多数情况下根本不需要更改默认值。
要调整姿态控制仪,请在 手动/稳定模式 并增加 P 逐渐增益。如果开始出现振荡或超调,说明增益过高。
还可以调整以下参数。这些参数决定了围绕所有三个轴的最大旋转速率:
- 最大滚动率 (最大滚动率)
- 最大变桨速率 (mc_pitchrate_max
- 最大偏航率 (MC_YAWRATE_MAX)
推力曲线
上述调整优化了悬停油门附近的性能。但是,在接近全油门时,您可能会开始看到振荡。
为了抵消这种情况,调整 推力曲线 与 THR_MDL_FAC 参数。
如果更改该参数,可能需要重新调整速率控制器。
默认情况下,电机控制信号(如 PWM)与预期推力之间的映射是线性的—。 THR_MDL_FAC
为 1 则为二次方。介于二者之间的值则采用线性插值。典型值介于 0.3 和 0.5 之间。
如果您有 推力架 (或能 衡量 推力),可以确定 PWM 控制信号与电机实际推力之间的关系,并对数据进行函数拟合。
本笔记本 说明推力模型系数 THR_MDL_FAC
可根据之前测得的推力数据计算得出。
PWM 和静态推力之间的映射在很大程度上取决于电池电压。
如果没有推力架,也可以根据经验调整建模系数。从 0.3 开始,每次增加 0.1。如果过高,您将开始注意到在较低油门值下的振荡。如果过低,则会在油门值较高时出现振荡。
气模 & 混频器饱和度
速率控制器输出所有三个轴(滚动、俯仰和偏航)的扭矩指令和一个标量推力值,需要将其转换为单个电机的推力指令。这一步骤称为混合。
例如,在低推力和大滚转指令的情况下,可能会出现其中一个电机指令变为负值的情况(同样,也可能超过 100%)。这就是混合器饱和。实际上,飞行器不可能执行这些指令(可逆电机除外)。PX4 有两种模式可以解决这个问题:
- 要么降低滚转的指令扭矩,使电机指令都不低于零(禁用气动模式)。在指令推力为零的极端情况下,这意味着不再可能进行姿态修正,这也是该模式始终需要最小推力的原因。
或者通过增加(提升)指令推力,使电机指令都不是负的(启用 Airmode)。这样做的最大好处是,即使在低油门或零油门时也能正确跟踪姿态/速率。一般来说,它能改善飞行性能。
然而,它增加了总推力,可能导致即使油门减小到零,飞行器仍继续上升的情况。对于调校良好、功能正常的载具来说,这种情况并不存在,但例如,由于 P 调校增益过高而导致载具强烈摆动时,就会出现这种情况。
下图显示了这两种模式,并附有两个电机的二维图示和滚动扭矩指令 r.左侧电机 r 的推力与指令推力相加,而右侧电机的推力则与指令推力相减。电机推力以 绿化.启用气动模式后,指令推力将增加 b.禁用时 r 减少。
如果混合饱和度接近上限,则会降低指令推力,以确保不会指令任何电机提供超过 100% 的推力。这种行为与 Airmode 逻辑类似,无论启用或禁用 Airmode 都会应用。
载具飞行正常后,您可以通过 MC_AIRMODE 参数。