4. 航线规划基础:航点属性、动作与任务管理
各位同学,欢迎来到航线规划的第一课。说实话,很多新手拿到 ArduPilot 第一件事就是在地图上点几个点,然后点“写入”。结果飞机上天后要么原地打转,要么直接往地里钻。嗯,这里面的门道,咱们今天得好好捋一捋。
航线规划,说白了就是告诉飞机:你要去哪、到了干什么、干完怎么走。我做了这么多年无人机,见过太多因为航点属性没设对而炸机的案例。所以这一章,咱们把基础打牢。
4.1 航点(Waypoint)的核心属性
一个航点,不只是地图上的一个点。它包含三个必须填的属性:经纬度、高度和停留时间。少一个,任务就可能出问题。
| 属性 | 单位 | 说明 | 常见坑 |
|---|---|---|---|
| 经纬度 | 度(小数) | WGS84 坐标系,小数点后6位精度约0.1米 | 复制粘贴时少一位,飞机偏出去几十米 |
| 高度 | 米 | 相对起飞点高度(默认)或绝对海拔 | 忘了设高度,飞机按0米飞,直接撞地 |
| 停留时间 | 秒 | 到达后悬停等待的时间 | 设成0不代表不停,而是“不停留直接过” |
4.2 航点动作(DO_CMD)
航点动作,就是让飞机在到达某个位置时,执行一个额外的操作。这些动作通过 DO_SET_* 系列指令实现。我个人的习惯是:把动作指令插在航点之前一行,而不是和航点写在一起。这样逻辑更清晰。
4.2.1 DO_SET_SERVO
控制舵机或继电器。比如投弹、开伞、触发相机快门。
# 示例:在航点3之前,设置舵机9输出2000μs(打开)
DO_SET_SERVO:舵机通道=9,脉宽=2000
WAYPOINT:经纬度=xxx,高度=50m,停留=0s
DO_SET_SERVO 恢复默认值。比如投弹后,再发一个脉宽1000μs把舵机关闭。否则飞机返航时舵机还开着,容易误触。
4.2.2 DO_SET_ROI
设置兴趣点(Region of Interest)。飞机在飞行过程中,机头会始终指向这个点。非常适合巡检、拍摄任务。
# 示例:让飞机在航点4到航点7之间,始终盯着塔顶
DO_SET_ROI:经纬度=塔顶坐标,高度=塔顶高度
WAYPOINT 4
WAYPOINT 5
WAYPOINT 6
WAYPOINT 7
DO_SET_ROI:NONE # 取消锁定
你想想看,如果没有 DO_SET_ROI,飞机飞过塔顶时,相机可能只拍到塔身侧面。有了它,相机全程对准目标,后期拼接效率高很多。
4.2.3 其他常用动作
- DO_CHANGE_SPEED:中途调整巡航速度。比如接近目标点前减速,提高拍摄质量。
- DO_SET_CAM_TRIGG_DIST:设置拍照间隔距离。航测时每5米拍一张,配合这个指令。
- DO_JUMP:跳转到指定航点。实现循环飞行或条件分支。
- DO_SET_HOME:动态重置返航点。适合船载起飞场景。
4.3 航线类型:AUTO / GUIDED / LOITER
很多同学分不清这三种模式的区别。我打个比方:
- AUTO(自动):飞机按预定航线飞,像个按剧本演戏的演员。
- GUIDED(引导):你临时告诉飞机去哪,它自己飞过去。像个听指令的士兵。
- LOITER(悬停):飞机原地画圈或悬停。像个站岗的哨兵。
| 模式 | 适用场景 | 特点 | 我踩过的坑 |
|---|---|---|---|
| AUTO | 测绘、巡检、植保 | 完全自主,按航线执行 | 有一次我忘了上传航线就切AUTO,飞机直接悬停不动…… |
| GUIDED | 临时目标、精准降落 | 可随时改变目标点 | GUIDED模式下不要设太多航点,容易超时 |
| LOITER | 等待指令、空中观察 | 自动保持位置和高度 | 大风天LOITER耗电很快,别指望它能悬停半小时 |
4.4 任务上传与下载
航线写好了,怎么给飞机?通过 Mission Planner 或 QGroundControl 的“任务”页面。
4.4.1 上传流程
- 连接数传或USB,确保心跳正常。
- 点击“读取”确认当前任务为空或备份旧任务。
- 在列表里编辑航点,或导入已有的 .waypoint 文件。
- 点击“写入”上传到飞控。
- 点击“读取”验证——这一步很多人跳过,结果上传失败都不知道。
4.4.2 下载与备份
下载任务同样重要。尤其是你飞完一次,想复飞同样的航线时。我个人的习惯是:每次飞行前,先下载当前任务,另存为一个带日期的文件。这样万一飞丢了,还能知道它最后执行的是什么航线。
# .waypoint 文件格式示例(部分)
QGC WPL 110
0 0 0 16 0.000000 0.000000 0.000000 0.000000 -35.363261 149.165230 584.000000 1
1 0 3 22 0.000000 0.000000 0.000000 0.000000 -35.363261 149.165230 584.000000 1
2 0 0 16 0.000000 0.000000 0.000000 0.000000 -35.364000 149.166000 100.000000 1
这个文件里,每一行代表一个航点或动作。第4列是指令编号(16=航点,22=起飞,等等)。你如果熟悉这个格式,甚至可以手动编辑。
4.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以把它当作航线规划的“心法口诀”。
这张图从左到右、从上到下,就是航线规划的完整流程。你每次做任务,都可以拿它来对照:属性设对了没?动作插对了没?模式选对了没?上传验证了没?
好了,这一章的内容就是这些。航点属性、动作指令、航线类型、任务上传下载,这四个东西是航线规划的四大支柱。你把这四个搞明白了,后面学航线优化、多机协同、动态重规划,才会顺手。