跳到主要内容

Betaflight 4.0 调参说明

其他与飞行相关的改动包括:

  • Absolute Control 已改进,但默认未启用;若调参不当,可能造成摆动。
  • iterm_rotation 默认关闭。
  • PID 默认值略有调整。
注意

请从零开始配置 4.0! 不要把旧版本的 dump 直接粘贴到 CLI!

警告

4.0 对过高的 P、D 值很敏感!

默认值适合普通的 4S、2400-2600kV、5 英寸四轴飞行器。对于高推重比机型,例如 6S 或超轻量机架,首次试飞前请将所有 PID 值至少降低三分之一。

使用默认值飞行时会有什么感受?

  • 电机温度更低。
  • 低转速下的桨流扰动表现相近;转弯时保持油门,桨流扰动控制会更好。
  • 覆盖更多不同类型四轴飞行器的更宽调参范围。
  • 紧凑高速转弯时精度更高。
  • 手感更顺滑,电机声音更干净。

我是自由式飞手,应向 CLI 粘贴什么?

目标是顺滑。可以沿用旧 PID:将 D_MIN 设为旧 D 值的约 75%,并略微降低原先的 P、D 值。

警告: 默认 PID 假定机型是较重的 4S 自由式四轴飞行器(重型 GoPro、重电池)。若用于 6S 或较轻的自由式四轴飞行器,尝试起飞前先将 PID 降低约三分之一,否则可能剧烈抖动并突然爬升。

若从默认值开始,普通 4S 自由式四轴飞行器可尝试:

set dterm_lowpass2_type = PT1
set dterm_lowpass2_hz = 200
set feedforward_transition = 30
set iterm_relax_type = gyro
set iterm_relax_cutoff = 10
set transient_throttle_limit = 15
set i_pitch = 85
set i_roll = 80
set d_min_roll = 25
set d_min_pitch = 28
set d_min_boost_gain = 30
set d_min_advance = 50
set d_pitch = 38
set d_roll = 30
set tpa_rate = 50
set tpa_breakpoint = 1500
set tpa_mode = D
set p_yaw = 35
set i_yaw = 100
set d_yaw = 0
set f_yaw = 35
set iterm_rotation = OFF

我的自由式四轴飞行器翻滚后会出现一次缓慢回弹

这通常是 iterm_relax_cutoff 对该机型设得过高。可先在 CLI 中提高该值,确认问题是否加重;然后逐步降低,直到回弹不再影响飞行。最佳值是仍不会产生回弹的最高值。自由式机型还应设置 set iterm_relax_type = gyro,这会延长 I 项抑制时间,更适合处理这类问题。上方配置对大多数自由式机型应已足够。

使用陀螺仪类型 iterm_relax 和较低截止值的代价是:在非常紧凑的持续转弯中,例如绕树做自旋,四轴飞行器会更容易跑大圈,难以保持干净的转弯半径。这通常不影响舒缓的自由式飞行,却会严重影响竞速或高强度自由式。竞速飞手通常使用设定点模式,并将截止值设为 30-35,接受少量回弹。

默认值是折中方案;请将这些配置片段作为起点。

我更偏向竞速,或使用 6S / 轻量且高响应机型

这类机型的目标是响应性:使用较高 I,尽可能少的 D,以更好地容忍弯桨;桨流扰动和翻滚控制的重要性相对较低。

set dterm_lowpass2_type = BIQUAD
set dterm_lowpass2_hz = 150
set feedforward_transition = 0
set iterm_relax_type = setpoint
set iterm_relax_cutoff = 35
set transient_throttle_limit = 10
set p_pitch = 30
set p_roll = 28
set i_pitch = 90
set i_roll = 84
set d_pitch = 27
set d_min_pitch = 18
set d_roll = 25
set d_min_roll = 16
set d_min_boost_gain = 27
set d_min_advance = 0
set f_pitch = 90
set f_roll = 84
set tpa_rate = 75
set tpa_breakpoint = 1400
set tpa_mode = D
set p_yaw = 30
set i_yaw = 90
set d_yaw = 0
set f_yaw = 30
set iterm_rotation = OFF
set thrust_linear = 0

救命,解锁后它直接垂直冲天!

这是对 D 项过度敏感,根本原因可能是机臂过软、高推重比、陀螺仪故障,或螺旋桨/机架共振等问题。6S 四轴飞行器应先将 PID 整体降低约三分之一。

以下设置会大幅降低 D、略降 P,并在低频端加强 D 项滤波。它们可帮助你稳定起飞,之后再排查根本问题:

