自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 MissionPlanner架构梳理之(十一)-固件更新

MissionPlanner固件更新系统为用户提供了完整的ArduPilot自动驾驶仪固件更新解决方案。该系统包含两个界面(传统图标式和较新的清单式),支持自动检测主板类型、下载兼容固件并完成刷写操作。核心组件包括固件管理、主板检测和上传系统,支持多种硬件平台(如Pixhawk系列、VRBrain等)。更新过程涵盖固件源选择、清单解析、下载管理以及主板准备、固件上传和验证等关键环节。系统具备错误处理、安全认证机制,并支持自定义固件和历史版本。该解决方案通过详细的进度反馈和故障排除功能,确保固件更新的可靠性和

2025-09-10 09:02:26 742

原创 QGC代码解析之屏幕工具和 UI 指标(十五)

QGroundControl采用ScreenTools单例实现跨平台响应式UI设计,提供标准化字体指标、屏幕测量值和平台检测功能。该系统支持四种标准字体大小,针对移动/桌面设备自动调整控件尺寸,并确保最小5mm的触摸目标。开发者可通过伪造手机模式进行移动端测试,同时系统还提供调试工具和屏幕分类功能,确保在不同设备上保持一致的视觉呈现和交互体验。

2025-09-10 08:54:27 516

原创 MissionPlanner架构梳理之(十)-参数编辑器

摘要:MissionPlanner的参数编辑器是配置ArduPilot飞行器的核心工具,提供参数查看、编辑和管理功能。主要特点包括:表格视图显示参数名称、值、单位等元数据;按前缀层次组织参数;支持搜索过滤、比较参数集及保存/加载配置文件。编辑器采用批处理方式管理参数变更,需手动"写入参数"才会生效。该工具还包含参数预设、收藏夹、重置默认值等实用功能,通过MAVLink与飞行器通信,内置参数验证机制。遇到问题时可通过刷新参数、检查连接状态等方式排查。

2025-09-09 07:50:37 455

原创 QGC代码解析之用户界面架构(十四)

QGroundControl采用基于QML的UI架构,实现了跨平台响应式设计。核心特性包括:1)通过ScreenTools单例实现分辨率无关的智能缩放;2)包含200+自定义QML控件库,支持参数验证和主题集成;3)完善的平台适配系统,针对移动设备优化触摸交互;4)与参数系统深度集成,自动处理验证和持久化。该架构使用动态布局策略和内容感知尺寸计算,在桌面和移动端保持一致的视觉体验,同时满足5mm最小触摸目标要求,支持从4寸到23.5寸屏幕的适配。

2025-09-09 07:42:04 426

原创 MissionPlanner架构梳理之(九)-载具设置

MissionPlanner的飞行器配置系统提供三大核心功能:1)参数管理,支持参数编辑、验证与保存;2)固件更新,实现自动检测与安装;3)硬件配置,重点是指南针校准。系统通过MAVLink协议与飞行器通信,为用户提供完整的ArduPilot飞行器配置解决方案。

2025-09-08 08:14:10 350

原创 QGC代码解析之复杂的任务项目和调查模式(十三)

QGroundControl中的复杂任务项将多个航点和功能封装为高级规划元素,支持自动生成勘测、走廊扫描等复杂飞行模式。核心架构基于VisualMissionItem类扩展,通过TransectStyleComplexItem基类实现三种主要模式:勘测模式自动规划网格航线,走廊扫描沿折线生成平行横断面,结构扫描实现多层环绕飞行。系统通过CameraCalc处理相机参数计算,并支持地形跟踪和高度调整。每种模式都有专用编辑器组件,用户可通过MissionController管理任务生成流程。这种架构简化了复杂任

2025-09-08 08:00:38 1106

原创 QGC代码解析之任务控制器和条目

