☰
QGroundControl 计划视图(Plan View)设置详解:任务高度、VTOL 过渡距离与着陆模式配置
2026/10/13 8:41:54 网站建设 项目流程
  • 无人机
  • 智能硬件

【免费下载链接】qgroundcontrol

Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)

项目地址:https://gitcode.com/gh_mirrors/qg/qgroundcontrol
点击查看免费下载

Plan View Settings 是 QGroundControl(QGC)中控制**计划视图(Plan View)**默认行为的一组应用级设置,涵盖新建航点的默认高度、VTOL 过渡距离、航拍/走廊扫描模式的航点生成方式,以及任务中起飞与着陆条目的约束规则。本文以仓库文档 docs/ko/qgc-user-guide/settings_view/plan_view.md 为主体,结合 src/Settings/PlanView.SettingsGroup.json 与 src/MissionManager/MissionController.cc 等源码实现,逐项讲解每个设置的语义、默认值、取值范围及其在底层代码中的生效逻辑,帮助你按机型与作业场景定制任务规划体验。

设置入口与页面结构

该页属于 QGC 的设置界面(Settings View)。在 QGC 主界面打开设置后,通过左侧边栏的Plan View按钮即可进入本页;也可以在设置界面顶部的搜索栏中直接输入设置名称(如vtol transition、condition gate、takeoff、landing pattern、default altitude),跨页面快速定位对应条目(参见 docs/ko/qgc-user-guide/settings_view/settings_view.md 中的 Search 说明)。

从界面配置定义文件 src/AppSettings/pages/PlanView.SettingsUI.json 可以看出,本页只有一个General分组,按顺序呈现 5 个设置项:

{ "heading": "General", "keywords": ["mission altitude", "default altitude", "vtol transition", "condition gate", "takeoff", "landing pattern", "waypoint"], "controls": [ { "setting": "appSettings.defaultMissionItemAltitude" }, { "setting": "planViewSettings.vtolTransitionDistance" }, { "setting": "planViewSettings.useConditionGate" }, { "setting": "planViewSettings.takeoffItemNotRequired" }, { "setting": "planViewSettings.allowMultipleLandingPatterns" } ] }

其中defaultMissionItemAltitude归属AppSettings(历史原因),其余四项归属PlanViewSettings设置组。这些设置无需连接飞机即可修改,属于纯地面站侧的规划行为配置。

默认任务高度(Default mission item altitude)

  • 作用:设置新航点被加入任务时自动分配的高度值。
  • 类型:double,单位vertical m,默认值50.0m,userMin0.0、userMax121.92(源码定义见 src/Settings/App.SettingsGroup.json)。
  • 底层声明:DEFINE_SETTINGFACT(defaultMissionItemAltitude),见 src/Settings/AppSettings.h 与 src/Settings/AppSettings.cc。

这是任务规划中最常用的默认值之一:在计划视图添加航点、航拍(Survey)等条目时,QGC 会以该高度作为新条目的初始高度。值得注意的是,它与计划视图编辑器面板Defaults区块中的Waypoints Altitude是同一数值的两处呈现——后者还承担“首条任务条目高度、后续条目继承上一条高度”的规划期行为(详见 docs/ko/qgc-user-guide/plan_view/plan_view.md 的 Defaults 小节)。若任务中已存在条目,在设置页修改该值并不会自动改写已有航点,需在计划视图的 Defaults 区块中按提示统一更新。

VTOL 过渡距离(VTOL Transition Distance)

  • 作用:指定 VTOL(垂直起降)飞行器在到达某个航点之前,从固定翼前飞模式切换回多旋翼模式的开始距离。
  • 类型:double,单位m,默认300.0m,最小值100.0m(源码定义见 src/Settings/PlanView.SettingsGroup.json)。
  • 底层声明:DEFINE_SETTINGFACT(vtolTransitionDistance),见 src/Settings/PlanViewSettings.h 与 src/Settings/PlanViewSettings.cc。

该设置在源码中有两处关键消费点:

  1. VTOL 着陆模式(VTOLLandingComplexItem):在 src/MissionManager/VTOLLandingComplexItem.cc 中,构造 VTOL 着陆条目时会读取vtolTransitionDistance,将其作为着陆距离(landing distance)的默认值与最小值:
