- 博客(90)
- 资源 (1)
- 收藏
- 关注
原创 BetaFlight代码解析(22)—任务调度器和系统基础架构
Betaflight采用基于优先级的协作式多任务调度系统,通过静态和动态优先级机制确保飞行控制等关键任务的实时性能(微秒级精度)。系统维护多级任务队列,包含实时飞行控制、传感器处理、通信等模块,并采用任务老化机制防止低优先级任务饥饿。调度器提供多种调试模式进行性能监控,包括CPU利用率统计、任务执行时间分析等。该系统支持动态任务管理,可在运行时调整任务执行频率和状态,同时通过负载计算和特殊加急规则保障系统稳定性。
2025-12-12 17:35:43
406
原创 BetaFlight代码解析(21)—LED 控制和视觉反馈
Betaflight的LED灯条控制系统采用可编程RGB LED提供飞行状态可视化反馈,支持WS2811/WS2812灯条。系统通过分层配置实现灵活控制,每个LED可独立设置位置、功能(如飞行模式指示、电池状态)和叠加效果(如彩虹、警告闪烁)。采用HSV色彩空间管理颜色,支持亮度调节和平滑过渡。底层WS2811驱动通过DMA实现高效数据传输,主更新循环协调各处理层工作。警告系统提供关键状态提示(如低电量、翻滚模式),配置可通过CLI命令实时调整。该系统实现了从底层驱动到高层状态显示的完整LED控制方案。
2025-12-12 07:43:24
856
原创 BetaFlight代码解析(20)—屏幕显示(OSD)
本文档详细介绍了飞行器屏幕显示(OSD)系统的整体架构和功能实现。系统由主控制器、元素渲染、配置管理、预警机制等子系统组成,支持多种飞行数据的实时叠加显示,包括高度、电量、姿态等信息。采用参数组管理和元素变体技术,提供灵活的显示格式配置。系统通过显示端口抽象层支持多种输出设备,并与飞行控制系统深度集成,实现实时数据显示和飞行后统计功能。预警机制能根据飞行状态提供分级警报,确保飞行安全。
2025-12-11 20:53:28
474
原创 BetaFlight代码解析(19)— 用户交互系统
Betaflight通信系统概述:该文档详细介绍了Betaflight飞行控制器的通信架构,重点阐述了其串口管理系统和多种通信协议。系统通过UART、SoftSerial和USBVCP等串口类型实现设备交互,支持MSP、CLI、遥测和OSD等多种协议。文档还包含串口配置方法、功能分配表以及常见故障排除指南,强调端口共享和波特率匹配等关键配置要点,为Betaflight系统的正确安装和调试提供了重要参考。
2025-12-11 16:24:18
590
原创 BetaFlight代码解析(18)—视频发射器控制
摘要:FPV视频发射控制系统采用分层架构,支持SmartAudio、Tramp等协议的统一接口。SmartAudio具有双向通信、自动波特率检测功能,使用命令-响应模式;Tramp协议更简单,采用固定波特率。系统通过vtxVTable_t结构提供通用接口,并定期更新配置。SmartAudio包含多种设置命令,Tramp则通过16字节帧传输数据。此外,系统还支持Spektrum远程控制,通过32位帧实现频段、功率等参数调整。(150字)
2025-12-04 07:45:00
291
原创 BetaFlight代码解析(17)—遥测系统
本文介绍了Betaflight遥测系统的架构设计,该系统实现了飞行控制器与外部设备的数据传输功能。系统采用统一框架支持六种主要协议(FrSky SmartPort、CRSF、Graupner HoTT、MAVLink、LTM和FlySky iBus),每种协议针对不同接收机生态和带宽需求优化。核心功能包括协议初始化、数据收集与格式化、传输调度,特别支持MSP隧道实现远程配置。系统通过位标志控制传感器数据选择性传输,并采用端口共享机制协调串口资源。CRSF协议实现了高带宽数据传输等高级特性,SmartPort
2025-12-03 08:00:00
431
原创 BetaFlight代码解析(16)—串口管理
Betaflight的串口管理系统采用分层架构统一管理多种串口类型(USB、UART、SoftSerial等),支持最高247万波特率。系统通过端口共享规则和配置管理实现多协议通信(MSP、遥测、GPS等),包含端口分配、状态跟踪和驱动程序等核心功能。提供初始化、开闭端口等API接口,并与CLI集成实现运行时配置,确保各功能模块协调工作。该系统有效隔离硬件细节,为上层应用提供统一的串口通信抽象层。
2025-12-02 08:15:00
296
原创 BetaFlight代码解析(15)—通信系统
Betaflight通信系统采用分层架构,统一管理多种串行接口(UART/USART、软件串行、USBVCP等),通过唯一标识符区分端口类型。系统支持端口功能分配与共享机制,包括MSP、遥测等协议共享,并强制执行防冲突规则。提供预定义波特率选择和自动检测功能,采用虚拟表模式实现硬件无关的API,允许底层驱动优化。该系统抽象了硬件差异,为飞行控制器、GPS等外设通信提供统一接口。
2025-12-01 07:45:00
267
原创 BetaFlight代码解析(14)—定时器系统
摘要:Betaflight的定时器系统作为硬件抽象层,管理微控制器的定时器外设,为RC信号测量、PWM生成等关键功能提供支持。该系统通过timerHardware_t结构实现硬件无关的定时器通道表示,包含全局数组管理所有可用通道。提供资源分配机制、输入捕获/输出比较配置接口,以及基于链表的灵活回调系统处理定时器事件。系统还整合DMA实现高效数据传输,特别适用于电机控制等高频应用,支持DShot等协议通过精确的定时器配置和DMA传输实现。
2025-11-28 08:30:00
1036
原创 BetaFlight代码解析(13)—脉宽调制和电机控制
本文档介绍了Betaflight中的PWM输出系统架构,该系统通过硬件抽象层管理定时器通道,为电机和舵机提供控制信号。系统核心包括pwmOutputPort_t数据结构,负责电机值到PWM脉冲的转换,支持标准飞行和3D飞行两种配置模式。其中3D模式支持双向电机控制,并设有中立点和死区保护。系统通过timerChannel_t结构与硬件定时器集成,提供频率、周期等参数配置功能,同时实现了边界检查等安全机制。此外,系统还集成了伺服控制功能,但使用与电机不同的定时参数。
2025-11-27 08:15:00
418
原创 BetaFlight代码解析(12)—电机输出系统
摘要:电机输出系统是飞行控制的关键环节,负责将PID控制信号转换为ESC和舵机所需的PWM信号。系统采用pwmOutputPort_t结构管理输出通道,支持普通和3D两种飞行模式,通过analogInitEndpoints()函数计算脉冲宽度范围。提供电机状态管理、伺服控制功能,并依赖硬件定时器生成精确信号。系统与PID控制器、遥控配置、定时器等子系统紧密集成,确保飞行控制的精确执行。
2025-11-26 07:45:00
285
原创 BetaFlight代码解析(11)— 遥控输入和故障安全
本文档详细介绍了Betaflight的遥控(RC)输入处理系统和故障保护机制。系统通过多种协议接收无线电信号,包含信号处理、验证和故障保护功能。当信号丢失或无效时,系统会执行预设的故障保护程序,包括自动着陆、立即解除武装或GPS返航等模式。文档阐述了系统架构、状态机运行机制、协议支持、信号处理参数范围以及信号质量监测方法。系统通过任务调度与飞行控制集成,支持灵活的通道映射和缩放配置,并提供多种故障保护模式选择,确保飞行器在信号异常时的安全操作。
2025-11-25 08:00:00
53
原创 BetaFlight代码解析(10)— 电池和电源监控
Betaflight的电池和电源监控系统由电池状态管理、电压监控和电流监控三个子系统组成,可实时监测电池健康状况。系统通过状态机跟踪五种电池状态(初始化、正常、警告、严重、未检测),支持自动/手动电池计数检测,并提供低电压保护功能。电压监测支持多种输入源并具备稳定性检测,电流监测可计算毫安时和瓦时消耗。系统通过参数组配置管理,与飞行控制系统深度集成,实现智能电源管理和安全保护。
2025-11-24 07:45:00
52
原创 BetaFlight代码解析(9)— GPS定位系统
Betaflight的GPS定位系统通过多模块协同处理GPS数据,结合传感器融合实现精确位置和高度估计。系统支持UBLOX和NMEA协议,采用状态机控制初始化配置流程,并维护核心数据结构存储位置、速度、卫星信息等关键数据。UBLOX配置采用版本适配机制,支持动态导航模型和SBAS增强定位。通过串口数据接收、协议解析和帧验证流程更新解决方案数据,并结合气压计计算高度信任度。系统提供丰富的配置选项,支持GPS救援、OSD显示等功能,并通过LED直观显示状态。该架构为无人机导航和返航提供了可靠的位置基准。
2025-11-21 07:30:00
715
原创 BetaFlight代码解析(8)— 陀螺仪和加速度计处理
Betaflight的IMU传感器处理系统详细介绍了陀螺仪和加速度计的数据采集、滤波、校准全流程。系统支持多传感器冗余处理,包含动态低通滤波(根据油门调整截止频率)、运动检测校准、数据平均融合等核心功能。重点阐述了陀螺仪更新流程(校准、对准、下采样)和加速度计衍生值计算(加加速度、震级),同时配备溢出检测、偏航旋转恢复等多重安全机制。该系统通过参数组实现灵活配置管理,为飞行控制提供精准可靠的传感器数据。
2025-11-20 07:45:00
194
原创 BetaFlight代码解析(7)— 传感器系统
Betaflight固件的传感器系统负责收集飞行控制器所需的关键数据,包括陀螺仪、加速度计、磁力计、气压计、GPS和电池监测等。该系统采用标准化处理流程:初始化配置、定期数据更新、滤波处理及飞行控制集成。各传感器按优先级分配不同采样频率,陀螺仪数据(8-32kHz)优先级最高。系统配备多种滤波算法(PT1/2/3、双二阶)以优化数据质量,并提供各类传感器的校准功能(零偏校准、加速度计水平校准、磁力计补偿等)。这种模块化设计确保了飞行控制的稳定性和精确性。
2025-11-19 07:45:00
566
原创 BetaFlight代码解析(6)— IMU和姿态系统
摘要:本文介绍了一种基于MahonyAHRS算法的飞行器IMU姿态系统,该系统融合陀螺仪、加速度计和磁力计/GPS数据,通过四元数、旋转矩阵和欧拉角三种数学表示实现高精度姿态估计。系统采用自适应增益控制,根据飞行状态动态调整参数,并与飞行控制子系统深度集成,提供实时姿态数据用于飞行稳定控制。文中详细阐述了系统架构、核心算法、参数配置以及与飞行控制的交互,同时介绍了包括单元测试和软件在环测试在内的验证方法,确保系统可靠性和实时性。
2025-11-18 08:00:00
418
原创 BetaFlight代码解析(5)— PID控制器
Betaflight的PID控制器是保持飞行器稳定的核心算法,通过比例、积分、微分三组件实时校正姿态误差。该系统还包含前馈、动态D项限制、反重力等高级功能,通过多PID配置文件实现灵活调参,并提供多种调试模式分析性能。这些优化使控制器在保证稳定性的同时提高响应速度,是飞行调优的关键部分。
2025-11-17 08:23:00
1229
原创 BetaFlight代码解析(4)- 飞行控制系统
摘要:Betaflight飞行控制系统采用模块化实时架构,核心包括PID控制器(处理三轴姿态误差)、IMU传感器融合(提供精确姿态数据)和混控系统(转换控制指令)。系统支持多种飞行模式,通过任务调度器确保确定性执行(1-8kHz),并提供调试工具(PID时序分析、黑匣子记录)和配置文件管理(4种PID/速率配置)。其精密控制算法(含反重力/前馈等)与可扩展架构,能适应各类飞行器配置,实现稳定且高性能的飞行控制。(149字)
2025-11-14 08:15:00
931
原创 BetaFlight代码解析(3)- 构建 Betaflight
本文档详细介绍了Betaflight固件的构建流程,包括系统要求、开发环境搭建和构建过程。主要内容涵盖:1.构建前的准备工作,包括Git、GNUMake、ARM-GCC等工具的安装;2.支持的操作系统(Linux/macOS/Windows)和构建系统架构;3.详细的构建步骤和命令,如特定目标构建、清理构建产物等;4.版本控制和配置管理;5.构建输出类型和命名规则;6.开发者工具和持续集成支持;7.常见问题排查方法。文档提供了从源代码构建到固件刷写的完整指南,适合开发人员参考。
2025-11-13 15:43:55
1174
原创 BetaFlight代码解析(2)- 系统架构
Betaflight飞行控制系统采用实时控制架构,核心为协作式任务调度器,协调传感器处理、电机控制等子系统。系统从main()入口初始化后进入调度循环,通过参数组框架管理配置,支持运行时切换。关键组件包括电机混控器(支持多种机型混控算法)和状态管理系统(处理启动、飞行模式及错误状态)。系统采用共享全局状态而非消息传递实现子系统通信,如蜂鸣器通过beeper()函数与飞行控制联动。整个架构注重实时性,通过配置持久化和类型安全设置确保稳定运行。
2025-11-12 09:00:00
279
原创 BetaFlight代码解析(1)- 概览
本文概述了开源飞行控制器固件Betaflight的系统架构和功能特性。该固件采用模块化设计,支持多旋翼和固定翼飞行器,兼容STM32系列处理器。核心功能包括运动控制、传感器集成、通信系统和用户界面,采用GPLv3许可证。项目采用年度双版本发布周期,支持统一目标配置和持续集成开发流程,要求开发者遵循严格的贡献规范。用户可通过配置工具和社群支持快速入门。
2025-11-11 08:38:39
1108
原创 PX4-Autopilot代码解析(22)— Gazebo模拟
PX4的Gazebo仿真框架采用GZBridge组件实现与GazeboGarden的集成,支持100Hz的双向通信。该系统提供时钟同步、传感器数据采集(支持多种传感器类型)和执行器命令传输功能,并处理FLU与FRD坐标系的转换。支持多种无人机配置,参数化控制传感器集成和功能分配。传感器仿真采用PX4直接计算和Gazebo数据桥接两种方式,包含噪声模型处理。通过SIM_GZ_EN等参数组实现功能配置,启动过程由POSIX初始化系统根据环境变量和参数决定。GZBridge初始化顺序确保传感器时序正确。
2025-11-07 07:58:35
980
原创 PX4-Autopilot代码解析(21)-仿真与测试
本文介绍了PX4软件在环(SITL)仿真系统架构,该系统无需物理硬件即可测试飞行控制算法。系统支持多种仿真后端(Gazebo、jMAVSim等),通过分层脚本自动选择适配器,并详细说明了Gazebo桥接器的关键组件和坐标转换机制。文中还描述了传感器数据模拟方法、机身配置方案以及基于参数控制的传感器模块,为算法验证提供了真实数据生成功能。该系统通过灵活的参数配置,支持开发人员模拟不同传感器场景和测试环境。
2025-11-06 08:30:00
1129
原创 PX4-Autopilot代码解析(20)-手动控制界面
摘要:该系统实现了一个多源手动控制接口,支持无线电遥控器和MAVLink操纵杆输入,通过RC通道校准、功能映射和输入源选择等处理流程,生成标准化的控制指令。系统具备安全开关处理、飞行模式切换和摇杆武装手势检测功能,采用uORB主题进行数据传递,并通过参数配置系统行为。主要模块包括RC输入处理和手动控制选择,可处理模拟/数字输入并保证飞行安全。
2025-11-05 07:56:44
1027
原创 PX4-Autopilot代码解析(19)- MAVLink 实现
摘要:PX4的MAVLink协议实现支持自动驾驶仪与外部系统的通信,采用多实例架构处理UART/UDP传输。核心功能包括消息序列化、uORB系统集成、参数同步管理和多模式消息流配置。系统支持实例间消息转发和硬件在环模拟,通过参数驱动配置实现灵活的端口映射。该实现作为PX4内部uORB消息系统与外部MAVLink协议的桥梁,提供心跳、GPS、姿态等关键数据的双向通信能力。
2025-11-04 08:49:47
386
原创 PX4-Autopilot编译环境配置
摘要: 针对PX4环境配置时出现的Python版本依赖冲突(Jammy系统默认安装Python 3.10.6-1~22.04.1,而python3-dev依赖3.10.6-1~22.04),提供已验证解决方案: 强制刷新软件源:sudo apt clean && sudo apt update --fix-missing; 优先降级Python(推荐):安装并锁定标准版本(3.10.6-1~22.04),再安装匹配的python3-dev; 高级方案:手动下载带.1的Dev包安装,需同步处理
2025-11-03 09:20:23
382
1
原创 PX4-Autopilot代码解析(18)-通信系统
摘要:PX4通信系统实现了自动驾驶仪的内外部通信功能,包括MAVLink协议的外部通信和uORB框架的内部消息传递。系统支持多实例MAVLink配置,处理来自遥控器和外部设备的手动控制输入,并通过可配置的消息流传输关键数据。文档详细描述了系统架构、消息处理机制和通信配置选项,为PX4与地面站、配套计算机和遥控器的交互提供了完整解决方案。
2025-11-03 08:19:14
680
原创 PX4-Autopilot代码解析(17)-执行器输出系统
摘要:PX4执行器输出系统是连接控制算法与硬件执行器的关键接口,支持PWM、DShot和PX4IO三种输出协议。系统采用模块化架构,包含PWMOut、DShot和PX4IO三个核心驱动,均实现标准化的OutputModuleInterface接口。PWM输出采用硬件定时器管理,DShot支持数字ESC协议及双向通信,PX4IO则通过UART与专用板通信并具备安全特性。系统通过平台抽象层实现硬件无关性,以固定周期(PWM 400Hz/DShot最高8kHz)完成从控制指令到物理输出的转换流程,包括安全评估、输
2025-11-02 10:39:51
934
原创 PX4-Autopilot代码解析(15)-多旋翼飞行器控制
多旋翼飞行器采用级联PID控制系统实现位置和速度控制,包含位置、速度和加速度三个控制回路。系统以约100Hz频率运行,通过位置控制器生成速度设定点,速度PID控制器输出加速度设定点,最终转换为推力和姿态指令。核心模块处理传感器数据、轨迹生成和约束管理,支持起飞序列、平滑轨迹和抗饱和逻辑。关键参数包括位置/速度增益、速度/倾斜限制和悬停推力估算,系统还具备动态约束调整和推力分配功能,优先保障垂直控制安全。
2025-10-30 08:15:00
696
原创 PX4-Autopilot代码解析(15)-多旋翼飞行器控制
摘要:本文介绍了多旋翼飞行器的级联PID控制系统,采用三层控制回路(位置、速度、加速度)实现精确飞行控制。系统以100Hz频率运行,包含位置控制器、速度PID控制器和推力/姿态转换模块。关键组件包括位置平滑处理、航向控制、动态约束管理和抗饱和逻辑。系统通过参数化控制增益(MPC_XY_P等)和运行限制(速度/倾斜角度/推力)实现稳定飞行,并支持自动参数调节。最后阶段将加速度指令转换为推力矢量和姿态设定值,在推力饱和时优先保证垂直控制稳定性。
2025-10-30 07:53:26
620
原创 PX4-Autopilot代码解析(14)-固定翼控制
本文档详细介绍了PX4中固定翼控制系统的级联架构设计,主要包含三个核心模块:TECS总能量控制系统负责管理飞机的动能和势能平衡;姿态控制系统将导航指令转换为机体角速率设定值;速率控制系统则最终生成执行器控制命令。系统采用空速补偿机制,支持多种飞行模式,并通过参数化设计实现灵活配置。文档同时提供了各控制模块的关键参数配置范围,为系统调试提供参考。
2025-10-28 08:43:32
469
原创 PX4-Autopilot代码解析(13)-车辆控制
本文档介绍了PX4飞行控制系统中不同机型的控制架构与实现方法。系统采用级联控制回路将轨迹设定值转换为执行器指令,包含多旋翼、固定翼和垂直起降三种机型控制模块。多旋翼采用PID级联控制(100Hz),固定翼使用TECS能量管理系统,垂直起降则结合两者优势。控制核心库包括位置控制、TECS算法、航点轨迹平滑和起飞管理等功能模块,通过uORB主题与飞行管理系统集成,支持位置、速度、加速度和姿态等多种设定点输入模式。
2025-10-28 08:30:00
1633
原创 PX4-Autopilot代码解析(12)-飞行模式管理器
PX4飞行模式管理器是自动驾驶系统的核心模块,在50Hz工作周期内协调飞行任务并生成轨迹设定点。它接收导航命令,通过分层任务结构(包括自动导航、手动控制和紧急模式等)实现飞行模式切换,并输出位置控制指令。系统采用工作队列模型,支持任务平滑切换和故障安全机制,同时与位置控制器、导航器等模块深度集成,确保飞行控制的实时性和可靠性。关键功能包括航点跟踪、地形跟随、应急处理等,通过参数配置可调整飞行特性。
2025-10-27 08:26:06
871
原创 PX4-Autopilot代码解析(11)-导航模块
PX4导航模块是自主飞行的核心协调器,负责管理任务执行、RTL操作及多种飞行模式(起飞/降落/巡航)。该模块通过生成位置设定点连接高级飞行计划与低级控制,采用状态机机制在不同导航模式间切换。关键功能包括:处理MAVLink飞行指令、执行复杂任务序列(支持航点爬升/VTOL过渡等)、智能RTL目标选择(考虑距离/参数/安全因素),并与飞行堆栈通过uORB消息深度集成。系统采用参数化配置(NAV_/RTL_/MIS_*系列参数),支持地理围栏检测和运行时行为调整,实现安全可靠的自主飞行控制。
2025-10-23 09:00:00
762
原创 PX4-Autopilot代码解析(10)-指挥官模块
PX4自动驾驶系统的Commander模块是核心状态机,负责协调飞行器状态转换和安全逻辑。该模块通过多层架构实现布防/撤防管理、飞行模式切换、故障安全处理等功能,包含UserModeIntention、HealthAndArmingChecks等关键组件。系统采用严格的命令验证机制,支持12种标准命令处理,并通过Failsafe系统集成多重故障保护策略。模块还实现CPU/RAM资源监控、地理围栏检测等健康检查功能,最终发布权威的飞行控制状态信息。这种设计确保了飞行器在各种工况下的安全可靠运行。
2025-10-22 08:00:00
727
原创 PX4-Autopilot代码解析(9)- 飞行控制系统
PX4飞行控制系统(FCS)采用分层架构设计,由指挥官(Commander)、导航器(Navigator)和飞行模式管理器三大核心组件构成。指挥官负责状态管理、布防/撤防和模式转换;导航器处理高级导航功能如任务执行和RTL返航;飞行模式管理器则根据当前状态选择合适的飞行任务生成轨迹设定点。系统通过定义明确的导航状态和数据结构实现组件间通信,支持多种飞行模式的转换与指令处理,为飞行器提供从高级任务规划到低级控制的无缝衔接。
2025-10-21 08:03:22
1093
原创 PX4-Autopilot代码解析(8)-传感器集成
PX4传感器集成系统采用模块化架构,通过uORB主题实现传感器数据采集、验证和处理。系统支持GPS/GNSS(含u-blox/Septentrio协议)、UAVCAN总线和地磁模型等多源传感器,提供参数化配置接口。核心组件包括协议解析、数据验证和状态估计模块,其中GPS子系统支持双天线航向和RTK校正,Septentrio驱动实现SBF协议全解析,UAVCAN框架标准化传感器桥接,WMM模型提供磁场补偿。系统通过多层验证机制(范围检查、物理一致性等)确保数据可靠性,并采用滞后延迟策略管理状态切换。
2025-10-20 09:22:40
676
原创 PX4-Autopilot代码解析(7)-扩展卡尔曼滤波器(EKF2)
PX4自动驾驶系统的EKF2扩展卡尔曼滤波器模块通过多传感器数据融合实现飞行器状态估计。该模块采用分层架构设计,包含状态预测、协方差预测和测量更新等核心功能,支持多种高度源融合和故障检测机制。EKF2具有高度可配置性,通过参数系统控制不同传感器组合和算法行为,并提供多实例运行能力增强容错性。其计算密集型特性经过优化,以100Hz速率输出姿态、位置、速度等关键状态信息,为飞行控制系统提供可靠的状态估计基础。
2025-10-17 08:00:00
1112
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