set d_min_roll = 14
set d_roll = 20
set d_min_pitch = 15
set d_pitch = 22
set d_min_boost_gain = 20
set tpa_rate = 75
set tpa_breakpoint = 1400
set tpa_mode = D
set p_roll = 30
set p_pitch = 30
set d_yaw = 0
set dterm_lowpass2_type = PT1
set dterm_lowpass2_hz = 100

我使用大桨:7 英寸或更大,直至 X Class

Betaflight 4.0 的滤波默认值对大桨四轴飞行器通常偏高。可尝试以下设置,让动态陷波和低通能下降到这些低转速机型所需的频段:

set dyn_lpf_gyro_min_hz = 70
set dyn_lpf_gyro_max_hz = 350
set dyn_notch_range = LOW
set iterm_relax_type = gyro
set iterm_relax_cutoff = 7
set dyn_notch_min_hz = 100
set dyn_lpf_dterm_min_hz = 70
set dyn_lpf_dterm_max_hz = 150
set dterm_lowpass2_hz = 120
set d_yaw = 0

有时桨叶/机臂共振还需要固定 D 项陷波,但通常不需要。基于 RPM 的多重陷波滤波非常适合这些机型。

我已经在 3.5 得到完美调参,只想让它在 4.0 中飞出同样感觉

以下配置会将 4.0 滤波设置为与 3.5 相匹配。只要你在 3.5 中已有很好的调参,这些设置应让飞行表现几乎完全一致。高转速时延迟会略低,电机可能稍凉,但总体感受应相近。若你在 4.0 中难以调出好效果、且确定 3.5 的表现良好,可尝试这些设置。

不要把 3.5 的 diffdump 直接粘贴到 4.0!

偏航 I 项在 4.0 中强 2.5 倍。要精确匹配 3.5 PID,应将 3.5 的偏航 I 值除以 2.5。

set gyro_lowpass_type = PT1
set gyro_lowpass_hz = 300
set gyro_lowpass2_type = PT1
set gyro_lowpass2_hz = 100

set dyn_lpf_gyro_min_hz = 300
set dyn_lpf_gyro_max_hz = 450

set gyro_notch1_hz = 0
set gyro_notch1_cutoff = 0
set gyro_notch2_hz = 0
set gyro_notch2_cutoff = 0

set dyn_notch_range = AUTO
set dyn_notch_width_percent = 0
set dyn_notch_q = 70
set dyn_notch_min_hz = 130

set dterm_lowpass_type = PT1
set dterm_lowpass_hz = 200
set dterm_lowpass2_type = PT1
set dterm_lowpass2_hz = 100

set dyn_lpf_dterm_min_hz = 200
set dyn_lpf_dterm_max_hz = 250

set dterm_notch_hz = 0
set dterm_notch_cutoff = 0

set d_min_roll = 0
set d_min_pitch = 0
set d_min_yaw = 0

set abs_control_gain = 0
set use_integrated_yaw = OFF
set d_yaw = 0

为尽量减轻桨流扰动调校 4.0

简要建议如下:

  • 飞更顺滑的航线。
  • 转弯时保持油门。
  • 增加 D(提高 D 本身、d_mind_min_gain,或其中一部分)。
  • 减少滤波延迟。
  • 提高转向控制力/响应性。
  • 有时略微提高 P。

详细说明更复杂。

飞手快速收油并转向后再加油时,四轴飞行器会向后/向下落入自身扰流中,这就是桨流扰动。反向气流产生翼尖涡流,显著降低推力;“脏空气”具有湍流特征,飞出该区域时会拍打机体。

在 180 度反向动作中收油时,从零油门开始的电机比其余电机慢得多才能升速,导致推力建立严重不均、轴间串扰、二次 PID 反应并加剧不稳定性。因此,发生桨流扰动时应始终保持油门,尽可能避免降至零。

结果是高度非线性的电机响应,使常规 PID 控制相对失效。

解决桨流扰动的最佳方法是飞行方式。优秀飞手即使驾驶桨流扰动很严重的四轴飞行器,也能飞得很顺滑。关键要点:

  • 让螺旋桨持续在干净气流中向前运动。
  • 避免剧烈的 180 度飞行反向。
  • 始终保持一定油门。
  • 绝不要将油门收至零(翻滚、倒飞下坠等情况除外)。
  • 使用顺滑的弧线转弯。

桨流扰动时,四轴飞行器会在视频中明显可见的较低频率(例如 20-30Hz)振动;这些振动无法用滤波器消除。最能应对桨流扰动的机型通常具备:

  • 能按需求快速改变推力,即高转向控制力,来自:
    • 更高电池节数,例如 6S 优于 4S;
    • 更轻、更易加速的桨叶(不要过度配桨)。
  • 更重的中心质量(更稳定)。
  • 顶置电池(摆动惯量更低)。

