- 无人机
- 智能硬件
【免费下载链接】qgroundcontrol
Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)
导读
QGroundControl(QGC)的Plan View(计划视图)通过Pattern 工具让用户无需逐条编写 MAVLink 任务指令,即可用图形化方式规划复杂的航测与降落航线。本文以官方用户指南的 pattern 概述 为主线,完整讲解 Survey(多边形区域网格航测)、Structure Scan(结构立面扫描)、Corridor Scan(走廊扫描)与 Fixed Wing Landing(固定翼降落)四种模式工具的适用机型、创建流程、全部参数含义,并结合 MissionManager 源码 揭示其底层实现原理(如相机足迹计算、转弯距离、地形跟随、降落三指令序列等)。读完本文,你将能针对具体任务场景选择合适的 Pattern,并在计划视图中完成一次可上传的复杂任务规划。
Pattern 工具总览
在计划视图左侧的Plan Tools工具条中,Pattern工具用于把复杂的几何飞行任务简化成一次图形化点击。点击按钮后,可用的模式类型取决于当前所选的飞行器机型以及飞行栈对该机型的支持程度。
| Pattern 工具 | 描述 | 适用机型 |
|---|---|---|
| Survey | 在多边形区域上创建网格飞行航测。可指定多边形形状、网格规格以及适合生成带地理标签影像的相机设置 | 全部机型 |
| Structure Scan | 创建在垂直表面(多边形或圆形)上采集影像的网格航线,典型用于结构物目视巡检或三维建模 | MultiCopter、VTOL |
| Corridor Scan | 创建沿折线(poly-line)飞行的航线,例如用于公路巡检 | 全部机型 |
| Fixed Wing Landing | 为固定翼飞行器在任务中加入降落航线 | Fixed Wing |
如果当前机型可用多种模式,点击按钮会弹出下拉菜单供选择(见 plan_view.md 的Pattern小节)。
在源码层面,每种模式对应MissionManager中的一个独立类,全部继承自ComplexMissionItem:
SurveyComplexItem(SurveyComplexItem.h),继承TransectStyleComplexItem;CorridorScanComplexItem(CorridorScanComplexItem.h),同样继承TransectStyleComplexItem;StructureScanComplexItem(StructureScanComplexItem.h),直接继承ComplexMissionItem;FixedWingLandingComplexItem(FixedWingLandingComplexItem.h),继承LandingComplexItem。
这种“复杂任务项”的设计使得模式可以在计划视图中作为一个整体被拖拽、缩放、旋转,并在保存/上传时被展开为若干基础任务指令(MissionItem)。
Survey:多边形区域网格航测
Survey允许你在多边形区域内创建一个网格状飞行航线。你可以指定任意多边形、网格角度与其他网格属性,以及适合生成带地理标签影像的相机设置。其源码实现对应SurveyComplexItem,canonicalName为 "Survey"(SurveyComplexItem.h)。
创建流程
- 打开 PlanView 的Plan Tools;
- 在Plan Tools中选择Pattern Tool,然后选择Survey。地图上会出现一个航测网格,右侧任务列表中也会出现一个Survey任务项;
- 在地图上拖动顶点改变多边形形状;
- 点击相邻顶点之间的
(+)符号创建新顶点,新顶点可继续拖到目标位置。
相机设置(Camera)
相机触发行为取决于相机及其设置。你可以选择已存在的相机(Known Camera)、自定义相机(Custom Camera),或手动输入参数(Manual Camera)。三者的底层都由 CameraCalc 驱动,它继承自CameraSpec,负责根据相机参数实时反算飞行高度、触发距离与网格间距。
已知相机(Known Camera):从下拉列表选择相机会根据相机参数生成网格模式,默认设置可通过以下选项调优:
- Landscape/Portrait(横屏/竖屏):相机相对飞行器“正常”朝向的旋转方向;
- Overlap(重叠率):每次影像采集之间的重叠,可分别针对沿航线方向(frontal overlap)与跨航线方向(side overlap)配置。对应源码中的
frontalOverlap与sideOverlap两个 Fact(CameraCalc.h); - 二者选其一:
- Altitude(飞行高度):指定航测高度,地面分辨率据此计算并显示;
- Ground resolution(地面分辨率):指定每张影像的地面分辨率,所需飞行高度被计算并显示。
自定义相机(Custom Camera):除与已知相机相同的选项外,还需手动填写相机特性参数(对应 CameraSpec.h 中的字段):
- Sensor width/height(传感器宽/高):相机图像传感器尺寸;
- Image width/height(影像宽/高):相机采集影像的分辨率;
- Focal Length(焦距):镜头焦距。
手动相机(Manual Camera):直接指定期望的航测高度、触发间隔和合适网格间距:
- Altitude(高度):整个网格的飞行高度;
- Trigger Distance(触发距离):相邻两次相机拍摄之间的地面距离;
- Spacing(间距):走廊内相邻网格(航线)线之间的距离。
源码注释揭示了实现细节:即便是手动网格,QGC 也复用CameraCalc来存储参数——网格高度对应distanceToSurface、网格高度模式对应distanceMode、触发距离对应adjustedFootprintFrontal、航线间距对应adjustedFootprintSide(CameraCalc.h)。这种复用极大简化了手动网格的代码与持久化逻辑。
航线设置(Transects)
Transects用于配置与相机无关的网格设置,在SurveyComplexItem中对应gridAngle、turnAroundDistance、flyAlternateTransects、splitConcavePolygons等 Fact(SurveyComplexItem.h):
- Angle(角度):网格线相对正北的角度;
- Turnaround dist(转弯距离):在航测区域之外额外添加的掉头距离。源码中对应
turnAroundDistance(多旋翼还有独立的TurnAroundDistanceMultiRotor默认值,见 TransectStyleComplexItem.h); - Rotate Entry Point(旋转入口点):按下按钮交换航测的起点与终点,对应
rotateEntryPoint()方法(SurveyComplexItem.h); - Hover and capture image(悬停拍照):仅限多旋翼,悬停并采集影像,对应
hoverAndCapture(源码中悬停拍照的延迟常量为 4 秒,见 TransectStyleComplexItem.h); - Refly at 90 degree offset(90° 偏移重飞):勾选后整个任务以 90 度偏移重飞一遍,对应
refly90Degrees; - Images in turnarounds(转弯处拍照):勾选后转弯时也采集影像,对应
cameraTriggerInTurnAround; - Relative altitude(相对高度):勾选后指定高度相对于 home 点,否则为 AMSL(平均海平面高度)。
地形跟随(Terrain Following)
默认情况下飞行器以固定高度沿航测路径飞行。启用Terrain Following后飞行器相对地面保持恒定高度。地形高度数据查询自 AirMap 服务器(官方文档说明)。可配置项(对应 TransectStyleComplexItem.h 中的三个 Fact):
- Vehicle follows terrain:勾选启用地形跟随并显示下列选项;
- Tolerance:相对目标高度的允许偏差;
- Max Climb Rate:跟随地形时的最大爬升率;
- Max Descent Rate:跟随地形时的最大下降率。
官方警告:若航测区域高程变化显著,应考虑启用地形跟随。按相机参数规划航测时,默认假定地面与起飞/home 位置同高;若实际地面高程更高或更低,影像有效重叠会分别小于或大于计算值。当地面高程显著高于 home 位置时,甚至可能规划出导致飞行器撞入地面障碍物的航线。地形跟随能保证航线更贴近“相对地面高度”,降低规划航线过低的风险。
统计信息(Statistics)
Statistics展示计算出的航测面积、拍照间隔、照片间距与计划照片总数。
Structure Scan:垂直表面网格扫描
Structure Scan用于在结构物(如墙体)的垂直表面上创建网格航线,结构物底面可为任意多边形或圆形。典型用途是结构物目视巡检或创建三维模型。注意两点官方说明:
- 新版 Structure Scan 无法读取旧版计划,旧计划需要重新创建;
- 该功能 ArduPilot 固件尚不支持,PX4 支持。
其源码实现对应StructureScanComplexItem。一次扫描会把结构物均匀分为若干层,飞行器以某一高度、距结构物scan distance的距离环绕一圈,然后逐层重复,直到整个表面扫描完毕。绿色多边形标记结构物地面轮廓,其外圈的白色线为飞行路径,路径上绿色带编号的圆圈是扫描的进入/退出点。
创建流程
- 在Plan View中选择Pattern tool > Structure Scan;
- 地图上会生成一个简单的方形扫描。绿色区域需要修改使其包围结构物:
- 把不透明顶点拖到结构物边缘;
- 若结构物底面不是简单方形,点击顶点间的半透明圆圈创建新顶点;
- 点击中心的“顶点”(红色标记)可在弹出菜单中选择Circle切换为圆形底面。弹窗中也可切回多边形,并可调整半径与位置;拖动中心顶点可移动圆心;
- 其余配置在视图右侧的Structure Scan编辑器中进行。先选择手动扫描(manual)、使用特定相机(known camera)或自定义相机(custom camera)。
官方说明指出,各模式的主要区别在于:预置相机已正确配置了有效层高与触发距离的计算。
通用设置
以下设置任何模式下都可配置:
- Start scan from top/bottom:图层扫描方向(自顶向下或自底向上);
- Structure height:被扫描物体的高度;
- Scan distance:结构物到飞行路径的距离;
- Entrance/Exit Alt:用于避开最后一个/下一个航点与结构物之间的障碍物。飞行器先飞到此高度到达进入/退出点,再下降到初始图层开始扫描;扫描结束后爬升到此高度再飞往下一航点;
- Scan Bottom Alt:用于避开结构物底部的障碍物,把结构物底部抬高到地面以上,从而抬高首个扫描图层的高度(最低图层的航线高度会作为Bottom Layer Alt显示在统计信息中);
- Rotate Entry Point:把起点/终点移动到航线上的下一个顶点/位置。
相机模式相关设置
手动模式(Manual Mode):
- Layer height:每层的高度;
- Trigger Distance:每次相机触发的间隔。相机仅在飞图层路径时触发,图层间过渡时不触发;
- Gimbal Pitch:扫描时使用的云台俯仰角(源码中对应
gimbalPitchName与_updateGimbalPitch/_recalcScanDistance,见 StructureScanComplexItem.h)。
已知/预置相机(Known/pre-defined cameras):根据所需影像重叠自动计算层高与触发间隔,并允许在扫描距离与所需影像分辨率之间权衡;同时确保拍摄时相机正对表面(即垂直而非切线方向)。设置项:
- Camera Orientation:竖屏或横屏;
- Overlap:
- Front Lap:上下方向影像重叠(增大则层高变小、层数变多);
- Side Lap:侧面影像重叠(增大则每圈/每层拍摄更多影像);
- Scan distance:结构物到航线的距离;
- Ground Res:所需影像分辨率/表面采样质量。
自定义相机(Custom camera):可自行输入相机特性,其余行为与预置相机一致。
Corridor Scan:折线走廊扫描
Corridor Scan创建沿折线飞行的航线,例如用于公路巡检。它支持所有飞控与机型。其源码实现对应CorridorScanComplexItem(继承TransectStyleComplexItem)。
创建流程
- 打开 PlanView 的Plan Tools;
- 选择Pattern Tool后选择Corridor Scan,地图上出现走廊,右侧任务列表出现Corridor Scan任务项;
- 在地图上把走廊两端分别拖到扫描的起始与结束位置;
- 点击线段中央的
(+)符号创建新顶点,拖动顶点使走廊贴合目标路径。
相机设置
已知相机(Known Camera):根据相机规格生成网格:
- Landscape/Portrait:相机相对飞行器“正常”朝向的旋转;
- Image Overlap:每张影像之间的重叠;
- 二者选其一:
- Altitude:航测高度(地面分辨率据此计算显示);
- Ground resolution:每张影像的地面分辨率(所需高度被计算显示)。
手动相机(Manual Camera):
- Altitude:航测高度;
- Trigger Distance:相邻拍摄之间的地面距离;
- Spacing:走廊内相邻航线之间的间距。
走廊设置(Corridor)
- Width:以折线路径为中心线的扫描宽度;
- Turnaround dist:航测区域外额外添加的掉头距离;
- Take images in turnarounds:勾选后在转弯点采集影像;
- Relative altitude:勾选使用相对高度,仅支持未启用地形跟随的手动网格;
- Rotate entry point:交换走廊扫描的起点与终点。
地形跟随与统计
与 Survey 一致,默认固定高度飞行,启用Terrain Following后相对地面保持恒定高度(地形数据来自 AirMap 服务器)。可配置Vehicle follows terrain、Tolerance、Max Climb Rate、Max Descent Rate。官方同样强调:按相机参数规划时地面高程被假定与 home 点相同,若区域高程差异大应使用地形跟随,避免航线过低撞入树木、障碍物或地面。Statistics展示扫描面积、拍照间隔、照片间距与计划照片数。
Fixed Wing Landing:固定翼降落航线
Fixed Wing Landing Pattern工具向任务中加入固定翼降落航线,ArduPilot 与 PX4 均支持。航线第一个点是带特定高度的盘旋点(loiter point),第二个点是降落点(landing point):飞行器先在第一个点盘旋直至达到目标高度,然后开始降落序列飞向指定降落点。源码实现对应FixedWingLandingComplexItem(继承LandingComplexItem,见 FixedWingLandingComplexItem.h)。
创建流程
- 打开 PlanView 的Plan Tools;
- 选择Pattern Tool后选择Fixed Wing Landing Pattern,右侧任务列表出现Landing Pattern任务项;
- 在地图上点击创建盘旋点与降落点,二者均可拖动调整。
盘旋点设置(Loiter Point)
- Altitude:盘旋高度;
- Radius:盘旋半径;
- Loiter clockwise:勾选顺时针盘旋(默认逆时针)。
降落点设置(Landing Point)
- Heading:从盘旋点到降落点的航向;
- Altitude:降落点高度(名义上为零);
- 单选按钮,二选一:
- Landing Dist:盘旋点与降落点之间的距离;
- Glide Slope:盘旋点与降落点之间的下滑角;
- Altitudes relative to home:勾选后任务项中所有高度相对于 home(默认 AMSL)。
实现原理(Implementation)
此模式会创建三个任务指令(FixedWingLandingComplexItem.h 及其实现所展开的任务序列,官方文档明确列出):
DO_LAND_START:若中止降落,会向飞行器发送DO_GO_AROUND,任务将回到此点重新尝试降落;NAV_LOITER_TO_ALT:降落起点;NAV_LAND:降落终点。
飞行器在NAV_LOITER_TO_ALT与NAV_LAND之间由固件生成的飞行路径拉飘降落(flare)。若这两点违反飞行器的拉飘约束(例如下滑角过陡),在把无效任务上传到飞行器后会报错。PX4 上,违反拉飘约束会在上传时向地面站发送错误消息,且飞控会因完整性检查失败而拒绝启动任务。
深入:Pattern 任务的统一生成机制
4 种模式看似独立,但共享一套成熟的任务生成架构:
- 继承体系:Survey 与 Corridor Scan 共享
TransectStyleComplexItem(航测风格任务项),它封装了航线重建(_rebuildTransectsPhase1)、相机触发(_recalcCameraShots)、转弯距离、悬停拍照、90° 重飞等通用逻辑(TransectStyleComplexItem.h);Survey 在此基础上增加网格角度、交替航线、凹多边形拆分等特性(SurveyComplexItem.h); - 相机计算:所有带相机参数的模式统一由
CameraCalc(继承CameraSpec)计算影像足迹与触发距离。imageFootprintSide/imageFootprintFrontal两个属性由相机属性实时推导(CameraCalc.h),重叠率则通过adjustedFootprintSide/adjustedFootprintFrontal修正后的足迹参与网格密度计算; - 计划生成器:
SurveyPlanCreator、CorridorScanPlanCreator、StructureScanPlanCreator(见 MissionManager 目录)负责把图形化模式转换成可供上传的任务指令序列; - 任务展开:最终所有模式项都会被展开为底层
MissionItem(MAVLink 指令),经 MissionController 上传到飞行器。
对航测与扫描类模式,Survey.SettingsGroup.json、CorridorScan.SettingsGroup.json、StructureScan.SettingsGroup.json、TransectStyle.SettingsGroup.json等文件定义了各参数的默认值与元数据(MissionManager 目录),而FWLandingPattern.FactMetaData.json与LandingComplexItem则支撑固定翼降落模式。
结语与选型建议
综合官方文档与源码实现,选择 Pattern 工具时可参考以下原则:
- 平面区域测绘/正射影像:选择 Survey,重点配置相机重叠率与地面分辨率,并对起伏地形启用 Terrain Following;
- 墙体、立面巡检或三维建模:选择 Structure Scan(多旋翼/VTOL),按相机自动计算层高与触发距离,并用 Entrance/Exit Alt 与 Scan Bottom Alt 规避障碍;
- 线状地物(公路、河道、管道):选择 Corridor Scan,通过 Width 控制覆盖带宽度;
- 固定翼落地航线:选择 Fixed Wing Landing,注意拉飘约束,PX4 上违反约束会在上传时被飞控拒绝。
如需进一步了解计划视图整体操作,可阅读 plan_view.md;每种模式的完整参数细节可分别查看 pattern_survey.md、pattern_structure_scan_v2.md、pattern_corridor_scan.md 与 pattern_fixed_wing_landing.md。
- 无人机
- 智能硬件
【免费下载链接】qgroundcontrol
Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)
相关推荐
QGroundControl 固定翼着陆航线模式(Fixed Wing Landing Pattern)完整指南:规划、参数配置与源码实现解析
QGroundControl 固定翼着陆航线模式(Fixed Wing Landing Pattern)完整指南:规划、参数配置与源码实现解析 固定翼着陆航线模
无人机智能硬件Velero Restore 完全参考:velero restore 命令、恢复流程、资源顺序与 PV/PVC 恢复机制
Velero Restore 完全参考:velero restore 命令、恢复流程、资源顺序与 PV/PVC 恢复机制 本文基于 Velero 官方文档《Re
无人机智能硬件QGroundControl Structure Scan(结构扫描)航线规划完整指南:从多边形编辑到相机触发参数
QGroundControl Structure Scan(结构扫描)航线规划完整指南:从多边形编辑到相机触发参数 Structure Scan(结构扫描)是
无人机智能硬件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考