跳到主要内容

Betaflight 3.4 调校说明

3.4 新功能和默认值说明

我只想飞,不想读完这些内容……

没问题。刷写固件后,先按默认参数做一次简短试飞。8k 和 32k 陀螺仪模式均应能使用默认参数飞行;不过 32k 模式可能需要更多滤波,因此首次飞行后务必检查电机温度。

请注意,3.4 对滤波进行了重大调整,并加入多项可显著提升飞行性能上限的新功能。不要期待它的飞行表现与早期版本完全相同。

如果电机温度正常、整体操控也没有问题,以下设置或许还能进一步改善飞行表现。

若电机温度高于预期,请参阅下方的滤波章节;否则,默认参数很可能已适合你的四轴飞行器。

如需获得最佳飞行性能,建议在 CLI 中粘贴以下命令以启用 iterm_relax

set iterm_relax = RP

这会为俯仰和横滚启用 iTerm Relax(积分项松弛)。它可显著减少翻滚或横滚结束后的 I 项回弹,并允许使用比以往更高的 I 值。通常可将 I 值提高 50% 甚至更多,从而在乱流中飞行或高速接近赛门时获得更好的航向稳定性。

还建议在全部轴向使用新的基于滤波器的 rc_smoothing

set rc_smoothing_type = FILTER
set rc_interp = AUTO
set rc_interp_ch = RPYT

它会消除快速打杆时产生的尖峰和陡峭边缘。在频繁快速打杆时,它应让电机运转声更平顺、温度更低,同时比旧的插值方法(仍可作为替代方案)带来更小的响应延迟。

如果启用了 iterm_relaxthrottle_boost,或使用了大于零的 D 设定点权重,则应按上述设置为相应轴向启用 RC 平滑。

备注

SBus 或 FPort 用户应阅读本文档,以获得良好效果。

备注

使用特定遥控器(DX6i、DXe、DX6e)的 Spektrum 用户应阅读本文档,以正确配置 RC 平滑滤波器。

需要注意的是,RC 平滑会平滑 D 权重或油门输入产生的尖锐尖峰。虽然这会改善效率、电机温度和电机控制信号的平顺性,但在极快打杆时,失去这些尖峰会略微削弱 D 权重、P 和油门增益的作用。启用 RC 平滑后,若感觉快速打杆的响应略有减弱,可考虑将 D 权重、油门增益以及必要时的 P 值提高最多约 20%。通常无需这样做。

默认值没问题,但我想调整一些设置,需要了解什么?

新的默认 D 权重值为 0.6,约等于 3.4 以前版本的 0.8。D 权重越大,摇杆响应越直接,尤其是在快速打杆时。若在与之前相同的速率设置下,默认的 0.6 响应不够直接,可尝试提高该值。值为 1.0 时,已足以克服 D 项本身正常的阻尼效应,否则该效应会减慢对摇杆输入的响应;此时四轴飞行器会从 D 计算的测量模式切换到误差模式。高于 1.0 的值会带来额外的“前馈”效果。较高的 D 权重可能会显得过于灵敏,但可在保持总体响应不变的前提下降低 P 值。

新的默认 D 设定点过渡值为零。如果你之前使用 1.0 或 0.5,以便在自由式飞行中获得平顺的中位手感,而现在发现中位附近过于灵敏,请恢复原来的设置。默认值 0 无论摇杆位置如何都提供相同的摇杆响应,建议用于竞速;0.5 很适合自由式飞行。不建议使用大于零但小于 0.1 的值,因为摇杆平稳经过中位时可能出现异常跳变。

如果你的 PID 参数高于当前默认值,且四轴飞行器感觉比以前稍欠灵敏,请尝试使用更接近旧设置的 P、D 和 D 权重值,并可考虑在旧默认值基础上再提高 20%。

可以在 F3 飞控上启用这些新功能吗?

