想象你是一位园丁,接手了一片足球场那么大的草坪。草要修剪,肥要施匀,可草坪里散布着花坛、假山和一口池塘。你不可能蹲在地上用剪刀慢慢剪——于是你开上一辆“智能割草施肥一体机”。这台机器真正的本事,藏在一连串“规划”里:先走哪条线,才能把每一寸草都剪到、不重不漏?走到哪片草,该多施肥还是少施肥?遇到假山怎么绕?电量只够干一半,是先割东边还是西边?机器正干着活,草坪上突然滚来一只皮球,又该怎么办?买了两台机器,怎样分工才不撞车、不窝工?这些问题的答案,正是“无人机植保路径规划与变量施药”这门技术的核心。本文就跟着这台智能割草机,把智慧农业里这位“空中作业调度大脑”的工作方式,一垄一垄地讲清楚。
学完本节,你将理解植保无人机从航线生成到变量施药、从避障到多机协同的完整决策链条,能为农业科技公司设计智慧作业方案,推动“AI+农业”从概念走向田间地头。
可视化演示
展示全覆盖Boustrophedon路径规划与覆盖率、变量施药分区控制及多机协同分区作业策略。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Boustrophedon全覆盖路径规划 往返式扫描覆盖确保零遗漏 无人机沿路径飞行实时喷洒 Coverage=L×W/N_rows 条数取决于幅宽与田块尺寸
全覆盖路径规划
老周打理着一片足球场大小的草坪。他开着智能割草机给草坪“理发”,最怕两件事:一块草漏割,显得坑坑洼洼;一条道重复割,白白费油费时。他干活的经验就一句话:像老牛耕地一样,从这头走到那头,压着上一趟的轮印往回走,一垄挨着一垄,把整块地“梳”一遍——这正是全覆盖路径规划最朴素的模样。
无人机植保里的“牛耕往复法”(也叫弓字扫描),就是这套经验的数字化版本。无人机沿地块长边直线飞行,按“喷幅”(喷杆展开后能覆盖的宽度,类似割草机刀盘宽度)逐行平移,一趟过去、调头、再一趟回来,直到覆盖整个地块。规划要算清三笔账:飞多少趟、每趟飞多长、转多少次弯。趟数越多,转弯的“无效滑行”就越多,因此趟数计算是全覆盖规划的第一块基石。
算账的核心是两条公式:先根据地块宽度 W 和喷幅 w 算出往返趟数,再累加直线里程和转弯里程。转弯不是瞬间完成的——无人机要减速、转向、加速,这段滑行距离称为“转弯代价”。把这一笔笔账加总,就得到整个架次的总飞行里程,也就能估算电量够不够用、药够不够喷。
老周割草时会刻意压着上一刀的一半轮印走,防止漏割也防止重复。牛耕往复法同样用“喷幅”作标尺——趟数向上取整保证全覆盖,转弯次数被算进总里程,提醒规划者“少转弯就是省电”。整片草坪怎么梳,无人机心里早就有了一张“梳子图”。
- 趟数 n地块宽度 W 除以单趟喷幅 w,向上取整,保证最后一趟也能完整覆盖地块,不会留一条“漏割带”。
- 直线里程每趟沿长边直线飞行地块长度 l,共 n 趟。
- 转弯里程从第 2 趟起每换一趟要掉头一次,共 n-1 次,每次转弯滑行距离为 d_t。
- 总路径长度直线里程与转弯里程相加,就是本次作业的总飞行里程,也是电量与药量估算的基础。
变量施药控制
老周的草坪并非处处一样:东边大树底下草色发黄,西边阳光充足的草又密又绿,还有几块刚补种过的嫩草。如果整片草坪都按同一个标准施肥,黄瘦处“吃不饱”,浓密处反而“烧苗”。老周的做法是“看草下料”——蔫的多给,壮的少给。
农田同样要“看草下料”。植保无人机作业前,先用多光谱相机给地块拍一张“体检照”,算出每个小网格的“虫情指数”或“长势指数”,做成一张“处方图”——就像医生开的药方,每个网格该喷多少药,提前写在图上。变量施药就是飞行时“按方抓药”:到了虫情重的网格,电磁阀开大、药量调高;到了虫情轻的网格,阀门收紧、药量调低。
但处方图只回答了“喷多少”,还要回答“怎么喷得匀”。雾滴的粒径与沉降速度直接影响药效:雾滴过细容易被风吹走(漂移),过粗则附着不牢。遇到地形起伏和风速突变,系统还要根据实时风向风速补偿喷头流量与飞行速度,让雾滴尽量落进目标网格。处方图执行的核心,其实是一次“比例调节”:设全地块平均虫情为基准 R₀,某网格虫情指数为 Rᵢⱼ,则该网格实际施药量 Dᵢⱼ 是基准药量 D₀ 乘以两者之比。
这就像老周给割草机装了一只“眼睛”——看到发黄的草就自动多洒一把肥料,看到浓密的草就少洒。机器不再是粗放地“一刀切”,而是一位会看脸色的大夫,把农药花在刀刃上,既省钱又护田。
- 基准药量 D₀按作物品种与药剂浓度设定的“标准档位”,相当于全田均匀喷洒时的亩用量。
- 网格虫情指数 Rᵢⱼ处方图把地块划成大量小网格,每个网格一个虫情值,来自多光谱影像反演,代表“这一小格的病情轻重”。
- 平均虫情 R₀全地块虫情指数的均值,作为“正常水平”的参照基准。
- 比例调节虫情高则药量上调,虫情低则药量下调,实现“该喷的地方多喷、不该喷的地方少喷”。
智能避障策略
割草最怕“计划外的东西”:草坪上突然滚来一只皮球、横着一条浇水管,或者孩子把玩具车留在了草地上。老周眼神再好,也总有看不到的死角,真要碾上去,机器和玩具都得遭殃。
无人机在天上飞,同样会遇到“计划外的皮球”:电线杆、拉线、突然闯入的农用车辆,甚至飞近的行人。它靠身上的“眼睛”——毫米波雷达、激光雷达或视觉相机——实时测出与周围物体的距离。但只“看见”还不够,还要回答关键问题:离多近必须躲?工程上常用“膨胀法”简化判断:把障碍物按自身半径和安全间隙向外扩张成一个大圆,无人机收缩成一个点,绕行问题就变成“一个点绕着圆走”。
避障判定本质上是一次“距离比较”。无人机实时计算自身位置 P 与每个障碍物中心 Oᵢ 的直线距离,取最小值作为“最近障碍距离” d_min。一旦这个距离小于预设的安全半径 d_安全,就触发绕行;若距离过近、来不及转向,则直接急停减速,等待人工介入。
老周后来给割草机装了一圈“隐形保险绳”——皮球进入保险绳范围,机器就自动绕过去;绕不过去就原地停住,等主人来收拾。无人机触发的绕行与急停,就是空中版的“隐形保险绳”,保护机器,更保护地里的人和设施。
- 位置差向量当前无人机位置 P 与第 i 个障碍物中心 Oᵢ 的差向量,代表“指向它的方向和距离”。
- 欧氏距离差向量的模长就是两点间的直线距离,也是“我离它有多远”的直接答案。
- 最近障碍距离对所有障碍物逐一计算后取最小值,确定当前最紧迫的威胁。
- 触发绕行最近距离小于安全半径,说明“闯进了禁入区”,立即执行绕行或急停保护。
续航分区规划
老周的割草机满电只能干 20 分钟,可整片草坪要干 40 分钟。他不可能割到一半断电趴在草地中央,于是他学会了一个笨办法:把草坪在心里切成两半,充一次电先割东半,回来充电再割西半。
电动植保无人机同样受电池约束,一块电池只能飞十几到二十几分钟。若地块很大,一次飞不完,就必须“分区作业”——把整块地切成若干小区,每个小区对应一块电池的覆盖能力,还要为每个区安排一个合适的起降点。分区规划要回答三个问题:一块电池能干多大面积?地块切几块?从哪儿起飞?起降点选得好,能省去大量空飞往返;电量还要留出安全余量,不能把电池榨干,否则返航途中就“趴窝”。
核心是估算“单架次覆盖面积”:飞行速度 v 乘以喷幅 w,再乘以可用作业时间 T_作业,就得到一块电池能覆盖的面积。地块总面积除以它,向上取整就是分区数量。
老周“充一次电割一半”的笨办法,在无人机上变成了一套严谨的算术:续航决定作业半径,作业半径决定分区大小,分区大小决定起降点摆在哪里。每一块电池都像切蛋糕的刀,把大地块切成刚好一口能吃下的份儿。
- 可用作业时间电池标称续航乘以放电效率系数 η,再扣除起降、悬停和电量安全余量 T_安全,才是真正能喷洒的时间。
- 单架次覆盖面积速度 v × 喷幅 w × 可用作业时间,即一块电池能“吃下”的地块面积。
- 分区数量地块总面积除以单架次覆盖面积,向上取整,保证每个区都在一块电池的射程内。
实时调整机制
老周正割着草,忽然一阵大风把隔壁院子的落叶吹满草坪,或者孩子把滑梯搬到了草坪中央——预定路线一瞬间就“过时”了。经验丰富的园丁不会傻傻地按原路推过去,而是随机应变,临时绕个弯。
植保作业的天空同样变化无常:风速突变超出补偿范围、田间突然出现施药人员、处方图更新出新的虫害热点。若还死守起飞前规划好的航线,轻则施药偏差,重则酿成事故。因此系统需要“在线重规划”——在飞行中快速评估“绕还是直行?绕哪边更划算?”,并实时切换路径。传感器的信息源源不断送回规划器,形成“感知 → 判断 → 修正 → 再感知”的在线反馈闭环。
重规划的本质是一次“代价比较”。候选方案会用代价函数打分,把新路径多飞的距离、延误的作业时间、以及靠近障碍物的风险加权求和,总代价最小的方案胜出。三个权重像三个旋钮,旋向哪边,代表这次任务更看重省电、抢时还是求稳。
这台割草机越用越像一位老司机:风大就调方向,有玩具就绕行,一切以“最小代价完成任务”为准则。实时调整让规划不再是起飞前的一次性决定,而是一场贯穿整个作业过程的“边飞边想”。
- 额外路径代价新方案比原方案多出的飞行距离 L_extra,多飞一公里就多耗一份电。
- 时间延误代价因避让或重规划损失的有效作业时间 T_delay,时间越久越耽误与虫情“抢跑”。
- 风险代价绕行路线贴近障碍物或人员的安全风险 R_risk,风险越高越不可取。
- 加权求和α、β、γ 是三个权重调节旋钮,突出“省电”还是“省时”还是“求稳”,求和得到总代价 J。
多机协同作业
草坪越来越大,老周又买了一台割草机。大机器电池耐用但转弯笨,小机器灵活但载肥少。两台一起干活,最怕撞在一起,更怕东边割了两遍、西边一次没割。老周的办法是“分工包片”:大机器包东边,小机器包西边,各走各的路,完工时间差不多。
大型植保作业同样需要多架无人机“包片”:编队起飞、分区作业、同时收工。多机协同要解决两件事:任务怎么分?空中怎么不打架?任务分配按“能力配额”进行——每一架无人机的作业能力(单次覆盖面积)不同,按占比切分总地块;防碰撞则依靠通信链路实时交换位置,配合高度分层、时间错峰和机间距离告警。协同效果如何,最终用总作业时长、重喷率和漏喷率来评估。
任务分配的算法很直观:先算每架机的作业能力 Cᵢ = 速度 × 喷幅 × 可用作业时间,再把每架机的能力除以全队能力之和,得到该机应承担的面积比例,乘以总地块面积就是它的任务量。
两台割草机在草坪上各奔东西,看似各干各的,实则背后有一本“能力账”:谁飞得快、谁能干得久,就多分一块地;同时靠分层、错峰和告警保持彼此的安全距离。多机协同的本质,是把“一群机器”编排成“一个团队”。
- 单机作业能力第 i 架机的速度 vᵢ、喷幅 wᵢ 与可用作业时间 Tᵢ 相乘,得到它一块电池能吃下的面积。
- 全队能力之和把 M 架无人机的作业能力全部相加,得到全队总能力。
- 能力占比单机能力除以全队总能力,得到该机的“饭量比例”。
- 任务面积能力占比乘以总地块面积,就是该机负责的分区面积。
AI 应用场景
植保服务公司的“万亩田作战指挥”
阶段:数据采集与处方图生成 → 路径规划与任务分配 → 执行与实时调整
解决的问题:传统人工作业靠飞手目测遥控,药量凭经验、航线随意,重喷漏喷严重,万亩田需要数十人连续作业好几天。AI 自动生成处方图与牛耕往复路径,按电池续航分区、按能力配额多机协同,把“人海战术”变成“算法调度”。
具体案例:黑龙江某植保服务商在万亩玉米田应对黏虫灾害:多光谱巡田两天生成虫情处方图,4 架植保无人机按续航分成 12 个作业区、按能力分配任务,2 小时完成 240 亩,用药量比均匀喷洒节省约 18%,防效反而提升。
果园里的“精准看病”施药
阶段:三维建图与避障规划 → 变量施药控制
解决的问题:果园地形起伏、树冠交错,固定航线容易撞树,且每棵果树长势不同,统一喷药既浪费又伤树。用激光雷达重建三维地图规划安全航线,再按单棵果树虫情变量施药,实现“一树一方”。
具体案例:江西赣州脐橙园爆发红蜘蛛,团队用无人机激光雷达重建果园三维地图,规划避开枝杈的安全航线,并按每棵树的虫情指数调节喷量,药量减少 25%,防效提升约 15%。
高标准农田的应急重规划
阶段:在线感知 → 实时重规划 → 安全执行
解决的问题:田间常有农机、人员临时闯入,静态航线无法应对。系统通过实时感知与代价函数重规划,在数秒内绕开突发障碍,保障人机安全。
具体案例:江苏某智慧农田示范基地,作业时一台插秧机驶入规划区,无人机检测到最近距离跌破安全半径,0.8 秒内重算出绕行路径,绕行后自动回归原航线继续施药,全程未停喷。
Python 演示
"""智慧农业:牛耕往复路径生成 + 变量施药处方 + 最近障碍检测(纯 Python 模拟)"""import math class Obstacle: """障碍物:中心坐标与半径""" def __init__(self, x, y, r): self.x, self.y, self.r = x, y, r def full_coverage_path(field_w, field_l, swath, turn_radius=3.0): """牛耕往复全覆盖路径:返回 (路径点列表, 总里程)""" rows = math.ceil(field_w / swath) path = [] for r in range(rows): y = r * swath if r % 2 == 0: path.append((0.0, y)) path.append((field_l, y)) else: path.append((field_l, y)) path.append((0.0, y)) if r < rows - 1: path.append((0.0, y + turn_radius)) total_len = rows * field_l + (rows - 1) * turn_radius return path, total_len def variable_dose(pest_map, base_dose): """变量施药:虫情越高的网格药量越大,按比例调节""" avg = sum(pest_map) / len(pest_map) return [round(base_dose * pest / max(avg, 0.01), 2) for pest in pest_map] def min_clearance(x, y, obstacles): """当前位置与所有障碍物的最小净距(距离减半径)""" return min(math.hypot(o.x - x, o.y - y) - o.r for o in obstacles) def main(): path, total = full_coverage_path(60, 100, 10) print("往返趟数:", math.ceil(60 / 10)) print("总里程(米):", round(total, 1)) print("路径点数量:", len(path)) doses = variable_dose([1.2, 0.8, 2.5, 0.4, 1.0], 0.8) print("各网格施药量:", doses) obs = [Obstacle(30.0, 30.0, 4.0)] print("最近净距(米):", round(min_clearance(30.0, 50.0, obs), 2)) if __name__ == "__main__": main()
rows = math.ceil(field_w / swath)向上取整保证喷幅能完整盖住地块宽度,不留漏喷带if r % 2 == 0:偶数行从左往右、奇数行从右往左,形成弓字往返path.append((0.0, y + turn_radius))每趟末尾补一个掉头过渡点,模拟转弯滑行total_len = rows * field_l + (rows - 1) * turn_radius总里程与公式 L = n·l + (n-1)·d_t 一一对应avg = sum(pest_map) / len(pest_map)计算全地块平均虫情,作为比例调节的基准 R₀return [round(base_dose * pest / max(avg, 0.01), 2) for pest in pest_map]实际药量 = 基准药量 × 该格虫情 ÷ 平均虫情,并保留两位小数def min_clearance(x, y, obstacles):封装最近障碍距离计算,供避障判定调用min(math.hypot(o.x - x, o.y - y) - o.r for o in obstacles)遍历所有障碍求最小净距(距离减半径)if __name__ == "__main__":保证模块既能被导入复用,也能直接运行演示
常见误区
误区“路径规划不就是找最短路线吗?把地块对角线一连,距离最短,效率最高。”
正解植保作业要的是“全覆盖 + 低代价”,不是两点间最短。无人机从 A 到 B 的最短直线,会漏掉大片地块;真实评价要看总里程(直线 + 转弯)与覆盖率。牛耕往复法看似绕,却是“漏喷最少、转弯代价可控”的务实解。就像老周割草,直接对角线推过去,两边的草全没割到。
为何常见:人们习惯了导航“最短路径”的直觉,忽略了植保任务是“面覆盖”而非“点到达”。
误区“虫害越重,药就该喷得越多,把药量调大不就完了?”
正解变量施药追求的是“该喷多少喷多少”,不是“越多越好”。过量喷药会造成药害、农药残留和环境污染,还增加成本。处方图按虫情/长势调节比例,本质是“精准”:高虫情区增量、低虫情区减量,总量反而更省。这就像施肥,浓密处多施肥只会“烧苗”。
为何常见:直觉上“重病下猛药”,但农业上药量和毒性存在边际效应与残留红线。
误区“同样的地块,飞得快就早收工,速度拉满准没错。”
正解飞太快,雾滴被旋翼气流和侧风撕碎漂移,有效喷幅变窄、覆盖均匀性变差,甚至出现“漏喷条纹”。速度要与喷头流量、雾滴沉降速度匹配,才能保证单位面积受药量达标。速度快了,同样药量覆盖面积反而变小。
为何常见:把“作业效率”简单等同于“飞行速度”,忽略了雾滴沉积这一物理环节。
误区“有了 RTK 厘米级定位和固定航线,无人机就能闭着眼飞,不会再撞东西。”
正解RTK 只解决“我在哪”,不解决“前面有什么”。障碍物常常是动态的——电线被风吹晃、农机突然进场、飞鸟掠过,静态地图上根本没有它们。避障依赖实时感知(雷达/视觉)+ 距离阈值触发绕行,定位和感知是两套系统。
为何常见:把“导航精度”与“环境感知”混为一谈,以为地图够准就等于路况全知。
误区“多机作业很简单,每人遥控一台,各飞各的区域就行。”
正解多机协同的核心是“统一调度下的任务分配与防碰撞”。区域切分要按各机能力配比,保证同时收工;空中要解决高度分层、时间错峰与机间距离告警,否则边界区容易重喷、转弯区容易碰撞。飞手各自为战只会乱成一团。
为何常见:日常口语中“协作”被理解成“分工”,忽视了无人机协作需要的实时通信和统一规划。
面试题
Q1. 牛耕往复法中趟数为什么要向上取整?
- A.确保覆盖整个地块宽度← 正确答案
- B.缩短总飞行路径长度
- C.避开地块内部障碍物
- D.提高无人机飞行速度
答案:A。牛耕往复法把地块宽度除以喷幅得到趟数,向上取整是因为喷幅是“标尺”,不能只覆盖 99% 的宽度——否则最后一垄会留下漏喷带。就像割草机压不齐边缘,回头还要补割,反而更费时。B 缩短路径、C 避开障碍、D 提高速度都不是取整的目的,取整回答的是“覆盖率”而非“效率”。
Q2. 变量施药中处方图描述的是?
- A.无人机电池的续航信息
- B.地块边界的坐标信息
- C.病虫害的空间分布信息← 正确答案
- D.飞行航速的时间信息
答案:C。处方图由多光谱影像反演而来,每个网格记录着病虫害或长势的空间分布,是变量施药“按方抓药”的依据。电池信息属于续航规划,边界坐标属于建图,飞行航速属于执行参数——三者都不是处方图记录的内容。
Q3. 避障策略触发绕行的条件是?
- A.剩余电量低于安全阈值
- B.与障碍距离小于安全半径← 正确答案
- C.处方图数值发生变化
- D.通信链路信号强度变弱
答案:B。避障的核心是把“实时感知距离”与“安全半径”比较,一旦最近障碍距离小于安全半径,就触发绕行;来不及绕行则急停。剩余电量影响返航决策,处方图变化影响施药量,通信变弱影响链路稳定性——三者都不会触发物理避障。
Q4. 续航分区规划必须考虑哪些因素?
- A.电池有效作业时间长度← 正确答案
- B.单架次的覆盖面积大小← 正确答案
- C.起降点的选址与往返距离← 正确答案
- D.农药的品牌与包装规格
答案:ABC。分区规划要把“一块电池能干多大面积”算清楚:有效作业时间、单架次覆盖面积、起降点距离共同决定分区数量与边界。农药品牌与包装规格不影响飞行能力,属于药剂采购范畴,不参与分区算术。
Q5. 转弯次数过多主要带来什么影响?
- A.变量施药的精度显著提高
- B.处方图采样点的数量增多
- C.无人机通信的稳定性增强
- D.无效飞行里程和能耗增加← 正确答案
答案:D。每次转弯都要减速、转向、再加速,多一次转弯就多一段无效滑行和能耗,所以牛耕往复法会通过趟数计算控制转弯次数。精度提高、样本增多、通信增强都与转弯次数没有直接关系。
Q6. 哪些情况会触发实时路径重规划?
- A.作业区突然出现新的障碍物← 正确答案
- B.传感器更新了病虫害处方图← 正确答案
- C.无人机机身颜色发生了改变
- D.风速突变超出预设补偿范围← 正确答案
答案:ABD。新障碍物侵入安全半径、处方图更新出新的虫害热点、风速突变超出雾滴补偿范围,都会让原航线“过时”,触发在线重规划。机身颜色属于外观信息,与飞行安全无关,不会触发重规划。
Q7. 多机协同中任务面积的分配依据是?
- A.各机作业能力的占比大小← 正确答案
- B.各机采购价格的高低程度
- C.操作手经验年限的长短
- D.充电器数量的多少比例
答案:A。任务分配按“能力配额”——速度 × 喷幅 × 可用作业时间得到的作业能力,占总队的比例决定分到多大面积,从而保证各机同时收工。采购价、经验、充电器数量都不是飞行能力的度量。
Q8. 衡量施药覆盖均匀性的常用指标是?
- A.平均飞行速度的快慢程度
- B.变异系数 CV 数值大小← 正确答案
- C.返航次数的多少高低
- D.旋翼转速的大小变化
答案:B。覆盖均匀性用变异系数 CV = 标准差 ÷ 均值来衡量,CV 越小说明各点受药越均匀,越接近“处处达标”。平均速度、返航次数、旋翼转速都不能直接反映药液分布的离散程度。
Q9. 处方图中的平均虫情指数起什么作用?
- A.用于估算无人机的续航时间
- B.用于校正气流对雾滴的漂移
- C.作为基准参与每格药量调节← 正确答案
- D.用于确定地块划分的数量
答案:C。平均虫情指数作为基准 R₀,每格实际药量 = 基准药量 ×(该格虫情 ÷ 平均虫情),形成“高虫情多喷、低虫情少喷”的比例调节。续航、漂移、分区都与这个基准值无关。
Q10. 多机协同作业的防碰撞手段包括?
- A.不同高度分层错开飞行← 正确答案
- B.时间上错峰避免相遇← 正确答案
- C.机间实时距离告警提醒← 正确答案
- D.增大每架机的载药量
答案:ABC。多机防碰撞靠空间上高度分层、时间上错峰出发、机间实时距离告警三重手段,避免边界区相遇与转弯区相撞。增大载药量延长的是单机续航,并不能改变两机相遇的概率。