4. 动态环境下的返航重规划

静态地图上的返航航线,在真实任务中几乎不存在。无人机起飞后,移动障碍(其他飞行器、鸟类、临时升空的系留气球)、临时禁飞区(突发事件管控、消防作业空域)、风场变化(低空急流、热对流、山谷风切变)以及通信阴影(城市峡谷、山体遮挡、电磁干扰)会同时或先后改变“可行且安全”的返航空间。返航重规划要解决的核心矛盾是:局部必须快速避让,全局必须仍然朝着返航点收敛。如果只做局部避障,飞行器可能被连续推离,最终耗尽电量却回不到起降点;如果只坚持全局航线,又可能直接撞入新出现的禁飞区或强风带。

滚动时域重规划的基本机制

滚动时域(Receding Horizon)重规划的思路是:不一次性算完整条返航路径,而是在每个决策周期内,只规划未来一小段时域内的可行轨迹,执行其中第一步或前若干步,然后带着新的环境观测和自身状态重新规划。设决策周期为 Δt,规划时域为 Th,通常取 Th = 3~8 倍 Δt。例如 Δt = 1 s、Th = 5 s,则每 1 s 用最新障碍/风场/通信信息求解一次 5 s 的局部轨迹,只执行前 1 s,再滚动推进。

每个周期内需要维护三类信息:全局返航参考(从当前位置到返航点的期望航线或航向场)、局部环境约束(动态障碍预测位置、禁飞区边界、风场矢量、通信链路质量)、自身状态约束(剩余电量、最大爬升/下降率、最小转弯半径、速度包线)。重规划的输出是一条满足动力学约束、避开当前障碍、且与全局返航方向保持一致的局部轨迹。

局部避障与全局目标的一致性维护

一致性维护的关键是引入一个“全局返航势场”或“参考航向”,让局部规划器在避障的同时始终受到指向返航点的牵引。常用做法是在代价函数中加入全局项:

J = w_obs · J_obstacle + w_nfz · J_no_fly + w_wind · J_wind + w_link · J_link + w_goal · J_goal

其中:
J_obstacle:与动态障碍预测位置的距离惩罚,越近越大
J_no_fly  :进入临时禁飞区边界的惩罚,边界内为无穷大
J_wind    :逆风/侧风导致的能耗与航迹偏差惩罚
J_link    :通信阴影区内的链路中断风险惩罚
J_goal    :与全局返航参考航向的偏差惩罚,保证不偏离返航大方向

示例权重(仅作教学假设):
w_obs = 1.0,w_nfz = 5.0,w_wind = 0.6,w_link = 0.8,w_goal = 1.2

当局部避障与全局返航方向冲突时,优先级应为:禁飞区硬约束 > 动态障碍安全距离 > 通信链路保持 > 风场能耗优化 > 全局航向一致性。也就是说,可以为了避开禁飞区而暂时偏离全局航线,但不能为了省电而穿越禁飞区。每次重规划后,应检查局部轨迹终点是否仍在全局返航走廊内;若连续多个周期偏离超过阈值(例如横向偏差 > 30 m 且持续 > 5 s),则触发全局航线重算,而不是继续局部绕行。

四类动态因素的差异化处理

移动障碍:需要预测其未来 Th 内的位置。对匀速直线运动的目标,可用当前速度矢量外推;对机动目标,采用保守膨胀半径(例如在预测位置外扩 1.5 倍安全距离)。避让方向优先选择与全局返航方向夹角较小的一侧,避免“为了躲一个障碍而反向飞”。

临时禁飞区:通常以多边形或圆形边界下发。重规划时先判断当前全局航线是否与禁飞区相交;若相交,则在禁飞区边界外生成切点绕行路径,并保持绕行段与返航点的总航程增量最小。禁飞区是硬约束,不允许用代价函数“软处理”。

