跳到主要内容

Betaflight 4.3 调参说明

简介

本文系统介绍 Betaflight 4.3 的调参与相关更新。

请先阅读以下重要说明:

  1. 升级至 Betaflight 4.3 后,必须使用最新的 10.8 Betaflight Configurator。 较早的 10.8 版本和 10.7 版本 Configurator 无法正确配合 4.3 工作。

  2. F4 处理器应使用 4 kHz PID 环路。F411 应使用 DShot300 而非 DShot600,并且不支持 8 kHz PID 环路。大多数 F411 可超频至 120 MHz,但部分芯片只能稳定运行在 108 MHz。

  3. 4.3 提供新的滑块调参方式和预设。由于参数已有变化,不要粘贴旧版本的 CLI diffdump。合适的预设通常即可取得良好效果;滑块则可简化后续微调。

  4. 希望以数值直接调节 PID 或滤波器的有经验用户,必须先关闭滑块。此操作最适合在 Configurator 中完成。

  5. **首次解锁前请仔细检查全部设置。**核对 PID、滤波器、Rates、电机配置和电机转向。首次试飞请选择安全场地、温和操控,并留意装配或配置异常。

  6. 为获得最佳性能,建议启用基于 RPM 的滤波。请阅读RPM 滤波的启用与配置说明

  7. **使用 250 Hz 或 500 Hz 遥控链路时,必须选择相应预设。**500 Hz 链路必须将 feedforward_smoothing 设为 65-70,并使用 2 点平均;250 Hz 链路应设为 35-40,并使用 2 点平均。

  8. CPU 使用率的显示数值现比过去高很多。这是统计方式变更所致,约达到 75% 前通常无需担忧。

Betaflight 4.3 功能

更顺畅、更精准的飞行体验和更好的桨流表现,并且更易于配置和调参,以释放 Betaflight 4 的完整潜力。

4.3 是一次重要的演进,凝聚了志愿开发和测试团队数千小时的开发与验证工作。致谢名单见文末。

  • 新的 PID 调参滑块 - 无论是微调现有参数还是从零开始配置,Configurator 现提供更简洁、功能更完整、由固件驱动的调参滑块,且默认启用。滑块位置会保存到四轴飞行器,可通过 OSD 或 Lua 修改。新增的专家滑块可微调俯仰与横滚平衡、DMax:Dmin 比例以及 I 相对 P 的比例。

  • 预设 - 全新的完整预设系统。无论是 whoop、小型 twig、5 英寸竞速机、自由式机、X-class,还是遥控链路与 VTX 配置,现在都可方便地应用适合四轴飞行器的预设。用户可选择 Betaflight“官方”预设和“社区”预设,两者均经 Betaflight 开发者审查。也支持外部预设仓库,但 Betaflight 无法控制其内容,使用时务必谨慎。

  • 更少的陀螺仪滤波和更高的 P、D,带来更好的开箱即用表现。

  • D 项的配置方式已改变。现使用 Derivative 和 D_Max。Derivative 决定平顺飞行时的 D 值;快速转向时 D 会升至 Dmax,以提供更强阻尼;直线飞行时则回落至 Derivative,降低 D 项噪声和电机发热。两个值之间的差距已缩小,而 Derivative 显著提高。与 4.2 不同,通常无需提高 D 滑块,除非想为干净的 HD 或电影机架获得更强的直线稳定性。

    • 更准确的环路时间 - 调度器和 DMA 代码大幅改进;支持的板卡还可使用 EXTI 触发的 SPI 陀螺仪读取,从而获得极稳定的环路时间、更平顺的滤波、更快的日志记录和更高的 CPU 效率。注意:4.3 的 CPU 负载显示值高于 4.2,仅因计算方式改为报告处理器运行任务时的忙碌时间百分比,而非基于负载平均值的数值。
  • 多动态陷波 - 我们有一个完全重写、大大改进、基于 SDFT 的多动态陷波。可以同时跟踪多个谐振峰,比以前更准确、更快速,且延迟成本低。这允许较低的整体低通滤波和更好的性能。

  • 上述两项变化显著改善了输入的陀螺仪噪声,因此默认陀螺仪滤波截止频率可设得更高。结合更高的 D,可改善桨流。许多四轴飞行器现可将陀螺仪滤波滑块推至最右端。

  • 基于 PT3 的 RC 平滑 - RC 平滑已完全修订,现在完全基于滤波器,使用优化的 PT3(三阶)平滑。 RC 平滑现在应用了理想的滤波器形状,没有超调且响应非常平滑。自动平滑值提供从低延迟到卓越的电影般的平滑度。

  • RPM 交叉淡化 - 现在可在低 RPM 时平滑地完全禁用重叠的 RPM 滤波陷波,大幅减少低油门滤波延迟。电机声音会立即不同,低油门桨流也会减轻。

  • PT2 和 PT3 低通滤波选项 - 由于延迟、过冲和谐振问题,旧的双二阶低通滤波器选项在陀螺仪上不再可用。以前的陀螺仪双二阶低通用户应该更改为 PT2,但更有可能会发现,在 4.3 中,单或双一阶滤波对于陀螺仪来说是最佳的。双二阶滤波仍然可用于 D,其中比 PT2 更难的剪切可能会很有用。

  • 前馈抖动减少 - 4.3 引入了前馈抖动减少,这是对前馈过渡的改进。它为前馈提供了“动态过渡”效果,您可以在进行慢摇杆输入时获得丝般平滑的响应,并对快速输入进行即时、快速的前馈响应。通常,不再需要过渡。抖动减少提供了过渡类型的效果,但在任何摇杆角度。抖动减少还可以减弱慢速移动期间的 RC 链路噪声,特别是对于较新的更高速率的 Rx 链路。赛车手倾向于使用比 Freestylers 更低的抖动降低值,因为这会在不延迟摇杆响应的情况下减弱链路噪声。

  • 其他前馈改进 - 我们现在对增强进行二阶平滑,在慢摇杆移动期间进行软插值,以及更准确的重复数据包插值。大多数较慢的射频链路不需要平均,现在默认情况下处于关闭状态。高速射频链路(250hz 及更高)通常受益于 2 点平均和更强的平滑。适合最常见链接类型的预设使无线电链接配置变得容易。

  • 反重力改进 - 添加了 P 提升,并在最需要时将时序优化提升到峰值。这在油门快速变化时提供了更大的稳定性。 未经仔细测试,不应增加默认值 3.5。

  • 动态陀螺仪滤波器 expo 曲线 - 调整滤波 expo 曲线,可在油门升高时更快提高动态陀螺仪滤波截止频率,从而改善桨流。

  • 改进的动态怠速 - 动态怠速代码经过大幅重构,可更快、更精确地将 RPM 保持在稳定值,并以新的单边 PID 控制器微调。配置也更简单:无需测量 RPM 或改变 DShot 怠速百分比;保留原有 DShot 怠速值即可。只需启用并确认 DShot Telemetry 正常工作,然后在 PID Tuning 页面设定合适的怠速 RPM。通常 3000-4000 RPM 效果良好。它能改善电机低转速起转、增强低油门响应并降低不同步风险;同时电机驱动仍可在合适时降至零,实现更强制动和更长的倒挂停留时间。

  • 线性和动态混合器选项 - 这些是现有 Betaflight 混合器代码的替代方案。动态选项可能会导致水平模式或电影飞行中不太剧烈的碰撞和着陆响应。

  • Level 与 Horizon 模式中的前馈 - 前馈现已在 Horizon、Level 和 Level Race 模式启用,使 Level 模式的角度变化更快,也让 Horizon 在翻滚等快速动作上的响应接近 Acro。这些模式的前馈量可与其他 PID 参数一样调节并保存到配置文件。

  • Actual Rates 成为新的 Betaflight 默认 Rates - Actual Rates 提供更简单、直观的 Rates 设置方式,现为默认值。新默认值在中杆附近比旧默认值温和,但中段递增更快;满杆默认最大横滚角速度不变。仍可继续使用 Betaflight Rates。*升级时请注意:粘贴旧 Rates 数值时,也务必粘贴 Rates 类型。*可使用此计算器将旧 Rates 转换为 Actual Rates

  • CrossfireV3 和 Ghost RC 链接改进 - 除了支持最新的 Crossfire、ELRS 和 Ghost 协议之外,内部 betaflight RC 代码现在支持浮点数据路径中的 12 位或更高的 RC 数据,比以前更好地处理非常低的 RC 链接(低至 16hz),完全支持高达 1000hz 的高速链接,并更好地衰减前馈当 RC 链路在掉线后返回时会出现故障。

  • ELRS over SPI 支持 ELRS V2 板载接收机。非常感谢 Phobos 和其他 ELRS 开发人员帮助实现这一目标。

  • Lua 脚本更新 - 我们现在通过 LUA 在您的 OSD 中提供 RSSI、无线电滑块控制以及许多其他更改。

  • 更改了 CLI 命令名称 - 许多 CLI 参数被重新命名。因此,大量的复制和粘贴工作将无法实现您想要的所有更改。现在使用 CLI“get”命令可以更轻松地查找相关值。例如,get gyro_lp 将查找所有陀螺仪低通滤波器设置,get feed 将查找所有前馈值等。

