2. 无人系统任务执行模型
无人系统的任务执行模型不是一套抽象概念,而是中断恢复能力的“地基”。当链路中断、定位丢失、电池告警或载荷异常发生时,系统能否知道“我原本在做什么、做到哪一步、接下来该回到哪里”,取决于任务规划、任务分解、状态机、行为树与执行监控这五个环节如何组织与协作。它们分别回答不同问题:规划回答“去哪、做什么”,分解回答“拆成哪些可执行单元”,状态机回答“当前处于什么阶段、允许怎么切换”,行为树回答“每个单元内部如何按条件选择动作”,执行监控回答“实际执行是否偏离预期、是否需要触发恢复”。
任务规划与任务分解:恢复的“锚点”
任务规划通常输出一条带约束的航路或作业序列,例如巡检任务中“起飞→爬升至30m→沿A-B-C-D航点飞行→在C点悬停拍照→返航”。规划结果必须显式携带可恢复信息:任务ID、航点序号、每个航点的期望动作、时间窗、地理围栏、返航点、最低电量阈值。若规划只给出一条坐标串,中断后系统就缺少“回到哪一步”的依据。
任务分解把高层任务拆成可独立执行、可独立判断完成状态的原子单元。以电力巡检为例,可拆为:TAKEOFF、CRUISE_TO(WP_i)、HOVER_AND_CAPTURE(WP_i)、RETURN_HOME、LAND。每个单元应带前置条件、完成判据、超时阈值和恢复策略。例如 HOVER_AND_CAPTURE 的完成判据是“相机返回图像且写入存储成功”,超时8s,恢复策略为“重试2次,仍失败则标记该点异常并继续下一航点”。分解粒度直接影响恢复精度:粒度过粗,中断后只能整段重做;粒度过细,状态切换频繁、开销大。工程上常以“一次可观测动作”为粒度,保证每个单元都有明确的进入条件与退出条件。
状态机与行为树:恢复决策的两种表达
状态机适合表达任务级阶段与模式切换。典型状态包括 IDLE、TAKEOFF、CRUISE、HOVER、RETURN、LAND、SAFE_HOLD、RECOVER。中断发生时,系统从当前状态进入 SAFE_HOLD(悬停或安全停靠),再根据中断类型决定回到原状态、跳到下一状态或进入 RETURN。状态机的关键是“状态+事件+守卫条件”三元组,例如:CRUISE + LINK_LOST + 持续>3s → SAFE_HOLD;SAFE_HOLD + LINK_RESTORED + 位置有效 → RECOVER;RECOVER + 校验通过 → CRUISE。守卫条件必须可观测,否则恢复会变成盲目跳转。
行为树适合表达单元内部的反应式逻辑。它以选择、序列、条件、动作节点组合出“优先尝试恢复、失败再降级”的策略。例如悬停拍照子树可设计为:Sequence(检查云台到位, 选择(拍照成功, 重试拍照, 标记异常))。行为树的优势在于恢复策略可组合、可复用,且每帧从根节点重新评估,天然适合处理动态条件;缺点是若缺少记忆节点,可能重复执行已完成的动作。因此常与状态机配合:状态机管阶段,行为树管阶段内动作选择。
执行监控:把“偏离”变成可恢复事件
执行监控是恢复机制的触发源。它持续比对“期望状态”与“实际状态”,并输出三类信息:偏差量、偏差持续时间、置信度。以航点巡航为例,监控项可包括:位置偏差(期望航点与实际位置距离)、航向偏差、地速、电量、链路RSSI、载荷状态。判断逻辑不是“一超限就恢复”,而是“超限且持续超过阈值才触发”,以避免瞬时噪声导致误恢复。例如位置偏差阈值设为5m,持续2s,则触发 POS_DEVIATION 事件;若偏差在2s内回到3m以内,则不触发。监控还应记录“最后有效状态”,包括最后有效航点、最后有效位置、最后有效时间戳,作为恢复的起点。
五者协作的恢复闭环
把五者串起来看,一次典型中断恢复过程如下:规划层提供任务ID与航点序列;分解层把当前任务定位到 CRUISE_TO(WP3);状态机处于 CRUISE;行为树正在执行“飞向WP3”子树;执行监控检测到链路RSSI低于-95dBm且持续3s,触发 LINK_LOST。状态机守卫条件满足,转入 SAFE_HOLD,行为树切换到悬停保持。若5s内链路恢复且位置有效,状态机进入 RECOVER,校验“当前航点仍为WP3、电量>25%、围栏内”,通过后回到 CRUISE,行为树从“飞向WP3”继续;若链路未恢复,则状态机转入 RETURN,行为树执行返航,最终 LAND。整个过程的关键是:每个环节都保留可查询的“进度标记”,恢复时不需要重新规划整条任务,只需从最近的有效原子单元继续。
一个可参考的恢复参数示例
| 监控项 | 阈值 | 持续时间 | 触发事件 | 恢复动作 |
|---|---|---|---|---|
| 链路RSSI | < -95 dBm | 3 s | LINK_LOST | SAFE_HOLD → 等待恢复或返航 |
| 位置偏差 | > 5 m | 2 s | POS_DEVIATION | 重飞当前航点,最多2次 |
| 电量 | < 25% | 即时 | LOW_BATTERY | 跳过剩余航点,直接返航 |
| 拍照写入 | 失败 | 8 s超时 | CAPTURE_FAIL | 重试2次,仍失败标记异常并继续 |
这些参数不是固定值,而是示例起点。实际取值需结合机型、链路质量、任务密度与安全裕度调整。核心原则是:阈值要能区分“噪声”与“真实中断”,恢复动作要能回到最近的有效原子单元,而不是从头再来。任务规划、任务分解、状态机、行为树与执行监控各自承担不同职责,但只有在恢复闭环中协同工作,无人系统才能在中断后稳定、可预期地继续任务。