从软件角度看:

  • 尽量减少滤波延迟(警告:延迟更低意味着降噪更少,电机更热)。

  • D 越多通常越好(过多 D 可能使电机发热);

    • 应提高的参数是 D_min 和/或 d_min_gain
  • P 存在既不太低也不太高的“甜点区”,需试飞确定。

  • 某些机型在极低转速下改善 PID 响应性会有帮助(thrust_linear)。

  • D_min 只会让桨流扰动更严重,而不会改善它。

    4.0 着重强化低转速滤波,以避免高清图传系统出现果冻效应并保持电机低温。相比 3.5,它在高转速下的滤波延迟更低,而在低转速下更高。

在 4.0 中,大部分时间 D 以较低的 D_min 值运行。 平稳飞行时 D_min 生效;只有主动快速打杆时,D 才升至普通 D 值。发生桨流扰动时,D 也会朝完整 D 值提升一部分,但不会升满。从桨流扰动角度看,D_min 比 D 值更关键。

尽管 4.0 默认“最大”D 值更高,该值只会在翻滚、横滚等快速输入时启用。因此,对通常发生在小摇杆输入下的桨流扰动,最重要的是 d_min

总体而言,只要保持油门,尤其高于约 1/3 至 1/2 油门,4.0 的桨流扰动通常少于 3.5。油门收至零并做反向 180 度动作的飞手,4.0 中的桨流扰动可能比 3.5 更严重;转弯时保持油门的飞手通常会获得更好的效果。

若发现 4.0 的桨流扰动比之前更多,可尝试:

  • 使用旧调参的 D 值再增加约 20%。
  • D_min 设为旧调参 D 值低 20%(拉近最小和最大 D)。
  • d_min_boost_gain 提高到约 30。

当 D 已达到可接受的程度后:

  • 尝试提高或降低 P,找到最佳 P 值。
  • 尝试加入一些 thrust_linear(5 英寸机型可用 10-20),并注意怠速时是否摆动。
  • 为减少滤波延迟,可谨慎地小幅提高滤波器最小值。

下面说明滤波。

各默认滤波器的最小值都约为 150Hz,例如:

  • dyn_lpf_gyro_min_hz:动态陀螺仪低通最小值。
  • dyn_notch_min_hz:动态陷波最小值。
  • dyn_lpf_dterm_min_hz:动态 D 项低通最小值。
  • dterm_lowpass_hz:第二个 D 项低通(非动态,但也可提高)。

若电机温度低,可尝试将以上各值都提高到约 170 后再飞。 必须缓慢、小步且谨慎地提高。典型 5 英寸机型中,250Hz 相当于中油门转速。数值越高,使用弯桨或电机轴承开始晃动时烧毁电机的风险越高。调整这些值后务必仔细检查电机温度;提高过程中,果冻效应或电机温度都可能突然恶化。

基于 RPM 的滤波延迟可能更低,值得考虑;请注意,该功能在此版本仍属实验性功能。

请牢记,桨流扰动的根本原因是飞行方式。技术因素中,最主要的是电机/桨叶建立推力带来的延迟,滤波延迟仅占问题约 10%。即使滤波延迟为零,桨流扰动仍会存在。提高 D、提高 D_min、提高滤波截止频率或关闭部分滤波器,通常会有一定改善;但到某个点后,收益会逐渐降低,烧电机、损失功率、效率和续航的风险则会增加。每台机的最优折中不同,取决于最看重的特性和机型用途。

动态低通滤波

简介

四轴飞行器的摇杆输入和所需电机响应都发生在低频范围,通常每秒少于 50 次(50Hz)。但电机产生的噪声可远高于 500Hz,甚至可能“强于”摇杆输入。陀螺仪检测到这些噪声后,PID,尤其是 D 项,会将其放大并反馈给电机。电机无法以噪声频率那样快速旋转,因此噪声导致的来回电流只会发热。滤波的目标是去除噪声,确保电机只接收无噪声的干净控制输入。

所有滤波器都会带来延迟;延迟越大,桨流扰动下越容易振荡,操控也越迟钝。

滤波的难点在于:尽可能去除截止频率以上的噪声,同时尽可能保留截止频率以下的信号,并把延迟降到最低。但所有滤波都会增加延迟,滤波越强,延迟越大。