**4.3 使用默认参数即可获得良好飞行表现。**建议从默认值或适合用途的预设开始;若预设与硬件匹配,通常无需额外调整。高级用户可试用简化后的滑块调参,并在飞场通过 OSD 或 Lua 使用滑块。

如果刚开始使用 Betaflight,请阅读此前的调参说明(4.24.1),了解本文未覆盖的主题。


解决问题

反弹

请参考4.2 调参指南。多数回弹来自控制裕度较低的四轴飞行器使用了过高 I 值;通常应降低 iterm_relax 截止值,并提高 tracking 与 D 值。部分而非全部翻滚结束时出现的随机晃动,尤其是飞行后段的快速动作,通常是怠速过低、桨负荷过大,或低 RPM 下 ESC 起转能力不足(48 kHz 或动态 ESC 模式)造成的电机起转延迟。启用动态怠速并设定较高的最小 RPM(如 3500-4000 RPM)通常可解决此问题。

HD 画面中的随机晃动

这通常出现在电影感 HD 应用中:直线前飞时,画面地平线会有低幅、随机的不稳定。常见原因是机架过软或柔性过大,或轻微失衡的螺旋桨、磨损轴承带来的振动。以下措施可能有助于减轻问题:

  • 使用足够刚硬的机架;检查轴承与轴间隙,平衡螺旋桨,并确保没有任何部件松动或晃动。
  • 将 D 调至该配置可承受的最高水平,同时避免 P 过高。
  • 将 Derivative 设为接近 P,或最多比 P 高 20%。可能需要比平常更强的 D 项滤波;请检查电机温度,并留意怠速摩擦声或其他 D 项共振征兆。
  • 将 TPA 设置为在巡航油门值以下开始,这样在较高的油门值下就不会出现过多的 D。
  • 一旦 D 达到尽可能高的水平,请尝试使用更多与更少的 P。 P 太多会导致快速转弯时出现摆动和可闻颤动,并可能使随机摆动问题变得更糟。如果你从不快速转弯,你可能会获得比其他情况更高的 P。
  • 若四轴飞行器控制裕度不足,可使用专家模式的 I 调节滑块降低 I。
  • 确保 OpenTx 的硬件设置中没有勾选 ADC!
  • 确保框架非常坚硬,并且没有任何东西能够摇晃或拍打
  • 确保使用容量足够大的电容。
  • 有时陀螺仪芯片或某些 ESC 本身工作异常。若其他措施均无效,可从一架飞行正常的四轴飞行器上替换相关部件验证。
  • 使用 10-12 的抖动降低系数。要测试前馈是否会使情况变得更糟,请在前馈为零的情况下进行试飞。如果没有变化,则前馈不是问题,并且可以在正常设置下使用。
  • 高水平 RC 平滑(自动平滑为 90 或更高)将减弱旧万向节或“拇指抖动”的不稳定行为。要测试您的 RC 链路是否存在问题,请暂时设置较宽的死区。我们不太推荐死区,但当棒居中时,高死区测试将消除 RC 链路上的所有随机噪声。如果这没有影响,则您的 RC 链路不是问题的原因。
  • 为相机使用非常柔软的减振安装。

零油门不稳定

  • 如果您将 ESC 设置为 48kHz,则返回 24kHz PWM
  • 在 3500-4000 RPM 下启用动态怠速
  • 尝试将推力线性化设为 25。
  • 尝试稍微高一点的整体 PID

预设

新的预设选项卡可能是长期以来对地面站最有用的改进。

Betaflight 的默认设置最初面向在公园休闲飞行的 5 英寸自由式机。如今 5 英寸竞速、自由式和电影机架的性能差异已很大,而 whoop、小型 twig、重载相机机、7-10 英寸机与 X-class 之间差异更大;它们的性能包线各不相同。

4.3 Configurator(10.8)提供预设系统,可方便地找到一组或多组适合四轴飞行器、飞行风格、遥控链路或 VTX 配置的 CLI 命令。应用预设后,点击保存即可试飞。

预设通常包含“选项”,可将飞行器的某些部分恢复至默认值。应用前请仔细阅读说明。

“预设”页面还提供了一种备份和恢复配置的简单方法。

警告:更改任何设置前,务必备份四轴飞行器的默认配置;“保存”预设前也应再次备份。保存预设后,变更会永久写入,无法轻松撤销。可以任意查看不同预设,但若保存时没有备份原配置,将无法恢复。

预设经 GitHub Pull Request 流程评估并获批准后,才会被纳入 Configurator;团队仅会收录确信足够可靠的预设。

要将新预设添加到 Betaflight,请打开 拉取请求

支持外部预设仓库,但 Betaflight 不会检查或验证其内容。某项预设的评论或反馈应提交至其原始 Pull Request,预设管理器中提供对应链接按钮。

新调参滑块

