QGroundControl 4.0 新增功能详解:模式预设(Pattern Presets)与 ArduPilot 调参/机架/流速率支持 无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载本篇技术指南围绕 QGroundControl v4.0 的补充发布说明展开聚焦两大核心主题模式预设Pattern Presets这一新特性以及针对 ArduPilotArduCopter/ArduRover的PID 调参、基础调优选项、机架设置 UI、ChibiOS 固件/引导程序板卡连接支持、可配置 Mavlink 流速率等五项功能增强。阅读本文后你将掌握模式预设的创建、保存、加载与删除的完整操作流程及其底层实现原理并了解 v4.0 中 ArduPilot 相关新功能的实际应用场景与对应源码支撑。一、文档背景与定位本文内容整理自 QGroundControl v4.0 发布说明的补充章节原文档位于 docs/ko/qgc-user-guide/releases/stable_v4.0_additional.md。这类additional附加文档用于记录在正式版发布时尚未并入主文档的新特性说明其中不少内容会在后续版本中迁移至主文档因此读者在查看当前仓库文档结构时可以在 docs 目录下的多语言版本中找到同名文件如docs/zh/qgc-user-guide/releases/stable_v4.0_additional.md、docs/tr/qgc-user-guide/releases/stable_v4.0_additional.md。值得注意的是该文档仅为 v4.0 补充说明的一部分其他 4.0 新增功能如多飞行器列表、遥控器无线电设置等被记录在独立文档中本文聚焦于文档明确列出的模式预设与ArduPilot 相关功能两项主题。二、模式预设Pattern Presets—— 将常用配置保存为命名预设2.1 功能概述与适用范围模式预设是 QGroundControl v4.0 引入的规划视图Plan View新特性可以将模式项Pattern Item的一组常用设置保存为具有名称的预设Preset在下次创建新的模式时直接复用免去重复配置。从源码结构看该功能定义在 src/MissionManager/ComplexMissionItem.h 中ComplexMissionItem复杂任务项基类提供了presetsSupported是否支持预设、presetNames预设名称列表、loadPreset/savePreset/deletePreset等接口以及presetNamesChanged信号// src/MissionManager/ComplexMissionItem.h关键接口节选 Q_PROPERTY(bool presetsSupported READ presetsSupported CONSTANT) Q_PROPERTY(QStringList presetNames READ presetNames NOTIFY presetNamesChanged) /// Loads the specified preset into the complex item. virtual void loadPreset(const QString name); /// Saves the current state of the complex item as the named preset. /// param name User visible name for preset. Will replace existing preset if already exists. virtual void savePreset(const QString name); /// Returns the name of the settings group for presets. /// Empty string signals no support for presets. virtual QString presetsSettingsGroup(void) { return QString(); }基类通过presetsSettingsGroup()是否返回非空字符串来决定是否支持预设presetsSupported默认返回空字符串即表示不支持。在当前版本中仅有测绘Survey与走廊扫描CorridorScan两类模式实现了该接口src/MissionManager/SurveyComplexItem.hsettingsGroup SurveyjsonComplexItemTypeValue surveysrc/MissionManager/CorridorScanComplexItem.hsettingsGroup CorridorScanjsonComplexItemTypeValue CorridorScan。这也是主文档中目前仅在测绘Survey模式中支持其他模式的支持正在开发中这一提示的源码依据——文档编写时 CorridorScan 的预设实现与 Survey 一同落地规划视图中模式项顶部的预设管理入口由 src/PlanView/TransectStyleComplexItemTabBar.qml 提供Tab 栏中的PatternPresets.png图标标签页即预设管理页。2.2 预设管理界面操作继承自原文档在模式项编辑器的顶部新增了一个预设管理选择控件提供以下操作自定义Custom手动设置全部参数选择此项表示不使用任何预设所有参数手动逐项指定保存预设Save Preset将当前模式的全部设置以命名预设的形式保存删除预设Delete Preset删除当前选中的预设预设Presets列表列出可用于该模式的所有已保存预设供直接选用。2.3 预设的创建与更新点击将设置保存为预设Save Settings as Preset后界面会提示输入预设名称保存后该名称出现在预设列表中。更新已有预设在预设列表中选中某个已有预设使其处于当前选中状态再点击将设置保存为预设即可用当前参数覆盖同名预设同名覆盖逻辑在源码savePreset的注释中亦有说明Will replace existing preset if already exists.。关于相机的可选行为保存预设时可以选择是否将**当前选定的相机Camera**一并存入预设若选择不保存相机加载预设时使用当前飞行器配置的相机且在使用预设期间可以自由切换相机若选择保存相机适用于同一预设会在不同时间配合不同相机使用之外的绝大多数场景——即你通常用同一架飞行器搭配同一套预设时建议勾选保存相机以保证预设完整复现。2.4 查看预设的精确设置要查看某个预设的具体参数值可以切换回自定义Custom显示所有设置模式此时编辑器会展开该预设对应的全部设置项查看完毕后再切换回命名预设即可继续使用。2.5 预设与计划文件Plan 文件的关系当前选中的预设名称会随计划Plan文件一并保存因此当计划文件被重新加载时会自动重新选中该预设。⚠️版本差异注意预设是与 QGroundControl版本相关的不同版本对设置项的序列化方式可能不同。如果你与他人共享包含预设的计划文件而对方拥有同名但设置不同的预设可能会在加载时产生错误行为incorrect behavior——例如对方设备上相同名称的预设参数不同导致模式内容与预期不符。2.6 源码级原理预设如何存储与加载在 src/MissionManager/ComplexMissionItem.cc 中可以看到预设的持久化实现存储格式预设以 QSettings 的分组Group 键Key形式保存在系统配置中// src/MissionManager/ComplexMissionItem.cc QStringList ComplexMissionItem::presetNames(void) { QStringList names; QSettings settings; settings.beginGroup(presetsSettingsGroup()); // 例如 Survey 或 CorridorScan settings.beginGroup(_presetSettingsKey); // _presets return settings.childKeys(); // 返回所有预设名称 }_presetSettingsKey定义为_presets见 src/MissionManager/ComplexMissionItem.h也就是说预设存储在形如Survey/_presets/预设名的配置路径下。保存_savePresetJson将预设的 QJsonObject由_saveCommon/TransectStyleComplexItem::_save序列化而来包含版本号、类型、网格角度、交替航线、多边形形状等字段通过QCborMap::fromJsonObject(...).toCborValue().toVariant()转换为 CBOR 变体后写入 QSettings代码中还有一段被#if 0注释掉的逻辑用于将预设导出为 JSON 文件以便打包为内置预设built-in preset不可删除说明该能力已预留但默认未启用。加载_loadPresetJson从 QSettings 读回数据并还原为 QJsonObject然后Survey 模式调用_loadV4V5(presetObject, 0, errorString, 5, true /* forPresets */)见 src/MissionManager/SurveyComplexItem.cc即按 v4/v5 格式解析并重建测线CorridorScan 模式调用_loadWorker(...)见 src/MissionManager/CorridorScanComplexItem.cc加载完成后调用_rebuildTransects()重新生成航线。删除保护deletePreset会先检查预设名是否属于QGCCorePlugin::instance()-options()-surveyBuiltInPresetNames()中的内置预设——内置预设不可删除删除时会弹出提示%1 is a built-in preset which cannot be deleted.。界面联动预设 Tab 页与编辑器之间通过presetNamesChanged信号联动每次保存/删除预设后都会发出该信号刷新 QML 界面中的预设下拉列表。2.7 使用建议小结场景建议固定机位、固定相机的常规测绘作业保存预设时勾选保存相机一键复现整套配置同一预设要配合多种相机使用不保存相机加载时使用当前相机与团队共享计划文件注意接收方同名预设可能不同必要时提示对方删除/重命名冲突预设想确认预设内部参数切回自定义显示所有设置查看后再切回命名预设三、ArduPilotPID 调参支持CopterQGroundControl v4.0 为 ArduPilot 的 ArduCopter 机型新增了PID 调参PID Tuning支持。在飞控设置Vehicle Setup的 Tuning 页面中可以针对 Roll滚转、Pitch俯仰、Yaw偏航三个轴分别调整角度环Angle Loop与速率环Rate Loop的 PID 参数。界面核心元素对应仓库资源 docs/assets/daily_build_changes/arducopter_pid_tuning.jpgTuning Axis调优轴Roll / Pitch / Yaw 轴切换Tuning Values调优参数角度环与速率环的 P / I / D 值例如ATC_ANG_RLL_P角度环滚转 P、ATC_RAT_RLL_P速率环滚转 P、ATC_RAT_RLL_I速率环滚转 I、ATC_RAT_RLL_D速率环滚转 D并支持参数增减按钮与百分比调整下拉框响应曲线图实时显示 Roll / Roll Rate 的 Response响应与 Command指令曲线便于对比指令与实际姿态响应判断振荡、超调等调参问题参数剪贴板Clipboard提供当前轴参数的存储 / 恢复按钮方便在调参前后备份与还原图表控制Clear清空与 Start开始按钮控制曲线记录过程顶部Advanced高级复选框用于展开/收起高级参数项。图中左侧为飞控设置导航栏当前选中 Tuning 选项右侧中部为滚转轴的响应曲线对比区域。截图说明该功能在 4.0 中已具备完整的调参工作台形态可在实际飞行测试中边观察响应曲线边调整参数。四、ArduPilot额外的基础调优选项Copter除 PID 调参外v4.0 还为 ArduCopter 提供了额外的基础调优Basic Tuning选项位于 Tuning 页面的基础区域对应图片 docs/assets/daily_build_changes/arducopter_basic_tuning.jpgSpin While Armed上锁旋转调节电机在 armed上锁/解锁待飞状态下的转动幅度用于指示当前处于 armed 状态便于操作者确认上锁成功Minimum Thrust最小推力调节飞行器开始移动所需的最小推力值用于消除电机推力响应死区、提升悬停与低速操控手感。两个选项均以带说明文字的滑块控件呈现拖动滑块即可修改对应 ArduPilot 参数无需手动打开全参数表查找。五、ArduPilot机架设置 UICopter / Roverv4.0 为 ArduCopter 与 ArduRover 提供了新的Frame机架设置界面对应图片 docs/assets/daily_build_changes/arducopter_setup_frame.jpg。界面以可视化卡片方式列出可选机架类型支持直接点选多旋翼类Quad四轴含 X / 型等子类型、Hexa六轴、Octa八轴、OctaQuad八轴四旋翼复合布局、Y6、Tri三轴其他类SingleCopter单旋翼、CoaxCopter共轴双旋翼等早期/特殊机架以带问号的占位图标呈现选中后可在下拉框中进一步选择对应机架子类型页面上方会显示当前已设置的机架类别说明如图中已设为 Quad / X 型机架。这一 UI 降低了机架选择的门槛用户无需记忆FRAME_CLASS/FRAME_TYPE等参数的数值编码直接在图形化界面中匹配实际机体即可完成配置避免因选错机架类型导致解锁失败或异常飞行特性。六、ArduPilotChibiOS 固件刷写与引导程序板卡连接支持v4.0 对 ArduPilot 的ChibiOS 固件支持做了两项改进ChibiOS 固件刷写Flashing支持改进QGroundControl 可通过 USB 直接为基于 ChibiOS 的 ArduPilot 飞控板刷写固件ChibiOS 是 ArduPilot 自 3.x 中期以来主推的实时操作系统基础替代早期版本使用的 PX4/NuttX 内核改进后对不同板卡的固件文件识别与烧写流程更稳定ChibiOS 引导程序Bootloader板卡连接支持改进引导程序模式下板卡的 USB 枚举与连接识别更可靠便于用户在有刷写需求时将飞控置于 bootloader 模式进行固件升级或恢复。这两项改进共同提升了基于 ChibiOS 的 ArduPilot 板卡包括常见 Pixhawk 系列及众多衍生板在 Windows / Linux / macOS 上的固件管理体验。需要说明的是本仓库为 QGroundControl 应用代码仓库并不包含 ArduPilot 固件源码具体板卡支持列表以 ArduPilot 官方固件为准。七、ArduPilot可配置的 Mavlink 流速率Stream Ratesv4.0 新增了对ArduPilot 可配置 Mavlink 流速率Stream Rates的支持入口位于设置 → Mavlink 页面Settings → Mavlink对应图片 docs/assets/daily_build_changes/arducopter_stream_rates.jpg。7.1 界面与可配置项该页面标题为Telemetry Stream Rates (ArduPilot Only)仅在连接 ArduPilot 飞行器时可用核心元素包括All Streams Controlled By Vehicle Settings所有流由飞行器设置控制复选框勾选后所有流的速率交由飞行器端 SR* 参数控制地面站不再覆盖以下 Mavlink 遥测流各自拥有独立的下拉选择框可分别设置刷新率示例数值取自截图数据流说明示例刷新率Raw Sensors原始传感器IMU/气压计等原始传感器数据2 HzExtended Status扩展状态扩展系统状态信息2 HzRC Channel遥控通道遥控接收机通道值2 HzPosition位置位置/速度/航向等导航数据3 HzExtra 1扩展遥测组 1如姿态、空速等10 HzExtra 2扩展遥测组 210 HzExtra 3扩展遥测组 33 Hz7.2 源码层面的实现依据在 src/Vehicle/Vehicle.cc 中Vehicle类通过std::make_uniqueMAVLinkStreamConfig(std::bind(Vehicle::_setMessageInterval, this, ...))构造流配置管理器也就是说每个流的刷新率最终会转换为MAV_CMD_SET_MESSAGE_INTERVAL消息间隔指令_setMessageInterval回调以消息间隔单位微秒的形式下发到飞控相关配置类型定义可参考 src/MAVLink/MAVLinkStreamConfig.h。界面代码位于 src/AppSettings/MavlinkLinkStatus.qmlMavlink 设置页。7.3 使用建议默认情况下建议保持各流在合理区间如遥测链路 2~10 Hz避免过高的总速率挤占带宽、影响链路稳定性若在野外使用低带宽链路如 433 MHz 数传可适当降低 Raw Sensors / RC Channel 等非关键流的速率优先保证 Position 与 Extra 1 的刷新率若飞行器端已通过 SR* 参数如SR1_*完整规划了流速率可勾选All Streams Controlled By Vehicle Settings让地面站完全遵循飞行器配置。八、总结QGroundControl v4.0 的这组补充特性体现了两个方向的产品演进效率提升模式预设Pattern Presets将测绘等复杂模式项的整套配置沉淀为可复用资产配合计划文件持久化显著减少重复设置成本其实现依托ComplexMissionItem的预设接口与 QSettings 存储src/MissionManager/ComplexMissionItem.cc目前已在 Survey 与 CorridorScan 两类模式中落地。ArduPilot 生态深化从 PID 调参工作台、基础调优滑块、图形化机架选择到 ChibiOS 固件/引导程序连接改进再到可配置 Mavlink 流速率QGroundControl 正在把原本需要参数表 命令行/外部工具完成的工作逐步收拢到地面站内部完成。如需进一步阅读可参考模式预设的完整用户文档docs/ko/qgc-user-guide/plan_view/pattern_presets.md英文/中文等语言版本位于docs/zh/qgc-user-guide/plan_view/pattern_presets.md等路径预设实现的基类与派生类源码src/MissionManager/ComplexMissionItem.h、src/MissionManager/SurveyComplexItem.cc、src/MissionManager/CorridorScanComplexItem.cc预设管理界面src/PlanView/TransectStyleComplexItemTabBar.qml、src/PlanView/TransectStyleComplexItemEditor.qmlMavlink 流速率实现src/MAVLink/MAVLinkStreamConfig.h、src/Vehicle/Vehicle.cc。赞分享无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载相关推荐Plan View 图案预设Pattern PresetsQGroundControl 航测任务参数模板的保存、加载与管理Plan View 图案预设Pattern PresetsQGroundControl 航测任务参数模板的保存、加载与管理 QGroundControl无人机智能硬件QGroundControl 计划视图模式预设Pattern Presets指南Survey 常用配置的命名保存、复用与管理QGroundControl 计划视图模式预设Pattern Presets指南Survey 常用配置的命名保存、复用与管理 QGroundControl无人机智能硬件QGroundControl ArduPilot 日志设置页详解LOG_* 参数配置指南QGroundControl ArduPilot 日志设置页详解LOG_ 参数配置指南 本文以 QGroundControlQGC中 ArduPilot无人机智能硬件上一篇Swift Key Path 字面量与函数类型的子类型转换SE-0416 提案深度解析下一篇Swagger Codegen C 客户端模型文档解析以 SwaggerClientNetCoreProject 的 Cat 模型为例创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考