大部分噪声来自每个电机的旋转,电机每转一圈都会使机架轻微振动。这会在电机基频(RPM * 60,单位 Hz)及其整数倍谐波处产生与转速相关的噪声。桨叶也有固有共振频率,若其与电机转速频率吻合,可能突然产生严重振荡。上述噪声都直接关联电机转速。虽然气流湍流和轴承异响也会产生少量不随转速变化的宽带随机噪声,但绝大部分噪声仍直接与 RPM 相关。

使用双向 DShot 和搭载相应代码的 BLHeli32 ESC 时,新的 Betaflight RPM 陷波滤波器 能识别每个电机的基频和谐波,并通过极窄的陷波滤波器定位相关噪声峰,几乎完全去除与电机频率相关的噪声。这样通常需要更少滤波,延迟约为“标准”滤波的 1/2 至 2/3。致谢:JoeLucid。

无法使用 RPM 滤波时,改进后的动态陷波和低通滤波也能更有效地工作,且延迟更低。

4.0 中噪声滤波的变更

相较于低油门,Betaflight 4.0 可在全油门时平滑地将低通截止频率提高。第一个陀螺仪和 D 项低通滤波器的截止频率,会随油门增加沿近似模拟电机转速的曲线动态上升。这可减少高油门时的延迟,也让动态陷波更好跟踪电机峰值。

低油门时,动态陷波现在能降得比过去更低,以帮助消除有时会在自由式四轴飞行器上造成果冻效应的电机基频振荡。新的动态低通默认值让动态陷波能在更宽频率范围内更精确地跟踪电机噪声,也能更干净地清除电机基频以上的噪声。

低转速时的延迟和桨流扰动不一定优于 3.4,但高转速时通常明显改善,整体噪声抑制也会显著增强。

启用 / 禁用动态低通滤波

动态低通的最小值和最大值独立于传统的静态陀螺仪低通 1 配置。动态低通启用时,其设置会覆盖静态低通 1 的值;静态低通 2 和静态陷波仍可照常使用。

并非所有飞控都具备支持动态低通所需的 Flash 空间;若 CLI 中没有 dyn_lpf_gyro_min_hz 等条目,则该飞控不支持此功能。

当动态最大值大于动态最小值,且动态最小值大于零时,动态低通滤波启用,静态低通 1 的值会被忽略。

例如,以下设置会忽略 gyro_lowpass_hz,并启用最小值 150、最大值 600Hz 的动态低通:

set dyn_lpf_gyro_min_hz = 150
set dyn_lpf_gyro_max_hz = 600

以下设置会禁用动态低通,恢复使用 gyro_lowpass_hz 中配置的静态低通:

set dyn_lpf_gyro_min_hz = 0
set dyn_lpf_gyro_max_hz = 600

动态低通配置为双二阶(biquad)时效果最佳。单个动态 biquad 可完成 3.5 中两个静态 PT1 的全部滤波工作。通常只需静态第二陀螺仪低通,不需要静态陷波。强烈建议在 4.0 中保持低通滤波默认值。

动态低通滤波设置

dyn_lpf_gyro_min_hz 设定动态低通不能低于的频率。它不会上移油门到截止频率的曲线,而是在 RPM 降低时为截止频率设定一个下限。

dyn_lpf_gyro_max_hz 设定低通从零油门起沿平滑曲线上升时能够达到的最高频率。理想情况下,该值应接近四轴飞行器实际最大转速对应的 Hz。典型 5 英寸机型约为 450-500Hz,即 27,000-30,000 RPM;3-4 英寸的小桨通常更高,约 600-650Hz;更大的四轴飞行器更低,约 300-350Hz。可在飞行时于 OSD 显示 RPM Debug,或记录日志并用 Blackbox 或 Plasmatree 分析确定最大频率。执行 set osd_stat_max_fft = ON 可在解锁后统计页显示最大值;但 dyn_lpf_gyro_max_hz 必须至少设为 610,否则动态陷波无法升得足够高,最大 FFT 读数会失真。

全油门时,如果动态低通升得不够高,会过度衰减电机峰值,使动态陷波 FFT 无法正确跟踪该峰,整体噪声反而更差。相反,如果低通降得不够低,FFT 可能跳到第一谐波,使很大的基频噪声通过。使用 set debug_mode = DYN_LPF 记录日志,可在 debug 0 看到驱动动态陷波的 FFT 中心频率。该数值应从低到高平滑跟踪电机频率。若 FFT 无法稳定跟踪高油门电机峰值,可略微提高 dyn_lpf_gyro_max_hz;若低油门时 FFT 跳动很大,可调整 dyn_lpf_gyro_min_hz,以更好跟踪主电机峰值。