PID 调参滑块经过彻底重构。无论在飞场还是电脑前,都可快速、简单地调节四轴飞行器。

  • 滑块位置现在存储在飞控中,并且可以在现场通过 OSD 或 Lua 进行更新。

  • P 和 D 现在使用各自特定的滑块独立设置。不再有 P:D 比率和 P&D 增益。

  • 基本模式用户只能看到三个最重要的滑块(PI、D 和前馈),调整范围有限。

  • 专家模式还会显示可微调 I、Dmax、P 与 D 的俯仰:横滚比例,以及总体主增益的滑块。

  • 当专家模式滑块未位于其默认位置,或者基本滑块超出基本调整范围时,它在基本视图中可见,但呈灰色显示。要调整“灰显”滑块,请切换到专家视图。

  • 同步移动 PI 与 D 滑块、维持近似相对位置,大致可保留 P:D 比例。

  • 主增益滑块可等比例提高或降低全部 PID 强度。

  • 滑块默认为 ON。当滑块控制某个值时,地面站中的数字参数输入会被阻止。如果您想使用直接数字输入的旧式非滑块方法,则必须首先通过设置滑块 OFF 来禁用滑块。

  • PID 滑块通常以 RPY 模式启用,即同时控制横滚、俯仰和偏航三个轴。若四轴飞行器需要特别的偏航设定,可选择 RP 模式,仅以数值直接设置偏航。

P 和 D 的平衡和整体强度现在从它们各自的滑块位置可见一目了然。

警告:启用滑块后,请勿手动修改 PID 或低通滤波数值。应先将滑块设为 OFF,最方便的方式是在 Configurator 中操作。

注意:在 Configurator 使用滑块时,飞场中的改动也必须通过滑块完成。滑块启用期间若通过 CLI、OSD 或 Lua 修改数值,会产生滑块与数值之间的冲突。保存数值后,仍可按该数值飞行;但若在滑块开启的页面保存 PID 或滤波器,自定义数值会被滑块计算出的数值覆盖。请避免这种冲突:使用滑块时,就在飞场继续使用滑块调节;需要直接使用数值时,先关闭滑块。

我们相信这些滑块对于初学者和经验丰富的调音师来说都能有效地工作。它们简化了从“基本”调整方法到“专家”调整方法的过渡。大多数人,包括经验丰富的调音师,现在应该能够使用滑块来满足几乎所有的调音要求,无论是场内还是场外。

调参方法

新的 PID 滑块支持用户偏好的各种调参方法,包括大多数常见的 YouTube 调参流程。

简易调参

使用新滑块最快、最简单的方法,是同时向右移动 P 与 D 滑块,直到出现不良现象。这样可大致保持 P:D 比例。当电机发热、解锁时出现异常声响,或高速转弯时听到异常噪音时,停止并回退少许。对于快速简易调参,这通常就能取得很好的结果。

然后按个人偏好调节“Stick Response(摇杆响应)”即前馈滑块。

也可以借助专家模式的“主滑块”快速将增益调至合理范围。它会严格按比例提高或降低全部 PID;达到合适范围后,再用各滑块微调。

“D 优先”调参法

“D 优先”调参法是逐步增加 D,直到出现不良现象后回退一两格且不再提高;随后对 P 重复相同流程。其基于两个基本原则:

  • 可用的 D 越高,可用的 P 通常也越高;
  • 一般而言,四轴飞行器在可承受的最高 P 与 D 下具有最佳跟踪性。

以下是常见的迹象,在增加 D 的同时,是时候稍微回落一下了:

  • 电机变热,
  • 解锁时听到摩擦声或嗡鸣声;
  • 解锁时四轴飞行器伴随噪声迅速冲转;
  • 弯曲的桨叶使电机非常快地变热

可使用 D 的主要限制取决于机架的机械洁净度。轴承良好、电机平衡且同心、机架刚硬、螺旋桨刚性足够的装机可承受更高 D。不同螺旋桨或 ESC 设置也会产生影响。

一旦您将 D 设置为合理的高值,就将 P 调高,直到发生不好的情况,例如:

  • 在中高油门转动时 P 振荡发出颤动的声音,或者
  • 阶跃响应中的欠阻尼短时过冲或共振,或
  • 直接发生 P 项振荡。

多数四轴飞行器最终的 P 约等于 D,或略高于 D。

“经典”调参法

此方法中,先在 D 滑块设为该装机通常值以下一点的位置(如 P 的 2/3),逐步提高 P 至极限。通常在四轴飞行器于翻滚结束或快速急转时开始出现“摆动”“颤振”或“晃动”时停止。随后回退 P,直至仅剩极轻微的摆动迹象;再逐步尽量提高 D,通常不高于 P,以抑制残余摆动。电机发热或噪音可能会限制 D 的上限。若已控制摆动,有时可将 P 再提高一格,并再增加一两格 D,观察是否仍能控制。

目标是使这两个参数尽可能高,而不会出现颤振、共振或电机过热等不必要的问题。

更准确的环路时间

Steve C Evans 的大幅改动几乎完全消除了 PID 环路抖动,并提高了调度器整体效率。多数情况下无需特别配置即可生效,可获得更准确的滤波、更低的电机温度和更长的飞行时间。

调度程序和任务更改以实现更准确的计时

Betaflight 使用协作式多任务机制。因此,调度器需要估计每个任务的执行时间,只会在运行陀螺仪、滤波器和 PID 等关键任务前仍有余量时调用其他任务。若任务实际执行时间超过预期,其他关键任务就会延后。在 4.2 中这很常见,尤其影响 RX 与 OSD 任务。4.3 重构了任务,使其更可能在预计时间内完成,帮助调度器作出更准确的调度决策。

在 4.3 中,如果启用了 RPM 过滤,最好以 4k(而不是 8k)运行 F405 和 F411 板。对于 F411 处理器,这是强制执行的。

**F411 可超频至 120 MHz。**它不像 F405 那样容易发热,多数芯片在 120 MHz 下可稳定工作。部分芯片在 120 MHz 时可能不稳定、但在 108 MHz 正常,这可能与芯片等级或板卡设计有关;若 108 MHz 更稳定,应使用该频率。请通过 GitHub 反馈,我们或可更新此板卡的 Target 信息。

DShot300 应始终在 4K 下使用。虽然可能不会报告任何错误,但使用 DShot600 可能会导致 4k 时的环路不稳定。

陀螺仪同步和 DMA 陀螺仪数据传输

在 4.2 中,从陀螺仪读取数据时存在许多问题。

  1. 处理器在陀螺仪任务中以轮询方式读取数据,读取完成前无法执行其他工作。
  2. MPU6000 的更新并不均匀:每第 8 次更新耗时 170 us,而非 125 us,随后一次则为 80 us。因此陀螺仪任务偶尔会在 170 us 区间中读取两个相隔 125 us 的样本,却完全错过 80 us 周期内的更新。
  3. 陀螺仪更新频率与陀螺仪环路异步,导致数据在陀螺仪更新后,到飞控接收、读取和处理前存在最高 125 us 的随机延迟。

在 4.3 中,这些问题通过以下方式得到解决:

  1. 使用直接内存访问 (DMA) 传输数据,处理器启动传输并在等待数据传输完成时可以执行其他操作。这将减少 CPU 负载。
  2. 使用从陀螺仪到飞控的硬件中断线将调度程序与陀螺仪更新同步。使用的 FC 引脚由 GYRO1_EXTI 资源设置。当此同步处于活动状态时,我们可以可靠地捕获每个陀螺仪更新。
  3. 在收到 EXTI 通知有更新可用后立即从陀螺仪读取数据,并在随后的一致时间内处理数据。