本文介绍了QGroundControl的任务控制系统架构,主要包含任务规划、航点管理和飞行器协调等功能。核心系统围绕MissionController构建,处理基本任务项目(如航点、起飞、着陆)及车辆通信。文章详细说明了任务项目的继承结构、海拔模式支持、起飞任务特殊处理,以及任务设置项的管理功能。同时阐述了任务编排流程、飞行状态计算方法和车辆通讯中的上传下载机制,最后介绍了任务验证和状态管理的相关属性与检查方法。

2025-09-06 09:25:56 439

原创 MissionPlanner架构梳理之(八)- MAVLink 命令

MAVLink 命令是任务规划器向自动驾驶系统发送的标准化指令,用于执行特定操作或配置飞行器行为。这些命令构成了任务规划和实时飞行器控制的基础。本文档介绍了 Mission Planner 中的 MAVLink 命令系统,包括如何构建、处理命令以及如何使用命令进行车辆控制和任务规划。每个命令都使用一组标准化的参数,但每个参数的含义取决于具体的命令类型。MAVLink 命令构成了任务规划器和自动驾驶系统之间通信的基础。了解命令结构和参数对于有效的任务规划和飞行器控制至关重要。

2025-09-05 07:59:36 617

原创 QGC代码解析之任务规划系统(十一)

QGroundControl的任务规划系统采用分层架构,以MissionController为核心,管理任务创建、编辑和执行的全生命周期。系统支持简单航点命令和复杂勘测模式,通过版本化JSON文件实现数据持久化,并自动计算飞行路径、距离时间和电池消耗。关键功能包括MAVLink协议转换、原点位置管理和任务可视化验证,为无人机任务提供全面的规划支持。

2025-09-05 07:52:19 1011

原创 MissionPlanner架构梳理之(七)- 网格/调查规划

摘要:MissionPlanner的网格/勘测规划系统可自动生成优化飞行路径,用于航空测绘和摄影测量。系统支持多种网格模式(标准、交叉、走廊、螺旋),通过参数化配置(相机规格、飞行高度、图像重叠度等)计算高效航线,确保目标区域全覆盖。核心功能包括多边形区域定义、实时统计预览(飞行时间、照片数量)及与任务规划器的无缝集成。该系统采用UTM坐标转换和优化算法处理复杂区域,适用于农业勘测、3D重建等多种场景。(150字)

2025-09-04 08:34:05 1321

原创 QGC代码解析之操纵杆输入系统(十)

操纵杆输入系统为车辆提供手动控制功能,支持物理操纵杆和游戏手柄设备。系统采用分层架构,核心组件包括JoystickManager单例负责设备发现与选择,以及Joystick基类处理输入轮询和校准。该系统支持多发射模式映射、轴校准处理、按钮动作配置和车辆类型适配,通过标准化值将控制数据传输至车辆。系统支持两种油门模式(0.0-1.0和-1.0-1.0)以适应不同车辆类型,并提供预定义按钮动作实现多种控制功能。

2025-09-04 08:25:24 646

原创 MissionPlanner架构梳理之(六)-航点管理

摘要:MissionPlanner的航点管理系统支持创建和编辑自动驾驶任务路径,包含多种航点类型(如基本航点、起飞、降落等)和参数配置。用户可通过交互式地图或表格添加、修改航点,并设置高度模式(绝对、相对或地形跟随)。系统支持航点文件导入/导出(如APM、QGC格式),提供可视化路径显示,并与MAVLink协议通信实现航点上传/下载。常见问题包括上传失败或高度错误,通常由通信问题或参数设置不当引起。该系统集成了地形数据、任务规划等功能,为自主任务提供完整的规划与监控解决方案。

2025-09-03 08:38:15 942

原创 QGC代码解析之设备识别和固件升级(九)

QGroundControl系统通过USB设备自动识别和固件升级功能,支持多种飞行控制器和外围设备。其核心是USBBoardInfo.json数据库,采用三层匹配策略(直接ID匹配、描述模式匹配和制造商匹配)确保准确识别。系统支持Pixhawk、ArduPilot等主流设备,包含Android适配和引导加载程序检测功能,并提供可视化固件选择界面。数据库采用模块化设计,便于扩展新硬件支持。该方案实现了硬件的高效识别和固件管理。

