BetaFlight模块设计之二十八:MainPidLoop任务分析

基于BetaFlight开源代码框架简介的框架设计,逐步分析内部模块功能设计。

MainPidLoop任务

描述:这个应该是最为关键的PID飞行控制任务。

 ├──> 初始化
 │   ├──> [x]硬件初始化
 │   └──> [x]业务初始化
 ├──> 任务
 │   ├──> [x]实时任务
 │   ├──> [x]事件任务
 │   └──> [v]时间任务[TASK_PID] = DEFINE_TASK("PID", NULL, NULL, taskMainPidLoop, TASK_GYROPID_DESIRED_PERIOD, TASK_PRIORITY_REALTIME),
 ├──> 驱动
 │   ├──> [x]查询
 │   └──> [x]中断
 └──> 接口
     └──> TBD

taskMainPidLoop任务分析

该任务4个子任务,依次顺序执行。

注:这里的任务不存在中途被scheduler打断的情况,因此全局变量也不存在部分更新,包括对资源进行锁保护的问题。总的来说BetaFlight并非有系统调度概念,更像一个高级裸奔框架代码。

taskMainPidLoop
 ├──> subTaskRcCommand
 ├──> subTaskPidController
 ├──> subTaskMotorUpdate
 └──> subTaskPidSubprocesses

subTaskRcCommand子任务

主要根据遥控器操作进行相应的控制动作。

subTaskRcCommand
 ├──> condition1: isUsingSticksForArming() && rcData[THROTTLE] <= rxConfig()->mincheck //最小油门,解锁飞控
 ├──> condition2: !((mixerConfig()->mixerMode == MIXER_TRI || mixerConfig()->mixerMode == MIXER_CUSTOM_TRI) && servoConfig()->tri_unarmed_servo) //不是三角翼飞机
 ├──> condition3: mixerConfig()->mixerMode != MIXER_AIRPLANE    //尚未支持,忽略
 ├──> condition4: mixerConfig()->mixerMode != MIXER_FLYING_WING  //不是固定翼
 ├──> <满足1,2,3,4条件>
 │   └──> resetYawAxis();  //固定翼或者三角翼,伺服传动控制襟翼和尾翼应该是可以的,即使没有arm也应该可以操作(无危险)
 └──> processRcCommand

subTaskPidController子任务

subTaskPidController
 ├──> pidController(currentPidProfile, currentTimeUs);
 ├──> <USE_RUNAWAY_TAKEOFF>
 │   └──> 【起飞异常判断;如果异常直接disarm飞机,防止意外安全事故发生】
 └──> <USE_PID_AUDIO><isModeActivationConditionPresent(BOXPIDAUDIO)>
     └──> pidAudioUpdate

subTaskMotorUpdate子任务

subTaskMotorUpdate
 ├──> mixTable(currentTimeUs);
 ├──> <isMixerUsingServos()>
 │   └──> writeServos();
 └──> writeMotors();

subTaskPidSubprocesses子任务

subTaskPidSubprocesses
 ├──> <sensors(SENSOR_GPS) || sensors(SENSOR_MAG)>
 │   └──> updateMagHold();
 └──> <!cliMode && blackboxConfig()->device>
     └──> blackboxUpdate(currentTimeUs);

注:blackbox业务,详见BetaFlight模块设计之三十一:blackbox模块分析

业务函数整理(后续再做跟进)

初步看了下下面函数,很多是和业务强相关的内容,不在框架代码中展开。尤其是部分内容涉及到算法控制,比如:2DOF pid控制等。