需要从陀螺仪到 FC 的硬件外部中断线将陀螺仪更新同步到 FC。不是所有的主板都有这个。 并非所有板卡都可以使用 DMA 来处理陀螺仪数据请求。

如果正在使用 DMA(上述优点 1),status CLI 命令会在 Gyros detected 行中报告 dma,如果陀螺仪通过 EXTI 锁定到 FC(上述优点 2 和 3),则会显示 locked。例如,同时使用 DMA 和锁定,您将看到:

Gyros detected: gyro 1 locked dma

有关更多详细信息,请参阅 PR #10525PR #10573PR #10813PR #11033

通过 SPI 进行的 Blackbox 日志记录现更高效

更高日志速率可产生更少的记录空隙。日志现使用 DMA,而非上述轮询方式。在 4.2 中,处理器要等待最长 90 us 才能将数据块写入 FLASH;4.3 启动写入仅需不到 5 us,之后传输在后台完成,处理器可继续执行其他任务。

即便如此,记录仍消耗大量时间;不需要时应关闭,并仅以所需速率记录,例如日常用途 1 kHz,滤波器调参 2 kHz。

技术说明

要实现上述陀螺仪和 FLASH 改进,需要 SPI DMA。以下 F745 飞控示例中,SPI 总线 3(FLASH 访问)和总线 1(陀螺仪访问)均定义了 SPI_MOSI/SPI_MISO。总线 4 只定义 SPI_MOSI,这没有问题,因为它仅用于不需要 SPI_MISO 的 OSD。

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: LED_STRIP
DMA1 Stream 1: FREE
DMA1 Stream 2: SPI_MISO 3
DMA1 Stream 3: FREE
DMA1 Stream 4: FREE
DMA1 Stream 5: SPI_MOSI 3
DMA1 Stream 6: FREE
DMA1 Stream 7: FREE
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: SPI_MOSI 4
DMA2 Stream 2: DSHOT_BITBANG 2
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC
DMA2 Stream 5: FREE
DMA2 Stream 6: DSHOT_BITBANG 5
DMA2 Stream 7: FREE