2025-09-03 08:27:54 589

原创 QGC代码解析之PX4 参数配置和元数据(八)

本文档介绍了PX4飞控系统的参数元数据架构,包括XML格式的参数定义和机身配置元数据。这些元数据为QGroundControl提供了类型安全的参数管理功能,支持参数验证、分组管理和用户界面生成。文档详细说明了参数类型系统(如INT32、FLOAT等)、验证规则以及机身特定配置的定义方式,并阐述了这些元数据如何通过Fact系统与QGroundControl集成,实现参数的生命周期管理和用户界面绑定。整个架构确保了PX4飞行器参数管理的安全性和一致性。

2025-09-02 08:23:20 1038

原创 我的创作纪念日

一点点创作感悟

2025-09-01 10:21:53 202

原创 QGC代码解析之固件插件系统(七)

固件插件系统为QGroundControl提供了统一的接口,支持PX4、ArduPilot等多种自动驾驶仪固件。该系统采用策略模式,通过FirmwarePlugin基类定义核心功能,包括飞行模式管理、参数处理等。PX4和ArduPilot分别实现了特定功能,如参数元数据加载、MAVLink消息处理。插件系统支持扩展点,允许添加新固件支持。该系统实现了固件差异的抽象,确保QGroundControl在不同自动驾驶系统上保持一致的架构和用户体验。

2025-09-01 10:20:48 852

原创 QGC代码解析之载具类别和多载具管理(六)

QGroundControl的飞行器管理系统采用Vehicle类封装单个飞行器状态和功能,MultiVehicleManager协调多机运行。系统通过MAVLink消息触发飞行器发现和初始化流程,集成固件插件处理特定行为,并利用QML绑定实现UI交互。核心架构包括飞行器身份识别、状态管理、位置追踪、通信链路监控等功能模块,为多飞行器任务控制提供了统一的管理基础。

2025-08-30 10:00:00 351

原创 QGC代码解析之车辆管理(五)

QGroundControl的车辆管理系统通过三个核心组件实现对多类型车辆的统一管理:1)Vehicle类负责单个车辆的完整生命周期和状态维护;2)MultiVehicleManager处理多车辆的发现与选择;3)FirmwarePlugin系统提供对不同自动驾驶仪固件的适配支持。系统采用分层通信架构管理MAVLink协议,并通过QML实现UI集成,支持实时遥测监控、参数配置和任务规划等功能。该系统可同时管理PX4/ArduPilot等不同固件的多旋翼、固定翼、水下机器人等多种无人平台,具备自动故障转移和链

2025-08-29 11:13:37 634

原创 QGC代码解析之事实系统和参数管理(四)

Fact系统为QGroundControl提供类型安全的参数管理,包括参数同步、元数据验证和单位转换,支持PX4/ArduPilot固件。核心架构基于Fact、FactMetaData和ParameterManager三类,实现参数值类型安全、范围验证和单位自动转换。系统从固件XML加载元数据,按组件/类别/组层次化组织参数,并提供带搜索过滤功能的参数编辑器界面。通过编译时类型检查和运行时验证确保参数安全,并支持多种单位自动换算(如米/英尺、摄氏度/华氏度)。

2025-08-28 19:01:04 893

原创 QGC代码解析之设置和配置系统(三)

QGroundControl的持久配置系统采用分层架构,通过QGroundControlQmlGlobal单例提供集中式设置访问。系统包含SettingsManager协调设置组,AppSettings管理特定域配置,支持类型安全操作和Qt持久化存储。设置通过JSON元数据定义,涵盖UI配置、文件管理、输入控制等类别,支持跨平台存储。特殊设置如语言选项和文件路径具有动态处理和平台适配功能。系统架构实现了从QML到存储的完整数据流,同时确保类型安全和灵活配置。

