4. 航点数据结构与任务文件
航点任务规划的本质,是把一条飞行意图翻译成飞控能逐条执行的“结构化指令序列”。一个航点远不止“经度、纬度、高度”三个数,它通常还包含速度、航向、悬停时间以及到达该点后要执行的动作。理解航点数据结构和任务文件格式,是保证规划结果能被地面站、飞控和仿真工具正确解析的前提。
一、单个航点的字段构成
在主流开源飞控(如 PX4、ArduPilot)的任务协议中,一个航点通常由若干字段组成,可归纳为“位置—运动—时间—动作”四类:
- 位置字段:纬度(lat)、经度(lon)、相对高度或海拔高度(alt)。经纬度一般用十进制度表示,高度需明确是相对起飞点(relative)还是绝对海拔(AMSL),二者混用是常见错误来源。
- 运动字段:期望速度(如 5 m/s)、航向(yaw,单位度,正北为 0,顺时针为正)、航向模式(自动/固定/朝向下一航点)。
- 时间字段:悬停时间(hold/loiter time,单位秒),表示到达该点后原地停留的时长。
- 动作字段:到达该点后触发的指令,如拍照、投放、开灯、切换飞行模式、开始测绘等。
需要特别说明坐标系约定:本文及后续图示中,航向角以正北为 0°,顺时针为正,取值范围 0°~360°;高度默认相对起飞点。若任务文件使用绝对高度,必须在字段或文件头中显式标注,全文保持一致。
二、航点序列与任务文件
多个航点按顺序排列,就构成一条航线。任务文件则是把这条航线连同起飞、返航、降落等指令一起序列化保存的载体。常见格式有三类:
| 格式 | 典型扩展名 | 特点 |
|---|---|---|
| QGC WPL 110 | .plan / .waypoints | 文本行,每行一个航点,字段以制表符分隔,兼容 QGroundControl |
| MAVLink 任务项 | 二进制/JSON | 飞控通信层协议,字段与 WPL 对应,用于上传下载 |
| KML / GPX | .kml / .gpx | 地理信息通用格式,便于在 GIS 软件中查看,但动作字段支持有限 |
以 QGC WPL 110 为例,一行典型记录如下:
0 1 0 16 0 0 0 0 47.397742 8.545594 50.0 1
1 0 0 16 5 0 0 0 47.398000 8.546000 60.0 1
2 0 0 20 3 0 0 0 47.398500 8.546500 60.0 1
3 0 0 20 0 0 0 0 47.399000 8.547000 0.0 1
各列含义依次为:序号、当前航点、坐标系、命令编号、参数1~4、纬度、经度、高度、是否自动继续。其中命令编号 16 表示“航点”,20 表示“返航”,参数1 常被用作悬停时间或速度。理解列序,才能手工检查或批量生成任务文件。
三、从规划到执行的字段流转
规划软件中填写的每个字段,最终都要经过“任务文件—飞控解析—航点执行”的链路。下图展示了一个航点从数据结构到实际飞行动作的对应关系,重点标出位置、速度、悬停与动作四类字段在链路中的落点。
四、字段填写中的常见陷阱
实际规划时,最容易出问题的不是“不会填”,而是“填了但含义不一致”。以下三点值得反复检查:
- 高度基准混用:同一任务中,若部分航点用相对高度、部分用绝对高度,飞控会按各自基准执行,导致航线在垂直方向出现跳变。建议在任务文件头或规划软件中统一设置为相对起飞点高度。
- 航向与航段方向混淆:航向字段是“到达该点后的机头朝向”,不是“从上一个点飞来的方向”。若希望机头始终对准下一航点,应选择“朝向下一航点”模式,而不是手工填写固定角度。
- 悬停时间与动作顺序:悬停时间通常从到达该点开始计时,动作指令在到达瞬间触发。若动作需要稳定后再执行(如拍照),应把悬停时间设为大于稳定时间,或使用“悬停后执行”类命令。
五、一个可参考的航点任务片段
下面给出一段用于教学演示的航点任务片段(示例参数,非实测结果)。任务为:起飞后依次经过两个航点,第一点悬停 5 秒拍照,第二点悬停 3 秒后返航。高度统一为相对起飞点 50 米,速度 5 m/s,航向朝向下一航点。
QGC WPL 110
0 1 0 16 0 0 0 0 47.397742 8.545594 0.0 1
1 0 0 16 5 0 0 0 47.398000 8.546000 50.0 1
2 0 0 16 3 0 0 0 47.398500 8.546500 50.0 1
3 0 0 20 0 0 0 0 47.397742 8.545594 0.0 1
其中第 0 行为起飞点,第 1、2 行为航点,第 3 行为返航命令(命令编号 20)。参数1 分别填入 5 和 3,对应悬停秒数。检查时重点看:高度列是否统一为 50.0、经纬度是否落在任务区域内、最后一列是否均为 1(自动继续)。
掌握航点数据结构和任务文件格式后,后续的航线校验、批量生成和飞控上传才有可靠基础。建议在每次规划完成后,至少做一次“字段级检查”:高度基准是否统一、航向模式是否正确、悬停时间与动作是否匹配、文件列序是否与目标飞控一致。