从 3.4.0 正式版开始,F3 飞控默认即可使用大多数选项。受闪存容量限制,部分 F3 飞控可能无法使用 iterm_relax 等功能。

若自定义编译时移除了部分 Rx 协议或 Acro-Trainer,闪存大于 128k 的 F3 可运行全部新功能。例如,MOTOLAB F3 可在 30% CPU 占用下运行 4k4k、双滤波器、油门增益、iTerm Relax 和基于滤波器的 RC 平滑,且飞行表现很好。

将新功能启用于 F3、并以此替代 Acro-Trainer 的 3.4 二进制文件可在此处获取: https://github.com/joelucid/betaflight/releases/tag/3.4a

新的双滤波器怎么样?

3.4 为陀螺仪滤波和 D 项滤波均提供了双低通滤波器功能。默认情况下,四个低通滤波器同时启用,动态陷波滤波器启用,其他陷波滤波器不启用。通常,这比以往的滤波延迟更低,同时具有更好的滤波效果。

两个陀螺仪滤波器会在陀螺仪信号进入 PID 环之前清理噪声,随后从已滤波的数据中计算 P、I 和 D。两个 D 项滤波器则仅作用于 D 项信号。

要确定 P 和 D 噪声对整体电机噪声的相对影响,可分析 PID_P 的 Blackbox 频谱,并与 PID_D 的频谱比较。通常 D 噪声会多于 P 噪声,因此一般需要比 P 项更重地滤波 D 项。

滤波越多,传至电机的噪声越少,电机运转声越平顺、温度也越低。若滤波过多,PID 计算会延迟,飞行性能将受影响;若滤波不足,电机可能会发热,尤其是在螺旋桨变形、电机轴承磨损等情况下。

双 PT1 滤波器允许针对四轴飞行器的噪声水平精细调整滤波量。

以下是可直接粘贴到 CLI 的典型滤波设置示例。

机架非常坚固、电机全新,且始终使用干净、平衡良好的轻量螺旋桨的优质四轴飞行器:

set gyro_lowpass_type = PT1
set gyro_lowpass_hz = 150
set gyro_lowpass2_type = PT1
set gyro_lowpass2_hz = 400
set dterm_lowpass_hz = 100
set dterm_lowpass2_hz = 250

典型的 5 英寸四轴飞行器,电机和螺旋桨并非全新但状态普通,且可接受使用轻微变形的螺旋桨: (若使用 MPU6000 陀螺仪,可将 gyro_lowpass2 设为 0 以获得最佳性能,但应通过日志记录和电机温度确认这样是否可行。)

set gyro_lowpass_type = PT1
set gyro_lowpass_hz = 120
set gyro_lowpass2_type = PT1
set gyro_lowpass2_hz = 300
set dterm_lowpass_hz = 100
set dterm_lowpass2_hz = 250

机架状况良好、但需要容忍变形螺旋桨的典型四轴飞行器:

set gyro_lowpass_type = PT1
set gyro_lowpass_hz = 120
set gyro_lowpass2_type = PT1
set gyro_lowpass2_hz = 300
set dterm_lowpass_hz = 80
set dterm_lowpass2_hz = 160

机架较松散、状态磨损且经常使用变形螺旋桨飞行的四轴飞行器:

set gyro_lowpass_type = PT1
set gyro_lowpass_hz = 90
set gyro_lowpass2_type = PT1
set gyro_lowpass2_hz = 180
set dterm_lowpass_hz = 70
set dterm_lowpass2_hz = 140

滤波器数值越高,即滤波越轻,在四轴飞行器状态良好的前提下,飞行表现通常越好。

PID 参数方面,默认值可以吗?

我们认为默认值对多数四轴飞行器已经相当不错,许多用户反馈飞行效果很好。

如果你主要进行竞速,四轴飞行器不携带 GoPro,且机体轻盈、响应迅速,可以尝试以下设置:

set rc_smoothing_type = FILTER