Betaflight 4.0 默认在陀螺仪上使用单个动态 biquad 低通,而非 3.5 的两个固定 PT1,因为 biquad 的通带更干净,截止点以上的衰减更陡。它可高效衰减预期电机峰值以上的所有噪声,再由动态陷波清除。最终应得到很干净的噪声谱:电机基频、谐波和大多数常规噪声都会被去除。低 RPM 时延迟与 3.5 相近,中等 RPM 以上更低。默认值在截止频率以下会比 3.5 放行更多陀螺仪数据,因而总体响应更锐利,尤其在高 RPM 时更明显。

动态 D 项滤波

D 项采用相同的动态思路,但实现略有不同。

D 项会主动放大高频噪声,但又需要尽可能多的 D 来控制过冲和桨流扰动等非指令事件。调校良好的四轴飞行器,桨流扰动约发生在 30-80Hz;因此 100Hz 以下需要尽可能多的 D,以上则越少越好。同时,D 项延迟会显著降低其效果,所以又希望 D 项延迟越小越好。这几乎是不可能的要求。

经过大量仿真,我们发现 4.0 默认的 biquad 动态低通设置效果最佳。它用 150-250Hz 的动态 biquad 低通对 D 做较强滤波,并在 250Hz 处再加一个更高频的固定静态低通。这样能在约 40-80Hz 的桨流扰动频段最大化 D,并在其上方大幅衰减 D。这是 Betaflight 4.0 在功能上减少陀螺仪滤波却仍能保持电机低温的主要原因。第二个静态 D 滤波器不一定必须是 biquad;若机体较干净且高频 D 噪声不多,PT1 效果良好且更可取。

第一个动态 D 项低通应始终保持 biquad。

调整动态低通滤波器

对这些复杂滤波器作出合理调整并不容易。唯一实用的方法是记录设置为 set debug_mode = FFT_FREQ 的 Blackbox 日志。需要确认 FFT 跟踪是否良好,分析不同油门点的噪声量和频率成分,判断来源并决定处理方法。PID-Analyzer 和 Blackbox 频谱分析器都很有帮助。

原则上:

  • dyn_lpf_gyro_max_hz 设为以 Hz 表示的近似最大电机 RPM。
  • 实际上 dyn_lpf_gyro_min_hz 不要高于 200Hz;依据低油门电机温度上下调整。
  • 若电机偏热且轴承状况不佳,在陀螺仪上增加一个静态 PT1 滤波器。
  • 始终保留 D 项动态 biquad;只能谨慎提高最小值,否则 D 截止点过高、无法控制桨叶共振时,电机温度可能突然升高。
  • D 项第二个静态低通很有用;只有日志显示高频 D 噪声很少时才提高它。

实际建议是保持默认值;若电机温度低,可将所有滤波器大致按相同比例提高,同时让陀螺仪动态最大值始终接近最大 RPM。

致谢:ctzsnooze、iCr4sh、gvhLaw 和 skunkworks 团队。

改进的动态陷波算法

此前使用的基于 FFT 的动态陷波无法逐个跟踪电机。即便各电机转速分离、在多个略有不同的频率上产生噪声,FFT 算法也只能给出一个需要抑制的陷波频率。3.5 的动态陷波 Q 因子为 0.7(CLI 中为 70),带宽很宽,低频时会造成明显滤波延迟。

4.0 开发期间发现,相比一个较宽的单陷波,两个间隔很近的窄陷波能以更低延迟取得更好的降噪效果。

dyn_notch_width_percent 用于设定这一对陷波在中心频率两侧的百分比间距。dyn_notch_q 为 120 时,它们的带宽约为 3.5 动态陷波的一半。

对于很干净的机体,或滤波延迟至关重要的情况,将 dyn_notch_width_percent 设为 0 会只运行一个窄陷波。电机温度可能更高,但滤波延迟以及可能的桨流扰动会更少。普通四轴飞行器不建议这样做;对于使用干净桨叶、飞行顺滑的高性能机型则可能有帮助。另一种选择是缩窄百分比宽度并提高 Q 因子。例如宽度设为 4%、Q 设为 200,会得到延迟明显更低的极窄陷波。

反之,若机体激烈飞行、电机转速分散且噪声较大,可提高宽度百分比并降低 Q 因子。改动应保持比例,例如宽度提高 50%,Q 因子也应降低 50%,以避免两个陷波之间出现很大的“中间空档”。

