Betaflight飞控之FAILSAFE机制

92 篇文章 43 订阅
本文详细介绍了Betaflight飞控的FAILSAFE机制,包括触发方式如遥控开关和信号丢失,以及相应的救援策略如Dropmode、Landingmode和GPSReturnmode。在GPS救援状态下,文章提到了复杂的GPSReturnHome功能和可能的风险。尽管有救援机制,但在异常情况下仍存在炸机风险。作者强调了对飞控固件深入理解和学习的重要性。
摘要由CSDN通过智能技术生成

1. 源由

之前对航模飞控之FAILSAFE机制做了一个简单的探讨,并根据自己的理解做了简单的需求整理。

为了更好的了解现行Betaflight开源飞控对上述情况的处理方法,以及采用何种策略进行救援,能将损失减到最小。

接下来一起来看下Betaflight的设计逻辑。

注:以下内容主要来自Wiki文档以及部分代码的理解,因个人的理解,以及时间的变化,可能实际代码会有所变更。如果发现有出入的地方,也请小伙伴们能评论给出大家的意见和建议,谢谢!

2. 设计

在逻辑上分为几个步骤:

  • Step 1:signal validation:触发源验证
  • Step 2:failsafe stage 1:
  • Step 3:failsafe stage 2

注1:某些FAILSAFE策略执行过程呈现时间段性质,中途可能存在变数,就会出现不同的异常情况。
注2:笔者之前遇到的就是在RTL时,出现了GPS信号丢失,导致失控坠落的问题。

从软件设计角度,实现功能还不是最难的,而最为可贵的是对异常场景的分析,以及软件应对的方法。这就对设计者提出更高的要求。

现在的神经网络、AI算法等,其实更多是去解决多维度、多因素情况下的解决方案。从另一个层面,也可以看出对于这种问题的建模凸显了研发人员对于业务的抽象理解能力。这也就是为什么很多研发人员只会用已有的模型,无法通过模型调优或者重新建模来解决实际问题,因为这里最为关键的一环是业务模型的理解和抽象。

好,回到我们的正题上,设计上分为两个方面来讨论:

  1. 触发方式
  2. FAILSAFE策略

2.1 触发方式

鉴于Betaflight是FPV飞控开源软件,其作为第一人称视角的飞行控制,主要控制设备是遥控器。

  • 遥控开关触发
  • 遥控信号丢失

注:当接收机故障,输出信号和正常遥控器连接时输出信号一样的时候,飞控将无法感知遥控信号丢失的场景。

2.1.1 遥控开关触发

  • “阳光”用例:1–>2–>3–>4–>5–>6
  • Failsafe Stage1:1–>[2, 3]阶段过程,开关中断执行
  • Failsafe Stage2:1–>2–>3–>[4, 5]阶段过程,开关中断执行
    在这里插入图片描述

2.1.2 遥控信号丢失

  • “阳光”用例:1–>2–>3–>4–>5–>6–>7–>8–>9–>10
  • RXLOSS Hold:[1, 4]阶段过程,信号闪断恢复
  • Failsafe Stage1:1–>2–>3–>4–>5–>[6, 7]阶段过程,信号恢复
  • Failsafe Stage2:1–>2–>3–>4–>5–>6–>7–>[8, 9]阶段过程,信号恢复
    在这里插入图片描述

2.2 FAILSAFE策略

通过文档研读,目前有四种策略:

  1. Drop mode
  2. Landing mode
  3. GPS Return mode
  4. “Just Drop” mode

注:其中"Just Drop" 有点类似后门或者异常处理的一种模式,用户并非明显能感知或者通过配置得到。

2.2.1 Drop mode

在这里插入图片描述

2.2.2 Landing mode

在这里插入图片描述

2.2.3 GPS Return mode

Betaflight早前实现的是GPS救援,并非RTL功能,因为他是期望靠近飞手的时候,飞手直接遥控接管着陆。

因此,#4这个步骤实现的并非理想,不过目前Betaflight4.4.2看上去,该功能已经比较好了。
在这里插入图片描述

3. GPS救援状态机

通常来说Drop/Landing策略是比较容易理解的,而真正相对来说比较复杂的是GPS ReturnHome功能。要不,为什么说不要轻易远航,因为远航涉及很多异常。

就近飞哪怕是炸机,捡下飞机就是了,而远航不仅不一定能捡到,还有下方可能是住宅,可能是马路、街道,甚至可能是高速公路,如果出现意外,那就不是简单的捡飞机问题了。

因此,我们必须对飞控固件有充分的理解和认识,只有这样才能应对各种意外场景。

注:话虽这么说,毕竟我也是炸机了,对吧,哈哈!!!需要不断学习。

这个是GPS救援的状态机,主要关注以下几点:

  • RESCUE_IDLE:最终稳定状态(GPS救援功能未触发)
  • RESCUE_INITIALIZE:GPS救援功能打开后进入的第一个状态
  • RESCUE_ABORT:GPS信号异常或者其他异常,会进入该状态(会导致disarm,如果还么有降落,那就直接炸机了)

在这里插入图片描述

4. 总结

根据FAILSAFE策略执行流程以及GPS救援状态机的分析,当Betaflight执行救援时,如果遇到异常,仍然存在炸机风险。

当然相关问题,还在和官方沟通中,期待后续能有比较完美的解决方案。

详见:What will BF do when GPS signal lost, during GPS rescure? #11970

5. 参考资料

【1】航模飞控之FAILSAFE机制
【2】Betaflight Failsafe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值