失控起飞预防
描述
失控起飞预防(Runaway Takeoff Prevention)是一项安全功能:若 PID 控制器在上电后的首次起飞中检测到不安全响应,便会自动解除解锁。有时被称为“塔斯马尼亚恶魔”,某些配置或硬件问题会在解锁后或抬升油门起飞时立即造成剧烈、危险的失控自旋。常见原因包括:
- 桨叶安装不正确
- 电机顺序错误
- 电机旋转方向错误
- 飞控(陀螺仪)方向不正确
此功能只会在上电后首次起飞发生失控时介入并自动解除解锁,正常飞行不应受到影响。
警告
虽然此功能旨在防止大多数类型的失控起飞事件,但不能保证能够防止所有此类事件的发生。硬件的多样性和环境的变化意味着在某些情况下此功能可能无法提供额外的保护。与往常一样,飞行员有责任确保其飞机配置正确并安全飞行。
操作
从 Betaflight 3.3 开始,失控起飞预防功能默认启用。操作分为两个阶段:
起飞:
上电后的首次解锁后,该功能会检测过高的 PID 响应;这表示飞行器未正确响应,且正发展为失控事件。检测到后飞控会自动解除解锁。蜂鸣模式“一长一短”表示发生失控起飞;OSD 和 CLI 会将 RUNAWAY 显示为禁止解锁原因。
成功飞行:
飞行器成功起飞并进入受控飞行后,该功能会在本电池周期内停用。此后飞手可随时解锁和解除解锁,无需重新启用该功能。
成功飞行的检测包括查看油门水平和控制杆活动以及飞行器在一段时间内对 PID 控制器的正确响应。通过在检测到成功飞行后停用该功能,我们可以防止随后因碰撞或门/分支夹子而导致的意外解除。
该短视频是激活功能的示例:https://youtu.be/FEczCjAWv_0
飞行不成功:
若触发,飞手应立即解除解锁。该功能会保持活动,直至一次成功飞行将其清除。未解决问题就再次解锁,很可能再次触发保护。极少数情况下会误触发,可通过配置参数降低其概率。
配置
一般来说,不需要调整配置参数。默认值是根据测试选择的,应该会产生良好的结果。然而,与往常一样,来自用户的额外测试和反馈可能会确定对这些设置的进一步优化。预计一旦失控起飞预防功能成熟,一些可调值可能会被消除并替换为优化的硬编码值以简化配置。
第一组参数配置该功能在失控起飞事件期间如何检测和激活:
runaway_takeoff_prevention = ON
将其设置为 OFF 以完全禁用该功能。请注意,不会针对失控起飞事件提供保护,并且固件的行为将与实现该功能之前一样。 我们不建议禁用该功能。 失控事件可能会非常暴力,即使看似很小的设置问题(例如桨叶安装不正确)也可能会造成人身伤害或财产损失。
其余参数影响用于检测正常受控飞行并停用电池剩余部分的功能的逻辑:
runaway_takeoff_deactivate_throttle_percent = 25(BF 4.0 中降至 20)
决定可视为成功飞行的最低油门百分比阈值,范围 0 至 100。除油门外,逻辑还要求横滚、俯仰或偏航摇杆活动(最小 15% 偏转),且 PID 控制器能正常控制飞行器、PID_sum 保持受控。条件满足时会累积成功飞行时间。通常无需调整:大多数四轴飞行器需要约 25% 或更高油门才能起飞 / 悬停。极轻或动力极强、可在远低于 25% 油门飞行的机型,可将其降至接近实际悬停油门。设得过低可能过早停用逻辑,真实失控事件中无法触发;设得过高则只会在油门超过设定值时累积飞行时间,导致停用更慢。
runaway_takeoff_deactivate_delay = 500
这是必须累积才能停用该功能的成功飞行时间(以毫秒为单位)。有效值范围从 100(0.1 秒)到 1000(1 秒)。默认值 500(0.5 秒)似乎非常可靠,不需要调整。目标是在我们确定飞行器正常飞行后,在“合理”但短时间内停用逻辑。然而,我们希望它在我们到达可能发生碰撞或其他事件的第一个点(例如在比赛期间的第一个门口)之前停用。提高此值将延迟停用,并且崩溃或门/分支剪辑可能会导致意外解除。将该值降低太多可能会导致逻辑过早停用并且无法在失控事件中提供保护。值得注意的是,延误是指满足其他标准(如油门水平、操纵杆活动(至少 15% 偏转)等)的累积飞行时间量。因此,如果油门降至限制以下或 R/P/Y 摇杆居中,则停用之前的“实际”经过时间可能会长于 0.5 秒。可以使用 Blackbox 日志记录来查看实际行为 - 请参阅下面的调试部分。
调试
可以在 Blackbox 日志中捕获其他数据,从而深入了解失控起飞预防功能的操作。通过以下方式启用捕获此附加数据:
set debug_mode = RUNAWAY_TAKEOFF
这会在日志中启用额外调试值,用于观察功能的工作状态。
debug[0] - 布尔值(0/1)
该值指示该功能是否处于活动状态 (1) 并处于检测模式。一旦成功飞行停用该功能,该值将为 (0)。
debug[1] - 布尔值(0/1)
指示某些轴的 PID_sum 值是否超过 runaway_takeoff_threshold 并且我们正处于 runaway_takeoff_activate_delay 毫秒的倒计时。假设 PID_sum 值继续超过阈值,逻辑正在准备自动上锁。
debug[2] - 布尔值(0/1)
表示已满足停用标准(油门油位、操纵杆活动和 PID 响应),并且我们正在累积飞行时间。
debug[3] - 数值
表示到目前为止累计的飞行中毫秒数。一旦达到 runaway_takeoff_deactivate_delay,该功能将被禁用。任何时候 debug[2] = 1 时,debug[3] 都会累积时间。
随着失控起飞预防功能根据用户社区的反馈变得成熟,调试功能可能会变得不必要并在未来的某个时间被删除以节省空间。
已知问题
- 起飞后立即严重坠机可能导致自动解除解锁。这通常不是坏事;请勿在起飞时坠机。
- 起飞时严重弹跳 / 撞击地面可能导致解除解锁。默认配置下需要很大的冲击才可能发生,概率不高。
- 未装桨解锁后大幅移动 R/P/Y 摇杆可能触发解除解锁。这是正常现象:PID 控制器尝试控制飞行器,但因没有螺旋桨而得不到正确响应,
PID_sum会不断增大,表现得像失控事件。该功能允许有限的台架测试;剧烈偏航仍可能触发,但通常仅轻摆摇杆查看电机响应并无问题。连接 Configurator 时测试会暂时关闭失控起飞预防,因此可不限次数地进行无桨台架测试。 - 拆桨“手飞”可能触发解除解锁。**桨叶装上时,绝不要将已解锁的飞行器握在手中。**拆桨后电机旋转时移动飞行器,PID 会对抗该运动;但没有螺旋桨,
PID_sum会增大,可能触发解除解锁。保持飞行器静止,仅移动摇杆感受电机响应,则不会触发。
版本历史
Betaflight4.0
- 将
runaway_takeoff_deactivate_throttle_percent默认值更改为 20。
Betaflight 3.3
- 通过删除不必要的调整参数
runaway_takeoff_threshold和runaway_takeoff_activate_delay简化配置。发现以前的默认值是合适的,无需调整。 - 增强逻辑以在较高油门条件下加速停用。
Betaflight 3.3RC3
- 在激活检测中添加了陀螺仪速率检查,以改进台架测试
Betaflight 3.3RC2
- 在飞行员使用反乌龟从碰撞中恢复后重新激活该功能。为下次武装和起飞提供保护,以防螺旋桨损坏或其他可能导致失控的问题。
- 当反乌龟处于活动状态时暂时禁用该功能,以防止在飞行员尝试翻转时触发。
- 与 Betaflight 应用程序 10.2.0 或更高版本配合,在连接到地面站时解锁时暂时禁用该功能。这允许不受限制的台架测试,而不会触发上锁的风险。无需手动禁用该功能,避免在飞行前忘记重新启用该功能。
Betaflight 3.3RC1
- 初始版本