动态陷波可在 LOWMEDIUMHIGH 三个频率范围中工作。AUTO 会根据 dyn_lpf_gyro_max_hz 选择范围:

  • dyn_lpf_gyro_max_hz 为零(禁用)或低于 334Hz 时,选择 LOW
  • dyn_lpf_gyro_max_hz 为 334-610Hz 时,选择 MEDIUM
  • dyn_lpf_gyro_max_hz 高于 610Hz 时,选择 HIGH

这些模式的近似实际频率范围如下:

  • LOW:80-330Hz(适合低转速机型,或存在低频共振时)。
  • MEDIUM:140-550Hz(很适合 5 英寸四轴飞行器)。
  • HIGH:230-800Hz(适合高转速的 2.5-3 英寸四轴飞行器)。

此外,4.0 还提供 dyn_notch_min_hz;无论选用哪一范围,动态陷波都不能低于该值,默认值为 150Hz。若要处理 100Hz 共振峰,必须启用 LOW 范围并将 dyn_notch_min_hz 设到 100Hz 以下,例如 80Hz。这可帮助避免某些机型出现果冻效应。动态陷波不太可能成功处理远低于 80Hz 的共振,通常需要固定陷波。

未使用 RPM 滤波时,dyn_lpf_gyro_max_hz 应设为以 Hz 表示的最大电机转速;若模式保留为 AUTO,系统会自动选择适当范围。用户也可手动选择范围覆盖自动选择。该范围必须高到涵盖最大电机 RPM 频率。默认值适合多数小型四轴飞行器。

RPM 滤波启用后,动态陷波和动态低通不必再跟踪、去除电机噪声。RPM 陷波去除电机噪声后,通常只需一个固定 250Hz PT1 陀螺仪低通,清除少量残余高频噪声。要禁用第一个陀螺仪低通,gyro_lowpass_hzdyn_lpf_gyro_max_hz 都必须为零。如前所述,如果动态低通模式为 AUTOdyn_lpf_gyro_max_hz 为零,动态陷波会自动强制进入 LOW 模式。若动态陷波的范围需高于 LOW 模式上限 330Hz,必须手动选用 MEDIUMHIGH

通常在 RPM 模式下,RPM 滤波器能非常有效地消除电机噪声,动态滤波器便能处理使用一段时间的四轴飞行器上并不少见的机架共振。

非常干净的机体往往没有显著共振噪声峰,不需要也不会受益于启用动态陷波。关闭动态陷波可节省 CPU 使用量并降低总滤波延迟。

要判断是否存在共振噪声峰,唯一方法是关闭动态陷波,以 set debug_mode = gyro_scaled 记录 Blackbox 日志,再使用 PID Toolbox 或等效工具进行频谱分析;这样才能清楚看到输入陀螺仪噪声和共振。

若存在共振峰,希望用动态陷波处理它,同时防止滤波器降得过低而增加延迟,应选择能包含该共振峰的最高范围,并将 dyn_notch_min_hz 设为比该峰低约 10%。例如:

  • 单个 300Hz 共振峰:使用 LOW 范围,dyn_notch_min_hz 设为 270Hz。
  • 单个 400Hz 共振峰:使用 MEDIUM 范围,dyn_notch_min_hz 设为 370Hz。
  • 单个 100Hz 低频共振峰:使用 LOW 范围,dyn_notch_min_hz 设为 80Hz。

若共振峰很窄,使用较高 Q 值(120-200)且宽度为 0,可将延迟降至最低。

动态陷波跟踪到很低频时,相关延迟会很明显,尤其 Q 很宽时。对于频率很低且很固定的共振,有时单个固定陷波是更好的方案;处理约 70Hz 以下的共振峰时,这也是唯一办法。

3.4 的动态陷波是一个 Q=0.7 的单陷波,在约 220-300Hz 的相对频带内移动。需要时可将 4.0 设为类似配置,但效果不如默认设置。

动态陷波最好借助日志调校。

致谢:iCr4sh、ctzsnooze 和 skunkworks 团队。

仅 D 项 TPA

油门 PID 衰减(TPA)已存在很久。它从阈值油门开始线性衰减 PID,在全油门达到设定的衰减百分比。最初用途是降低高强度调参四轴飞行器在全油门时的摆动。I 项大约在 2.9 从 TPA 中移除,此后 TPA 同时作用于 P 和 D。3.5 将 D 分为 D 和 FF 后,人们开始思考 TPA 应如何影响这些单独项。我们发现高油门时 D 项引发的噪声往往严重得多,而且略出乎意料的是,全油门削减 D 达 70-80% 也不会造成 P 项摆动。TPA 只作用于 D、不随油门衰减 P 或 FF,可保持高油门摇杆响应,并显著降低全油门噪声和电机温度。