set setpoint_relax_ratio = 0
set dterm_setpoint_weight = 120

set iterm_rotation = ON

set iterm_relax = RP
set iterm_relax_type = SETPOINT
set iterm_relax_cutoff = 12

set throttle_boost = 2
set throttle_boost_cutoff = 15

set p_pitch = 32
set i_pitch = 65
set d_pitch = 23
set p_roll = 30
set i_roll = 60
set d_roll = 21
set p_yaw = 65
set i_yaw = 60
set d_yaw = 20

set tpa_rate = 15
set tpa_breakpoint = 1050

如果你主要进行自由式飞行,且四轴飞行器稍重,可尝试以下设置:

set rc_smoothing_type = FILTER

set setpoint_relax_ratio = 50
set dterm_setpoint_weight = 80

set iterm_rotation = ON

set iterm_relax = RP
set iterm_relax_type = GYRO
set iterm_relax_cutoff = 10

set throttle_boost = 8
set throttle_boost_cutoff = 15

set p_pitch = 58
set i_pitch = 65
set d_pitch = 35
set p_roll = 50
set i_roll = 60
set d_roll = 30
set p_yaw = 65
set i_yaw = 60
set d_yaw = 20

set tpa_rate = 20
set tpa_breakpoint = 1050

如要试用 Absolute Control,请使用以下设置:

set iterm_rotation = OFF
set abs_control_gain = 10

较小的机型可使用 abs_control_gain = 5

*有关 Absolute Control 的更多信息,请参阅页面末尾。

我的四轴飞行器不如以前灵敏!

如果已启用 rc_smoothing 且其设置为插值模式,请尝试 set rc_smoothing_type = FILTER

可考虑将 P、I、D 提高至比先前值高约 20%。

如果该四轴飞行器不需要太多滤波,请尝试上方“优质四轴飞行器”的滤波设置。

若仍无法解决,恢复旧版固件也是一种选择。不过到那时你可能会发现,它的手感并没有记忆中那么好。

应该始终启用动态陷波滤波器吗?

大概应该。它确实会增加延迟,但在螺旋桨变形时非常有帮助。对于以性能为首要目标、状态极佳的配置,可尝试关闭它。必要时应准备一个 D 项重度滤波的配置文件以便返航,否则电机可能严重过热。

还需要固定陷波滤波器吗?

简短回答:不需要。它们会造成较大延迟,双 PT1 滤波器通常已经足够。

完整回答:如果尽管启用了动态陷波,日志频谱仍显示明显的噪声峰,固定陷波滤波器可能有用。此类问题峰值通常会出现在柔性机架的螺旋桨共振频率处。唯一可靠的判断方法是获取 Blackbox 日志,并使用 PID-Analyzer 或 Blackbox Explorer 做频谱分析。可使用音频频谱分析仪“拨动”螺旋桨以确定其共振频率;有时只需在该频率设置 D 项陷波即可。

需要修改 Airmode 设置吗?

没有任何变化。不过,四轴飞行器正变得越来越强劲。

若想确保 Airmode 在起飞时可靠启用,可将启动百分比设为接近悬停油门的值。例如,悬停油门为 20% 的四轴飞行器:

set airmode_start_throttle_percent = 20

如果你是竞速飞手,需要在起飞台上保持机体角度,可将 Airmode 启动百分比设在略低于悬停点的值;在上述例子中,10-15 会在不足以让四轴飞行器起飞的油门位置启动 Airmode。

部分新功能说明

基于滤波器的 RC 平滑

借助 eTracer 的工作,3.4 引入了 RC 平滑;与插值方法相比,其延迟更低、抖动更小,并可根据 RC 指令间隔自动调整滤波器设定值。

要启用滤波器方法,请在 CLI 中粘贴并保存 set rc_smoothing_type = FILTER