风场变化:风会影响地速和航迹。设空速为 Va、风速矢量为 W,则地速 Vg = Va + W。返航时若遇到逆风,应适当提高空速或调整航向做侧风修正;若侧风过大导致航迹偏差超过走廊宽度,应选择风场较弱的高度层或绕行。重规划周期内可用风场估计值更新代价函数中的 Jwind。

通信阴影:当预测到前方链路质量将低于阈值(例如 RSSI < -95 dBm 或丢包率 > 20%),应优先选择保持视距或靠近中继节点的路径。若无法避免阴影区,则需在进入前上传“失联返航”策略,并缩短重规划周期、提高自主决策频率。

动态环境返航重规划:滚动时域 + 全局一致性 全局返航参考 H 返航点 U 当前位置 临时禁飞区 硬约束·不可穿越 O1 移动障碍预测 O2 风场变化 侧风/逆风影响地速 通信阴影 RSSI低/丢包高 局部重规划轨迹(滚动执行) 禁飞区绕行段 滚动时域 Δt = 1 s T_h = 5 s 一致性检查 横向偏差 > 30 m 且持续 > 5 s → 触发全局航线重算 约束优先级 1. 禁飞区硬约束 2. 动态障碍安全距离 3. 通信链路保持 4. 风场能耗优化

一个可执行的重规划周期示例

假设某多旋翼执行巡检任务,当前位置距返航点 1.2 km,剩余电量 38%,巡航速度 10 m/s,当前高度 80 m。第 k 个周期检测到:正前方 300 m 处有一架匀速横穿的无人机(速度 5 m/s,预测 5 s 后进入原航线),右侧 500 m 处新划设圆形禁飞区(半径 150 m),同时 60~100 m 高度层出现 8 m/s 侧风,通信 RSSI 从 -75 dBm 降至 -92 dBm。

处理顺序如下:首先将禁飞区作为硬约束,判断原全局航线与禁飞区相交,生成沿禁飞区边界外侧 50 m 的绕行切点;其次对移动障碍做 5 s 外推,得到其预测位置带,将局部轨迹从障碍后方绕行;然后根据侧风矢量计算侧风修正角,若保持 10 m/s 空速会导致航迹横向偏差超过 20 m,则将空速提高至 12 m/s 并调整航向;最后评估通信阴影,若绕行路径会进入 RSSI < -95 dBm 区域,则优先选择高度 100 m 以上的路径以保持视距。重规划输出的局部轨迹执行 1 s 后,重新观测并进入下一周期。

判断依据:每个周期结束后检查三项指标——局部轨迹终点与全局返航参考的横向偏差、预计剩余电量是否仍大于返航所需电量(含 20% 裕度)、通信链路是否保持在可用阈值以上。三项中任意一项不满足,就应调整权重或触发全局重算,而不是继续沿用当前局部轨迹。

常见问题与处理

  • 局部绕行导致“越绕越远”:检查 Jgoal 权重是否过低,或全局返航参考是否未随位置更新。可设置“返航方向夹角上限”,例如局部轨迹方向与全局返航方向夹角不得超过 90°。
  • 禁飞区边界抖动:临时禁飞区可能动态更新,若边界频繁变化,应对边界做 2~3 个周期的平滑或滞回处理,避免轨迹反复横跳。
  • 风场估计滞后:仅靠机载估计可能滞后,可融合气象预报、历史风场和实时地速/空速差进行修正;重规划周期内若风速变化超过 3 m/s,应缩短 Δt。
  • 通信阴影中失联:进入阴影前应上传“失联返航”策略,包括返航高度、航向保持逻辑和最大悬停等待时间;失联后按预设策略继续向返航点收敛,而不是原地等待。

动态环境下的返航重规划,本质是在“快速响应局部变化”和“始终不丢失全局返航目标”之间做滚动平衡。局部避障负责安全,全局一致性负责回家;两者通过代价函数中的全局项、约束优先级和一致性检查共同维护。只要每个周期都明确当前硬约束是什么、全局参考在哪里、剩余资源是否足够,返航重规划就能在移动障碍、临时禁飞区、风场变化和通信阴影中保持稳定收敛。