注:后续我们针对业务算法等,逐步展开细节内容按照功能模块的方式进行展开,比如:滤波、pid算法、取样滤噪等。

  1. processRcCommand
  2. pidController
  3. pidAudioUpdate
  4. mixTable
  5. writeServos
  6. writeMotors
  7. updateMagHold
  8. blackboxUpdate
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Betaflight 10.8.0是一款开源的多轴飞行控制软件。它专为无人机设计,具有强大的飞行控制能力和丰富的功能。如果您想下载Betaflight 10.8.0,您可以通过以下步骤获得它。 首先,您可以在Betaflight官方网站上获得最新版本的下载链接。访问官方网站后,找到下载页面并点击进入。在下载页面上,您将看到各种不同的版本可供选择。您需要找到10.8.0版本,并点击下载链接。 下载完成后,您可以将文件保存到您的计算机上的任意位置。请确保选择一个方便访问的位置,以便稍后安装软件。 然后,解压下载的文件。您可以使用常见的解压软件,例如WinRAR或7-Zip。右键点击文件并选择“解压缩到当前文件夹”或类似选项。解压完成后,您将在目标文件夹中看到Betaflight 10.8.0的文件和文件夹。 最后,您可以通过连接无人机到计算机上,使用飞行控制器如F4或F7,然后通过Betaflight Configurator来加载Betaflight 10.8.0。您只需打开Betaflight Configurator并选择正确的端口,然后将固件升级为Betaflight 10.8.0即可。 总之,下载Betaflight 10.8.0只需几个简单的步骤。请记住,使用Betaflight控制软件可能需要一定的技术知识和理解。在操作过程中,务必仔细阅读官方文档和教程,以确保您正确且安全地使用Betaflight 10.8.0。 ### 回答2: Betaflight是一款十分受欢迎的开源飞控固件,用于控制无人机的飞行和飞控功能。Betaflight 10.8.0是Betaflight团队开发的最新版本。 要下载Betaflight 10.8.0,首先需要访问Betaflight官方网站。在网站上,你可以找到下载页面。你可以在导航栏中找到“固件下载”或类似的选项。点击进入下载页面。 在下载页面,你会看到不同版本的Betaflight固件列在一起。现在你需要找到Betaflight 10.8.0的下载链接。可能有一些列如“最新稳定版”、“测试版”、“老版本”等的选项,你需要选择适合你的选择。找到Betaflight 10.8.0的选项并点击。 点击后,将会有一个提示框显示文件将要保存在电脑中的位置。选择一个你想保存固件文件的位置,并点击“保存”按钮。 下载过程可能需要一些时间,具体取决于你的网络连接和文件大小。一旦下载完成,你就可以在你选择的位置找到下载好的Betaflight 10.8.0固件文件。 下载好Betaflight 10.8.0后,你可以将固件文件烧录到你的飞控硬件中。具体的烧录步骤因不同的飞控硬件而异,你可以在Betaflight官方网站上找到详细的步骤和教程。 总之,要下载Betaflight 10.8.0,可以通过访问Betaflight官方网站,在下载页面中找到Betaflight 10.8.0的下载链接,然后保存到你的电脑中。下载完成后,可以将固件烧录到你的飞控硬件中,并开始享受最新版本的Betaflight带来的功能和飞行体验。 ### 回答3: Betaflight 10.8.0是一款开源的飞控固件,适用于无人机的飞行控制。要下载Betaflight 10.8.0版本,可以按照以下步骤进行操作: 第一步,打开Betaflight官方网站,网址为"https://betaflight.com/"。在网站首页的顶部导航栏中,可以找到一个名为"Downloads"的选项,点击进入。 第二步,进入Downloads页面后,会看到各个版本的Betaflight固件列表。向下滚动页面,直到找到Betaflight 10.8.0版本。点击版本号旁边的下载按钮。 第三步,选择适用于你的机型的固件下载链接。根据你的无人机型号和硬件配置,选择对应的下载链接,比如选择适用于F3飞控的固件。 第四步,点击下载链接后,会开始下载Betaflight 10.8.0的固件文件。下载完成后,将文件保存到你的计算机本地或指定的文件夹中。 第五步,将下载的Betaflight 10.8.0固件文件导入到你的飞控设备中。具体方法可以参考Betaflight官方网站提供的相关教程或使用说明。 总结,要下载Betaflight 10.8.0固件,首先前往Betaflight官方网站的Downloads页面,找到对应版本的固件文件,下载并导入到你的飞控设备中,然后按照相关教程进行设置和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值