遗憾的是,受 F4 处理器勘误限制(参见 [https://www.st.com/resource/en/errata_sheet/dm00037591-stm32f405407xx-and-stm32f415417xx-device-limitations-stmicroelectronics.pdf], 第 2.1.10 节),SPI 总线 1 和 bit-banged DSHOT 无法同时使用 DMA。因此启用 bit-banged DSHOT 后,status 可能显示 locked 而不显示 dma。若为启用 DMA 而关闭 bit-banged DSHOT,则 MOTOR 1MOTOR 4 的 DMA 描述符可能与 FLASH、OSD 和部分情况下 LED 功能所使用的 SPI 冲突,进而导致 RPM 滤波、FLASH、LED 或 OSD 无法工作。

当 DMA 不可用于 OSD 时,建议使用非常简单的 OSD 配置,以最大限度地减少数据传输所需的时间。

以下示例说明高级用户可如何优化配置。

例如,启用 bit-banged DSHOT 的 MATEKF411 会启用 SPI 总线 1 和 2,但不具备陀螺仪 DMA。

# status
MCU F411 Clock=108MHz (PLLP-HSE), Vref=3.30V, Core temp=30degC
...
Gyros detected: gyro 1 locked
GYRO=MPU6000, ACC=MPU6000
...

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: FREE
DMA1 Stream 1: FREE
DMA1 Stream 2: FREE
DMA1 Stream 3: SPI_MISO 2
DMA1 Stream 4: SPI_MOSI 2
DMA1 Stream 5: FREE
DMA1 Stream 6: FREE
DMA1 Stream 7: FREE
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: DSHOT_BITBANG 2
DMA2 Stream 2: FREE
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC 1
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE

关闭 bit-banged DSHOT 后,只剩 SPI 总线 1 启用,且具备陀螺仪 DMA。用于 OSD 的 SPI 总线 2 无法使用 DMA,因为所需资源正被 MOTOR 4MOTOR 1 占用。因此虽然飞行性能会改善,但 OSD 更新较慢,建议仅使用简洁的 OSD 布局。

# status
MCU F411 Clock=108MHz (PLLP-HSE), Vref=3.30V, Core temp=30degC
...
Gyros detected: gyro 1 locked dma
GYRO=MPU6000, ACC=MPU6000
...

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: MOTOR 3
DMA1 Stream 1: FREE
DMA1 Stream 2: FREE
DMA1 Stream 3: MOTOR 4
DMA1 Stream 4: MOTOR 1
DMA1 Stream 5: MOTOR 2
DMA1 Stream 6: FREE
DMA1 Stream 7: FREE
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: FREE
DMA2 Stream 2: FREE
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC 1
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE

在 FURYF4OSD 上,启用 bit-banged DSHOT 时陀螺仪 DMA 不可用,但分别用于 OSD 和 FLASH 的总线 2、3 均可用。

# status
MCU F40X Clock=168MHz (PLLP-HSE), Vref=3.26V, Core temp=51degC
...
Gyros detected: gyro 1 locked
GYRO=MPU6000, ACC=MPU6000
...

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: SPI_MISO 3
DMA1 Stream 1: FREE
DMA1 Stream 2: LED_STRIP
DMA1 Stream 3: SPI_MISO 2
DMA1 Stream 4: SPI_MOSI 2
DMA1 Stream 5: SPI_MOSI 3
DMA1 Stream 6: FREE
DMA1 Stream 7: FREE
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: DSHOT_BITBANG 1
DMA2 Stream 2: DSHOT_BITBANG 2
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC 1
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE

关闭该功能后,得益于电机输出引脚的审慎分配,所有 SPI 总线均支持 DMA,可实现最佳飞行性能。但 LED_STRIP 无法再分配 DMA1 Stream 2,因为该资源已被 MOTOR 3 使用。在 LED 闪烁效果与最佳飞行性能之间,这通常是容易的取舍,但也说明为获得最佳表现可能需要作出某些妥协。

# status
MCU F40X Clock=168MHz (PLLP-HSE), Vref=3.26V, Core temp=51degC
...
Gyros detected: gyro 1 locked dma
GYRO=MPU6000, ACC=MPU6000
...

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: SPI_MISO 3
DMA1 Stream 1: MOTOR 4
DMA1 Stream 2: MOTOR 3
DMA1 Stream 3: SPI_MISO 2
DMA1 Stream 4: SPI_MOSI 2
DMA1 Stream 5: SPI_MOSI 3
DMA1 Stream 6: MOTOR 1
DMA1 Stream 7: MOTOR 2
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: FREE
DMA2 Stream 2: FREE
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC 1
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE

4 kHz PID 环路的陀螺仪数据抗混叠

运行 4 kHz PID 环路时,强烈建议保持陀螺仪低通 2 启用。若要降为单个陀螺仪低通滤波器,应保留低通 2。

原因是将陀螺仪数据从 8 kHz 降采样至 4 kHz 时,低通 2 是极有效的抗混叠滤波器。若在 4 kHz 板卡上关闭陀螺仪低通 2,固件会以简单的 2 点平均替代;其抗混叠效果不如 1000 Hz PT1,更远不如 500 Hz PT1。

对于 2 kHz PID 环路,500 Hz PT1 陀螺仪低通 2 绝对不可或缺。

多数机械噪声干净的 4 kHz 四轴飞行器,关闭陀螺仪低通 1、仅保留 500 Hz 陀螺仪低通 2 时即可良好工作。

8 kHz PID 环路不存在混叠问题,可关闭陀螺仪低通 2 而无需担心混叠;但若要关闭全部陀螺仪滤波,四轴飞行器必须具有非常干净的机械状态。

多动态陷波

新的 SDFT(滑动离散傅里叶变换)动态陷波可跟踪多个独立噪声峰,并为每个峰分配独立陷波滤波器。每个轴最多可指定 5 个陷波,但取决于装机通常仅需一至三个。

SDFT 对噪声源的跟踪效率显著高于此前实现,且在与 RPM 滤波结合时针对共振问题进行了优化。RPM 滤波仍最适合处理与 RPM 相关的噪声。

约 300-450 的 Q 值适合自由式应用。将最小频率尽量设高(如 200 Hz),并仅使用必需数量的陷波,可最小化陷波相关的滤波延迟。

要正确调节动态陷波,请关闭动态陷波后记录日志并做频谱分析,确认是否存在需抑制的共振及其频率。将动态陷波范围设为覆盖共振峰,并在噪声两侧各额外留出 20 Hz,确保充分滤除所需频段。随后再次飞行,检查陀螺仪曲线中的共振线是否消失;再逐步提高 Q 值重复测试,找出仍可充分控制共振的最高 Q 值。

对于无法运行 RPM 滤波的四轴飞行器,配置三至四个陷波、Q 值约 120-150 时,SDFT 仍能较有效工作。这些较宽的陷波可应对陀螺仪观察到的、由电机频率驱动振荡造成的快速中心频率变化。多动态陷波虽不能像双向 DShot 驱动的 RPM 陷波那样快速响应,但在大量机型上表现仍然出色。

多动态陷波仍可与陀螺仪和 D 项上的静态陷波并用。静态陷波最适合恒定频率共振;若存在强烈的恒频共振,可能需要在陀螺仪或 D 项上加窄静态陷波,以处理 SDFT 遗留的残余噪声。对于具有已知固定频率(如机架共振)的机型,设置正确截止频率的手动静态陷波通常优于多动态陷波,也能将多动态陷波覆盖范围设得更宽。若某一特定共振在全部油门和飞行条件下都只出现于单一频率,建议添加静态陷波并把多动态陷波数量减一。

调整多动态陷波范围会改变 SDFT 算法的频率 bin 宽度;不过算法还会进行二次估计,依据相邻两个 bin 的数据,将每个动态陷波对准最准确的中心频率估计。扩大 MinHz 与 MaxHz 的范围会以部分分辨率换取更宽的监测频段,并可使动态陷波对频率变化响应更快,这有助于抑制高频处快速变化的共振。

有关更多详细信息,请参阅 PR #10554

基于 PT3 的 RC 平滑

RC 平滑系统已简化并改进。电影或 HD 飞行员现在可获得过去难以实现的流畅画面。

旧的线性插值方法已被删除,因为基于 PT3 滤波器的方法效果更好(无过冲、更低的延迟、更好的可调谐性)。

强烈建议始终保持 RC 平滑启用,即 set rc_smoothing = ON。关闭后,电机驱动信号会明显呈阶梯状,电机更热、更嘈杂;低速遥控链路还会使四轴飞行器以链路频率抖动。

自动平滑算法本身未变:解锁时检测遥控链路速率并自动设置 RC 平滑截止频率;飞行中链路速率改变时也会更新数值,尽管需要一些时间。

默认自动平滑值现在为 30,与未平滑的信号相比,它提供了相当平滑的设定点线和非常小的延迟。

对于 HD 自由式,自动值设为 60 可获得更强平滑性,且不会带来很多额外延迟。

对于需要绝对平滑度的电影视频,大约 90-120 的自动值将提供您所追求的丝般轻松的平滑度,但代价是明显的摇杆延迟。与抖动减少和前馈平滑相结合,大多数电影镜头将非常平滑。

自动平滑功能可调整滤波器,以在给定的链接速度下提供最小的延迟。在更高的链路速度下,平滑滤波器运行得更快,并提供更快的响应。

对于使用高速遥控链路的电影飞行,以及非锁定模式的 Crossfire,最好手动覆盖自动平滑,以在整段飞行及不同遥控链路的机架之间保持一致平滑度。可在 CLI 中设置固定的非自动值。用于电影拍摄时,不论链路速率,10-15 Hz 通常有效:

set rc_smoothing_setpoint_cutoff = 10
set rc_smoothing_feedforward_cutoff = 10

非锁定 Crossfire 也同样适用,它可能在 50 Hz 与 150 Hz 间随机切换。此处使用 20-30 Hz,即使在 50 Hz 模式下也能提供相对一致的摇杆手感和合理平滑度:

set rc_smoothing_setpoint_cutoff = 25
set rc_smoothing_feedforward_cutoff = 25

我们通常不建议将自动平滑度设置为低于 30,但在高链接速度(例如 250 或 500hz)下,通过将延迟保持在绝对最小值,20 的值可能有利于赛车。会有一些 RC 连接频率传输到您的电机中,但不多。如果您能听到差异,或者您的电机运行温度升高,请返回到 30。

在大多数情况下,坚持使用默认的自动平滑,一旦您决定了射频链路速度,或更改无线电后,请调整自动平滑值以获得您想要的结果。

油门 RC 平滑值可自动或手动独立调节。建议保持 30;仅高速链路竞速飞行员可尝试 20。电影机架为避免油门跳变可提高数值,但需要俯冲拉起时应留意油门延迟。

自动模式下,RC 平滑会同样作用于设定值和前馈。日志头会显示链路实际使用的频率。CLI 可手动配置前馈相对设定值的平滑量;当前测试尚未证明这在实际中明显有用,未来可能移除。要控制前馈阶跃,使用前馈平滑 feedforward_smooth_factor 更合理;对前馈施加强 RC 平滑对链路抖动无效,且会增加大量延迟。

有关更多详细信息,请参阅 PR #10650

RPM 交叉淡化

这项改进相比常规 RPM 滤波,在低至中油门可产生更干净的电机信号,并显著改善桨流。也就是说,现在可在需要时保留 RPM 滤波优势,在不需要时不承担其代价。

陷波滤波器通过在指定中心频率生成“反噪声”信号工作。它们不会像低通滤波器一样产生传统意义上的延迟,而是生成与原始信号混合后可抵消其中噪声的信号。

因此可像音频混音器一样,通过“交叉淡化”线性地将陷波的反噪声信号混入或淡出,从而衰减陷波作用。

这对于 RPM 过滤非常有用。以前,当任何电机低于最低 RPM 频率时,其三个 RPM 档位都将保持活动状态,但保持在最低频率。虽然没有噪音需要消除,但它们会产生“延迟”并对附近的频率做出反应,导致某种形式的互调失真,并使螺旋桨洗流恶化。

现在可在不需要时实质上“关闭 RPM 滤波器”,并在最低 RPM 以上的交叉淡化范围内平滑恢复其作用。

一旦转速过滤器完全“关闭”,它们就不会造成任何类型的延迟或干扰,从而产生比以前更干净、更好的陀螺仪轨迹。

在大多数构建中,与 RPM 相关的显着噪音直到大约 100hz (6000 rpm) 才会开始出现。因此,我们可以在 80hz 处启动 RPM 过滤,并在 50hz 上交叉淡入淡出,这样到 130hz 或 10,000 rpm 时,您就可以再次启用完整的 RPM 过滤。例如:

set rpm_filter_min_hz = 80
set rpm_filter_fade_range_hz = 50

我们发现在大多数情况下 50hz 的交叉淡入淡出范围是最佳的。

默认最低 RPM 频率为 80 Hz,即 RPM 滤波从 80 Hz 开始“开启”,对多数四轴飞行器同样有效。螺旋桨很干净且固有 RPM 噪声很低的机型可将该值提高,例如:

set rpm_filter_min_hz = 100
set rpm_filter_fade_range_hz = 70

低 RPM 的大型四轴飞行器应按比例使用更低数值,因为其工作转速较低。

调节 Crossfade 时,需启用 dshot_telemetry Debug,从零平滑稳定地加油至 50%,不输入其他摇杆指令,随后做油门切断。建议将 PID 调低,并对 D 使用强滤波以排除 D 项噪声。观察 Debug 曲线中电机 RPM 进入交叉淡化区的位置,检查电机 RPM 相关噪声是否进入陀螺仪曲线。最低 RPM 设得过高时,交叉淡化区会漏出明显电机噪声。

若不确定图表含义,可先将交叉淡化最低值设得很高,此举会实质上关闭低 RPM 段 RPM 滤波并放出噪声。若交叉淡化范围设得很低,例如 10 Hz,则 RPM 滤波启用时会发生突变。最低值应低于 RPM 噪声开始成为问题的频率;随后可向上扩展交叉淡化范围,直至上端交叉区出现少量但不过多的噪声泄漏。目标是在合理衰减电机噪声前提下取尽可能高的数值。

有关更多详细信息,请参阅 PR #10757

前馈抖动抑制

这是项重要改进:在需要时获得真正平顺的响应,同时快速摇杆输入仍保留足够的前馈“爆发感”。它很适合流畅高速竞速及“轻弹”式自由式操控。

它可完全取代旧的 D-term/前馈“Transition(过渡)”功能。旧功能只会在摇杆居中时衰减前馈;新功能则可在摇杆静止或缓慢移动时、任意摇杆位置产生相近的衰减。

前馈,尤其包含 Boost 时,常被称为“摇杆响应”参数,因为它能对摇杆输入产生强烈、即时的反应。较高前馈量(如 120-130)可使四轴飞行器非常灵敏而不增加超调,既强化自由式的快速轻弹,也让竞速飞行员获得接近零的设定值到陀螺仪延迟。

然而,它甚至会强调最微小的 RC 输入,并可能导致高清视频中的飞行抖动和抖动。无论这些 RC 抽搐是否来自紧张、轻微粘性或嘈杂的万向节、RC 链路连接问题,它们都会被前馈放大......直到现在。

处理这些“抖动”的“旧”方法是使用前馈过渡,当你的摇杆接近中心位置时,它将前馈线性衰减到零。这解决了中心杆位置“前馈过多”的问题,但没有解决其他地方的问题。

过渡有许多限制。仅当操纵杆居中时才有效;如果您处于平稳转弯,操纵杆偏离中心,但您仍然希望飞行平稳。然而,在这种情况下,过渡的效果要差得多。此外,当将摇杆移过中心时,在平滑的移动中,过渡会在中心突然切断前馈,从而导致摆动,在过渡范围窄的情况下最糟糕。如果您确实使过渡范围变宽,则所有前馈收益都会在中间丢失,并且“快速轻弹”变得难以实现。

摇杆缓慢移动时,无论其绝对位置,抖动抑制都会显著衰减前馈。

可将其理解为“动态 Transition”功能。

默认 jitter_reduction_factor 为 7,适用于使用常规遥控链路的大多数四轴飞行器,也适合竞速,可使急弯与高速直线兼顾平顺和灵敏。

具有较高速度链路的经验丰富的竞赛飞行员会发现直线灵敏度会比正常情况稍低一些,因为对于非常小的输入,它们的前馈“推力”会减弱。他们可能更喜欢值 5。经过几次飞行后,我们发现穿越机“保持在预定路线上”比以前好一些,尤其是在急转弯时,感觉比以前更“在轨道上”。

12-15 几乎会移除缓慢平顺输入的全部前馈,是自由式/电影飞行的推荐范围。四轴飞行器在直线中杆和持续急转时都会同样平顺;但快速轻弹摇杆仍可立即响应。

原理并不复杂:固件计算相邻 RC 数据包中命令值的变化量,平均最近两次变化,并与用户设定阈值比较。最近 RC 变化率低于阈值时,前馈会淡出;变化超过阈值时,前馈不改变且无延迟地通过,使快速摇杆操作获得即时响应。

jitter_reduction_factor 是 RC Command 变化阈值,以摇杆行程百分比的十分之一计;低于该阈值即衰减前馈。值为 10 表示每步 RC Command 变化小于 1% 时,前馈将逐渐衰减。阈值以下遵循近似指数曲线,因此数值为 10 时,对于全 RC 范围 0.1%-0.2% 的 rcCommand 变化步长,前馈仅约为正常值的 10%-20%。合适数值同时受链路频率和位深影响。低频链路(如 50 Hz)的多数 RC 步长较大,实际抖动问题不突出;因此默认值与推荐的自由式数值在 50-150 Hz 通常都有效。

较高的链接速度(250Hz 及以上)会遇到一个问题,即可用的步骤数量有限,并且没有太多时间来检测更改。 Crossfire 和 FrSky 协议仅在整个 RC 范围内提供 800 步,或者从中心到最大位置仅提供 400 步。如果飞行员在一秒内缓慢地将操纵杆移动到最大值,则某些 RC 步长将为 1,而另一些则为 2,数据包高。像这样的小步骤每一步都有 100% 的变化,导致前馈中出现大量抖动,从而认为摇杆正在剧烈晃动。人的固有抖动和万向节本身会产生至少这个量级的抖动噪声,前馈通常会放大它 - 就像 D 放大陀螺仪噪声一样。

这就是抖动降低代码有助于消除高速链路中残留噪声的地方;它有点像动态的零延迟滤波器,当信噪比很差时应用于前馈。它将一阶滤波应用于简单设定点导数,将二阶滤波应用于升压元件。

因此,抖动减少系统显着减少了所有系统上的万向节抖动,但在只有 800 步的较高链路速率系统中最为有效且重要。出于这个原因,我们建议在所有 RC 链接上将其保留为默认值,在自由泳和电影中增加它,并且可能回落到 5,但仅在出于比赛目的的干净 RC 链接上。

具有 2000 个步长的较新的 11 位和 12 位 RC 链路协议将提供更好的分辨率,但万向节噪声仍将是一个问题,因此在可预见的将来可能仍然需要抖动减少代码。

有关更多详细信息,请参阅 PR #10670

面向高速 Rx 链路的前馈平滑设置

ff_smooth_factor 已更新并更名为 feedforward_smooth_factor。它对 Boost 提供二阶阶跃高度平滑,对简单导数提供通常的一阶平滑;由此可更有效平滑 Boost 信号,同时减少简单导数的延迟。

对大多数机架,25 是合适的起始值。

对于 250hz RC 链路,应将 feedforward_smooth_factor 设置为 40-50,将 feedforward_averaging 设置为 2_point

对于 500 Hz RC 链路,必须feedforward_smooth_factor 设为 65-70,并将 feedforward_averaging 设为 2_point

其他前馈更改

一些微小但重要的前馈变化会产生更平滑的信号和更少的延迟。

CLI 中所有前馈相关参数现均以 feedforward 而非 ff_ 开头。使用 get feed 可列出全部相关项。

feedforward_averaging 现默认关闭,因为多数机架不需要。旧 Crossfire 150 链路应设为 3_POINT,以获得三点移动平均。所有 500 Hz 链路与几乎全部 250 Hz 链路都能受益于 2_POINT 前馈平均;不过新的抖动抑制代码意味着大多数低于 250 Hz 的链路(FrSky、Crossfire 等)不需要前馈平均。

feedforward_max_rate_limit 取代 ff_max_rate_limit。当摇杆接近最大 Rates 时,它会拉回前馈,以尽量减少到达满杆时的超调。此前限制其可用性的错误已修复。默认 90 最适合多数四轴飞行器;动力偏弱的机架可能需要 100。

重复数据包插值已得到改进。由于在缓慢的摇杆移动速度下经常发生重复,因此我们现在使用抖动减少值来衰减插值过程,以便当摇杆移动非常缓慢时我们插值很少。

这些变化为我们提供了一个更加平滑但反应超灵敏的前馈系统。

AntiGravity 改进

现在,AntiGravity 会在猛收油门时提高 P,因为俯仰角突变需要超过 I 项响应的控制力。此外,I 增强的时序也已调整,以更好匹配晃动发生的时机。

新代码效率更高,因此默认值仅为 3.5。

注意:4.3 中不宜使用很高的 AntiGravity 数值,因为猛收油门时可能引发明显的 P 与 I 摆动。

坚持接近默认值。

如果您确实想增加反重力,请有条不紊地进行测试。高值,例如 5 或更多,可能不会比正常值多多少;使用符合合理控制的最低值。

有关更多详细信息,请参阅 #10163

动态陀螺仪滤波 expo 曲线

dyn_lpf_gyro_curve_expo 让动态低通滤波截止频率随油门升高得比过去更快。其工作方式与 D 低通 expo 非常相似。

这会降低高油门时的延迟。若高油门出现显著增加的高频噪声,请降低 expo 值,或降低动态低通截止频率上限。

有关图表,请参阅 PR9486

改进的动态怠速

新的动态怠速代码使用完整 PID 控制器,配置也更简单。它可提高抗不同步能力和低油门控制裕度。

请勿沿用旧的 4.2 说明。现在无需在 Motors 页面测量 RPM,只需:

  • 启用 DShot Telemetry;
  • 前往 PID Tuning 页面,将 Dynamic Idle Min RPM 设为 30-40(即最小怠速 3000-4000 RPM)。

注意事项:

  • 如果 DShot 遥测功能已启用,但无法正常工作,您将无法解锁。

  • RPM 滤波与动态怠速均必须启用 DShot Telemetry 才能工作。

  • 未启用 DShot Telemetry 时,动态怠速会关闭,改用“静态”DShot Idle 百分比。

  • 动态怠速生效时,DShot Idle 将失效并显示为灰色。

  • 无需为使用 Dynamic Idle 调整 DShot Idle;保留在非动态怠速下最合适的数值即可。

  • 若 ESC 支持 DShot Telemetry,即使不使用 RPM 滤波,现在也可使用动态怠速。

    4.3 的新代码不要求对 DShot Idle 百分比做特殊调整;只需保留非动态怠速模式下最有效的数值。

解锁后到 Air Mode 激活前,不会达到完整的动态怠速最低 RPM。首次解锁时电机不会高速旋转,因为 Air Mode 激活前电机驱动受限。因此动态怠速可视为更完善的“怠速抬升”功能,具备旧式飞行中手动怠速抬升开关的优点,而没有其缺点。

较高最小 RPM 会使电机始终保持转速,带来更好的零油门响应、更干净的翻滚和更整齐的转弯。数值较高时,翻滚中最慢的电机仍会产生推力而不是接近失速,四轴飞行器会倾向在空中走出圆形轨迹;180 度转向也会变成小弧线。

此外,较高最小 RPM 时,四轴飞行器在正飞、平姿态猛收油门中下降较慢,因为电机始终产生部分向上推力。这并非完全是坏事,也会提高这些动作的稳定性和控制裕度,否则它们可能受桨流严重影响。

两种情况下,较高最低 RPM 都有助于规避桨流,因为飞行器更可能一直在干净气流中运动;这对自由式或快速竞速很有意义。

最小 RPM 较高时,向上猛冲后转 180 度倒飞并猛收油门,飞行器上浮不会那么高,因为更高 RPM 会产生更多向下推力。但当飞行器开始下落、螺旋桨的来流允许动态怠速切断电机驱动时,电机驱动可降至零,倒挂停留时间应与平常差异不大。为获得最长倒挂停留时间,以及可能用于目视飞行,请使用能避免不同步的最低最小 RPM。

多数容易不同步的装机,启用动态怠速即可解决问题。提高最小 RPM 会降低不同步概率,反之亦然。

如果动态空闲不适合您,请将其设置为零,您将恢复到静态 DShot 空闲百分比方法。

新代码非常好,我的许多穿越机只需 1000 rpm 作为最低动态怠速 RPM 即可飞行。在视线翻转和翻滚过程中,可以看到螺旋桨叶片缓慢转动,但它们不会不同步。我不建议走那么低,除非你有特别的好奇心想知道你能走多低。

对于大多数一般的自由式或赛车应用,4000 的最低 RPM 通常效果很好。

调参:

我们现在有一个 PID 控制器来代替 idle_adjustment_speedidle_p 调节设置。这提供了更精确的转速控制。

通常,高功率四轴飞行器需要较低 P 值,例如强劲的 6S 装机可用 40;控制裕度较低的系统可能受益于更高的 PID 值。

检查 RPM 控制稳定性的最佳方法是使用适当的调试进行记录,并在零油门下进行一些平缓下降。如果 RPM 值振荡,请尝试减少 P。如果在下降过程中保持稳定,但在切割过程中短暂下降至低于目标值,请添加更多 D 和/或更多 P。

有关更多详细信息,请参阅 PR #10294

线性与动态混控器选项

Air Mode 生效时,默认 Betaflight 混控器优先保证 PID 控制裕度,而非油门。只要电机为保持控制裕度可能需要“低于零”的驱动,Air Mode 就会提高油门,使所需电机差速得以实现。

正是 Air Mode 带来的油门提升,使我们能在零油门下“正常”翻滚。

但它也有缺点:Air Mode 会对撞击产生强烈反应,四轴飞行器会增加油门并爬升;一旦达到 Air Mode 能提供的极限,控制裕度会出现相当突兀的变化。

这些替代混控模型会改变油门控制裕度与 PID 控制之间的相对优先级。

它们或许适合平顺的电影飞行风格,提供一种部分 Air Mode 效果,着陆反弹更小;代价是快速动作中低油门 PID 性能受限。可实际试飞确认是否符合偏好。

有关更多详细信息,请参阅 PR #10370

Level 与 Horizon 模式中的前馈

在 4.3 中,前馈现在可在 Level、Level Race 和 Horizon 模式中使用。

在 Level 模式下,移动摇杆改变四轴飞行器姿态角时会得到更即时的响应,飞行器应更快到达新的目标角度。

在 Horizon 模式激烈飞行时,其行为现几乎与 Acro 相同,兼具前馈带来的即时摇杆响应与更少超调。

如果您是初学者并且发现 Level 太不稳定,请减少 PID 中的前馈值。

有关更多详细信息,请参阅 PR #10778

Actual Rates 成为新的 Betaflight 默认 Rates

从 4.3 起,Actual Rates 成为新的 Betaflight 默认 Rates。图表与更多说明见 PR #10724。

ACTUAL Rates 可设置目标中心灵敏度和最大横滚角速度(单位:度/秒)。

这两个值是相互独立的。

Expo 会将两种角速度之间的过渡点移向中心(接近零)或移向外侧(接近最大)。

该在线计算器可以可视化 Betaflight 费率与实际费率。

新的默认值与旧的 Betaflight 费率并不完全相同。尽管最大速率相同(670 度/秒),但新的默认设置在中心更加柔和(中心灵敏度为 70,而 Betaflight 旧默认设置的中心灵敏度约为 200),而且更远的地方响应更快。请参阅拉取请求中的图像

这套默认值预计更易学习,也更适合自由式。一些经验丰富的竞速飞行员使用 200 度/秒中心灵敏度、620 度/秒最大值和零 Expo;结合抖动抑制代码,200 度/秒可提供很快的转向,同时在急弯保持平顺可控。其他飞行员则偏好更低数值。

Betaflight 费率用户可以使用此费率计算器 查找相当于他们当前飞行的实际费率。例如,center 为 200、max 670 和 expo 为 0.58 会产生原始默认 Betaflight 速率曲线。

若从 diff all 粘贴 Betaflight Rates 数值,其中不含 rates_type。结果会是 Actual Rates 处于激活状态,却使用 Betaflight CLI 数值,四轴飞行器将无法正常飞行。这也是不建议直接复制粘贴 diff all 的原因。请手动重建 Rates;若确实复制粘贴,务必同时包含 CLI dump 中的 rates_type 行。

有关更多详细信息,请参阅 PR #10724

PT2 和 PT3 低通滤波选项

过去,一阶滤波不足时,陀螺仪和 D 项平滑可选二阶 Biquad;部分 Bosch 陀螺仪曾有此需求。不过 Biquad 可能对阶跃输入振铃,并对包含接近截止频率成分的输入产生过冲。4.3 不再将 Biquad 用于任何低通滤波;但对于认为它在特定场景有优势的用户,陀螺仪与 D 项低通中仍可选择 Biquad。

若机型需要二阶陀螺仪滤波,建议选择 PT2。它与串联 PT1 的工作方式相近,但截止频率经过正确校正。PT2 的延迟低于等效 Biquad,虽滤波略弱,仍建议优先用 PT2 替代 Biquad。PT3 相比等效 Biquad 提供更多滤波和延迟,陀螺仪或 D 项滤波通常不需要。

与 PT1 相比,PT2 的滤波器延迟增加约 60%,PT3 的滤波器延迟增加一倍。

有关更多详细信息,请参阅 PR #10727

CrossfireV3 和 Ghost RC 链接改进

4.3 的内部 RC 数据路径完全基于浮点,无论 RC 数据包内容如何均不会发生混叠或损失分辨率;同时支持 Crossfire V3 和 11 bit Ghost 协议。

通过限制 RC 平滑并避免会破坏前馈的虚假数据包超时错误,4.3 可更好支持低至 16 Hz 的极低链路速率;通过允许时序偏差达到 950 ns 而不报告错误,也支持高达 1000 Hz 的链路。

Blackbox 日志现显示未经平滑的 rcCommand;RC 与前馈 Debug 显示未经平滑的 Roll 设定值及其他有助于检查 RC 链路质量和分辨率的数据。

改进气压计与 GPS 的高度估计

同时装有 GPS 和气压计、且未等待 GPS 定位完成就起飞时,过去可能出现最高 100 米的高度估计误差。此问题已修复:在 GPS 锁定所需数量卫星前使用气压计。新增 CLI 选项可配置此行为:

position_alt_gps_min_sats - 开始同时使用 GPS 与气压计所需的卫星数量。 position_alt_baro_fallback_sats - 停止使用 GPS 并切回气压计所需的卫星数量。

若 GPS 接收机性能好且能快速接收许多卫星,可提高这些值;若硬件或所在环境较差,则降低它们。若气压计质量较差且希望尽早切至 GPS,也应降低数值。

Configurator 改进

Configurator 已重构,以支持新滑块和新的预设标签页。

电机选项卡中的新电机映射和电机旋转功能使这些令人沮丧的任务变得更加容易。

刷写前新增“自动检测”功能,可为板卡选择正确的固件,并支持再次检查。

界面本身已经清理,并且修复了一些错误。


制作人员

- 固件公关管理 - Mikeller

- Configurator 和 Blackbox - Haslinghuis、Limon、Asizon、ctzsnooze、McGiverGim、Mikeller、Blckmn

- 预设 - Limon、Mikeller、ctzsnooze

- 滑块 - Haslinghuis、UAVTech/spatzengr、IllusionFPV、Asizon、ctzsnooze

- 循环时间、调度程序、DMA、陀螺仪 EXTI、改进的日志记录和 OSD 效率 - Steve C Evans,许多大型 PR :-)

- 多动态 SDFT 陷波、滤波器 - Karatebrot #10554

- RPM 淡入淡出 - Karatebrot #10757

- RC 平滑 - ctzsnooze #10629、#10650

- 前馈抖动减少 - ctzsnooze #10670

- 前馈平滑 - ctzsnooze - #10164

- 反重力 - ctzsnooze #10163

- 陀螺仪 LPF expo - IllusionFPV #10239

- 线性和动态混控器选项 - TylerCorleone、BorisB #10370

- 动态空闲改进 - ctzsnooze #10294

- ELRS over SPI - Phobos、Joe、Alessandro

- Configurator 改进 - Haslinghuis、McGiverGim、Limon、Asizon

- LUA 脚本 - klutvot123、kristjanbjarni、codecae

- 水平和地平线前馈 - ctzsnooze #10778

- PT2 和 PT3 低通滤波器选项 - ctzsnooze #10727

- RC Link 改进 - TBS #10675,Stepan Dalecky #10801

- 默认为实际费率 - ctzsnooze #10724

- 4.3 调参说明 - ctzsnooze,SupaflyFPV 编辑

- 错误修复 - 很多人!

- 让所有人和一切都步入正轨 - blckmn,mikeller

  • 鼓励和测试 - Brian White、James、SugarK、Cory Ibanez、Tehllama42、SupaflyFPV、UAVTech、QuadMcFly、Limon、bizmar 以及其他许多人:谢谢!