Multicopter PID调整指南
本教程说明了如何为所有多直升机设置(Quad,Hexa,Octo等)调整PX4上的PID回路。
通常,如果您使用受支持的特定配置(例如,在QGroundControl> Airframe中使用机身),则默认调整应足以安全飞行。为了获得最佳性能,通常最好对新车进行调试。例如,不同的ESC或电机需要不同的调整增益才能实现最佳飞行。
本指南适用于高级用户。未调谐或部分调谐的车辆很可能不稳定,容易撞车。确保分配了Kill-switch。
介绍
PX4用途Proportional,我ntegral,derivative(PID)控制器(这些是最普遍的控制技术)。
控制器是分层的,这意味着较高级别的控制器将其结果传递给较低级别的控制器。最低级别的控制器是速率控制器,然后是姿态控制器,然后是速度和位置控制器。PID调整需要以相同的顺序进行,从速率控制器开始,因为它将影响所有其他控制器。
前提条件
- 您已 为车辆 选择了最匹配的 默认机身配置 。 这应该给您已经飞行的车辆。
- 您应该已经完成 ESC校准 。
PWM_MIN设置正确。需要将其设置为较低,但要确保在武装车辆时电动机永远不会停止。
- 卸下螺旋桨
- 武装车辆并将油门降至最低
- 将车辆向各个方向倾斜约60度
- 检查没有电机关闭
(可选)使用 SDLOG_PROFILE 参数 启用高速率日志记录配置文件, 以便您可以使用日志评估速率和姿态跟踪性能(此后可以禁用该选项)。
调整车辆时,请始终禁用MC_AIRMODE。
调整步骤
出于安全原因,默认增益设置为较低的值。您必须增加增益,然后才能获得良好的控制响应。
以下是调优时要遵循的一些一般要点:
- 所有增益都应非常缓慢地增加,因为较大的增益可能会导致危险的振荡! 通常,每次迭代将增益提高20-30%,对于最终的微调,增益降低到5-10%。
- 更改参数之前先着陆。 缓慢增加油门并检查是否有振动。
- 围绕悬停的推力点调整车辆,并使用 推力曲线参数 说明推力非线性或高推力振荡。
费率控制器
速率控制器是最内部的回路,带有三个独立的PID控制器,用于控制车身速率(偏航,俯仰,横滚)。
调整好的速率控制器非常重要,因为它会影响所有飞行模式。在位置模式下,调谐不良的速率控制器将可见,例如,“抽搐”(车辆将无法在空中完美静止)。
费率控制器架构/表格
PX4在单个“混合”实现中支持两种(数学上等效)PID速率控制器形式:并行和标准。
用户可以通过将另一种形式的比例增益设置为“ 1”来选择使用的形式(即,在下图中,将并行形式的K设置为1,将标准形式的P设置为1-这将替换K或P块用一行)。
- G(s) 代表车辆的角速度动态
- r 是速率设定点
- y 是身体角速度(由陀螺仪测量)
- e 是速率设定值和测得速率之间的误差
- u 是PID控制器的输出
两种形式如下所述。
导数项()在反馈路径上,以避免产生称为导数踢的效应。
有关更多信息,请参见:
- 并非所有的PID控制器都相同 (www.controleng.com)
- PID控制器>标准与并行(理想)PID形式 _PID_form)(Wikipedia)
平行形式
的并行形式是最简单的形式,并且(因此)在教科书常用。在这种情况下,控制器的输出仅是比例,积分和微分作用之和。
标准格式
这种形式在数学上等同于并行形式,但是主要优点是(即使看起来很直观)也使比例增益调谐与积分增益和微分增益脱钩。这意味着可以通过采用具有类似尺寸/惯性的无人机的增益轻松调整新平台,并只需调整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模式
,但难以飞行。
如果选择此模式,请禁用所有stick expo:
MC_ACRO_EXPO
= 0,MC_ACRO_EXPO_Y
= 0,MC_ACRO_SUPEXPO
= 0,MC_ACRO_SUPEXPOY
= 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):对于任何 K 值,介于0.01(4英寸赛车)和0.04(500尺寸)之间
- 平行形式( K = 1):在0.0004和0.005之间,取决于 P 的值
积分增益(I)
在我(积分)增益保持错误的记忆。在我任期增加时所需的速度没有达到过一段时间。这一点很重要(尤其是在Acro模式下),但不要设置得太高。
- 如果I增益太高:您会看到缓慢的振荡。
- 如果I增益太低:最好在 Acro模式下 进行测试 ,方法是将车辆倾斜到大约45度的一侧,并保持这种状态。 它应该保持相同的角度。 如果它向后漂移,请增加 I 增益。 当期望和实际速率在较长时间内存在偏差时,在日志中也可以看到 低 I 增益。
典型值为:
- 标准格式( P = 1):对于任何 K 值,介于0.5(VTOL平面),1(500尺寸)和8(4“赛车)之间
- 平行形式( K = 1):如果 P 约为0.15, 则介于0.3和0.5之间 。音调增益通常需要比滚动增益高一点。
测试程序
为了测试电流增益,在悬停时提供快速的步进输入,并观察车辆的反应。它应立即遵循命令,并且既不振荡也不超调(感觉“被锁定”)。
您可以通过快速将摇杆推到一侧,然后使其快速退回来创建例如滚动的步进输入(请注意,如果只是松开,则摇杆也会摆动),因为它是弹簧负载-调整良好的车辆将遵循这些振动)。
处于Acro模式的经过良好调校的车辆不会随机向一侧倾斜,即使没有任何校正也可以保持数十秒的姿态。
日志
查看日志还有助于评估跟踪性能。这是良好的横摇和横摆率跟踪的示例:
这是通过几次翻转进行滚动率跟踪的一个很好的示例,这会产生极端的步进输入。您会看到车辆超调量很小:
姿态控制器
这将控制方向并通过以下调整参数输出所需的身体速率:
- 滚动控制( MC_ROLL_P )
- 音调控制( MC_PITCH_P
- 偏航控制( MC_YAW_P )
姿态控制器更容易调整。实际上,大多数时候根本不需要更改默认值。
要调整姿态控制器,请在“手动/稳定”模式下飞行并逐渐增加P增益。如果您开始看到振荡或过冲,则增益太高。
也可以调整以下参数。这些决定了所有三个轴的最大旋转速度:
- 最大滚动速度( MC_ROLLRATE_MAX )
- 最大俯仰率( 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调谐增益而强烈振动时,可能会发生这种情况。
两种模式都在下面显示,其中有两个电机的2D图示以及辊r的转矩命令。在左边的电动机上r被添加到命令推力上,而在右边的电动机上r被减去。马达推力为绿色。启用空气模式后,命令推力会增加b。禁用时,r减小。
如果混合达到上限,则指令推力会减小,以确保没有命令马达提供超过100%的推力。此行为类似于Airmode逻辑,并且无论是否启用Airmode都将应用此行为。
车辆飞行正常后,您可以通过MC_AIRMODE参数启用Airmode。