if (QGC::fuzzyCompare(_landingDistanceFact.rawValue().toDouble(), _landingDistanceFact.rawDefaultValue().toDouble())) { Fact* vtolTransitionDistanceFact = SettingsManager::instance()->planViewSettings()->vtolTransitionDistance(); double vtolTransitionDistance = vtolTransitionDistanceFact->rawValue().toDouble(); _landingDistanceFact.metaData()->setRawDefaultValue(vtolTransitionDistance); _landingDistanceFact.setRawValue(vtolTransitionDistance); _landingDistanceFact.metaData()->setRawMin(vtolTransitionDistanceFact->metaData()->rawMin()); }
  1. 起飞条目(TakeoffMissionItem):在 src/MissionManager/TakeoffMissionItem.cc 中,当未指定起飞位置时,会以该距离作为 VTOL 起飞点与起飞位置之间的默认间距;若为固定翼且高度非零,则按 30° 爬升角换算起飞距离(distance = altitude / tan(30°))。

从代码逻辑可以看出:此值同时约束 VTOL 着陆模式的进场距离与起飞条目的间距,是影响 VTOL 任务规划结果的核心参数。对于作业场地狭窄或需要更早完成模式切换的场景,可在 100 m 至更大范围内调整。

航拍/走廊扫描模式使用 MAV_CMD_CONDITION_GATE

  • 作用:开启后,生成**航拍(Survey)与走廊扫描(Corridor Scan)**模式时,使用MAV_CMD_CONDITION_GATE(条件门)航点替代普通航点作为模式转换点。
  • 类型:bool,默认false(关闭),源码定义见 src/Settings/PlanView.SettingsGroup.json。
  • 底层声明:DEFINE_SETTINGFACT(useConditionGate),见 src/Settings/PlanViewSettings.h。

该设置的实际生效链路分为两步:

第一步:将命令加入“受支持命令”集合。PX4 与 APM 固件插件都会在构建受支持命令列表时检查该设置:

  • src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc:
if (SettingsManager::instance()->planViewSettings()->useConditionGate()->rawValue().toBool()) { supportedCommands.append(MAV_CMD_CONDITION_GATE); }
  • src/FirmwarePlugin/APM/APMFirmwarePlugin.cc 逻辑相同。

第二步:模式生成时替换普通航点。src/MissionManager/TransectStyleComplexItem.cc 中的_appendConditionGate()会构造一个MAV_CMD_CONDITION_GATE任务条目,其特征参数为:param1=0(门垂直于路径)、param2=1(使用高度)、param3/param4忽略;而_appendCameraTriggerDistanceUpdatePoint()依据useConditionGate标志决定追加条件门还是普通航点。

关于该命令的语义,仓库的命令元数据 src/MissionManager/MavCmdInfoCommon.json 中定义:MAV_CMD_CONDITION_GATE(ID 4501)的 friendlyName 为 "Condition Gate",描述为“延迟任务状态机直到飞机抵达门位置”(Delay mission state machine until gate has been reached.),归类为 Conditionals(条件类)命令,其param2(Ignore Alt)默认值为 1。

需要留意的是:从BuildMissionItemsState_t的构造逻辑(src/MissionManager/TransectStyleComplexItem.cc)看,实际是否生成条件门还取决于当前固件是否支持MAV_CMD_CONDITION_GATE、是否启用相机触发且未开启悬停拍摄(hover and capture)。因此,仅打开此设置并不保证所有模式都使用条件门,最终行为与机型、固件能力及航拍条目配置相关。

任务不要求起飞条目(Missions do not require takeoff item)

  • 作用:允许创建不包含显式起飞命令的任务(例如任务直接从第一个航点开始执行)。
  • 类型:bool,默认false(关闭,即默认任务必须含起飞条目),源码定义见 src/Settings/PlanView.SettingsGroup.json。
  • 底层声明:DEFINE_SETTINGFACT(takeoffItemNotRequired),见 src/Settings/PlanViewSettings.h。

该设置直接参与计划视图的“插入有效性”判定。在 src/MissionManager/MissionController.cc 中,其值变化会触发_recalcPlanViewState()重新计算计划视图状态;在 src/MissionManager/MissionController.cc 中,判定“只允许插入起飞条目”的条件是:

if (_masterController->controllerVehicle()->supports()->takeoffMissionCommand() && !_planViewSettings->takeoffItemNotRequired()->rawValue().toBool() && noItemsAddedYet) { onlyInsertTakeoffValid = true; }

即:默认情况下,只要飞机支持起飞命令且任务尚未添加任何条目,第一个插入项必须是起飞命令;开启本设置后,这一强制约束被解除,任务可以以普通航点开始。这也解释了计划视图文档中“Takeoff 工具对所有机型可用(除 Rover 外)”但首条目约束存在差异的原因。

