4、航点任务核心概念:航点、航线、任务模式、任务上传与执行流程

航点任务是PX4巡检作业的核心载体。无论是电力巡线、油气管道巡查,还是农业植保测绘,其自动化作业的本质都是让无人机按照预设的空间坐标序列和动作指令自主飞行。要设计一套可靠、高效的巡检任务,必须首先厘清航点、航线、任务模式以及任务上传与执行流程这四个核心概念。它们构成了从任务规划到任务落地的完整逻辑链条。本章将逐一拆解这些概念,并重点剖析PX4中任务数据流的走向与状态机切换机制,帮助你在实际项目中建立清晰的工程化认知。

航点层 航线层 执行层 航点 (Waypoint) 位置 + 姿态 + 动作 动作指令 云台/相机/抛投/IO 航点类型 起飞/巡航/拍照/降落 参数属性 速度/高度/半径/悬停 航线 (Mission) 有序航点集合 任务模式 AUTO.MISSION 航线属性 循环/单向/相对高度 任务指令 MAVLink MISSION_ITEM 任务上传 QGC/API → 飞控 任务存储 SD卡/dataman 执行引擎 Navigator + Mission 状态反馈 航点到达/任务完成 完整链路:航点定义 → 航线组合 → 任务上传 → 模式切换 → 逐点执行 → 异常处理 核心:MAVLink协议封装 / PX4 Navigator状态机 / 任务存储与索引

上图展示了航点任务从定义到执行的三层架构。航点是最小的原子单元,航线是航点的有序集合,而执行层则负责将航线数据解析为飞控指令并驱动无人机完成飞行。下面我们逐一深入。

4.1 航点:任务的最小原子单元

核心原理:航点(Waypoint)在PX4中本质是一个mission_item_s结构体,它封装了无人机在某一时刻需要到达的空间位置、期望姿态以及在该位置需要执行的特定动作。从MAVLink协议角度看,一个航点对应一条MISSION_ITEM消息,其核心字段包括:

  • 坐标系:MAV_FRAME_GLOBAL(经纬度+海拔)或MAV_FRAME_GLOBAL_RELATIVE_ALT(相对起飞点高度),巡检任务通常使用相对高度以避免气压计漂移影响。
  • 位置信息:纬度(lat)、经度(lon)、高度(alt),精度要求达到1e-7度(约1cm级)。
  • 期望速度:到达该航点时的期望地速,PX4会根据前后航点自动规划速度曲线。
  • 航点动作:包括悬停、拍照、云台俯仰、舵机释放等,通过command字段定义。
  • 到达半径:acceptance_radius,当无人机进入该半径范围即认为到达航点,默认值通常为0.5~2米。

航点类型与工程选择:在PX4任务中,航点并非只有“飞过去”一种。常见的航点类型包括:

航点类型MAVLink命令典型应用场景关键参数
起飞航点MAV_CMD_NAV_TAKEOFF任务起始阶段自动起飞起飞高度、俯仰角
巡航航点MAV_CMD_NAV_WAYPOINT常规路径点飞行到达半径、飞行速度
拍照航点MAV_CMD_DO_SET_CAM_TRIGG_DIST等距间隔拍照触发距离、快门参数
云台控制MAV_CMD_DO_SET_ROI锁定兴趣区域目标经纬度/高度
降落航点MAV_CMD_NAV_LAND任务结束自动降落降落位置、接地速度
条件航点MAV_CMD_CONDITION_DELAY延时等待等待秒数

实战场景:在电力巡检中,我们通常将航点设计为“塔基-塔中-塔顶”的垂直序列。例如,对于一座50米高的输电塔,规划3个航点:塔基(相对高度30米)、塔中(相对高度60米)、塔顶(相对高度90米),每个航点设置云台俯仰角分别为-30°、0°、+30°,确保相机能够完整覆盖塔身。此时,航点的acceptance_radius应设置为1.5米,因为塔身结构复杂,过大的到达半径可能导致拍摄位置偏移。

经验提醒:航点高度建议使用相对高度(RELATIVE_ALT),而非海拔。因为气压计在不同温度、天气下会有漂移,而相对高度以起飞点为基准,误差通常在±0.5米以内,满足巡检拍摄的景深要求。

4.2 航线:航点的有序组合与任务逻辑

核心原理:航线(Mission)是航点的有序集合,它定义了无人机从任务开始到结束的完整飞行路径。在PX4中,航线被存储为mission_s结构体,包含航线版本号、航点数量、当前激活航点索引等元数据。航线不仅包含航点序列,还包含任务级属性:

  • 循环模式:设置航线是否循环执行,对于持续巡检场景(如管道巡查)非常有用。
  • 航线保护:定义地理围栏(Geofence)和返航点,当无人机偏离航线或触发安全策略时自动执行保护动作。
  • 任务结束行为:任务完成后是悬停、返航还是降落,需要在航线末尾明确指定。

