如何使用Blackbox调整FPV无人机的滤波器和PID
小节
- 入门
- 调整目标
- 基本配置
- 如何使用PIDToolBox和Blackbox
- 滤波器调整
- 为噪声分析而试飞
- 理解陀螺仪频率和延迟
- 过滤策略
- 装机是否足够干净
- 调整RPM滤波器
- 调整动态陷波滤波器
- 调整陀螺仪低通滤波器
- 调整DTerm低通滤波器
- 静态陷波滤波器
- 偏航低通滤波器
- PID调整
- RateProfile和角度模式
- 寻找PD平衡
- 找到最大D增益
- 调整前馈
- 调整I增益
- 反重力增益
- 动态怠速
- 推力线性化
- TPA
- 偏航调整
- 没有完美的调参
- 坏陀螺仪
- RC平滑
- PIDSum太低?
- ADC滤波器抖动导致振荡
入门
- 本章将介绍如何开始使用 Blackbox 来优化我们的 FPV 无人机。在优化过程中,我们有两个主要目标:
调整目标
- 更有效地使用滤波器:尽可能少地使用滤波器以最小化延迟,但足够减少噪音到可接受的水平。
- 优化 PID 增益和相关设置,使无人机飞行更加精确和响应。
基本配置
- 硬件清单
- 选择带有橡胶减震垫(也称为减震柱)的飞塔,可以提高耐久性和噪音性能(减震)。
- 使用金属螺丝来固定飞塔,避免使用尼龙/塑料螺丝、支撑柱或间隔柱,因为它们容易破裂并且更容易产生振动。如果需要间隔柱,请使用软硅胶材质的。使用更轻的钛螺丝可以节省几克重。
- 在安装4合1电调之前,用金属螺母牢固锁定飞塔的螺丝。如果您的机架有压入式螺母,则无需再添加另一个螺母。这将防止堆叠螺丝摇摆并产生振动。首先手动拧紧它们,然后用扳手/螺丝刀最后一次拧紧。
为了固定整个飞塔,您可以使用4个塑料螺母。手动拧紧螺母,使橡胶减震垫不被过度压紧,这样可以确保飞控稳定工作。
- 黑匣子记录设置
在黑匣子中选择以下设置:
- 内置闪存或SD卡
- 由于我们要调谐滤波器,我们希望以2KHz(或1.6KH对于BMI270陀螺仪)的频率记录日志。
- 在调试模式下选择“GYRO_SCALED”以记录未经滤波的陀螺仪信号。
- 在您的 OpenTX/EdgeTX 无线电中禁用 ADC 过滤器(System->Hardware)。这将减少延迟。
- 电调设置:
以下设置只针对五寸飞机 仅供参考
对于 BLHeli_32 电调:
- Rampup Power 40%
- Motor timing 16
- PWM 频率:
- 低 “16KHz”(或最低频率)
- 高 “By RPM”
- 或者,您可以将 LOW 和 HIGH 都设置为固定的 24KHz 或 48KHz。24KHz 对于处理推力洗效果更好,48KHz 对于平滑性更好,但 “By RPM” 提供了两者的最佳效果。
对于 BLHeli_S 电调,尝试刷写 Bluejay 固件(48KHz),这对于微型无人机的平滑性和效率更好。有些人喜欢24KHz,因为它有更多扭矩并且对于推力洗处理更好,但是如果您启用推力线性化,使用48KHz时它应该能够弥补一部分失去的扭矩,因此您将获得两者的最佳效果。
Bluejay 固件还支持双向 DShot,这对于 Betaflight 中的各种功能(如 RPM 滤波器和动态空闲)是必需的。
- 将最新版本的 Betaflight 固件(目前为 4.4.2)刷写到您的飞控器上,并将 PID/滤波器设置保持默认。在 Betaflight中启用专家模式,这将在 PID 调整页面上为您提供所有可用的滑块和选项。
在 配置 页面中,设置您的 PID 循环频率;在 电机 标签中,设置您的电调协议。
无论飞控处理器如何,如果它具有 BMI270 陀螺仪,您只能使用 3.2KHz PID 循环频率和 DShot300 电调协议。
对于其他陀螺仪,对于 F4 飞控器,您可以使用 4KHz 和 DShot300。对于 F7 或 H7 飞控器,您可以使用 8KHz 和 DShot600,或者如果您希望,可以使用 4K 和 DShot300。在 配置 页面中禁用您可能不需要的任何功能,如气压计、LED灯带、软串口等。
- 在 电机 页面中,启用双向 DShot。
几乎所有现代电调都支持双向 DShot。我有一个关于如何启用 RPM 滤波器的教程。对于 BLHeli_32 电调,它可以直接使用,但如果您有 BLHeli_S 电调,则需要首先刷写 Bluejay 固件。
为了检查双向 DShot 是否正常工作,请在 电机 页面中运行电机(拆掉螺旋桨!),并查看错误率(E)是否保持在 0%。如果情况不是这样,请尝试使用较慢的 DShot 协议,例如 DShot300,甚至 DShot150 重试。如果这些协议都无法给出 0% 的错误率,那么您可能需要禁用双向 DShot。
一旦您启用了双向 DShot,您可以启用 RPM 滤波器,这可能是 Betaflight 中最好的滤波器。
- 加载适当的 RC_Link 预设。
由于不同的遥控链路具有不同的数据包速率和数据包间隔,需要特定的遥控平滑和前馈配置,以避免 Feedforward(前馈)问题。
通过加载适当的 RC_Link 预设,Betaflight 将自动为您应用所有必要的配置。在加载预设之前还有一些其他选项可供选择,特别是飞行风格,对于大多数人来说,可能是 Freestyle(自由飞行)。
如果您正在使用 Crossfire,最好将数据包速率锁定为 50Hz(更远的距离)或 150Hz(更低的延迟)。您可以在 TBS Agent Lite LUA 脚本中进行设置。
- 降低 TPA 值
在 PID 调整标签页右栏底部,将 TPA(油门补偿)的断点设置为 1750,即当油门位置达到该数值时,TPA 开始起效。我们不希望 TPA 在调整过程中掩盖所有的振荡问题。如果在高油门范围出现振荡问题,我们稍后可以对 TPA 进行调整。
如何使用PIDToolBox和Blackbox
我将在 PID 和滤波器调整中使用PIDToolBox (PTB)和Blackbox Explorer (BE) 。
- 在这里讨论如何使用 BE:“如何在 Betaflight 中使用 Blackbox 的基础知识”
- 在这里下载并安装 PTB:https://github.com/bw1129/PIDtoolbox/releases/latest/
- 本页介绍如何使用 PTB:https://github.com/bw1129/PIDtoolbox/wiki/PIDtoolbox-user-guide
PIDToolBox 将是我们的主要工具,它是迄今为止最强大的 Blackbox 工具。它允许您在同一窗口上并排比较多个日志,以便您可以看到在实例中所做的更改的效果。阶跃响应工具对于调整 PID 非常简单且有用。另一个很棒的事情是频谱分析仪中 Y 轴上的单位(以分贝为单位),它可以进行更准确和客观的比较。PTB 还会告诉您估计的滤波器延迟,这很有用。
我认为 PTB 的主要缺点是速度。它的加载速度相当慢,而且使用起来不如 BE 直观。这就是为什么当我只需要查看一个日志或进行一般故障排除时我主要使用 BE,因为它使用起来更快。但对于噪声和滤波器调谐,PTB 绝对是最佳选择。
滤波器调整
进一步阅读:在Betaflight不同类型的滤波器
硬件在需要多少过滤方面起着重要作用。例如,一个设计良好的机架没有不良的共振问题,一组平衡良好的螺旋桨,带有平滑轴承的新电机,所有这些都有助于成就一个干净的装机,几乎不需要过滤。
为噪声分析而试飞
起飞,用尽可能少的油门和最小的偏航/俯仰/滚杆输入向前飞行
执行“油门巡行”–缓慢增加油门,直到在5-10秒内达到100%。电机引起的振动频率会随油门水平而变化,该测试将显示整个油门范围内的所有振动以及框架共振的位置。
重复2-3次,然后落地上锁。
下图就是一个典型的“油门巡行”日志(看底部那条油门的变化)
理解陀螺仪频率和延迟
现在在BE中加载日志,并且在分析仪中打开“Gyro_Scaled”(未过滤的陀螺仪信号)。非常重要的一点是要截掉日志的起飞和落地部分(这样这些振动不会影响我们的分析)。选中头和尾,分别用键盘 “i”和”o”操作。
以下是典型5〃FPV飞机的原始陀螺仪信号频率图的分解【译者注:滤波器根据频率过滤】
低于20Hz: 飞机随摇杆指令所做的运动频率
20Hz-100Hz之间:洗桨、不良PID导致的振荡(例如过激的D 增益),ECS配置问题和不好的RC link相关设置等等…
100HGz-250Hz之间:机架共振或者零部件松动
高于250Hz: 电机和桨叶的噪声
低于20Hz的一切都是“好的”飞机运动对杆的反应。
20Hz到100Hz是不希望存在的震动,如飞机振动和洗桨。作为一般的经验法则,你要看到更少的活动在这个频率范围。有一些是正常的,但太多意味着你有一个需要解决的振荡问题。通常我们尽量避免低于100Hz的过滤因为那些是飞机的真实运动,虽然其中有些是我们要去掉,有些我们要保留的。在这么低频范围过滤会更糟糕因为它引入庞大数量的延迟。分析小于100Hz的频谱可以直观看到中油门振动的问题,以及飞机洗桨处理的怎么样。
我们不用管1000Hz以上的,因为这些对飞机影响不大,我们应该关注的是在100Hz-1000Hz内的噪声。
也许不直观,但是太多过滤实际上会引起振动,而使得在-100Hz的频谱上显示出噪声。那是因为过滤产生了相位延迟(phase delay)。当飞机尝试校正错误时,相位延迟导致响应太迟了实际上适得其反。导致错误更加严重,产生了一个反馈循环(feedback loop),所以飞机开始振了。
那就是为什么如果我们用更少的过滤,低于100HZ的噪声问题会更少,因为延迟减少了并且飞机能更快响应来纠正PID错误。用更少的过滤也让你能把PID 增益拉得更高,让飞机更跟手、对抗洗桨。
通过绘制Gyro和Gyro_Scaled并测量它们之间的间隙,你可以了解由于滤波而给Gyro信号增加了多少延迟。
在PTB,它自动估算陀螺仪滤波器和D-term滤波器的延迟(下图第二列第一个图的右上角)
过滤策略
我基本的过滤策略就是:用RPM滤波器清掉电机频带(motor bands),用动态陷波滤波器除掉机架共振,然后用陀螺仪低通滤波器和D-term低通滤波器减少噪声下限(noise floor)。我将按下面顺序来调整滤波器:
RPM滤波器=》动态陷波滤波器=》陀螺仪低通=》D-term低通
我们想要尽可能少的过滤来减少延迟,但同时有足够的过滤足以用炸弯掉的桨叶返航不会烧电机。人们当然可以安全地使用更多的过滤功能,但当过度过滤时,飞机会感到与外界脱节,并且由于延迟增加而反应迟钝。洗桨也会更加严重。所以我们要争取找到一个平衡点。
除了检查BlackBox日志,在滤波器调整中,电机温度是另一个有用判定。电机过热通常表示过滤不够。
专业建议:电机过热 - 多热是过热?
作为一般的经验法则,如果你捏一下电机并不能坚持几秒,意味着过热,你可能把你的设置搞得过于激进了。
装机是否足够干净
在开始之前,检查装机是否干净。像上文所述一样“油门巡行”操作。
在PIDToolBox加载日志文件,电机 Spectral Analyzer。只选 “Gyro prefilt”(原始的、未过滤的陀螺仪信号,而 “Gyro”是过滤后的信号),然后点击 Run。
Betaflight默认的滤波器设置非常保守,大多数装机可以在它的基础上减少一些过滤。如果你的飞机在默认的滤波器设置已经很大噪声,你应该查一下可能的机械或者电气问题而不是增加过滤。在电调的电源输入端加上电容、确定所有螺丝已上紧、使用新的桨叶,等等。。。
在一个干净5寸机上,会有少量正常活动在约50Hz(飞机运动)和约200Hz(电机震动)之间。若果你在这个区域有很多噪声,可能是电气噪声(也许陀螺仪输入电源太多噪声,或者需要给电调的输入加额外的电容);也肯能使机械引起的(例如有电线撞了陀螺仪)。这种情况下很难得到最佳的过滤。
按PIDToolBox的作者建议,理想的整体噪声下限(overall noise floor)低于-30dB大于 50Hz。对于D-Term来说,理想的整体噪声下限低于 -10dB。通过看这些区域内的噪声水平可以知道你的飞机飞的有多平稳。噪声水平跟飞机装机质量有关、硬件质量有多好,有时你可能只是有一个过噪的陀螺仪。
如果你的飞机噪声比这个还高(例如,有一个峰值在中间大于0dB),那么你需要开更多的过滤。这也不是世界末日,只是意味着延迟会高很多,你也不能把PID 增益推得那么高了。
能承受PID高增益值的飞机,更好飞
调整RPM滤波器
RPM滤波器是Betaflight最有效的滤波器之一。BLHeli_32和BLHeli_S电调现在都支持 RPM滤波器了,所以如果你还没开,确保开启它。在一台干净的装机,RPM滤波器和动态陷波滤波器将完成大部分工作,我们可以禁用许多其他滤波器。
在PTB里加载日志,点击Spectral Analyzer并且点击“Freq x Throttle”。
在 “Presets”下面,选择 “Gyro Prefilt,Gyro,Dterm Preflt,Dterm” 然后点击 Run。我把它叫做“热图”。
我将分解成下图:
接近 0Hz,底部(1)非常亮的水平线是飞机对摇杆信号的响应动作
在200Hz周围,水平线(2)是机架共振。频率没有根据油门变化而变化,但在与电机频带相交的地方它是最强的
对角线(3)是电机频带(motor band),通常是最亮的。(4)和(5)是电机的谐波(和声),它们渐趋暗淡到难以识别。可以修改 scale值(热图左上角)让它显示得更清楚
我们将用RPM滤波器来处理电机频带(motor bands)
调整RPM滤波器基本上是指优化RPM谐波(RPM harmonics)使用的个数,以及基于电机频带的起始频率设置最高可能的“Min Frequency”
更少的RPM harmonics和更高的 min freq 等于 更少的过滤和更少的延迟。
点击“Data Cursor” 工具,然后点一下电机频带开始的地方,会显示准确地频率(下图)。在 roll/pitch/yaw几个图都确认一下,选用最低的频率。
这是我调的一个例子:我的新组飞机Source One V5
图左,是默认的RPM滤波器,3个谐波和最低频率100Hz
图右,改成2个谐波和160Hz的最低频率
通过减少一次谐波,你可能会看到第三次“电机谐波”中有一点未过滤掉的噪声。
虽然这点噪声非常小,但是他仍会进入D term并且被放大。让我哦们检查 下面的Dterm 热图的右边,可以看到,一丁点的陀螺仪噪声变成非常糟糕的Dterm噪声。
因此,在本例中,RPM 滤波器最好有 3 个谐波。
你可能已经注意到的另一件事是 116Hz 左右的一些噪声未被过滤,因为我们将最小频率提高到 160Hz。为了解决这个问题,我们必须降低最小频率。
这是使用 3 种不同设置过滤后的陀螺仪信号的比较:
左:2 次谐波 160Hz 最小频率
中:3 次谐波 130Hz 最小频率
右:3 次谐波 100Hz 最小频率
看起来要消除电机带噪声,我们不能减少RPM滤波器。在此示例中,默认的 3 次谐波和 100Hz 最小频率最适合我们。
调整动态陷波滤波器
动态陷波滤波器抑制陀螺仪信号中的信号峰值,这些信号峰值主要是来自框架或其他硬件的振动。即机架共振(炭纤维很有弹性引起共振)、天线、挂在TPU打印件中的GoPro和弯曲的桨叶。
启用 RPM 滤波器后,Betaflight 将自动减少动态陷波滤波的数量(更少的陷波数和更高的 Q 值),因为 RPM 滤波器将完成大部分繁重的工作。 你可以根据自己的设置进一步调整动态陷波。
调整动态陷波滤波器意味着优化陷波数、最高可能 Q 值和适当的最小/最大频率。更少的陷波 = 更少的过滤但更低的延迟。
查看热图并确定有多少机架共振来决定需要多少陷波。你最多可以有5个陷波,单通常1-2个就足够了,除非你的飞机构造不佳或处于非常破旧的状态。特别是当你启用RPM滤波器时,1个陷波通常足以消除共振。如果你的飞机不能使用RPM滤波器,例如在一个tiny whoop上,你可以尝试启用具有 5 个谐波、Q 因数 350 和 100Hz 的最小频率作为起点的动态陷波滤波器,然后通过向上调整它。
在这个例子中,似乎只有一个机架共振在 210Hz 左右(注意出现在整个油门范围内的水平线)。
Q 值决定了滤波器的宽度:更高的 Q = 更窄的滤波器,更少的过滤但更低的延迟。
如果 500 的默认 Q 值运行良好,请尝试 600 甚至 700(基本上找到仍然可以充分控制这些共振的最高 Q 值)。如果过滤后你仍然可以看到帧共振噪声,则可能需要较低的值。检查 Dterm 热图以查看它如何影响 Dterm噪声以及决定你的 Q 值是否可以更高。
Min/Max Frequency 是截止频率,它基本上是动态陷波滤波器的有效范围。 只需在共振的每一侧增加 20-30Hz 的额外范围。
为了安全起见,我会避免将最小频率设置得太高,因为弯曲的桨叶也会产生巨大的共振。 如果你坠机并试图用弯曲的螺旋桨返航,动态陷波滤波器确实可以帮助减少可能进入 Dterm的振动。 我们不知道共振的确切位置,但拥有更宽的频率范围更有可能捕捉到共振。 如果动态陷波由于最小频率设置过高而无法捕捉到这些新出现的共振,那么在这些情况下,你的电机可能会发热甚至会烧。
在此示例中,我尝试将 Q 增加到 700 并将最小/最大频率设置为 160-230Hz,但我认为 Q 显然太高了。 有更多未过滤的噪声,它进入 Dterm 并被放大。
最后,当我将 Q 设置为 450 时,噪声得到了充分的控制。在下图中,左边是Q=700,右边是Q=450。你可以再次检查 Dterm 热图以确认它运行良好。
调整陀螺仪低通滤波器
在大多数情况下,你可以关闭不需要的 Gyro Lowpass 1 滤波器,积极测试飞行 30 秒,并检查电机温度以确保它们在继续之前不热。
然后使用“Gyro Filter Multiplier”滑块一次将 Gyro Lowpass 2 降低几个档次。向右移动滑块 = 向上移动频率 = 减少过滤 = 减少延迟 = 更好的洗桨处理和更高的 PID 增益。
在这里,我将比较陀螺仪低通滤波器滑块值 1.0(棕色)、1.5(红色)和 2.0(橙色)之间的陀螺仪频谱。
这 3 条线几乎相互重叠,这表明陀螺仪低通滤波器的作用并不大,可以减少。 有趣的是,如果你观察低于 100Hz 频谱中的噪声,它实际上会在过滤较少的情况下稍微好一些,这与我们之前谈到的相呼应。
重点:
由于anti-aliasing,切勿为 2K/4K PID 环路频率禁用陀螺仪低通 2 滤波器
对于 2K 循环时间,将 Gyro Lowpass 2 保持在 500Hz 作为最小值
对于 4K,你可以将 Gyro Lowpass 2 设置为 1000Hz
对于 8K,如果噪声不是问题,你可以完全禁用 Gyro Lowpass 2
调整DTerm低通滤波器
由于 D Term的敏感特性,D Term比陀螺仪噪声大得多,并且噪声会随着频率上升而被放大,因此在处理 D Term滤波时要格外小心和保守。
尝试将“D Term Filter Multiplier”滑块一次向右移动一个档位,看看飞机在 30 秒的试飞中如何响应(做一些特技动作),同时检查下地后的电机温度。 如果它们变热,你应该退回一两个档次。
我会警告不要过于激进地减少 D Term过滤,在飞行过程中为可能弯曲的桨叶留出一些空间。 D Term过滤太少和螺旋桨损坏是电机过热/烧电机的最佳组合。
这是 D Term过滤滑块位置中 1.0(棕色)、1.3(红色)和 1.6(橙色)之间的比较。 正如你所看到的,与 Gyro lowpass 不同,dterm 的过滤越少显然噪声越大。
在下面的热图中,从左到右:未过滤的 D Term,D Term低通滤波器 1.0、1.3 和 1.6。
如果你在减少 D Term滤波时听到电机变得粗糙(令人不安的振荡),那是 100Hz 以下的噪声越来越大(你可以查看 <100Hz 的图表来确认)。 在这个例子中,为了安全起见,我可能会保持在 1.3 以下,可能是 1.2 甚至只是 1.1。
调整 PID 增益后,你应该回头再次检查是否可以优化 D Term 过滤。
如果 D Term 轨迹非常嘈杂,在滑块上多点击一两次可能会有帮助。 如果 D Term轨迹非常干净,你或许可以稍微减少滤波(如果电机不过热)。 见下图,左边有一个嘈杂的 D Term轨迹,右边更干净。
重要提示:切勿完全禁用 D-Term 低通滤波器,否则会烧毁电机。
静态陷波滤波器
静态陷波滤波器仅在非常特定的频率(例如机架共振)下存在强烈共振时才使用。 然而,动态陷波滤波器通常可以覆盖它,因此通常不需要静态陷波滤波器(你可以将其禁用)。 但是,你可以尝试为已知的机架共振(以固定频率)添加静态陷波并将动态陷波计数减少一个,看看哪种策略更适合你的设置。
偏航低通滤波器
100Hz 截止频率下的默认偏航低通滤波器具有最小的延迟损失,因此可以保持不变。 Whoops可以特别受益于偏航低通滤波器,因为它有助于减少碰撞中的偏航旋转。
PID调整
要使用 Blackbox 调整 PID,我将遵循使用 PIDToolBox 的“Basement Tuning”方法。 它对初学者很友好,你可以在你的地下室/卧室里做,因此得名。 基本上,你只需执行一系列 PID 值略有不同的短途飞行,然后比较日志以找到最佳增益。
在飞行过程中,你应该在使用俯仰和横滚在附近飞行,这很简单。
虽然他们称之为“地下室调整法”,但我在室内做这个真的不舒服。 我过去有过几次“飞向月球”的事件,我差点在天花板上钻了一个洞,所以我总是试着在花园或当地公园里做这些测试。
RateProfile和角度模式
进行地下室调整飞行需要一些良好的目视飞行技巧。 在密闭空间内控制飞机而不撞到墙壁并不容易。 为了使它更容易,试试这个Rate Profile(Actual Rate):
● 中心灵敏度(Center Sensitivity) 250
● 最大速率(Max Rate) 400
● Expo 0.00
它的最大速率很低,所以如果你移动摇杆太多,它不太可能失控。 有高又线性的中心杆灵敏度,确保杆输入足够大以用于blackbox日志。
你甚至可以在Angle 模式下执行此测试,这比速率模式更容易。 根据 PTB 的作者,这与在速率模式下一样有效,但你需要先执行以下操作:
在“设置”选项卡上校准加速度计
在 PID 配置文件设置中将角度模式强度(Angle mode strength)设置为 100
点击保存
寻找PD平衡
首先,降低这些增益,这样它们就不会干扰我们的调整:
将“Stick Response”滑块(前馈)设置为 0
将“动态阻尼”(D Max) 滑块设置为 0
将“Drift-Wobble”(I 增益)滑块设置为 0.2,它足够低,不会引入过冲,但只有一点 I Term可以帮助更好地稳定飞机,使其更容易控制
调整“阻尼”(D 增益)滑块,从你要测试的最小值开始。 对于典型的 5寸机,0.6 是一个很好的起点。
以下是你要在飞行中执行的操作:
上电和悬停
不断移动横滚和俯仰摇杆20-30秒,动作越多越准
在不撞墙的情况下尽可能大的动作(最好是全摇杆偏转)
只要你能控制它,你就可以同时移动俯仰和横滚
尽量不要在飞行过程中停止/悬停太久,并尽可能保持连续
每次将阻尼滑块升高 0.2 并重复飞行:例如 0.6、0.8、1.0、1.2、1.4、1.6。 当你将 D 增益提高得太高时,你的电机声音听起来会很粗糙,往后面的几个值可能无法继续测试下去了,这没什么问题。
更改滑块值的最快方法是进入 Betaflight OSD 选项卡、Profile、Simplified Tuning。 如果你使用的是 DJI,你可以通过 root 眼镜来访问 OSD 选项卡。 如果你搞不了,那么只需插入 USB 数据线并使用 Betaflight
最好每 2-3 次飞行更换一次电池,以确保结果不受电压影响。 通过在每次飞行前拔下电池来为飞机供电,以便它创建一个新日志。 或者只需在 OSD 选项卡中选择“保存并重启”,这样就无需拔下电源。
如果时间安排得当,16MB 的内存应该足够进行六次 30 秒的飞行。
完成所有飞行后,将它们下载到你的电脑上。
我将日志重命名为“01 d06”、“02 d08”等(01 表示首次试飞,d06 表示阻尼滑块值 0.6),并将它们放在“02 PD Balance”文件夹中。
在 PTB 中加载所有日志,检查每一个日志并删除每个日志的起飞和降落部分。
单击“Step Resp Tool”,选择所有文件并单击“运行”。 如果你在曲线中有偏移(陀螺仪曲线从设定点(Set Point)向末端移动),启用“Y Correction”。
它非常简单,只需选择最好看的线,这是你的最佳阻尼滑块值。 理想的响应应该类似于下图中的绿线,几乎没有过冲。 有一点点超调是可以接受的。
过冲(Overshoot)
设定值(Setpoint)
振荡(Oscillation)
理想(Ideal)
欠冲(Undershoot)
如果你的轨迹看起来不平滑但有很多起伏,则表明信号太嘈杂或你的动作不够大。
右边的图表也非常有用:
Peak 是超调(overshoot)的最高幅度(理想情况下越接近 1 越好)
Latency 是达到设定点所需的时间(理想情况下越低越好)
当 D 增益较低时,会出现超调甚至振荡。 随着 D 增益的增加,超调量将减少,峰值将减少,但延迟将因此增加。 当 D 太高(下冲)时,初始峰值可能甚至达不到设定值,这并不理想。 找到具有最小过冲但具有相对较低延迟的响应。
你可以放大并更清楚地查看它(或选择更少的日志,然后再次点击运行)。 我们只需要查看 Roll 和 Pitch 轴。
在我们的示例中,很明显俯仰和横滚的理想值都是橙色 (3),因此应该是 1.0。
由于不同的重量分布,在俯仰和横滚上有不同的 PD 平衡是很常见的。 如果是这种情况,将阻尼滑块移至你想要的俯仰位置,记下俯仰 D 增益,然后将阻尼滑块移至你想要横滚的位置,并调整俯仰阻尼滑块以匹配俯仰 D 增益(你刚刚写下来那个)。
有时最好保守一点,避免 D 增益过高。 如果你犹豫不决,请始终使用较少的 D 增益(较高的 P/D 比),这样你可以在最后提高整体 PID 增益,因为 D 通常是限制因素。
我发现step response工具往往非常敏感,P/D 平衡可能低于我个人的偏好。 所以我通常在找到理想值后将 P/D 平衡提高 5-10%。 这只是我个人的喜好,如果你愿意,可以尝试一下。
飞机的大小影响 PD 比率,飞机越大,P 与 D 相比越高(更高的 P:D 比率)。 例如,5 寸机可能使用 0.8-1.1 阻尼滑块,而Tiny whoop可能使用 1.4-1.6。
找到最大D增益
以 0.2 步长对 主乘数滑块进行相同的测试,例如 对于 5 寸机,这将是 0.8、1.0、1.2、1.4、1.6 1.8。
不过要非常小心,在这个测试中不要站得太靠近飞机,因为你可能会碰到一个 D 太高的点,飞机会向上猛窜。 密切注意电机噪声,当听到抖得很厉害时应立即上锁。
你可能会注意到step response的形状在不同值之间变化不大,峰值也大致保持不变。 这是因为响应曲线的形状主要由 P/D 比决定。 通过增加增益不会对响应产生太大影响,但通过提高 P/D 增益可以减少延迟。
当发生以下情况之一时,你就达到了理想的主乘数增益:
你听到大声地抖动——你不能再增加 D 增益了
或者延迟不再减少(或减少得很少)——这意味着它已经达到参数可调窗口的上限,电机性能已经榨干,没有继续优化的空间了。
你的收益能达到多高取决于你的装机有多大噪声以及你使用了多少过滤。 更少的过滤允许更高的 PID 增益。 有时最好保守一点,在找到最大值后将主乘数滑块调低一两个档位,而不是将 D 增益推到临界点,这样炸弯桨的时候更安全点。 请注意,使用更多电芯数的电池(更高电压)的飞机往往允许更低的 D 增益,例如 在 6S机上,D 增益可能在 30 左右,而在 4S 上通常在 40 左右。
在我的示例中,1.6 似乎是给我们带来最少延迟的值,到 1.8 没有太大改进。
你不一定听得到电机强抖动的情况。 要检查,只需转到频谱分析仪并绘制 Dterm。 随着增益越来越高,电机会发出强抖动的声音,峰值在 40-80Hz 左右(尤其是当你加大油门时)。 如果你看到此频率范围内的噪声随增益增加而上升,那么你可以确定振荡开始与 PID 相关。
在此示例中,你可以清楚地看到 1.4(橄榄色)、1.6(绿色)和 1.8(青色)的峰值在 60Hz 左右。 尽管 1.6 显示延迟有所改善,但我个人不会冒险。 为了安全起见,在这个例子中我可能会选择 1.3 甚至 1.2。
到底是 Dterm 滤波多、D 增益高,还是 Dterm 滤波少、D 增益低好,目前仍有争议。 但永远不要运行较少的 Dterm 过滤和更高 D 增益,否则当你撞到树枝或弯曲桨叶时可能会发生灾难! 这不是开玩笑 :) 从这里的经验来看:
如果你现在检查设定点轨迹(绘制Gyro和Setpoint),你应该会很好地找到飞机有没有紧贴摇杆的控制。 两条线应该大致平行(意味着飞机以与设定点相同的速率加速和减速),但它们之间仍然存在很大差距(延迟!)。 在下一步中,我们将使用前馈来缩小差距。
调整前馈
当你移动摇杆时,前馈会加速你的摇杆,使你的杆响应更快,并更接近设定点。【有点像鼠标,甩快加速】
与前馈相比,P Term相当慢,因为它仅在出现 PID 错误时才开始做出反应。 前馈测量摇杆偏转率——你移动摇杆的速度。 它不依赖于陀螺仪数据,它让电机在操纵杆移动时立即移动,因此它比 P Term快得多。
调整前馈时,我更喜欢做一些快速横滚和前/后翻转并检查陀螺仪/设定点轨迹。 使用你常用的Rate Profile,或 Betaflight 中的默认Rate Profile(只需切换到未使用的Rate Profile),以在全速运行时获得适当的最大速率。
我们可以在 BE 中检查设定点/陀螺仪轨迹,而不是使用 PTB 中的stop response工具,陀螺仪应该比以前更好地跟踪设定点(延迟更少)。 在最好的情况下,陀螺仪可能正好位于设定点之上。 如果前馈过冲(陀螺仪在设定点之前移动),则前馈太高。 在下面的演示中,0.5 太低了,1.0 仍然不够高,但是 1.5 有点太多了,过冲了。 我认为 Feedforward 在 1.3-1.4 应该在这个例子比较合适。
如果你的前馈增益太高,它甚至会导致 P Term走向相反的方向试图对抗它 :) 【看下面红线和紫线】
不管你的飞行风格是什么,前馈都是有用的,不仅仅适用于某些类型的飞行。 即使是电影级的飞行也能从大量的前馈中获益,如果你平稳而缓慢地移动你的摇杆,那么前馈无论如何都不会起作用。 当你需要快速响应时,FF 将减少摇杆输入和飞机之间的延迟。 如果你想要平稳飞行,只需使用 expo,更多 RC平滑(RC smoothing,下文详述)或降低你的速率。
调整I增益
理想的 I Term在某种程度上几乎是一种感觉,当你拥有最佳 P 和 D 增益时,你不需要很多 I 增益,只需要最小量的 I 增益来防止飞机漂移和徘徊。 看看我在这里调整 I 的方法。 如果你以最少的操纵杆输入向前巡航,飞机应该会保持其位置一段时间。 如果有任何漂移,那么你需要更高的收益。
I term 有一个非常宽的调整窗口,特别是对于强大的5寸机,I term 滑块中的 0.5 到 1.5 大概率正常工作。 这就是为什么我们可以调整其他所有内容并最后调整I term。
竞速者可能更喜欢更高的增益以获得更严格的控制和更好的转弯跟踪,而花飞手可能更喜欢更低的增益的更宽松的感觉(因为花飞手不会长时间保持姿势)。 刮风时,你还需要更高的 I 增益,以保持飞机在外力作用下保持稳定。【是不是拉高I可以飞一些漂移感强的风格?】
由于我们添加了前馈,并且陀螺仪/设定点跟踪得如此紧密,因此 PTB 中的Step response工具无法有效地找到 I Term。【原来如此!!】
多亏了Betaflight 中的“I-term relax”功能,你可以使用非常高的 I-增益而不会产生太多负面影响。 当我将Term设置得太高时,我发现在进行翻转和滚动时会使轨迹看起来颠簸。 所以我倾向于为我的花飞装备将它设置在较低的一侧,刚好足以防飞机因风而漂移。 使用反重力可以在throttle pumps(油门推拉)期间暂时提高你的 I 增益以减少机头漂移(nose wanders),所以我通常找不到有很高I增益的需求。 对于5寸机,我通常将其保持在 0.7-0.9 左右。
反重力增益
如前所述,当轰完油门然后拉到底时,飞机会摇晃和机头下沉。 Anti Gravity 可以在throttle pumps(油门推拉)期间暂时提高 I 增益 以减少这些不希望的掉高。 但是,当你将 AG 增益设置得太高时,当你松开油门(快速松油)时,你台机可能会卡顿,因为 AG 会同时提升 P 和 I。【更强的P去修正油门误差导致卡顿】对于5寸机,我发现 5-7 是一个不错的范围。
你需要通过看飞行眼镜实飞效果来调整 AG。
动态怠速
动态怠速值 30 至 35
动态怠速(Dynamic Idle)有助于提高稳定性、更好的桨洗处理和降低电调失步的机会。 缺点是你可能会少点续航。 通过在油门为零时提高电机转速,来提高PID控制器的控制权和低油门输入响应【就如格斗静止时仍保持小幅度的运动,随时可以出招!】。 还有其他好处,例如更干脆的翻转刹停和滚动刹停、更灵敏的低油门和更有效的刹车等。
设置动态怠速后,电机选项卡中的静态电机怠速(以 % 为单位)会被禁用。
要设置动态空闲,你需要
在“电机”选项卡中启用双向 DShot(如果你已经启用了 RPM 滤波器,则一切就绪)
在 PID 调整页面中设置合适的怠速 RPM 值(给5寸机输入30到35)
建议的怠速 RPM 值在很大程度上取决于螺旋桨尺寸和螺距,较小和较低螺距的螺旋桨通常需要更高的值。 对于 7 寸机,你通常可以将其设置为 14-28,对于5寸机,20-40,对于 3寸机,它更高,为 33-66。 刮风时,你也可以将其设置得更高来抗风。
值太高,当你让飞机倒挂时,你会失去悬挂时间(电机更用力地推向地面)。 高值也往往会使飞机至在零油门时“悬停”更多一点,从而使油门操控起来更加困难。 当值太低时,你会冒低油门不稳定的风险。
推力线性化
启用推力线性化,20%。
这会在低油门时提高PID以提高响应性和控制权限,同时降低高油门时的PID, 以减少振荡(与 TPA 相同的效果)。 它也可以帮助处理机头下沉(nose dip)问题。 如果你在 ESC 上使用 48KHz PWM 频率,则特别推荐这样做。 单靠TPA不足以解决高油门振荡时,它也很有用。
由于它在低油门时提高了 PID,因此如果电机变热,你可能希望将主乘法器滑块降低一两个等级。
TPA
再次进行油门巡行试飞(throttle sweep)并检查”freq vs throttle”热图。
如果你仅在高于特定油门水平时出现振荡,TPA 可能是解决方案。 它还有助于将 PID 推得更高【可以把主乘数拉的更高】,而不会在高油门范围内给你带来问题。
在最新的 Betaflight 中,它只会衰减超过特定油门水平的 D 增益(这通常是振荡的原因)。 在较旧的 Betaflight 中,它会衰减 P 和 D,如果你愿意,你可以通过在 CLI 中输入来恢复它:set tpa_mode = PD。
通常我更喜欢将 TPA 中的油门值设置得尽可能高,因此 D 增益在更宽的油门范围内更加恒定。【因为TPA影响D值,又要开TPA又要避免过大影响】 确保设置的油门值略低于 D Term相关振荡开始出现的位置。 例如,如果在 1800 油门左右开始振荡,我会这样做:TPA = 0.75, 1750。
再看D Term过滤(上文提到)
所有这些更改后,你可以再次检查 D Term过滤,看看是否需要减少或增加它。
偏航调整
我不太喜欢偏航,默认增益通常效果很好。 Yaw 的调整窗口非常宽松。
与基于螺旋桨产生的推力的俯仰和横滚不同,偏航基于螺旋桨旋转产生的惯性。 因此,偏航本质上会太慢而无法超过设定值,并且几乎不需要调整偏航 PID。
偏航对于 D Term来说也太慢而无法产生任何有意义的影响,因此通常不需要。 然而,如果你愿意,你可以启用它,但它可能会引入比它解决的问题更多的问题,比如振动等。所以我们只剩下偏航的 P 和 I Term。
你可以使用step-response分析来调整偏航,就像我们对俯仰和滚动所做的那样。 此外,如果图形的后部出现缓慢振荡,则 I-Term 太高。 如果发生快速振荡,则 P-Term 太高。
没有完美的调参
好到什么程度才算好? 你总是可以花更多时间研究滤波器和 PID 数字,你可能会看到改进,但它可能因情况而异,你投入的时间可能与结果不成比例。 我通常只是在它看起来“足够好”时停下来,就不管了,除非我有一个我想解决的特定问题。
坏陀螺仪
在默认的 Betaflight 设置下,一架 5寸FPV应该已经可以非常平稳地飞行了。 如果你台机有振动,它可能与机械或电气相关。 有时 FC 上的陀螺仪也会引起问题,尽管这并不常见。
这是一个坏陀螺仪的样子。 一个坏陀螺仪往往会发生一个轴比其他轴特别嘈杂的情况,尤其是在 200Hz 以下的较低频谱中。 如果将 FC 旋转 90 度,并且噪声轴跟随旋转,则陀螺仪可能有故障。
在此示例中,你可以看到俯仰轴比横滚和偏航轴噪声大得多。 你还可以在俯仰轴上看到由嘈杂的陀螺仪引起的 D Term噪声的爆发。
然而,这不一定是陀螺仪坏了,其他可能的原因是:陀螺仪附近的高功率电线、电调的含噪声电源、糟糕的电路板设计等。你可以尝试在电调电源处使用 1000uF的低ESR电容器。 如果你已经这样做了,请尝试将一个更小的 220uF-470uF的电容焊接到飞控(VBAT/VCC 焊盘)的电源上。
RC平滑
RC平滑是 Betaflight 中必不可少的设置,用来避免前馈的问题。 适当的 RC 平滑设置取决于你的特定 RC 链接,我强烈建议只加载适当的 RC_Link 预设,这是避免用户错误的最佳方法。
Auto Factor 可能是最重要的值之一,值越低越紧张、反应越灵敏,而值越高越柔和、越平滑但越迟钝。 这是我个人遵循的一般规则:
20-25:竞速
30:默认值,非常适合 Freestyle
50:电影拍摄用
90:巡航非常丝滑,有些人可能会觉得有些延迟
120:在不遇到麻烦的情况下可能达到的最高平滑度,但延迟很明显
装备太差或者小白飞手也需要更高的 RC 平滑,例如。 低质量的无线电控制设备、破旧的摇杆、手抖的飞手等等。基本上任何可能导致 RC 命令出现抖动的东西。
如果可能,检查黑盒日志以确认你有平滑的设定点,如果设定点不平滑(有来自 RC 命令的步进),只需稍微增加平滑度。
如果设置点的噪声在 50Hz、150Hz、250Hz 或 500Hz 左右达到峰值,则 RC 平滑可能存在问题。 这些频率是 RC 链路中的常见数据包速率。 在这个例子中,它是 Crossfire 150Hz。
如果您没有对 RC 命令使用足够的过滤,则可能没有足够平滑 RC 信号,并且它可能会在无线电链路数据包速率的频率上产生噪声。
RC 平滑消除了设定点中的步进和颠簸,使 P 项迹线不那么不稳定。然而,它也会增加前馈和设定值的延迟,因此您的四轴可能会感觉响应有点慢。RC 平滑很有用,但过多的平滑会违背 ExpressLRS 提供的快速 RC 数据包速率的目的。
目标是平滑步骤但不增加太多延迟。如果您想要更平滑的 RC 输入,请尝试添加更多的 expo,它具有类似的效果,但不会给您带来延迟损失。
最好的方法是加载适当的 RC Link 预设。如果您未能为特定 RC 链路和数据包速率加载正确的 RC_Link 预设,也可能会导致前馈出现问题。在此示例中,由于 RC 命令中缺乏步进平滑,导致前馈抖动。
PIDSum太低?
PID_Sum 在此处达到默认的 500 限制 (50%),因为此飞机的 PID 设置非常高。【下图右边PIDs组内蓝色那个50%】 你可以将它提高到 1000(在 CLI 中输入 set pid_sum_limit=1000)来修复它,但它并不总是对飞行行为产生影响,因为电机可能无论如何都会以这个速率饱和。
ADC滤波器抖动导致振荡
即使你应用了正确的 RC Link 预设或增加了 RC 平滑,还会因前馈抖动而出现随机振动和摆动,可能是ADC滤波器引起的!
确保你已在遥控的系统选项卡、硬件页面中将其关闭。【译者注:上文有截图】
这是打开 ADC 滤波器时前馈尖峰的样子。
转自原作How to Tune FPV Drone Filters and PID with Blackbox
由鸽鸽XD汉化整理