因此,4.0 默认将 TPA 配置为仅作用于 D。当前建议设置为:

set tpa_rate = 75
set tpa_breakpoint = 1400
set tpa_mode = D

要恢复 3.5 及更早版本的传统 P、D 共同衰减,请向 CLI 粘贴:

set tpa_rate = 10
set tpa_breakpoint = 1650
set tpa_mode = PD

通常,自由式四轴飞行器使用较少的“D 项 TPA”,竞速机型可从 1400 开始使用 75%。

致谢:ctzsnooze、skunkworks 团队和 eTracer。

改进的设定点模式 iterm_relax

iterm_relax 会在非常快速的动作中限制 I 项增长速率,以减少快速输入后的 I 项回弹或过冲。现在俯仰和横滚使用较高 I 值来增强大风天的稳定性,因此正确设置 iterm_relax 比以往更重要。

iterm_relax_cutoff 决定 I 项放松开始及回退的速度。竞速需要快速、灵敏地累积 I,并快速释放,使 I 能在很紧的弯中保持强度但又快速回退。这样四轴飞行器能在紧凑高速的螺旋弯或蛇形弯中保持设定半径。应使用较高截止频率,例如 30-40Hz;较高频率适合响应更快的机型和有许多持续转弯的赛道。高截止值设定点模式的代价是,翻滚和横滚时可能出现 I 项过冲,但竞速中通常不成问题。

更偏向自由式/LOS 的 GYRO 类型 iterm_relax 没有变更。它介入稍晚、持续更久,比设定点模式更好地控制大幅翻滚和横滚后的回弹。陀螺仪模式下,iterm_relax_cutoff 应依据机型控制力设置:较强的 5 英寸自由式机型用 20Hz,6 英寸或控制力较低机型用 10Hz,较大桨和较重机型用 5Hz。截止频率过低的陀螺仪模式不适合竞速或绕旗门做很紧的螺旋弯,因为机体处理紧弯时会略显不可预测。

致谢:ctzsnooze。

瞬态油门限制

Air Mode 启用时,若任一电机轨迹将超出 0% 或 100%,它会自动调节油门以维持电机差速。例如,飞控需 40% 电机差速才能转弯,但低油门下会使一台电机低于零 10%,Air Mode 会提高油门 10%,从而保持正常响应性。

Air Mode 在低油门和高油门下都能很好地实现这一目标。但如果任一电机轨迹上叠加的噪声尖峰足以使该电机超过 100%,Air Mode 会截去这些噪声峰,并将被截断的尖峰倒置“反射”到其他三台电机。这会在其他电机信号上造成陡峭的向下尖峰,并对“超限”电机信号造成严重数字削顶,增加噪声的频率成分和总量。这正是全油门时最不希望出现的情况。

该问题会出现在油门范围两端:全油门时导致电机过热,解锁时则会带来严重摩擦噪声或不稳定。

系统可测量电机信号中的噪声量,并依据噪声幅度动态施加额外油门抬升(或削减),且只提供阻止反射噪声所需的量。

唯一的 CLI 调整项是 transient_throttle_limit,用于设置允许的最大油门提升或削减百分比。15% 已相当宽裕,多数四轴飞行器很少需要这么多。正常情况下设得这么高据悉没有缺点;但当使用弯桨返航时,它可能有助于避免烧毁电机。

致谢:JoeLucid。

改进的偏航 PID

备注

以下说明仅适用于非积分式偏航配置。若使用积分式偏航,调参流程完全不同!

偏航主要由电机的加速度驱动,尤其在低 RPM 时。电机加速时,反作用力施加到机架上,产生即时、无延迟的偏航加速度。RPM 变化率越高,电机和桨叶越重,加速度带来的偏航驱动力越大;该加速度会随电机/机臂惯性质量和机臂长度平方线性减小。电机加速度变化近乎瞬时,因此由它驱动的偏航角速度变化也可以很快。

在较高 RPM 下,一个简单的、与 RPM 相关的空气阻力偏航因素开始起作用,并使偏航维持稳定角速度。

这与俯仰和横滚截然不同:两者的推力基本与 RPM 线性相关,而 RPM 变化需要时间,所以总有一定延迟。标准 PID 控制器假设 RPM 与推力线性相关,偏航显然不满足该假设。

因此,用经典 PID 将偏航调至最佳性能,与俯仰和横滚的调法很不一样。这也是 JoeLucid 开发实验性积分式偏航概念的原因,其目的是允许用更传统的方法调偏航。