任务模式(Mission Mode)的切换逻辑:PX4通过commander模块管理飞行模式。当用户通过遥控器或地面站切换到AUTO.MISSION模式时,飞控会执行以下状态机转换:

  1. 预飞检查:检查GPS星数(≥10颗)、EKF定位状态(estatus≥2)、电池电量(≥20%)、航线数据完整性。
  2. 任务初始化:从SD卡或dataman中加载航线,将mission.current_seq设置为0。
  3. 航点导航:Navigator模块计算当前位置到目标航点的水平距离和垂直误差,输出速度控制指令。
  4. 到达判断:当水平距离小于acceptance_radius且垂直误差小于1米时,触发航点到达事件,执行该航点的动作指令。
  5. 航点推进:将current_seq加1,加载下一个航点,重复步骤3-4,直到航线结束。

案例拆解:以某化工厂区巡检为例,任务要求无人机沿厂区围墙飞行一周,每50米拍摄一张红外照片。我们设计了一条包含24个航点的航线:

  • 航点0:起飞点(相对高度20米)
  • 航点1-22:等间距巡航航点,每个航点设置DO_SET_CAM_TRIGG_DIST命令,触发距离为50米
  • 航点23:返航点(起飞点上方)
  • 航点24:降落点

实际执行中,我们发现第8个航点附近有高压线,无人机在接近时触发了避障系统导致任务中断。复盘后,我们在该航点前增加了一个CONDITION_DELAY航点,延时5秒,同时将飞行速度从12m/s降至6m/s,确保安全通过。这一调整使任务成功率从85%提升至98%。

风险提示:航线设计时必须考虑GPS信号遮挡问题。在建筑物密集区或山谷中,航点间距不宜过小(建议≥10米),否则无人机可能来不及完成转弯动作就进入下一个航点,导致路径震荡。

4.3 任务上传与执行流程

操作流程:任务上传是连接地面站与飞控的关键环节。以QGroundControl(QGC)为例,完整流程如下:

  1. 航线规划:在QGC地图上点击生成航点,设置每个航点的属性(高度、速度、动作)。
  2. 协议封装:QGC将航点列表封装为MAVLink MISSION_COUNT消息,告知飞控即将上传的航点总数。
  3. 逐条传输:飞控回复MISSION_REQUEST,QGC发送MISSION_ITEM,循环直到所有航点传输完成。
  4. 校验确认:飞控收到全部航点后,发送MISSION_ACK确认,QGC显示“上传成功”。
  5. 模式切换:用户通过遥控器或QGC将飞行模式切换为AUTO.MISSION,飞控开始执行。

PX4内部数据流:任务数据在飞控内部经过以下模块处理:

MAVLink接收 → dataman(SD卡存储) → Navigator(任务解析) → MissionBlock(航点状态机) → PositionController(位置控制) → RateController(姿态控制) → 电机输出

其中,Navigator是任务执行的核心,它维护一个mission_state枚举,包括MISSION_STATE_NONE、MISSION_STATE_START、MISSION_STATE_EXECUTING、MISSION_STATE_COMPLETE等状态。当任务异常(如GPS丢失)时,Navigator会触发MISSION_STATE_ABORT,并执行预设的应急策略(如悬停或返航)。

常见误区与复盘:

误区现象根因分析解决方案
航点高度使用海拔任务执行时高度偏差大气压计漂移导致海拔不准改用相对高度
到达半径设置过大拍照位置偏移无人机提前触发到达逻辑根据任务精度设置0.5~1米
忽略航线保护设置飞出地理围栏未定义Geofence设置围栏并绑定返航策略
上传后未校验航点缺失或乱序MAVLink传输丢包上传后读取航线回传比对
工程实践建议:在巡检任务中,建议将航线文件保存为QGC的.plan格式,并在任务执行前通过MAV_CMD_MISSION_START命令进行预检。同时,在飞控日志中监控NAV_STATE和MISSION_CURRENT两个关键参数,它们能实时反映任务执行进度和当前航点索引。

总结而言,航点、航线、任务模式和执行流程构成了PX4巡检任务的完整骨架。理解航点的原子属性、航线的组合逻辑以及任务上传的协议细节,是开发可靠巡检AI的基础。在实际项目中,建议先在地面站完成仿真验证,再在真机上进行小规模测试,逐步增加航点数量和任务复杂度,确保每个环节的稳定性。