4. 航点(Waypoint)概念:什么是航点,航点的属性,以及航点类型

各位同学,今天我们聊一个非常基础但又极其重要的概念——航点。

说白了,航点就是无人机在飞行任务中必须经过的“打卡点”。你想想看,我们让飞机从A飞到B,总不能让它瞎飞吧?你得告诉它:先飞到哪个位置,停多久,再飞下一个。这些位置信息,就是航点。

我刚开始做飞控的时候,总觉得航点不就是个坐标嘛,有什么好讲的?后来在项目里栽过跟头,才发现航点里的门道比想象中多得多。嗯,今天我们就把它彻底讲透。

4.1 什么是航点

航点(Waypoint),在ArduPilot里就是一个三维空间中的目标位置。它告诉飞控:

  • 你要飞到哪个经纬度
  • 飞到多高
  • 到了之后做什么

你可以把航点想象成给无人机下达的“路书”。就像开车导航,每个转弯点就是一个航点。只不过无人机的航点是在三维空间里,多了高度这个维度。

核心理解:航点是任务规划的最小单元。一个完整的航线任务,就是由若干个航点按顺序排列组成的。

4.2 航点的核心属性

每个航点都包含几个关键属性。我习惯把它们分成三组:位置属性、行为属性和控制属性。

属性类别 属性名称 说明 典型值/范围
位置属性 纬度 (Latitude) WGS84坐标系,北正南负 -90° ~ +90°
经度 (Longitude) WGS84坐标系,东正西负 -180° ~ +180°
行为属性 高度 (Altitude) 相对起飞点高度(默认)或绝对海拔 0 ~ 500m(常见)
停留时间 (Delay) 到达航点后悬停等待的时间 0 ~ 65535秒
控制属性 航点类型 定义飞控到达该点后的行为模式 NAV_WAYPOINT等

4.2.1 经纬度——位置的基础

经纬度没什么好说的,就是地球上的坐标。但有一点我要特别提醒:ArduPilot默认使用WGS84坐标系,也就是GPS用的那个坐标系。如果你从其他地图软件拿到的坐标是GCJ-02(火星坐标系),记得先转换,否则飞机会偏出去几十米。

我曾经有个学生,直接用百度地图的坐标上传任务,结果飞机在天上画了个“平移”航线,离目标点偏了快100米。嗯,这个坑我替你们踩过了。

4.2.2 高度——最容易出问题的属性

高度这个属性,看起来简单,实际上坑最多。

ArduPilot里高度有两种模式:

  • 相对高度(Relative Altitude):相对于起飞点的高度。比如你设10米,就是从起飞点往上10米。这是最常用的模式。
  • 绝对高度(Absolute Altitude):相对于海平面的高度。这个需要你清楚当地的海拔基准。

重要提醒:在Mission Planner里,默认使用的是相对高度。但如果你从其他软件导入任务,一定要检查高度模式。我见过有人把绝对高度当相对高度用,结果飞机起飞后直接往地下钻——因为绝对高度比起飞点还低。

4.2.3 停留时间——让飞机“等一下”

停留时间(Delay)这个属性,说白了就是让飞机在航点悬停一会儿。单位是秒。

什么时候会用?

  • 航拍任务:在关键位置悬停几秒,拍清楚
  • 投递任务:到达目标点后停留,等待投递完成
  • 巡检任务:在设备上方悬停,让传感器稳定读数

我个人的习惯是:停留时间不要设太长。除非有特殊需求,一般3-5秒就够了。设太久,电池扛不住,而且风大的时候飞机飘来飘去,反而容易出问题。

4.3 航点类型——NAV_WAYPOINT

ArduPilot里航点有很多类型,但最基础、最常用的就是NAV_WAYPOINT。

NAV_WAYPOINT的含义很简单:飞到指定位置,然后继续执行下一个航点。它不会触发任何特殊动作,就是纯粹的“飞过去”。

在Mission Planner的任务列表里,NAV_WAYPOINT的显示格式是这样的:

NAV_WAYPOINT {纬度} {经度} {高度} {停留时间}

举个例子:

NAV_WAYPOINT 31.2304 121.4737 50 3

这条指令的意思是:飞到北纬31.2304、东经121.4737,高度50米(相对起飞点),到达后悬停3秒,然后继续执行下一条指令。

小技巧:如果你想让飞机“路过”某个点但不减速,可以把停留时间设为0。这样飞控会以巡航速度直接飞过,不会在航点上方减速悬停。这在测绘任务里很常用,能节省不少时间。

4.4 航点与任务的关系

一个完整的航线任务,就是由多个航点串联起来的。我画了一张图,帮你理解这个结构:

航点与任务结构图 完整航线任务 航点 1 NAV_WAYPOINT 航点 2 NAV_WAYPOINT 航点 3 NAV_WAYPOINT 航点 N ... 每个航点包含的属性: • 位置:纬度 + 经度(WGS84坐标系) • 高度:相对高度(默认)或绝对高度 • 行为:停留时间(秒),0表示不停留

从这张图你可以看到:

  • 任务由多个航点按顺序组成
  • 每个航点都有自己的位置和属性
  • 飞控会按顺序依次执行每个航点
  • 航点之间通过航线连接,形成完整的飞行路径

4.5 实际项目中的注意事项

最后,分享几个我在实际项目中积累的经验:

经验1:航点数量不是越多越好。有些人为了航线“好看”,密密麻麻设了几百个航点。其实没必要。飞控的导航精度有限,航点太多反而会增加计算负担。一般来说,直线段每隔50-100米设一个航点就够了。

经验2:注意航点之间的高度变化。如果两个相邻航点高度差太大(比如从10米突然跳到100米),飞机会以最大爬升率往上冲,姿态会很剧烈。我建议高度变化率控制在5米/秒以内,这样飞行更平稳。

经验3:第一个航点的高度要合理。很多人习惯把第一个航点设得很低(比如5米),觉得这样起飞后马上就能进入任务。但这样做有风险——如果GPS信号不好或者气压计有误差,飞机可能直接撞地。我个人的习惯是:第一个航点高度不低于15米,给飞控留足安全余量。