- 博客(104)
- 资源 (1)
- 收藏
- 关注
原创 ArduPilot代码解析之十一 — 多旋翼控制系统
本文介绍了ArduCopter多旋翼飞行器的控制系统架构,采用级联控制方式实现从位置指令到电机输出的完整控制流程。系统包含位置控制(50Hz)、姿态控制(400Hz)、速率控制和电机输出四个层级,通过嵌套回路实现精准飞行控制。详细说明了姿态控制系统的角度P控制器和速率PID控制器设计,以及位置控制系统的三级级联结构。同时介绍了电机混控算法和多种机架类型的支持,并阐述了飞行模式与控制系统的集成方式。最后通过ModeLoiter示例展示了从RC输入到电机输出的完整控制流程。
2026-02-08 10:00:00
688
原创 ArduPilot代码解析之十 —Copter飞行模式和状态机
摘要:ArduCopter采用基于Mode基类的分层飞行模式架构,支持约30种不同模式,包括手动控制、自主任务和外部导航等。系统通过mode_from_mode_num()函数实现模式编号到实例的映射,并包含严格的状态机切换验证机制。复杂模式如自动和引导模式使用子状态机管理多阶段操作,各模式通过主控制循环持续执行。该架构与底层控制系统(位置→姿态→速率→电机)无缝集成,提供灵活可扩展的飞行行为实现,同时确保安全模式转换。
2026-02-08 07:30:00
1077
原创 ArduPilot代码解析之九 — ArduCopter(多旋翼飞行器)
ArduCopter是ArduPilot系统中的多旋翼飞行控制方案,支持四旋翼、六旋翼等飞行器。采用分层架构设计,包含400Hz主控制回路、25种飞行模式切换和级联控制结构(位置-姿态-速率)。系统集成共享控制库,实现传感器融合、导航算法和故障保护机制,支持MAVLink通信与全面日志记录。通过模块化设计和多速率调度,为各类多旋翼飞行器提供从手动到全自动的飞行控制解决方案。
2026-02-07 08:30:00
605
原创 ArduPilot代码解析之七 — 自动调谐系统
自动调谐系统通过执行受控飞行机动自动确定飞行器姿态控制回路的最佳PID增益,无需人工干预。系统采用多态类层次结构,针对多旋翼和直升机平台分别实现不同的调谐算法:多旋翼通过"抽搐"机动测量瞬态响应来调整参数,直升机则采用频域分析方法。调谐过程分为多个步骤,包括增益测试、验证和保存,最终应用安全裕度确保稳定性。系统支持通过飞行模式或辅助开关调用,并自动保存优化后的参数。该技术实现了飞行控制参数的智能化优化,显著提升了飞行性能和稳定性。
2026-02-06 08:30:00
1048
原创 ArduPilot代码解析之六 — GPS和位置传感
ArduPilot的GPS子系统支持多种GPS接收器类型,提供位置、速度和时间信息。该系统具有自动检测、多接收器并发连接、RTK校正和传感器数据融合等功能,支持标准GPS、DGPS和RTK定位方案。通过串行、CAN或网络接口连接,可配置多种卫星星座,实现厘米级精度。系统架构采用多实例管理,支持自动故障转移和混合模式,并能与AHRS集成进行位置估计。此外还提供GPS健康检查、航向计算和时间同步等功能,适用于从基本导航到高精度定位的各类应用场景。
2026-02-06 08:00:00
610
原创 ArduPilot代码解析之五 — 无线电控制(RC)输入
摘要:RC输入系统是飞行器控制的核心组件,负责处理遥控接收机信号。系统通过多级转换将PWM脉冲(1000-2000μs)转换为控制指令,支持16个通道和300多种辅助功能。采用三层架构设计,包含通道管理、模式切换和车辆集成功能。系统提供角度和范围两种控制类型转换,并具备防抖机制和覆盖功能。关键特性包括:校准程序确保信号有效性,辅助开关支持3/6位操作,MAVLink覆盖提供3秒临时控制,飞行模式通道实现模式切换。系统还包含直升机专用控制、玩具模式集成和数据记录功能,通过严格的安全检查确保飞行安全。
2026-02-05 07:45:00
695
原创 ArduPilot代码解析之四 — 姿态和位置控制
ArduPilot采用级联控制架构实现飞行器的姿态和位置管理。该系统通过位置→速度→加速度→姿态→角速率→电机指令的逐级转换,将高级指令转化为底层执行信号。位置控制采用三维独立控制,水平轴与垂直轴分别处理;姿态控制通过角度误差→角速率→电机输出的两层级联实现。系统支持多种输入模式,并内置运动学整形功能确保轨迹平滑。不同飞行器类型(多旋翼、直升机、潜艇等)有专门的调参方案,通过调整PID参数、加速度限制等实现最优控制性能。该架构兼顾控制精度与飞行稳定性,适用于各类自主飞行场景。
2026-02-05 07:15:00
823
原创 ArduPilot代码解析之二 — 载具基础系统(AP_Vehicle)
AP_Vehicle是ArduPilot飞行器系统的核心基类,为Copter、Plane等各类飞行器提供通用架构。它包含初始化流程(setup/loop)、参数系统、调度器管理、传感器集成等基础功能,通过虚函数接口支持不同飞行器的特性扩展。系统采用分层设计,共享通用参数和任务,同时允许各飞行器实现特有的控制逻辑和模式管理。这种架构实现了代码复用和接口统一,支持多类型飞行器的灵活开发与维护。
2026-02-04 08:00:00
546
原创 ArduPilot代码解析之三 — 布防和安全系统
摘要:ArduPilot的启动与安全系统通过AP_Arming类实现武装锁定和飞行安全检查。系统支持多种武装方式(遥控指令、硬件开关等),并可通过参数(如ARMING_CHECK、ARMING_REQUIRE)配置预武装检查项目(GPS、电池、传感器等)。安全机制包含故障保护(低电量/RTL)、硬件安全开关和油门联锁等功能,不同载具类型可扩展专属检查逻辑。该系统提供多层防护,建议保留核心安全检查以确保飞行安全,用户需理解配置参数以诊断武装失败或故障保护触发问题。(149字)
2026-02-04 07:30:00
523
原创 ArduPilot代码解析之一 — 核心架构
摘要:ArduPilot采用单线程协作式架构,AP_Vehicle基类提供基础框架,所有车辆类型均继承自该框架。系统包含参数系统、调度器、硬件抽象层等核心组件,通过固定频率主循环执行任务。初始化过程分阶段进行,确保依赖关系满足。参数系统支持持久化存储和动态修改,串口管理系统可灵活分配50多种协议。硬件抽象层保持跨平台兼容性,状态管理跟踪飞行状态。车辆类型通过实现纯虚函数扩展功能,支持脚本和外部控制集成。架构设计兼顾通用性和扩展性,为各类无人机提供统一开发基础。
2026-02-03 14:47:33
1040
原创 ArduPilot 概述
ArduPilot是一款开源自动驾驶系统,采用模块化架构设计,支持多旋翼飞行器、固定翼飞机等多种无人载具。其核心架构分为车辆应用程序、共享库和开发基础设施三层,通过继承基类实现代码复用。系统采用协作式多任务调度,包含400Hz的快速循环任务和低速任务。控制架构采用多层级联设计,从飞行模式逻辑到电机输出逐级转换。系统支持40多种通信协议,具备完善的参数配置、安全检查和故障保护机制。基于WAF构建系统支持200多种硬件板,并配备SITL仿真和自动化测试框架。这种设计实现了自动驾驶系统的模块化、安全性和灵活性。
2026-02-03 14:27:16
846
原创 BetaFlight代码解析(22)—任务调度器和系统基础架构
Betaflight采用基于优先级的协作式多任务调度系统,通过静态和动态优先级机制确保飞行控制等关键任务的实时性能(微秒级精度)。系统维护多级任务队列,包含实时飞行控制、传感器处理、通信等模块,并采用任务老化机制防止低优先级任务饥饿。调度器提供多种调试模式进行性能监控,包括CPU利用率统计、任务执行时间分析等。该系统支持动态任务管理,可在运行时调整任务执行频率和状态,同时通过负载计算和特殊加急规则保障系统稳定性。
2025-12-12 17:35:43
494
原创 BetaFlight代码解析(21)—LED 控制和视觉反馈
Betaflight的LED灯条控制系统采用可编程RGB LED提供飞行状态可视化反馈,支持WS2811/WS2812灯条。系统通过分层配置实现灵活控制,每个LED可独立设置位置、功能(如飞行模式指示、电池状态)和叠加效果(如彩虹、警告闪烁)。采用HSV色彩空间管理颜色,支持亮度调节和平滑过渡。底层WS2811驱动通过DMA实现高效数据传输,主更新循环协调各处理层工作。警告系统提供关键状态提示(如低电量、翻滚模式),配置可通过CLI命令实时调整。该系统实现了从底层驱动到高层状态显示的完整LED控制方案。
2025-12-12 07:43:24
1004
原创 BetaFlight代码解析(20)—屏幕显示(OSD)
本文档详细介绍了飞行器屏幕显示(OSD)系统的整体架构和功能实现。系统由主控制器、元素渲染、配置管理、预警机制等子系统组成,支持多种飞行数据的实时叠加显示,包括高度、电量、姿态等信息。采用参数组管理和元素变体技术,提供灵活的显示格式配置。系统通过显示端口抽象层支持多种输出设备,并与飞行控制系统深度集成,实现实时数据显示和飞行后统计功能。预警机制能根据飞行状态提供分级警报,确保飞行安全。
2025-12-11 20:53:28
696
原创 BetaFlight代码解析(19)— 用户交互系统
Betaflight通信系统概述:该文档详细介绍了Betaflight飞行控制器的通信架构,重点阐述了其串口管理系统和多种通信协议。系统通过UART、SoftSerial和USBVCP等串口类型实现设备交互,支持MSP、CLI、遥测和OSD等多种协议。文档还包含串口配置方法、功能分配表以及常见故障排除指南,强调端口共享和波特率匹配等关键配置要点,为Betaflight系统的正确安装和调试提供了重要参考。
2025-12-11 16:24:18
683
原创 BetaFlight代码解析(18)—视频发射器控制
摘要:FPV视频发射控制系统采用分层架构,支持SmartAudio、Tramp等协议的统一接口。SmartAudio具有双向通信、自动波特率检测功能,使用命令-响应模式;Tramp协议更简单,采用固定波特率。系统通过vtxVTable_t结构提供通用接口,并定期更新配置。SmartAudio包含多种设置命令,Tramp则通过16字节帧传输数据。此外,系统还支持Spektrum远程控制,通过32位帧实现频段、功率等参数调整。(150字)
2025-12-04 07:45:00
540
原创 BetaFlight代码解析(17)—遥测系统
本文介绍了Betaflight遥测系统的架构设计,该系统实现了飞行控制器与外部设备的数据传输功能。系统采用统一框架支持六种主要协议(FrSky SmartPort、CRSF、Graupner HoTT、MAVLink、LTM和FlySky iBus),每种协议针对不同接收机生态和带宽需求优化。核心功能包括协议初始化、数据收集与格式化、传输调度,特别支持MSP隧道实现远程配置。系统通过位标志控制传感器数据选择性传输,并采用端口共享机制协调串口资源。CRSF协议实现了高带宽数据传输等高级特性,SmartPort
2025-12-03 08:00:00
675
原创 BetaFlight代码解析(16)—串口管理
Betaflight的串口管理系统采用分层架构统一管理多种串口类型(USB、UART、SoftSerial等),支持最高247万波特率。系统通过端口共享规则和配置管理实现多协议通信(MSP、遥测、GPS等),包含端口分配、状态跟踪和驱动程序等核心功能。提供初始化、开闭端口等API接口,并与CLI集成实现运行时配置,确保各功能模块协调工作。该系统有效隔离硬件细节,为上层应用提供统一的串口通信抽象层。
2025-12-02 08:15:00
525
原创 BetaFlight代码解析(15)—通信系统
Betaflight通信系统采用分层架构,统一管理多种串行接口(UART/USART、软件串行、USBVCP等),通过唯一标识符区分端口类型。系统支持端口功能分配与共享机制,包括MSP、遥测等协议共享,并强制执行防冲突规则。提供预定义波特率选择和自动检测功能,采用虚拟表模式实现硬件无关的API,允许底层驱动优化。该系统抽象了硬件差异,为飞行控制器、GPS等外设通信提供统一接口。
2025-12-01 07:45:00
381
原创 BetaFlight代码解析(14)—定时器系统
摘要:Betaflight的定时器系统作为硬件抽象层,管理微控制器的定时器外设,为RC信号测量、PWM生成等关键功能提供支持。该系统通过timerHardware_t结构实现硬件无关的定时器通道表示,包含全局数组管理所有可用通道。提供资源分配机制、输入捕获/输出比较配置接口,以及基于链表的灵活回调系统处理定时器事件。系统还整合DMA实现高效数据传输,特别适用于电机控制等高频应用,支持DShot等协议通过精确的定时器配置和DMA传输实现。
2025-11-28 08:30:00
1083
原创 BetaFlight代码解析(13)—脉宽调制和电机控制
本文档介绍了Betaflight中的PWM输出系统架构,该系统通过硬件抽象层管理定时器通道,为电机和舵机提供控制信号。系统核心包括pwmOutputPort_t数据结构,负责电机值到PWM脉冲的转换,支持标准飞行和3D飞行两种配置模式。其中3D模式支持双向电机控制,并设有中立点和死区保护。系统通过timerChannel_t结构与硬件定时器集成,提供频率、周期等参数配置功能,同时实现了边界检查等安全机制。此外,系统还集成了伺服控制功能,但使用与电机不同的定时参数。
2025-11-27 08:15:00
605
原创 BetaFlight代码解析(12)—电机输出系统
摘要:电机输出系统是飞行控制的关键环节,负责将PID控制信号转换为ESC和舵机所需的PWM信号。系统采用pwmOutputPort_t结构管理输出通道,支持普通和3D两种飞行模式,通过analogInitEndpoints()函数计算脉冲宽度范围。提供电机状态管理、伺服控制功能,并依赖硬件定时器生成精确信号。系统与PID控制器、遥控配置、定时器等子系统紧密集成,确保飞行控制的精确执行。
2025-11-26 07:45:00
485
原创 BetaFlight代码解析(11)— 遥控输入和故障安全
本文档详细介绍了Betaflight的遥控(RC)输入处理系统和故障保护机制。系统通过多种协议接收无线电信号,包含信号处理、验证和故障保护功能。当信号丢失或无效时,系统会执行预设的故障保护程序,包括自动着陆、立即解除武装或GPS返航等模式。文档阐述了系统架构、状态机运行机制、协议支持、信号处理参数范围以及信号质量监测方法。系统通过任务调度与飞行控制集成,支持灵活的通道映射和缩放配置,并提供多种故障保护模式选择,确保飞行器在信号异常时的安全操作。
2025-11-25 08:00:00
317
原创 BetaFlight代码解析(10)— 电池和电源监控
Betaflight的电池和电源监控系统由电池状态管理、电压监控和电流监控三个子系统组成,可实时监测电池健康状况。系统通过状态机跟踪五种电池状态(初始化、正常、警告、严重、未检测),支持自动/手动电池计数检测,并提供低电压保护功能。电压监测支持多种输入源并具备稳定性检测,电流监测可计算毫安时和瓦时消耗。系统通过参数组配置管理,与飞行控制系统深度集成,实现智能电源管理和安全保护。
2025-11-24 07:45:00
165
原创 BetaFlight代码解析(9)— GPS定位系统
Betaflight的GPS定位系统通过多模块协同处理GPS数据,结合传感器融合实现精确位置和高度估计。系统支持UBLOX和NMEA协议,采用状态机控制初始化配置流程,并维护核心数据结构存储位置、速度、卫星信息等关键数据。UBLOX配置采用版本适配机制,支持动态导航模型和SBAS增强定位。通过串口数据接收、协议解析和帧验证流程更新解决方案数据,并结合气压计计算高度信任度。系统提供丰富的配置选项,支持GPS救援、OSD显示等功能,并通过LED直观显示状态。该架构为无人机导航和返航提供了可靠的位置基准。
2025-11-21 07:30:00
838
原创 BetaFlight代码解析(8)— 陀螺仪和加速度计处理
Betaflight的IMU传感器处理系统详细介绍了陀螺仪和加速度计的数据采集、滤波、校准全流程。系统支持多传感器冗余处理,包含动态低通滤波(根据油门调整截止频率)、运动检测校准、数据平均融合等核心功能。重点阐述了陀螺仪更新流程(校准、对准、下采样)和加速度计衍生值计算(加加速度、震级),同时配备溢出检测、偏航旋转恢复等多重安全机制。该系统通过参数组实现灵活配置管理,为飞行控制提供精准可靠的传感器数据。
2025-11-20 07:45:00
299
原创 BetaFlight代码解析(7)— 传感器系统
Betaflight固件的传感器系统负责收集飞行控制器所需的关键数据,包括陀螺仪、加速度计、磁力计、气压计、GPS和电池监测等。该系统采用标准化处理流程:初始化配置、定期数据更新、滤波处理及飞行控制集成。各传感器按优先级分配不同采样频率,陀螺仪数据(8-32kHz)优先级最高。系统配备多种滤波算法(PT1/2/3、双二阶)以优化数据质量,并提供各类传感器的校准功能(零偏校准、加速度计水平校准、磁力计补偿等)。这种模块化设计确保了飞行控制的稳定性和精确性。
2025-11-19 07:45:00
717
原创 BetaFlight代码解析(6)— IMU和姿态系统
摘要:本文介绍了一种基于MahonyAHRS算法的飞行器IMU姿态系统,该系统融合陀螺仪、加速度计和磁力计/GPS数据,通过四元数、旋转矩阵和欧拉角三种数学表示实现高精度姿态估计。系统采用自适应增益控制,根据飞行状态动态调整参数,并与飞行控制子系统深度集成,提供实时姿态数据用于飞行稳定控制。文中详细阐述了系统架构、核心算法、参数配置以及与飞行控制的交互,同时介绍了包括单元测试和软件在环测试在内的验证方法,确保系统可靠性和实时性。
2025-11-18 08:00:00
619
原创 BetaFlight代码解析(5)— PID控制器
Betaflight的PID控制器是保持飞行器稳定的核心算法,通过比例、积分、微分三组件实时校正姿态误差。该系统还包含前馈、动态D项限制、反重力等高级功能,通过多PID配置文件实现灵活调参,并提供多种调试模式分析性能。这些优化使控制器在保证稳定性的同时提高响应速度,是飞行调优的关键部分。
2025-11-17 08:23:00
1489
原创 BetaFlight代码解析(4)- 飞行控制系统
摘要:Betaflight飞行控制系统采用模块化实时架构,核心包括PID控制器(处理三轴姿态误差)、IMU传感器融合(提供精确姿态数据)和混控系统(转换控制指令)。系统支持多种飞行模式,通过任务调度器确保确定性执行(1-8kHz),并提供调试工具(PID时序分析、黑匣子记录)和配置文件管理(4种PID/速率配置)。其精密控制算法(含反重力/前馈等)与可扩展架构,能适应各类飞行器配置,实现稳定且高性能的飞行控制。(149字)
2025-11-14 08:15:00
1070
原创 BetaFlight代码解析(3)- 构建 Betaflight
本文档详细介绍了Betaflight固件的构建流程,包括系统要求、开发环境搭建和构建过程。主要内容涵盖:1.构建前的准备工作,包括Git、GNUMake、ARM-GCC等工具的安装;2.支持的操作系统(Linux/macOS/Windows)和构建系统架构;3.详细的构建步骤和命令,如特定目标构建、清理构建产物等;4.版本控制和配置管理;5.构建输出类型和命名规则;6.开发者工具和持续集成支持;7.常见问题排查方法。文档提供了从源代码构建到固件刷写的完整指南,适合开发人员参考。
2025-11-13 15:43:55
1423
原创 BetaFlight代码解析(2)- 系统架构
Betaflight飞行控制系统采用实时控制架构,核心为协作式任务调度器,协调传感器处理、电机控制等子系统。系统从main()入口初始化后进入调度循环,通过参数组框架管理配置,支持运行时切换。关键组件包括电机混控器(支持多种机型混控算法)和状态管理系统(处理启动、飞行模式及错误状态)。系统采用共享全局状态而非消息传递实现子系统通信,如蜂鸣器通过beeper()函数与飞行控制联动。整个架构注重实时性,通过配置持久化和类型安全设置确保稳定运行。
2025-11-12 09:00:00
438
原创 BetaFlight代码解析(1)- 概览
本文概述了开源飞行控制器固件Betaflight的系统架构和功能特性。该固件采用模块化设计,支持多旋翼和固定翼飞行器,兼容STM32系列处理器。核心功能包括运动控制、传感器集成、通信系统和用户界面,采用GPLv3许可证。项目采用年度双版本发布周期,支持统一目标配置和持续集成开发流程,要求开发者遵循严格的贡献规范。用户可通过配置工具和社群支持快速入门。
2025-11-11 08:38:39
1357
原创 PX4-Autopilot代码解析(22)— Gazebo模拟
PX4的Gazebo仿真框架采用GZBridge组件实现与GazeboGarden的集成,支持100Hz的双向通信。该系统提供时钟同步、传感器数据采集(支持多种传感器类型)和执行器命令传输功能,并处理FLU与FRD坐标系的转换。支持多种无人机配置,参数化控制传感器集成和功能分配。传感器仿真采用PX4直接计算和Gazebo数据桥接两种方式,包含噪声模型处理。通过SIM_GZ_EN等参数组实现功能配置,启动过程由POSIX初始化系统根据环境变量和参数决定。GZBridge初始化顺序确保传感器时序正确。
2025-11-07 07:58:35
1087
原创 PX4-Autopilot代码解析(21)-仿真与测试
本文介绍了PX4软件在环(SITL)仿真系统架构,该系统无需物理硬件即可测试飞行控制算法。系统支持多种仿真后端(Gazebo、jMAVSim等),通过分层脚本自动选择适配器,并详细说明了Gazebo桥接器的关键组件和坐标转换机制。文中还描述了传感器数据模拟方法、机身配置方案以及基于参数控制的传感器模块,为算法验证提供了真实数据生成功能。该系统通过灵活的参数配置,支持开发人员模拟不同传感器场景和测试环境。
2025-11-06 08:30:00
1238
原创 PX4-Autopilot代码解析(20)-手动控制界面
摘要:该系统实现了一个多源手动控制接口,支持无线电遥控器和MAVLink操纵杆输入,通过RC通道校准、功能映射和输入源选择等处理流程,生成标准化的控制指令。系统具备安全开关处理、飞行模式切换和摇杆武装手势检测功能,采用uORB主题进行数据传递,并通过参数配置系统行为。主要模块包括RC输入处理和手动控制选择,可处理模拟/数字输入并保证飞行安全。
2025-11-05 07:56:44
1123
原创 PX4-Autopilot代码解析(19)- MAVLink 实现
摘要:PX4的MAVLink协议实现支持自动驾驶仪与外部系统的通信,采用多实例架构处理UART/UDP传输。核心功能包括消息序列化、uORB系统集成、参数同步管理和多模式消息流配置。系统支持实例间消息转发和硬件在环模拟,通过参数驱动配置实现灵活的端口映射。该实现作为PX4内部uORB消息系统与外部MAVLink协议的桥梁,提供心跳、GPS、姿态等关键数据的双向通信能力。
2025-11-04 08:49:47
567
原创 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
503
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