2025-08-26 18:15:52 329

原创 QGC代码解析之应用程序生命周期和资源管理(二)

摘要:QGroundControl的启动流程由QGCApplication类管理,通过Qt资源系统(qgroundcontrol.qrc)嵌入各类资源。初始化过程包括命令行解析、设置管理、本地化配置等步骤,并按特定顺序加载核心子系统。应用支持多种启动模式,提供全局状态访问和资源操作函数,同时采用信号压缩机制优化性能。关键功能包括版本化设置管理、参数缓存清理和本地化数字处理等。

2025-08-23 14:47:52 679

原创 QGC代码解析之系统架构(一)

QGroundControl采用Qt框架构建,通过QGCApplication类管理应用程序生命周期。系统采用C++/QML混合架构,核心功能包括:多阶段初始化流程(命令行处理、资源加载、子系统启动);嵌入式资源管理系统;QML集成机制(类型注册、引擎配置);基于QSettings的层级配置系统,支持版本迁移和平台适配存储。应用程序具备跨平台能力,处理特定平台初始化(如Windows的OpenGL配置)和资源管理,同时通过单例模式确保系统组件的全局访问。

2025-08-22 19:04:51 689

原创 Mission Planner架构梳理篇(五)

任务规划是 Mission Planner 的核心功能,允许用户创建、编辑和管理基于 ArduPilot 的飞行器的自主飞行任务。本页介绍任务规划系统及其组件,以及如何使用它来创建和管理基于航点的自主飞行任务。任务规划系统概述Mission Planner 中的任务规划系统负责创建和编辑由航点和指令组成的飞行任务。它提供了一个可视化界面,用于在地图上放置航点、配置航点参数以及将这些指令上传到飞行器。

2025-06-10 08:39:28 525

原创 Mission Planner架构梳理篇(四)

本文介绍了基于MAVLink协议的通信系统架构,该系统实现地面控制站与ArduPilot飞行器的双向交互。系统核心组件包括:MAVLink接口(管理连接/消息收发)、MAVState(跟踪飞行器状态)、CurrentState(存储实时遥测数据)、MAVFtp(文件传输)和参数管理系统。支持多飞行器同时连接,具备心跳检测、参数配置和文件传输功能,为无人系统提供可靠的通信基础设施。(149字)

2025-05-28 14:41:51 1616

原创 Mission Planner架构梳理篇(三)

本文档详细介绍了MissionPlanner应用程序的核心类MainV2,该类作为应用程序的主窗口和中央控制器,负责协调与飞行器的通信、管理用户界面以及提供全局服务。MainV2通过MAVLink协议与车辆通信,管理不同视图之间的导航,并处理应用程序范围的设置和状态。此外,它还提供语音引擎、操纵杆控制等全局服务,并管理用户界面的主题。MainV2类继承自Form,包含多个属性和方法以实现其功能,如初始化过程、显示配置、与车辆的通信、线程和后台任务管理,以及与外部系统的集成。文档还强调了MainV2在扩展任务

2025-05-20 11:51:38 1099

原创 Mission Planner架构梳理篇(二)

MissionPlaner的总体框架到此为止,后面有空继续分析每个模块的代码

2025-05-10 14:01:46 719

原创 Mission Planner架构梳理篇(一)

无人机开发,不可避免涉及到地面站的开发,开源是学习开发的必经过程,通过阅读成熟产品的代码,来为自己的产品架构和功能设计提供灵感,并趁此机会跟同行们分享

2025-05-09 16:35:14 644

原创 【面向痛苦的编程】

对于开发过程,需要经常复盘,纠偏,才能最终取得喜人的结果

2025-04-26 17:07:47 352 1

安卓操作系统开发入门教程

介绍从零开始的Android开发,自行收集的资料,后续还会补充。

2010-11-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除