随后会对传入的 RC 数据应用双二阶(biquad)滤波器,在默认频率下钝化尖锐的方形边角。油门、P 和 D 权重中的陡阶跃会被衰减。由于 D 设定点权重会在每次 RC 输入时引入更大的尖峰,因此还会有第二个滤波器专门作用于 D 设定点权重。

最终会得到更平滑的电机轨迹。每个传入的 RC 阶跃仍会立即使 PIDsum 和电机输出上升,但不再形成尖锐的峰值,可减少电机热量累积、提高效率,并让快速打杆时的电机声更平顺。尖峰还可能触发 iterm_windup 保护;该功能可避免此问题。

set rc_smoothing_input_hz = 0 时,代码会依据初始 RC 间隔计算 RC 指令的理想低通值。set rc_smoothing_derivative_hz = 0 同理,它会自动设置作用于 D 权重的第二个低通值。对于 9ms SBus,自动值为 50Hz。实际数值会写入 Blackbox 日志头。

如果使用很高的 D 权重,适当降低导数平滑频率可能有助于平滑原本会出现的一些大尖峰。

有人担心对 RC 输入进行低通滤波会造成延迟。这确实存在,但完全不滤波时,电机轨迹会充满每个 RC 输入阶跃产生的尖峰。当前基于滤波器的平滑代码只会削去这些尖峰的尖端,不会延迟阶跃的主体,也几乎不会延迟 D 权重的主要作用;电机轨迹中的阶跃仍在完全相同的时刻出现,只是更平滑、更圆润。

iTerm Relax

JoeLucid 开发的新 iTerm Relax 功能会在快速打杆时切断或降低 I 项累积。它可仅用于俯仰和横滚,也可用于俯仰、横滚和偏航。

该功能有两种工作模式:设定点和陀螺仪。陀螺仪模式对抑制 iTerm 更彻底、更严格;设定点模式则更平顺,翻滚后的落位会稍软一些。

设定点模式会对 RC 输入应用高通滤波,摇杆移动越快,结果值越高。当变化率为零(即摇杆不动)时,iTerm 正常累积。随着摇杆运动接近阈值,累积会线性衰减;超过阈值时,iTerm 完全不累积。

陀螺仪模式也会使用基于摇杆运动变化率的高通滤波,并在陀螺仪值两侧建立一个四轴飞行器应当跟踪的窗口。位于窗口内时,iTerm 不会累积。摇杆保持不动后,该窗口会收缩至零,iTerm 随即恢复正常累积。

陀螺仪模式会根据四轴飞行器对预期轨迹的跟随程度确定 iTerm 的抑制量,因此当实现摇杆要求的设定点变化所需时,它可调整 iTerm。这有助于不平衡四轴飞行器的跟踪,也有助于在动作中改变油门时的跟踪。

两种模式都可以调整滤波器时间常数以微调响应,但通常无需调整。有时快速多圈翻转或其他快速输入后,摇杆停止时仍可能有部分 I 项累积并保持过久,造成转向速率较晚才稳定。通常,提高频率可减轻该问题。

在 P 和 D 已良好调校的四轴飞行器上,此功能十分有用,并能完全消除由 I 项导致的回弹。

油门增益

该功能同样由 JoeLucid 开发,用于改善快速油门输入的响应。代码会对 RC 油门信号进行高通滤波,以产生额外的油门“脉冲”;它本质上是油门的前馈系数。油门摇杆移动越快,增益效果越大。结果是无论加油门还是收油门,快速油门输入都会感觉更迅捷、更灵敏。它特别适合油门响应较弱的四轴飞行器,也可使 3S 的感觉更接近 4S,或使 4S 的感觉更接近 5S。

每次“脉冲”的幅度由 RC 阶跃大小乘以 throttle_boost 数值决定,持续时间则由 throttle_boost_cutoff 值设定。

默认 throttle_boost_cutoff 值为 15Hz,即时间常数为 10ms。无论油门是否启用 RC 平滑,该值都适合 9ms SBus 遥控设置。它会让约 40% 的残余“脉冲”带入下一次阶跃:摇杆持续快速移动时会逐渐累积,否则会消散;该脉冲的形状略为圆滑。