允许多个着陆序列(Allow configuring multiple landing sequences)

  • 作用:允许在一个任务中添加多个着陆模式(landing pattern),便于为“返航(Return-to-Launch)备用方案”配置多条着陆路径。
  • 类型:bool,默认true(启用),源码定义见 src/Settings/PlanView.SettingsGroup.json。
  • 底层声明:DEFINE_SETTINGFACT(allowMultipleLandingPatterns),见 src/Settings/PlanViewSettings.h。

该设置的生效边界在 src/MissionManager/MissionController.cc 的multipleLandPatternsAllowed()中完整体现:

bool MissionController::multipleLandPatternsAllowed(void) const { // Multiple landing sequences are a fixed-wing/VTOL landing pattern concept. // Other vehicle types insert RTL, which only makes sense once per mission. return (_controllerVehicle->fixedWing() || _controllerVehicle->vtol()) && _planViewSettings->allowMultipleLandingPatterns() ->rawValue().toBool() && !_masterController->managerVehicle()->px4Firmware(); }

注释与代码共同说明了三点约束:

  1. 仅适用于固定翼(fixed-wing)或 VTOL 机型——其他机型插入的是 RTL(返航)命令,一个任务中只出现一次才有意义;
  2. 需同时启用本设置;
  3. 当前管理的飞机不能是 PX4 固件——即该特性对 APM 系的固定翼/VTOL 有效,PX4 机型不受此设置影响。

在 src/MissionManager/MissionController.cc 中,_isInsertLandValid的判定也会引用该函数:当任务已存在着陆条目且multipleLandPatternsAllowed()返回 false 时,不再允许继续插入着陆条目。

设置的底层实现机制

以上五项设置统一走 QGC 的Fact 系统(FactSystem)与SettingsGroup框架:

  • 设置组的元数据(名称、类型、默认值、单位、最小值、搜索关键词)集中定义于 src/Settings/PlanView.SettingsGroup.json(VTOL 过渡距离、条件门、起飞约束、多着陆序列)以及 src/Settings/App.SettingsGroup.json(默认任务高度);
  • C++ 侧通过DEFINE_SETTINGGROUP/DEFINE_SETTINGSFACT宏将 JSON 元数据实例化为可读写、可被 QML 引用的 Fact 对象,见 src/Settings/PlanViewSettings.cc;
  • 界面层通过 src/AppSettings/pages/PlanView.SettingsUI.json 的setting键引用对应 Fact(如planViewSettings.vtolTransitionDistance),渲染成设置控件;
  • 各消费模块(如MissionController、TransectStyleComplexItem、VTOLLandingComplexItem、TakeoffMissionItem、PX4/APM 固件插件)通过SettingsManager::instance()->planViewSettings()->xxx()读取当前值,实现“设置即改即生效”。

配置建议与相关文档

综合上述实现细节,可给出如下配置参考:

设置默认值适用场景建议
Default mission item altitude50.0 m依据作业空域安全高度与相机覆盖范围调整
VTOL Transition Distance300.0 m(最小 100 m)场地紧凑或需提前转入多旋翼模式时调小
Use MAV_CMD_CONDITION_GATE关闭配合支持该命令的固件与相机触发航拍使用
Missions do not require takeoff item关闭自定义起飞流程或沿用外部生成任务时开启
Allow configuring multiple landing sequences开启仅对 APM 系固定翼/VTOL 生效,PX4 不受影响

如需深入了解计划视图本身的交互(UI 布局、计划工具、编辑器面板、统计/地形面板等),可继续阅读 docs/ko/qgc-user-guide/plan_view/plan_view.md;设置界面的整体结构与搜索用法见 docs/ko/qgc-user-guide/settings_view/settings_view.md;航拍模式的条件门行为与生成逻辑可在 src/MissionManager/TransectStyleComplexItem.cc 中进一步追踪。设置页本身不需要连接飞机即可修改,所有改动即时保存,并会在下一次任务规划时生效。

  • 无人机
  • 智能硬件

【免费下载链接】qgroundcontrol

Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)

项目地址:https://gitcode.com/gh_mirrors/qg/qgroundcontrol
点击查看免费下载

相关推荐

上一篇:SWICD 使用指南:把 Steam Deck 手柄变成 Windows 上的虚拟 Xbox 360 控制器
下一篇:苹果触控板 Windows 手势驱动:三分钟装好

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询