怎么读这三张图,以及结论是什么

这三张图讨论的是同一个工业场景:

跨站补料与空箱回收的移动机器人任务级闭环。

具体条件也是同一组:

当前任务:从 A 仓位取一箱连接器,送到 3 号装配站,并回收空箱
执行中异常:去往 3 号站途中发现该站暂时占用,机器人剩余电量降到 18%
系统候选:先去临时缓存位 -> 判断是否需要补能 -> 去充电点补能 -> 重新规划路线 -> 到站交付 -> 回收空箱
若仍无法完成:转人工调度

三张图不是在画三个不同系统,而是在用三种不同的表达方式描述同一件事。只有放在一起看,差别才真正明显。

先看哪张

最好的阅读顺序是:

  1. 先看流程图
  2. 再看状态机
  3. 最后看行为树

原因很简单。

流程图最容易看懂,它先把“这件事大概怎么走”讲清楚。状态机会让你看到,一旦把这件事写成可执行控制逻辑,状态和转移很快就会开始膨胀。行为树则回答最后一个问题:如果我们既想让它可执行,又想让它可复用、可回退、可扩展,应该怎么组织。

第一张图在回答什么

流程图文件:

abb-isaac-agent-flexible-manufacturing-ai-first-07-why-behavior-tree-flowchart-example.puml

这张图回答的问题是:

这条任务闭环,按步骤大概怎么走。

它适合说明下面这些事:

  • 从 A 仓位取料之后,会向 3 号站发起交付任务。
  • 如果目标站占用,系统会先去缓存位。
  • 如果等待期间电量不够,系统会插入补能分支。
  • 站点释放并重新规划成功后,系统会继续交付并回收空箱。

它最适合拿来做:

  • 文档说明
  • 给非机器人软件背景的人做场景介绍
  • 讨论业务流程和处理顺序

但它不擅长回答:

  • 哪些判断会被反复检查
  • 哪些子流程可以复用
  • 哪些失败只需要局部插入一个恢复子流程
  • 运行时如何持续推进整个执行结构

所以流程图最像“说明书”,不太像“执行骨架”。

第二张图在回答什么

状态机文件:

abb-isaac-agent-flexible-manufacturing-ai-first-07-why-behavior-tree-fsm-example.puml

这张图回答的问题是:

如果把这条任务闭环写成可执行状态逻辑,系统会有哪些状态、怎样转移。

它适合说明下面这些事:

  • 什么时候进入去缓存位中、等待站点释放中、去充电点中、重新规划中
  • 什么时候能从等待恢复到重新去站点
  • 什么时候必须转人工调度

它最适合拿来做:

  • 设备级或站级控制逻辑
  • 资格判断明确、转移条件明确的确定性流程
  • 底层导航模块、充电模块、设备联锁层的状态控制

但放到这个场景里,它会开始暴露问题:

  • 很多本来只是条件的东西,被迫抬成状态
  • 只要继续叠加路线禁行、缓存位不可用、不同站点策略差异,状态会迅速膨胀
  • 相同的任务骨架很难优雅复用
  • 图会越来越像“状态和转移表”,而不是一组可重组的任务骨架

所以状态机不是不能做,而是越往任务级恢复闭环走,越容易变笨重。

第三张图在回答什么

行为树文件:

abb-isaac-agent-flexible-manufacturing-ai-first-07-why-behavior-tree-bt-example.puml

这张图回答的问题是:

如果把这条任务闭环做成一套可执行、可回退、可复用的任务骨架,结构应该长什么样。

它适合说明下面这些事:

  • 主交付路径是一棵 Sequence
  • 直接去站点不成立时,Fallback 会切到缓存、补能和重规划路径
  • 条件节点和动作节点可以清晰分开
  • 叶子节点可以直接映射成已验证技能
  • 运行时会持续 tick 整棵树,而不是一次走完就结束

它最适合拿来做:

  • 任务级执行编排
  • 带条件检查的恢复链
  • 局部重试和局部回退
  • 多站点、多物料、多任务之间的子流程复用

这正是这个场景最需要的东西。

三张图真正的差别

如果把三张图压成一句话:

  • 流程图关心的是“顺序怎么描述”
  • 状态机关心的是“状态怎么转移”
  • 行为树关心的是“任务结构怎么执行、回退和复用”

再说得更直白一点:

  • 流程图最适合给人看
  • 状态机最适合做设备级确定性控制
  • 行为树最适合做任务级闭环编排

这个判断不是抽象偏好,而是由场景决定的。

因为这个跨站补料与空箱回收场景同时要求:

  • 前置条件检查
  • 最新状态参与决策
  • 缓存等待
  • 插入补能子流程
  • 重规划后继续执行
  • 人工接管点
  • 同类任务骨架跨站点复用

一旦这些要求同时出现,行为树的结构优势就会变得很明显。

最后应该得出的结论

这三张图放在一起,真正想说明的不是“行为树永远比状态机高级”,而是:

在工业系统里,不同层该用不同表达方式。

更稳的分工通常是:

  • 流程图负责讲清楚任务全貌和系统边界
  • 状态机负责设备级、站级、确定性控制逻辑
  • 行为树负责任务级恢复闭环、条件判断和技能组合

所以对这个跨站补料与空箱回收场景,我的结论很明确:

如果只是讲清楚流程,用流程图。 如果要写底层模块和控制器内的确定性状态控制,用状态机。 如果要把它做成可执行、可回退、可复用、可扩展的任务骨架,用行为树。

这也是为什么工业上很多成熟系统最后不是三选一,而是三者分层共存。