为什么这个工业场景更适合用行为树,而不是状态机或流程图
我选的场景
如果只挑一个最能说明问题,而且又适合让 AI 完全主导任务级闭环的工业场景,我会选:
跨站补料与空箱回收的移动机器人任务。
一个具体例子是:
当前任务:从 A 仓位取一箱连接器,送到 3 号装配站,并回收空箱
执行中异常:去往 3 号站途中发现该站暂时占用,机器人剩余电量降到 18%
系统候选:先去临时缓存位 -> 判断是否需要补能 -> 去充电点补能 -> 重新规划路线 -> 到站交付 -> 回收空箱
若仍无法完成:转人工调度
我选这个场景,不是因为它最复杂,而是因为它刚好落在行为树最有优势的位置:
- 它是任务级闭环,不是毫秒级控制闭环。
- 它既要持续看状态,又要不断改后续动作。
- 它天然包含等待、回退、补能、重规划和恢复执行。
- 它的子流程很容易跨站点、跨物料、跨产线复用。
- 它也最符合“AI 完全主导”的直觉边界,AI 负责任务决策,导航和底层控制仍由确定性控制栈执行。
这正是行为树最擅长的地带。
这个场景到底难在哪
表面上看,这只是“送一箱料,再把空箱带回来”。真正落到工业现场,系统通常要同时处理:
- 前置条件检查:料箱是否已取到,目标站是否可对接,缓存位是否空闲,电量是否足够。
- 状态持续更新:站点占用会变化,路线可达性会变化,电量也会持续下降。
- 局部调整:不是整条任务推倒重来,而是先插入一个缓存或补能子流程,再继续原任务。
- 恢复执行:充完电、站点释放后,系统要从当前上下文继续,而不是重新派一张新工单。
- 人工接管:缓存位不可用、长时间无路可走、站点持续占用时,必须收束到可解释、可接管的位置。
这里最关键的一点是,系统不是沿着一条静态路径往下跑,而是在执行过程中不断“看条件,再决定下一步”。
用行为树会长什么样
把这个场景收成行为树,大致会是下面这种结构:
Fallback
├── Sequence
│ ├── 检查料箱已装载
│ ├── Fallback
│ │ ├── Sequence
│ │ │ ├── 检查 3 号站可对接
│ │ │ ├── 检查电量足够
│ │ │ ├── 去 3 号站
│ │ │ ├── 交付料箱
│ │ │ └── 回收空箱
│ │ └── Sequence
│ │ ├── 去临时缓存位
│ │ ├── 如有需要则去充电点补能
│ │ ├── 重新规划路线
│ │ ├── 再次检查 3 号站可对接
│ │ ├── 去 3 号站
│ │ ├── 交付料箱
│ │ └── 回收空箱
└── 人工调度
这个结构有几个工业上很实用的特点:
Sequence适合表达“必须按顺序全部成功”的主路径。Fallback适合表达“直接交付不成立时,切到缓存、补能和重规划路径”。- 条件节点可以持续检查,不需要把站点占用、电量门槛、路线可达性全部塞进状态定义。
- 叶子节点可以直接映射成已验证技能,例如去缓存位、去充电点、到站交付、回收空箱。
- 运行时可以持续 tick 整棵树,根据节点返回的
success / failure / running决定下一步。
行为树的价值,不只是“图更结构化”,而是它本身就是一种可执行结构。
为什么不是流程图
流程图适合讲清楚“正常情况下大概怎么走”。它的问题是,到了这个场景里,它很快会变成一张说明图,而不是运行图。
流程图在这里的短板主要有三点:
- 它更适合静态说明,不擅长表达运行时反复 tick、暂停、恢复和重入。
- 一旦开始加入站点占用、缓存等待、充电分支、路线重规划,图会迅速膨胀成一堆箭头。
- 它没有天然的执行语义。画出来很容易,真正让运行时按图执行、插入补能子流程、恢复原任务,还得额外发明一套机制。
所以流程图在这个场景里最适合做文档,不适合做执行骨架。
为什么不是状态机
状态机当然能做,而且在很多控制器和设备里一直都在做。问题不在“能不能做”,而在“做到什么复杂度以后开始变得难维护”。
如果把这个场景硬写成状态机,状态很快会开始膨胀:
- 取料中
- 去 3 号站中
- 站点占用判断中
- 去缓存位中
- 等待站点释放中
- 去充电点中
- 充电中
- 重新规划中
- 到站交付中
- 空箱回收中
- 等待人工调度
这还只是主状态。只要再叠加下面这些维度,状态数会继续放大:
- 当前电量是否足够直接完成任务
- 缓存位是否可用
- 路线是否临时禁行
- 目标站是否已经释放
- 当前是第一次尝试还是恢复后的再次尝试
- 不同站点是否共用同一套策略
状态机的真正问题是组合爆炸。很多信息本来只是条件,却被迫提升成状态。结果就是:
- 图越来越大
- 转移条件越来越绕
- 相同子流程难复用
- 稍微换一个站点或补料任务,就得复制一份相似状态机
状态机仍然非常适合设备级控制和小范围确定性流程,例如电池管理模块、门禁互锁、底层导航状态、充电桩握手。但在这种“带持续判断和局部恢复的任务级闭环”里,它会很快变得笨重。
行为树在这个场景里的决定性优势
如果把重点放回工业落地,行为树真正赢的不是“更先进”,而是下面四件事:
- 它把条件、动作、回退和恢复分开了,不用把所有东西塞进状态定义。
- 它天然支持局部插入子流程。站点占用时只插入缓存和等待子树,电量不足时只插入补能子树,不必整条任务重来。
- 它天然支持复用。检查电量、去缓存位、执行补能、重新规划、到站交付、回收空箱,这些子树可以在多个任务里复用。
- 它和技能编排非常贴合。树的叶子节点可以直接对应技能运行时里的标准技能。
换句话说,这个场景里最值钱的不是“我有一条搬运流程”,而是“我有一套可以跨任务复用的任务骨架”。这正是行为树比状态机更适合的地方。
我的判断
如果问“工业上哪个场景最有特点,最适合拿来解释为什么要用行为树,而且 AI 还能完全主导任务级闭环”,我的答案就是:
跨站补料与空箱回收的移动机器人任务。
原因很简单:
- 它比精密插装更适合作为 AI 完全主导的首个场景,因为节拍是秒级到分钟级,不是毫秒级。
- 它比普通 AGV 搬运更能体现状态判断,因为这里不是单纯点到点运输,而是要处理站点占用、缓存、补能和恢复执行。
- 它比纯流程审批更接近真实工业执行,因为每一步都要接现场状态、设备接口和运行时回执。
- 它又没有深入到底层导航控制和伺服闭环,仍然属于任务级执行骨架可以接住的范围。
所以这个场景刚好卡在行为树最舒服的位置:
上面接工单、调度和任务目标。 下面接导航栈、底盘控制、充电接口和站点对接接口。 中间不断看条件、切分支、做恢复。
什么时候还是该用状态机或流程图
行为树不是要替代一切。
更实际的分工通常是:
- 流程图:用来讲清楚任务全貌和系统边界。
- 状态机:用来做设备级、站级、强确定性的控制逻辑。
- 行为树:用来做任务级执行编排、条件判断、恢复分支和技能组合。
在这个跨站补料与空箱回收场景里,最稳的办法通常不是三选一,而是三者分层:
- 流程图负责说明任务全貌。
- 控制器或底层模块状态机负责导航、充电、对接等设备级控制。
- 行为树负责任务级恢复闭环。
这才是工业上更常见、也更稳的落地方式。
