Betaflight飞控之FAILSAFE机制

news2024/9/20 18:33:26

Betaflight飞控之FAILSAFE机制

  • 1. 源由
  • 2. 设计
    • 2.1 触发方式
      • 2.1.1 遥控开关触发
      • 2.1.2 遥控信号丢失
    • 2.2 FAILSAFE策略
      • 2.2.1 Drop mode
      • 2.2.2 Landing mode
      • 2.2.3 GPS Return mode
  • 3. GPS救援状态机
  • 4. 总结
  • 5. 参考资料

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/802691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE初阶】——第七节.Servlet入门学习笔记

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:JavaEE进阶 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录 前…

基于 moleculer 微服务架构的智能低代码PaaS 平台源码 可视化开发

低代码开发平台源码 低代码管理系统PaaS 平台 无需代码或通过少量代码就可以快速生成应用程序的开发平台。 本套低代码管理后台可以支持多种企业应用场景,包括但不限于CRM、ERP、OA、BI、IoT、大数据等。无论是传统企业还是新兴企业,都可以使用管理后台…

filebeat介绍

1、filebeat概述 Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash或kafka进行索引 1.1 Filebeat两个主要组件 prospector 和 harvester。 prospector&a…

SpringBoot项目使用MyBatisX+Apifox IDEA 插件快速开发

今天跟大家介绍两个快速开发项目的插件。能大大提高开发效率。希望能帮助到大家。 1、MyBatisX 插件 MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题&#xf…

Spark Streaming流媒体引擎

Spark Streaming是Spark的上一代流媒体引擎。Spark Streaming不再有更新,它是一个遗留项目。Spark中有一个更新且更易于使用的流媒体引擎,称为结构化流媒体 概述 Spark Streaming是核心Spark API的扩展,支持实时数据流的可扩展、高吞吐量、…

技术分享 | App测试时常用的adb命令你都掌握了哪些呢?

adb 全称为 Android Debug Bridge(Android 调试桥),是 Android SDK 中提供的用于管理 Android 模拟器或真机的工具。 adb 是一种功能强大的命令行工具,可让 PC 端与 Android 设备进行通信。adb 命令可执行各种设备操作&#xff0…

Python Geoplotlib 可视化地理数据的综合指南

Geoplotlib: Exploring the World with Python Python Geoplotlib 可视化地理数据的综合指南 Geoplotlib是一个强大的Python库,用于可视化地理数据。它提供了一种简单直观的方法来创建地图并在其上绘制地理数据。 Geoplotlib 建立在 matplotlib 和 numpy…

有哪些常用的设计素材资源网站?

设计师要想在瞬息万变的设计世界中紧跟潮流,就需要不断探索和访问流行的UI设计网站,看看什么是时尚。UI设计网站也是寻求可能解决方案、脚本和设计反馈的好地方。Behance对很多设计师来说并不陌生,是Adobe的UI设计网站。然而,2022…

蓝桥杯单片机第九届国赛 真题+代码

iic.c /* # I2C代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行编写相关代码或以该代码为基础&#xff0c;根据所选单片机类型、运行速度和试题中对单片机时钟频率的要求&#xff0c;进行代码调试和修改。 */ #include <STC1…

【Vue3】局部组件和全局组件

1. 局部组件 Card.vue <template><div class"card"><header><div>标题</div><div>副标题</div></header><section>内容</section></div> </template><script setup lang"ts"…

Jenkins集成SonarQube保姆级教程

Jenkins是自动化部署平台&#xff0c;一个粗眉大眼的糙汉子&#xff01; SonarQube是代码扫描平台&#xff0c;一个眉目清秀的小女子&#xff01; 有一天&#xff0c;上天交给我一个任务&#xff0c;去撮合撮合他们&#xff01; 我抬头看了看天&#xff0c; 不&#xff0c;…

第五章 传输层

第五章 传输层 5.1 运输层的功能 运输层功能&#xff1a; 运输层为应用进程之间提供 端到端的逻辑通信&#xff08;但网络层是为主机之间提供逻辑通信&#xff09;。 运输层还要对收到的报文进行差错检测。 运输层提供面向连接和无连接的服务 ​ 从通信和信息处理的角度看…

Jsp+Ssh+Mysql实现的简单的企业物资信息管理系统项目源码附带视频指导运行教程

由jspssh&#xff08;springstruts2mysql&#xff09;实现的企业物资信息管理系统&#xff0c;系统功能比较简单&#xff0c;实现了基本的管理员、操作员等用户管理、物品分类管理、物品管理、入库管理、出库管理、库存预警、客户管理、供应商管理等基本功能需要的可以联系我分…

Linux工具【1】(编辑器vim、编译器gcc与g++)

vim详解 引言vimVim的三种模式及模式切换普通模式下操作底行模式下操作 gcc与ggcc的使用&#xff08;g类似&#xff09;预编译编译汇编链接静态库与动态库 总结 引言 vim&#xff08;vi improved&#xff09;编辑器是从 vi 发展出来的一个文本编辑器。 代码补全、编译及错误跳…

C# 定时器封装版

一、概述 在 Winform 等平台开发中&#xff0c;经常会用到定时器的功能&#xff0c;但项目定时器一旦写多了&#xff0c;容易使软件变卡&#xff0c;而且运行时间长了会造成软件的闪退&#xff0c;这个可能是内存溢出造成的&#xff0c;具体原因我也没去深究&#xff0c;另一个…

2023年五大团队任务管理跟踪软件排行榜揭晓

企业对高效生产力的需求让团队任务管理跟踪软件在现代商业环境中变得越来越重要&#xff0c;然而市场上存在众多的任务管理工具&#xff0c;选择合适的工具对于提高工作效率和实现组织目标至关重要。本文章将提供一个客观的团队任务管理跟踪软件排行榜&#xff0c;帮助读者根据…

springboot创建并配置环境(二) - 配置基础环境

文章目录 一、介绍二、配置系统属性和环境变量三、配置自定义属性命令行参数四、作为应用配置信息 一、介绍 在上一篇文章&#xff1a;springboot创建并配置环境(一) - 创建环境中我们探讨了springboot是如何根据当前应用程序类型去创建对应的环境实例的。接下来探讨如何去配置…

java上传和解压任意压缩包

java上传zip文件并解压读取_java上传压缩包解压_梓隽的博客-CSDN博客 添加依赖 <dependency><groupId>com.github.junrar</groupId><artifactId>junrar</artifactId><version>7.4.1</version></dependency><dependency&g…

无涯教程-jQuery - hide( speed, callback)方法函数

hide(speed&#xff0c;[callback])方法使用优美的动画隐藏所有匹配的元素&#xff0c;并在完成后触发可选的回调。 hide( speed, [callback] ) - 语法 selector.hide( speed, [callback] ); 这是此方法使用的所有参数的描述- speed - 代表三个预定义速度("slow…

四. 点云着色(真彩点云)方案

前面内容&#xff1a; 一. 器件选型心得&#xff08;系统设计&#xff09;--1_goldqiu的博客-CSDN博客 一. 器件选型心得&#xff08;系统设计&#xff09;--2_goldqiu的博客-CSDN博客 二. 多传感器时间同步方案&#xff08;时序闭环&#xff09;--1 三. 多传感器标定方案&…