4、航点任务核心概念:航点、航线、任务模式、任务上传与执行流程
航点任务是PX4巡检作业的核心载体。无论是电力巡线、油气管道巡查,还是农业植保测绘,其自动化作业的本质都是让无人机按照预设的空间坐标序列和动作指令自主飞行。要设计一套可靠、高效的巡检任务,必须首先厘清航点、航线、任务模式以及任务上传与执行流程这四个核心概念。它们构成了从任务规划到任务落地的完整逻辑链条。本章将逐一拆解这些概念,并重点剖析PX4中任务数据流的走向与状态机切换机制,帮助你在实际项目中建立清晰的工程化认知。
上图展示了航点任务从定义到执行的三层架构。航点是最小的原子单元,航线是航点的有序集合,而执行层则负责将航线数据解析为飞控指令并驱动无人机完成飞行。下面我们逐一深入。
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米,因为塔身结构复杂,过大的到达半径可能导致拍摄位置偏移。
4.2 航线:航点的有序组合与任务逻辑
核心原理:航线(Mission)是航点的有序集合,它定义了无人机从任务开始到结束的完整飞行路径。在PX4中,航线被存储为mission_s结构体,包含航线版本号、航点数量、当前激活航点索引等元数据。航线不仅包含航点序列,还包含任务级属性:
- 循环模式:设置航线是否循环执行,对于持续巡检场景(如管道巡查)非常有用。
- 航线保护:定义地理围栏(Geofence)和返航点,当无人机偏离航线或触发安全策略时自动执行保护动作。
- 任务结束行为:任务完成后是悬停、返航还是降落,需要在航线末尾明确指定。
任务模式(Mission Mode)的切换逻辑:PX4通过commander模块管理飞行模式。当用户通过遥控器或地面站切换到AUTO.MISSION模式时,飞控会执行以下状态机转换:
- 预飞检查:检查GPS星数(≥10颗)、EKF定位状态(estatus≥2)、电池电量(≥20%)、航线数据完整性。
- 任务初始化:从SD卡或dataman中加载航线,将
mission.current_seq设置为0。 - 航点导航:Navigator模块计算当前位置到目标航点的水平距离和垂直误差,输出速度控制指令。
- 到达判断:当水平距离小于
acceptance_radius且垂直误差小于1米时,触发航点到达事件,执行该航点的动作指令。 - 航点推进:将
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%。
4.3 任务上传与执行流程
操作流程:任务上传是连接地面站与飞控的关键环节。以QGroundControl(QGC)为例,完整流程如下:
- 航线规划:在QGC地图上点击生成航点,设置每个航点的属性(高度、速度、动作)。
- 协议封装:QGC将航点列表封装为MAVLink
MISSION_COUNT消息,告知飞控即将上传的航点总数。 - 逐条传输:飞控回复
MISSION_REQUEST,QGC发送MISSION_ITEM,循环直到所有航点传输完成。 - 校验确认:飞控收到全部航点后,发送
MISSION_ACK确认,QGC显示“上传成功”。 - 模式切换:用户通过遥控器或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传输丢包 | 上传后读取航线回传比对 |
.plan格式,并在任务执行前通过MAV_CMD_MISSION_START命令进行预检。同时,在飞控日志中监控NAV_STATE和MISSION_CURRENT两个关键参数,它们能实时反映任务执行进度和当前航点索引。总结而言,航点、航线、任务模式和执行流程构成了PX4巡检任务的完整骨架。理解航点的原子属性、航线的组合逻辑以及任务上传的协议细节,是开发可靠巡检AI的基础。在实际项目中,建议先在地面站完成仿真验证,再在真机上进行小规模测试,逐步增加航点数量和任务复杂度,确保每个环节的稳定性。