用经典 PID 调偏航时,请牢记:

  • D 必须始终为零。非零 D 没有帮助且会导致振荡。

  • 偏航不应启用 iterm_relax;应为 set iterm_relax = RP

  • P 可快速改变电机信号,但很少过冲。它快速响应摇杆输入,也会快速应对过冲、风切变和碰撞等。偏航 P 的主要问题是容易在偏航轴产生噪声,且 P 引发的偏航振荡很常见,这两点都限制了可用 P 的大小。标准四轴飞行器通常不宜将偏航 P 设到 35 以上。

  • FF 的作用很像 P:为摇杆输入增加驱动力,但仅此而已。它不会给电机轨迹增加噪声,也不会让四轴飞行器抵抗非指令输入。增加 FF 可减少偏航起转时对 P、I 的依赖。FF 过高会在峰值输入速率下快速过冲,并在摇杆停止瞬间突然欠冲;这正是 3.5 偏航日志的典型表现。

  • PID 中输入的 I 值只改变 I 的累积速度,不改变 PID 轨迹中最终 I 的量;最终量只取决于要修正的持续误差。实践发现偏航最佳 I 量非常高。因此 Betaflight 4.0 在内部将偏航 I 乘以 2.5:偏航 I 设为 100 时,内部得到 250。这显著改善偏航性能,因为所需 FF 更少,过冲也更少。

    4.0 的偏航默认值,FF 为零,对大多数典型偏航动作表现极佳:从设定值到响应平滑、无噪声且准确。

更高角速度的偏航自旋可能需要额外调参。

若 P、I 的量不足以在动作中达到目标偏航速率,持续误差会累积出很大的 I 信号,导致部分过冲。若电机尚未打满,进一步提高 I、增加 FF,有助于更紧密跟踪偏航输入,减少动作中的误差,从而减少 I 项过冲。若快速偏航变化时电机已打满,最佳方案是降低目标峰值偏航速率,或更温和地达到该速率。替代方案是为偏航启用 iterm_relax,以阻止大部分 I 累积,并用大量 FF 推动偏航动作;不过这通常无法为低速偏航动作提供同样好的控制。

附加章节:OpenTx ADC 滤波器说明

OpenTx 有一种专门的摇杆输入滤波方式,即 ADC 滤波器;它只传输超过一定幅度的变化。摇杆缓慢移动时,直到位移足以发送新值之前,它会在不定时段内不发送数据,目的在于减少抖动。遗憾的是,只要没有数据发送,FF 就会瞬间降为零,结果是在小输入期间出现阶梯状 FF 轨迹,精细控制也会下降。禁用 ADC 滤波会强制遥控器在每个数据包传输当前数据,无论变化多小。这会传输一些抖动,但能改善精细控制,并大幅清理 FF 轨迹。霍尔摇杆的抖动很小,可放心关闭 ADC;电位器摇杆可能也没问题,但老旧摇杆通常会有较多抖动。

若使用带霍尔摇杆的 FrSky 遥控器:

  • 在遥控器配置菜单的硬件选项卡中,取消选中 ADC filter注意: 特别版遥控器的固件通常已默认关闭 ADC 滤波。
  • 在 Betaflight App 的 Receiver 选项卡,将 RC DeadbandYaw Deadband 设为 0。这样越过死区时的四轴飞行器控制会保持顺滑。

附加章节:滤波入门

BF4.0 的滤波器已相当复杂,经验较少的用户很难区分所有可用选项。以下总结可用滤波器及其配置位置,包括新的动态 RPM 陷波滤波器:

  • Betaflight App(BFC)GUI 中的 DYNAMIC_FILTER 功能用于开关动态陷波(NOTCH);数值通过 CLI dyn_notch... 命令配置,尚无对应的 BFC GUI 字段可编辑数值。
  • 动态低通(LOWPASS)不需要额外功能开关;可在最后一张截图的字段中输入数值,或通过 CLI dyn_lpf... 命令配置以启用。
  • RPM 滤波器(含 36 组滤波器)完全独立于动态陷波和动态低通,通过 CLI rpm_notch... 命令配置,尚无对应的 BFC GUI 编辑字段。
  • 静态 GLPF、DLPF,以及静态陀螺仪和 D 项陷波:通过 BFC GUI 的编辑字段,或 CLI dterm_lowpass/notch...gyro_lowpass/notch... 命令配置。

注意:陀螺仪或 D 项的 Lowpass1 可为动态或静态,Lowpass2 始终为静态(BFC GUI 中也如此显示)。


感谢所有贡献精彩创意的人员、测试者和程序员,是你们让此版本如此出色!