3.0 发布说明
这确实是一个重大版本。完整详细的更改列表可以在提交历史记录中找到。 [https://github.com/betaflight/betaflight/commits/master]
以下是 joshuabardwell 制作的 3.0.0 版本概述视频: [https://www.youtube.com/watch?v=Fz1IcxWpZfg]
Betaflight 是一个真正的开源项目,全世界的人们都为代码做出了贡献。不只是我一个人这样! 约有 15 至 25 名才华横溢的开发者在过去两个月中夜以继日地参与了 3.0 的开发。 我衷心感谢每一位参与者;他们帮助我和其他人学习更多知识,并共同促成了这次发布。 上周也诞生了许多优秀想法,足以支撑我们在未来数月持续开发。 鲍里斯
此版本对底层代码作了大量调整,因此单独设立本节。
本文只计划列出并说明相对于此前 2.x 版本的差异。
以下是 Boris 给初次尝试 3.0 用户的建议: 只使用配置器中提供的选项,其余设置保留默认值。
Betaflight 有 2 个不同的目标。
-
提供极其稳定的固件和可靠的默认设置,让用户随时都能直接飞行。
-
从研究与实验的角度,持续改进并引入新功能同样重要,让愿意尝试的用户能够提供宝贵反馈。这些选项大多位于 CLI 中。
Betaflight 3.0.1(3.0 补丁 1)
- 完成 OSD 代码(提供更多 OSD 配置选项)。
- 将 Relaxation 参数改为过渡参数。在高设定点权重和高角速度下,它能更有效地抑制回弹。配置器中的两个滑块现为
Dterm Setpoint和Dterm Transition;请参阅 2DOF PIDC 说明的补充内容。 - 修复部分飞控板气压计无法工作的故障。
- 为陀螺仪增加第二个陷波滤波器(
set gyro_notch1_hz与set gyro_notch2_hz;新版 1.8.3 配置器同样提供此设置)。 - 增加可配置的
pidSum限制。 - 新的滤波器默认值(默认启用陷波滤波器)。
- 增加
BEEBRAIN目标。
Betaflight 3.0.0-RC14(支持 F4)
最终版本
这确实是一个重大版本。完整详细的更改列表可以在提交历史记录中找到。 [https://github.com/betaflight/betaflight/commits/master]
变更简短摘要:
- 支持 STM32 F4(BLHeli passthrough 可用)。
- 全面重构 IO。
- 大幅拆分 target,便于实现新的 target。
- 重构 PWM 代码。
- 添加了 OSD 集成
- 大规模清理和重写代码。
- 增加与配置器的集成。
- 新的 Betaflight PID 控制器以 deg/sec 为基础。今后的开发都会在此 PID 控制器中进行。原有的 Legacy PID 控制器仍会保留;它本身也近似于一次演进式重写,但不再继续变更。
- 新 Betaflight 2DOF PID 控制器提供额外配置参数。请在配置器中查看对应选项;相比之下,它能以更少的微分作用获得相同效果,并降低超调比例。
- 恢复 RC 插值,并提供多种选项(选择
AUTO可自动配置接收机速率)。 - 新增
diffCLI 命令,便于备份配置。 - 移除 Super Expo 独立功能,因为它已并入 Super Rates 并默认启用。
- 扩大线性速率范围。
rc_rate高于 2.0 时增幅更大,2.55 可提供完整线性的 2000 deg/sec。请用配置器的 Rate 工具查看速率曲线。 - RC EXPO 曲线更加平滑(请使用配置器 Rate 工具优化速率调校)。
RC2 - 更改默认值/清理 ONESHOT125 功能
RC3 - 基于反馈的默认值 // yaw_axis 添加到插值 // 添加其他配置参数 // 修复 KISS 上的 PPM
RC4 - 根据新的公开测试调整默认值 // 修复 SPI target 的若干错误分母默认值
RC5 - 根据新的公开测试调整默认值 // 修复滤波器重新初始化导致 CPU 占用升高的问题 // 增加 Sparky2 // 修复多个 target
RC6 - 默认值调整 // 将 zero_throttle_stabilisation 改名为 pid_at_min_throttle // 清理 CLI
RC7 - 修复 F4 diff/dump 崩溃 // 修复 Sparky2 // 修复较高 PID 分母下 D 滤波器系数错误 // 增加新的 Blackbox 标头
RC8 - 默认值(260 Hz 陷波滤波器) // 增加 diff showdefaults 命令 // 更改部分 CLI 名称 // 增加 MSP 参数 // 提高 I2C 陀螺仪 target 的 GPIO 速度 // 增加 Blackbox 电机测试 // 改进 FPV 角度混合功能 // 减少 PID 循环忙等 // 增加新 target ISHAPEDF3 // 修复 Revo 的 PPM
RC9 - 支持所有目标(忽略 pid 循环上的 int pin)
RC10 - 默认值调整 // 清理 // 从 OPBL CC3D target 中移除 Betaflight PIDC(完整支持请使用 hex)
RC11 - 修复 D-term 设定点范围 // 修复 Sparky I2C
RC12 - 移除 Naze32 的声纳以释放闪存空间 // 移除 Super Expo feature;设置 srate 时 Super Expo 会启用 // 扩大线性速率范围:rc_rate 高于 2.0 时增幅更大,2.55 可提供完整线性的 2000 deg/sec // 按 2.8.0 RC4 的方式重新定义 EXPO,rc_expo 现为 power expo // 提高速率代码效率 // 清理速率代码 // 修复 F4 的 BLHeli passthrough // 增加 RCEXPLORER target
RC13 - 大幅修复中心附近的 RC EXPO 曲线 // 修复配置器中的 angle mix 模式 // 可通过 CLI 命令 dfu 强制 F1 和 F3 进入 DFU 模式 // 修复错误的气压计检测 // 修复 LEDSTRIP 西向指示器
RC14 - 默认禁用偏航滤波器 // 将 P-term 设定点权重改作仅作用于 Super Rates // 改进陀螺仪调试 // 修复 Sparky2 蜂鸣器
新的 1.8.0 地面站 (RC14) 支持一些额外的调整参数。不要忘记查看工具提示以获取解释! 新版 Blackbox 2.5.6 支持所有新参数。
1.7.8 地面站(RC12) 1.7.7 地面站(RC11) 1.7.6 地面站(RC10)支持一些额外的调整参数。不要忘记检查工具提示以获取解释! RC 8 及更高版本的 1.7.5 地面站支持一些额外的调整参数。不要忘记检查工具提示以获取解释! 若在 RC7 之前的版本中尝试陷波滤波器,并使用独立的陀螺仪及 PID rate/denom,则必须升级至 RC7,因为此前系数计算存在缺陷。
对于 RC 7 及以下版本,请使用 1.7.2 地面站。
1.7.1 地面站支持一些额外的调整参数。不要忘记检查工具提示以获取解释!
2.x 的 PID 数值可迁移到 3.0,因为缩放比例相同;但得益于新 PID 控制器的功能,即使缩放比例未变,预期仍可使用更高的 PID 值。
新的 CLI 命令
请注意,绝大多数设置更适合通过新版 Betaflight Configurator 图形界面完成。
如果此处未列出 CLI 命令,则它很可能未更改,因此请查看“CLI 命令”页面。
如果有错误、缺失等,请在鲍里斯的帖子中发布有关错误的注释。
务必在 CLI 中输入 help 查看全部命令。
diff
用于查看与默认值不同的设置,便于了解配置器修改了哪些 CLI 值。
分享 CLI 配置时,它也比 dump 更合适,因为它只输出偏离默认值的设置,而不是输出全部内容。
diff all
显示所有配置文件和费率配置文件的差异
diff all commented
查看默认值
feature SUPEREXPO_RATES or feature -SUPEREXPO_RATES
启用或禁用 Super Expo。即使以 feature 形式禁用,仍可通过 AUX(Modes 选项卡)开关启用。
RC12 移除了 Super Expo feature。设置 srate 时,Super Expo 会自动启用。
这意味着此前使用 rc_expo 的用户可能需要重新调整它,通常只需降低数值。
虽然 CLI 仍需进一步清理,但 Super Expo feature 已实际不存在。使用 srate(旧 rate)时 Super Expo 自动启用;设为 0 即禁用。
希望获得无 Super Expo 的线性速率,可提高 rc_rate。所有高于 2.0 的 rc_rate 增幅显著提高;2.18 约为 1000 deg/sec,2.55 为 2000 deg/sec。随后可再加入适量 rc_expo。
这一方案提供了更灵活的速率行为。
不使用 rc_expo 时,无需进行相应计算,CPU 占用会更低;srate 同理,未使用时也不会执行 Super Expo 计算。
当时的配置器尚不能正确显示这些速率;待配置器更新后即可支持,预计很快发布。
set rc_interpolation = AUTO
[OFF, PRESET, AUTO, MANUAL]
此功能会增加 CPU 负荷,但可支持更高的 D-term 设定点权重并获得更干净的电机输出。若 CPU 负载过高,请设为 OFF。
注意:AUTO RC 插值根据接收机自身上报的速率判断接收机速度。但部分接收机(如 X4RS)在通道数超过 8 时可能上报 9 ms 间隔,而横滚与俯仰实际间隔为 18 ms。
set rc_interpolation_interval = 19
[1..50]
set motor_pwm_protocol = OFF
[OFF, ONESHOT125, ONESHOT42, MULTISHOT, BRUSHED]
set zero_throttle_stabilisation = OFF
[ON, OFF]
注意:这仅适用于 RC5 之前的版本。在 RC6 及更高版本中,它更改为:
pid_at_min_throttle = OFF
[ON, OFF]
设为 OFF 时,油门值低于 min_check 的情况下,PIDC 不响应摇杆,行为与原始 MultiWii、BaseFlight 或 CleanFlight 相同。
set airmode_activate_throttle = 1350
[1000..2000]
这是 AirMode 首次开启的油门阈值(激活点)。油门首次达到该值时,AirMode 开启,并持续至解除解锁。其目的是在仍处于地面时保持 AirMode 关闭;油门一旦超过该设置,AirMode 会在整个油门范围内保持启用。
set yaw_rate_acceleration_limit = 50?
[0..200?]
RC12 中改名为 rate_accel_limit。
偏航角速度加速度限制是 Betaflight(2DOF)PIDC 对偏航跳变抑制的替代方案。它采用不同且更有效的工作方式,限制偏航轴的快速加速与减速,因为这类变化正是跳变的来源。Legacy PIDC 请使用 d_yaw。
摇杆可能要求四轴飞行器达到超出其能力的状态,但 PID 控制器仍会尝试纠正并提高电机输出,从而产生突兀动作。加速度限制为 PID 控制器提供保护:限制加速度使其更平滑,也有助于抑制偏航轴上较严重的 I-term windup。 横滚和俯仰轴也可采用相同机制,但默认关闭;启用后可获得更平顺的飞行特性。
set gyro_lowpass_level = HIGH
[NORMAL, HIGH]
设置截止滚降的强度/陡峭程度。更陡的滚降相比平缓滚降会引入更多延迟。 Boris 表示:“以我对下降设置的看法,陀螺仪不需要特别陡的截止;D-term 才是需要更多滤波的一侧。”
以下 CLI 命令针对每个配置文件,因此每个配置文件中的命令可能有所不同。
set pid_tolerance_band = 0
[0..200]
set tolerance_band_min_reduction = 40
[0..100]
降低 PID 控制器不断搜寻误差的效应。
PID 控制器始终在搜寻误差,其中 P 与 D 的反应最快。当误差很小,例如前飞或悬停时,并不需要大量修正;PID 控制器会适度“放松”,避免持续追求绝对误差为零。其放松程度由 tolerance_band_min_reduction 的百分比确定。
例如,可借此在一定程度上消除偏航噪声,但可能需要重新调校。
set pid_controller = BETAFLIGHT
[LEGACY, BETAFLIGHT]
set dterm_lowpass_level = HIGH
[NORMAL, HIGH]
设置截止滚降的强度/陡峭程度。更陡的滚降相比平缓滚降会引入更多延迟。
set dterm_lowpass = 100
[0..500]
set dterm_notch_hz = 0
设为零即禁用该滤波器。
[0..500]
set dterm_notch_cutoff = 150
[1..500]
set dterm_setpoint_weight = 120
[1..200]
RC8 CLI 的变更
新增设置:
set blackbox_on_motor_test = OFF
[OFF,ON]
diff showdefaults
新增默认值:
set dterm_notch_hz = 260
set dterm_not
off = 160
set pid_at_min_throttle = ON
set failsafe_procedure = DROP
[AUTO-LAND,DROP]
RC12 CLI 中的更改
新配置器会以 deg/sec 表示 RC rate,即摇杆最大角速度。 Expo 及其他设置最终也会以正确名称显示。
set rate_accel_limit = 0
[0..1000] 提高该值可帮助降低低动力四轴飞行器的回弹。
set yaw_rate_accel_limit = 220
[0..1000]
名称已更改。说明请参阅上文 yaw_rate_acceleration_limit。
set accum_threshold = 130
[15..1000]
set yaw_accum_threshold = 32
[15..1000]
set iterm_throttle_gain = 0
[0..200]
Joshua Bardwell 的说明:
iterm_throttle_gain 源于我提出的一项建议:大致按油门位置的导数提高 I 增益。我注意到,为在油门急加速和急收油时保持俯仰一致性,必须显著提高 I 增益,可能约 20 点。因此我建议在油门快速变化时人为提高 I 项。iterm_throttle_gain 用于控制这种提高的强度。
set zero_cross_allowance = 2
[0..50]
rc_rate, rc_rate_yaw
不带曲线的线性速率,可配置至 2000 deg/sec。
roll_srate, pitch_srate, yaw_srate
与此前相同的 Super Expo rate,但不再需要通过 feature 激活。设为 0 即禁用 Super Expo;例如现在可只在一个轴上启用,而不在另一个轴上启用。
rc expo
新版 Expo 使用更低数值,曲线更平滑,并提供更多中点手感调节空间,特别适合线性速率。
注意:srate 取代旧的 Roll、Pitch 与 Yaw rate,因此仍可通过使用 MSP 的应用(例如 MWOSD)调节。
调整超级博览会费率的技巧。
将 rc_rate 调至符合预期的中段摇杆手感,再增减 srate 以改变过渡和最大摇杆角速度。
srate 的优点是,即使两端变化,它也会尽量保持中段手感不变,类似反向 Expo 的概念。
ctzsnooze 的帖子解释了这些设置: [http://www.rcgroups.com/forums/showpost.php?p=35602942&postcount=37292]
Boris 的帖子展示旧速率与新速率,以及使用和不使用 SRATE 设置时的差异: [http://www.rcgroups.com/forums/showpost.php?p=35704903&postcount=38205]
注意:关于 Rates 与 Expos 的历史,请参阅 FAQ 中的 “What is the story on the different Rates and Expos?”。
RC13 CLI 中的更改和新功能
命令 dfu:
强制 F1 和 F3 进入 DFU 模式。
RC14 CLI 中的更改和新功能
将 P-term 设定点权重改作仅作用于 Super Rates。
关于使用新功能的讨论:
Legacy PID 控制器
这是重写的 MWREWRITE PID 控制器,使用整数运算而非浮点运算。 部分用户可能更喜欢它;也建议在 F1 处理器上用它运行更高的 PID loop rate。
Betaflight 2DOF PID 控制器
这是全新的 PIDC。
P、I、D 三个分量彼此完全独立地工作,因此属于并联 PID 控制器。
此外,它将 2DOF 架构的设定点权重用于微分分量。因此从技术角度说,它对应此处 pid2 中的 Kp、Ki、Kd、c。
Boris 关于 Legacy 和 2DOF PIDC 差异的帖子: [http://www.rcgroups.com/forums/showpost.php?p=35460572&postcount=35822]
Joshua 的帖子解释了 2DOF PIDC 和设定点权重:
Betaflight 3.0 的新型二自由度 PID 控制器是最令人兴奋的功能之一。以下说明新的“设定点权重”滑块的作用,也会介绍新的 RC 插值功能。
PID 控制器中的误差可分为外部扰动产生的误差,以及移动设定点产生的误差。2DOF PID 控制器可以区分这两类误差;换言之,它允许控制 PID 对摇杆动作的响应激进程度。
P 项设定点权重主要控制超调。提高 P 项设定点权重会带来更锐利的摇杆响应、更低的 P 增益,以及更多超调和振荡;降低它则会带来更柔和的响应、更高的 P 增益,以及更少的超调和振荡。
D 项设定点权重较难描述。提高它会使整体飞行手感更锐利、更精确,但也会因精确响应摇杆的每个细微变化而降低平顺性。降低它则会带来更平滑、更“自然”的飞行体验,但响应会更柔和、精确度也更低。
关键在于:这些特性仅在 PID 控制器响应摇杆动作时显现。摇杆不动或缓慢移动时,影响不明显或不存在,PID 控制器的工作方式与此前完全相同。因此,P、I、D 用于调校四轴飞行器对全部输入的整体响应,包括风等外部扰动;设定点权重滑块则专门调校其对摇杆动作的响应。
Joshua 的有关此内容的视频(注:适用于 3.0): [https://www.youtube.com/watch?v=4zncyYdAZPU]
V3.0.1
D-term setpoint:0 = Measurement,1 = Error。高于 1 表示更多 Error/更多摇杆导数;2 = 两倍 Error。 第二个滑块原本是 P setpoint,与 2DOF PID 控制器及各 RC 版本中的最初描述一致;但其效果不如预期,因此被改作第一个滑块的 Transition。 进入横滚动作时使用 Error;从横滚回到中点摇杆时,则更多地过渡至 Measurement,使动作更平滑。 此处 D setpoint transition 为 1 表示完全不发生过渡,即完全采用设定点权重中的 Error。低于 1 时,摇杆回中会逐渐、更平滑地过渡至 Measurement。
例如,若你喜欢 Measurement 在快速摇杆输入下的平滑性,同时也喜欢 Error 带来的灵敏、偏机械式响应,现在可以在两者之间取折中:保持很高的摇杆响应,又不牺牲回中时的平滑性。 我个人使用 2.0 的 setpoint 和 0.3 的 transition。0.3 类似于摇杆回中时的指数曲线,可让旋转角速度更早减慢,而非到最后一刻才减速,从而防止突兀感。
关于“设定点权重”滑块使用及最新 Betaflight PIDC(2DOF)调校的新资料暂列于此。以下帖子来自成功通过这些设置“调掉”不良飞行行为的用户。
这些内容也许应加入新的 FAQ;欢迎在 Boris 的讨论帖中提出建议。
ctzsnooze 的一般解释:
在湍流中飞行时,四轴飞行器会受到大量外部输入。若气流拍击使设定横滚角速度与陀螺仪报告值之间产生误差,PID 系统必须进行修正。大多数 PID 系统会对外部影响“欠校正”,因为“过度校正”会引发振荡。调校的目标是尽可能减小欠校正幅度。调校得很高的四轴飞行器会始终接近自振荡临界点;通常不会调得这么高,因为它难以容忍状态不佳的螺旋桨,电机还可能过热。不过有了新的滤波选项,有时可提高调校强度而不产生这些问题。
I 项的建立和释放都需要时间。因此,以中速穿过略有颠簸的空气且出现“航线漂移”时,提高 I 项通常有帮助。但 I 项过高可能导致:离开一股气流并进入下一股时,累积的 I-term 修正恰好朝相反方向作用,需要约半秒才会“释放”。所以增加 I-term 并非总能解决问题;它当然无法修复快速抖振,因为响应太慢,过高的 I 对缓慢漂移也未必有益。
另一方面,D 对突变立即响应;抖振越快,其响应也越快。它对缓慢漂移几乎不起作用(这正是 I 项的任务)。
P 可应对任何速度的抖振,但主要在角度偏差较大时发挥作用;对于微小而快速的偏差,D 更有效。四轴飞行器若已调校良好且横滚停止干脆,通常也应有良好的抗风表现。
若滤波较重、螺旋桨相对电机偏重,且四轴飞行器本就有桨流扰动或摆振问题,它大概也难以有效应对风致抖振。
若要在强湍流中高速飞行,需要非常灵敏的 P、D 以及响应快的轻质螺旋桨。四轴飞行器的空气动力学表现越好越有利。可尝试将 P、D 提高到高于“常规”值,并观察能否在略高滤波下运行,即采用更激进的调校。这样的调校可能增加电机过热或其他振荡风险,也要求螺旋桨状态良好,因此未必适合作为日常调校;但通常会比调校较低的机体更能应对风。
来自 QuadMcFly 的帖子:
我曾尝试在主力特技四轴飞行器上调校这些顽固的 5x4.5x3HBN 螺旋桨,主要只是想看看能否调好。关键做法最终有些反直觉。
基本上,我必须调整 3.0.1 的设定点滑块以补偿螺旋桨较慢的过渡速度,且做法与直觉完全相反。D 设定点滑块必须几乎推到最左,Transition 设定点滑块则推到最右,因此本质上近似旧版的“Measurement”D 计算方式。随后可重新提高 P 增益,弥补 Measurement 方法带来的平滑性并恢复一些干脆感。还必须大幅提高 D 才能抑制桨流扰动;虽然尚未完全消失,但效果已相当好。横滚和俯仰 I 增益也很高。结果令人满意:高油门时仍有少量桨流扰动,但应可用少量 TPA 消除,又不会牺牲太多摇杆手感;当前 TPA 为 0。
来自 Woody_99 的“BB 日志视频回复”主题的帖子:
- 问题:需要一点帮助来微调我的几台 X 型四轴飞行器。 (130 和 250 尺寸。BF 3.01) 在激烈的高油门 180 度转弯中,两台机都有些抖动。 我持续提高 D,这似乎有帮助,但方向对吗?电机并不热。 根据我的理解,这似乎是正确的,但我想再次检查我是否走在正确的轨道上。
- 建议:是的,只要电机不发热,提高 D 应是抑制桨流扰动的正确方向。 务必运行 Blackbox 日志,检查振荡及其他异常。
BF 3.0.x 仍很新,但 Boris 的讨论帖已讨论 PID 选项卡中的两个滑块。调整它们似乎确实可帮助消除桨流扰动并优化飞行表现。不过公开经验很少,因此对具体调法所知有限。
- 结果:两台机的 D 都只提高了几个点。桨流扰动有所改善,但仍然存在。 我没有继续提高 D,而是尝试顶部滑块(Setpoint Weight)。130 尺寸机第一次调整后,Setpoint Weight 为 2.36 时桨流扰动完全消失。 250 尺寸机作相同的首次调整后更好,但仍有少量问题;第二次调整后,第二台机的抖动也消失了,Setpoint Weight 为 2.46。 两台机的 Setpoint Transition 都为 0.3。
这可能只是安慰剂效应,因为我并不清楚滑块的具体作用;但两台四轴飞行器的表现都前所未有地好。 电机温度只略高于环境温度,因此我认为已经调好。 但电池就未必如此了,今天飞得太好,我确实把它们压得很狠。
Boris 对 Dterm 滑块的评论:
这两个滑块很简单,只要用极端值体验差异即可。 上方滑块决定摇杆响应的锐利程度(摇杆输入的加速度)。 下方滑块决定摇杆回中时响应的平滑程度。
上方滑块高:响应最锐利。 下方滑块高:摇杆回中时响应最锐利,但也最可能产生突兀感。因此可使用更高的 Transition 减速度将其平滑化。
Tesseract1984 的滑块调校建议:
我的自由式设置是将上方滑块降至 1.7,再调整下方滑块直至消除回弹;最终数值为 0.8(修正)。
注意:使用该方法前,四轴飞行器必须已完成良好调校:没有噪声问题,桨流扰动极少(我改用 DShot 后几乎没有桨流扰动)。若未先完成基础调校,只会不断追逐这些滑块,难以判断它们对调校的实际影响。
先调 PID,最后再调滑块。这只是个人经验,或许有更好的方法,但它对我有效。另外,调校时不要畏惧使用 D;在监测电机温度的同时持续提高,直至桨流扰动受控。我的 3.1 数值比其他任何版本都高得多。
Boris 的回复:
这说法有效。不同螺旋桨所需的滑块值甚至可能不同。对于通常弹性更强的 bullnose 螺旋桨,我倾向于使用较低的 Setpoint Transition,这样无需牺牲调校的锐利度。
Joshua Bardwell 关于 Betaflight 3.0 设定点权重(2DOF PID 控制器) 的视频
来自 Tesseract1984 的更多调整提示:
是的……我几乎认为 3.0.1 之后应该有一段说明,提醒大家重新审视可接受数值范围的固有看法。
我记得在 2.9.1 中,D 一旦超过 26 就意味着调坏了,通常必须从头开始。现在 3.1 的横滚与俯仰 D 分别为 46、50,电机仍然很冷。相同动力系统的 P 也比其他版本高很多。由于桨流扰动已经控制良好,我基本不再继续提高 D。
是的,若动作结束时发生回弹,降低 Transition 滑块同样有帮助。
场景 1:桨流扰动
- 提高 D,同时留意电机温度。
- 电机温度高但仍有桨流扰动?降低 P,再次尝试提高 D。
场景 2:摇杆回中时的行为
- 调整滑块。
- Transition 滑块专门在摇杆回中时引入部分减速,使停止不那么突兀。
零油门时的 PID 控制
原帖作者 MasterZap:
我尝试清楚说明如下:
正如 Boris 所说,这里有三项设置:
Motor Stop(2016 年不应再使用,忽略即可)
Air Mode(所有人都应使用)
pid_at_zero_throttle
!! BORIS - 若我有误请纠正我!
刚解锁时,pid_at_zero_throttle 会完全关闭 PID。电机转速高于零后,PID 开始工作。至于其是否持续工作到解除解锁,我不确定;但如下所述,这并不重要。
我猜这个“功能”的动机是避免用户抱怨台架上电机转动,或许如此。对我而言,使用下挂式电池时,四轴飞行器几乎无法站稳;我实际上希望零油门仍有 PID,否则解锁后它必然会翻倒。我需要它在地面上保持稳定。
AirMode 同样有启动阈值;超过该阈值后,它会保持开启至解除解锁。此外 AirMode 覆盖 pid_at_zero_throttle。即使 pid_at_zero_throttle 本身不保持状态,AirMode 会保持状态,且由于覆盖关系,它使 pid_at_zero_throttle“实际上保持有效”。因此,只要加过油门,在解除解锁前都拥有完整控制权。
是否已越说越清楚?
/Z
陷波滤波器
请参阅:Blackbox 日志记录与使用
以下说明陷波滤波器。
Joshua Bardwell 关于陷波滤波的视频: [https://www.youtube.com/watch?v=UQOqYOBSCc8]
Robogenisis 演示是否使用陷波滤波器的短视频: [https://youtu.be/ic6Np86Jsrs]
关于如何以及何时设置 LPF 和陷波滤波器的讨论: 什么时候应该添加什么过滤器? ...当尝试减少 dterm 振动时,您如何决定何时 i) 增加 dterm 过滤,以及 ii) 只是稍微减少 dterm 增益?
R.A.V. 的说明:
以下是对 3.0 新陷波滤波器的解释,结合新的 PR 编写。也许 waltr 最清楚其中内容应放在 Wiki 的何处。
摘自维基百科:
引文:在信号处理中,带阻滤波器(band-stop 或 band-rejection filter)让大多数频率不受改变地通过,同时将特定范围内的频率衰减至很低水平。它与带通滤波器相反。陷波滤波器是阻带很窄(高 Q 因子)的带阻滤波器。
PID loop 依据当前陀螺仪角速度和设定点计算误差,并命令电机修正该误差。电机响应速度有限,尝试修正 200 Hz 以上高频成分没有意义。 因此引入低通滤波器。它会保留大多数低于截止值的频率,但在截止频率处已衰减 -3 dB,且随频率升高衰减增加。 遗憾的是,部分配置噪声极大,现有衰减不足,为去除 200 Hz 以上噪声只能把滤波器截止频率降至 70 Hz 或 60 Hz。 这会损失截止频率至 100 Hz 之间的有用信息。更低截止频率也表示更高的滤波器延迟,尤其不利于 D-term,且可能加剧桨流扰动。
陷波滤波器是可为陀螺仪数据和 D-term 数据启用的附加滤波器。在信号进入低通滤波器前,它会去除大量噪声。 这样便无需把低通滤波器的截止值降得过低。 低带宽陷波滤波器配合高截止低通滤波器,相比单独使用低截止低通滤波器,延迟更小、噪声更少。
默认情况下滤波器关闭;设置中心频率后即启用。
中心频率由 gyro_notch_hz 调节,下侧截止频率由 gyro_notch_cutoff 调节。
对 D-term,对应设置为 dterm_notch_hz 和 dterm_notch_cutoff。
中心频率应为电机平均频率,很可能在 200 Hz 至 300 Hz 之间。 设置截止值时,应避免让滤波器范围低于 100 Hz。请记住,该频率处的衰减已经是 -3 dB。
我的四轴飞行器噪声很大,平均电机频率为 250 Hz,以下设置运行良好:
gyro_notch_hz = 250
gyro_notch_cutoff = 130
dterm_notch_hz = 250
dterm_notch_cutoff = 130
gyro_lowpass = 110
dterm_lowpass = 0
yaw_lowpass = 0
这表示陷波滤波器先从陀螺仪信号移除噪声,再由低通滤波器进一步改善信号。 D-term 中仍存在部分噪声,因此需要另一个滤波器。我的案例中,单独的陷波滤波器已足以消除残余噪声;相比低通滤波器,其延迟更低,并让 D-term 与 P-term 保持更一致的相位。 对于这台已滤波陀螺仪的四轴飞行器,偏航不需要滤波。
陷波滤波器要求在陀螺仪与 D-term 的每个轴上执行额外浮点运算,因此 F1 target 启用后可能变慢。 我认为,正确设置的陷波滤波器也能帮助噪声较低的四轴飞行器,尤其对 D-term 有益。
没有 Blackbox,很难确定中心电机频率。我已研究查看器当前的频谱实现,并会增加更容易获取频率的选项。该值无需极其精确,建议从中心频率 200 至 250 开始。4S 上的高 KV 电机会比 3S 上的低 KV 电机产生频率更高的噪声。
Cutoff 描述滤波器响应的下限;为降低延迟,不应设得过低。我认为没有人需要低于约 130。
横滚/偏航云台混控
来自 FieserKiller:
请注意,在此版本 BF 中它不再永久生效,必须在 Modes 选项卡中配置。我把它绑定到一个开关,因此终于可以让朋友驾驶我的四轴飞行器,而不会因不熟悉的控制方式而坠机。
调整技巧
俯仰轴 D 可以提高到多高?
今天买了一些 HQ Durables,发现我原本适用于 5x4x3 的调校不适合它们。设备为 KISS24 ESC、运行 BF 3.0 的 KISSFC,以及 Lumenier RX2206 电机。我可以降低俯仰 P,但锁定感不如较高 P 增益时;不过 P 较高时,D 几乎必须调到 40 左右。这样合理吗?谢谢,Thomas。
Boris 的回答:
若只是回弹,可以尝试降低 P setpoint weight。
也可尝试测试 D-term setpoint 为 0。
确认上述两项是否能消除提高 D 的需求。
但只要电机不热且声音仍平稳,高 D 完全不是问题。
Thomas 的回复:
将 D-term setpoint 设为 0 后,完全没有回弹。我会尝试提高 Pitch 的 P 并降低 D,以获得想要的手感。
关于使用新配置器的讨论
许多设置字段旁都有 ? 标记。将鼠标悬停其上可查看用途的简短说明。
-
Measurement 与 Error 现在通过 D-term 滑块设置。 完全右移为 Error,完全左移为 Measurement;实际情况可能不同。 向下滚动到 PIDs 区域下方。 BF PIDC 不使用
PID_DELTA_METHOD(或 CLI 变量)下拉列表,改用滑块。 0 对应 2.9 的 Measurement,1 对应 2.9 的 Error。 详情请参阅上文 2DOF PIDC 说明。 -
此外,在 4k/2k 下 Blackbox logging rate 是否有错误?Blackbox 中显示 1k 是 50%,但实际应是 25%。 不是错误。BB rate 是 PID 控制器速率的百分比,因为这才是重要数据的来源。
-
OSD 选项卡只适用于集成 OSD 芯片的 FC 板,Omnibus 就是其中之一。