若油门启用了 RC 平滑,可提高截止频率以减少可累积的残余量,让 RC 平滑处理原本会出现的尖峰。例如,50Hz 时数值 25 的效果大致等同于 15Hz 时数值 5,但更不易过冲。

throttle_boost 为 0 时,该功能关闭。

在默认 throttle_boost_cutoff 为 15 的情况下,throttle_boost = 5 足以克服油门上的绝大部分乃至全部 RC 平滑延迟(前提是油门确实应用了 RC 平滑)。油门应比未平滑的油门输入略显灵敏,声音也更平顺。在 15Hz 下将增益提高到 5 以上,会在油门上形成前馈。对于过度使用高桨距螺旋桨、导致电机迟滞严重的低推力电机,可使用 10 或更高的值来克服过大电机延迟。过多的油门增益可能导致类似过冲的现象,并使大幅输入过于灵敏。可选择更高的油门增益截止频率(例如 50Hz)并相应提高数值(例如 25)来减弱此问题;此时油门 RC 平滑变得至关重要,因为较高截止频率会产生持续时间更短、更尖锐且较不易累积的尖峰。

保留默认值 15 通常是不错的选择。若需要调整灵敏度,最好修改 throttle_boost 数值。

iTerm Rotation

这同样由 JoeLucid 开发,默认启用,深受 LOS 特技飞手欢迎,尤其适合在横滚时持续偏航,以及执行漏斗等动作。四轴飞行器绕其他轴旋转时,代码会正确旋转当前 iTerm 向量。对 FPV 而言,该效果相当细微,但在突发打杆和做动作时可带来更可预测的响应。没有可调参数,只能开启或关闭。

Smart Feed Forward

这项同样由 JoeLucid 开发的实验性代码改变了 D 权重的工作方式,默认未启用。

通常,D 设定点权重是一种前馈量,RC 摇杆移动越快,它越大。D 权重越大,俯仰和横滚的摇杆灵敏度越高。

在经典的 Betaflight PID 系统中,D 设定点权重会协助 P 项启动转向。通常 D 设定点权重比 P 项上升更快、出现更早。增加 D 设定点权重并适当降低 P,可在不损失摇杆灵敏度的前提下减少 PID 过冲。

Smart Feed Forward 会改变 D 设定点权重的行为:仅当其大于 P 项且方向相同时,完全由它取代 P 项。要使其生效,D 设定点值必须设得显著高于平常,可达 2.0 或更高。这样转向初段很大一部分会由 D 权重强力驱动,P 项无需承担太多工作。在某些设置下,这可略微减少过冲。

Absolute Control

这也是 JoeLucid 开发的实验性代码。其目的是处理与 iterm_rotation 相同的姿态问题,但避免后者的一些缺点。

Absolute Control 会持续测量四轴飞行器轨迹相对于摇杆输入的误差,将该误差正确旋转至四轴飞行器坐标系,再把与误差成比例的修正混入设定点。这就像你能察觉四轴飞行器产生的每个微小姿态误差,并立即在发射机上进行修正。

结果是对摇杆的跟随显著更好,尤其是在包含偏航的旋转动作及油门点动等困难情形下。

Absolute Control 最终可能取代 iterm_rotation,但目前默认尚未启用。不要同时启用 abs_controliterm_rotation

启用命令:set abs_control_gain = 10。较小的四轴飞行器使用 5 即可。

Absolute Control 需要与 iTerm Relax 配合使用,以避免摇杆运动与四轴飞行器响应之间的延迟导致回弹。这样,iTerm Relax 也会在快速动作时暂停 Absolute Control 的误差累积。最后,Absolute Control 仅会在超过 Airmode 启用所需的最小油门后介入,以避免在地面产生不必要的修正。