BehaviorTree行为树-机器人及自动驾驶

摘要:

行为树是一种模块化、层次化的决策框架,广泛用于机器人及自动驾驶系统。它通过树状结构组织任务节点,实现清晰的任务编排与动态响应,显著提升了复杂场景下的决策可读性、可维护性与可靠性。在自动驾驶中,行为树高效协调感知、规划与控制模块,是实现安全、智能驾驶的关键技术之一

1、基本概念

与有限状态机不同,行为树是由层次节点构成的树状结构,用于控制"任务"的执行流程。更适用于复杂行为决策的贯序动作,与FSM和HFSM相比优缺点:

特性 行为树 有限状态机 分层状态机
核心思想 模块化的任务执行与条件检查,通过树形结构组织。 系统在任何时刻处于一个确定状态,事件触发状态间转换。 FSM的扩展,状态可包含子状态,形成层次以复用逻辑。
可读性与可维护性 优点:极高。树形结构清晰直观,模块化强,易于增删、复用节点。 缺点:低。当状态和转换增多时,会变成难以维护的"蜘蛛网"。 中等。优于普通FSM,层次化减少了转换复杂度,但大型系统仍可能混乱。
模块化与复用性 优点:极强。节点(如条件、动作、子树)是天然模块,可灵活组合与复用。 缺点:极弱。状态和转换逻辑紧耦合,复用性差。 中等。通过子状态复用部分逻辑,但整体转换网络依然僵硬。
动态响应与反应性 优点:优异。通过高频率的从根节点向下遍历,能持续监控条件变化,即时响应外部事件。 缺点:较差。依赖特定事件触发转换,对未建模的事件不响应,容易出现状态"停滞"。 中等。与FSM类似,依赖事件驱动,但可通过层次设计部分提升响应能力。
设计复杂度 优点:低。适合复杂、需要频繁调整的逻辑,设计过程直观(搭积木)。 优点:低。适合状态少、流程固定的简单逻辑。 中等。适合中等复杂度逻辑,能用层次简化设计,但仍有状态爆炸风险。
运行时效率 潜在缺点:可能较低。每帧遍历可能带来开销,需通过缓存、异步等优化。 优点:高。仅需处理当前状态的逻辑和输入事件,效率稳定。 优点:高。与FSM类似,仅处理当前活跃状态链。
适用场景 机器人、游戏AI、自动驾驶等需要高模块化、高反应性、逻辑复杂的动态决策系统。 简单控制器、UI流程、协议解析等状态明确、转换固定的场景。 嵌入式系统、复杂UI、中等规模游戏AI等需要结构化状态但逻辑相对固定的场景。

但是大多数开发场景是HFSM结合BehaviorTree组合使用,才能更灵活的实现复杂逻辑,实现框架逻辑上的优势互补

tick

一个时钟周期,也就是一个运行周期,一个名为"tick"的信号被发送到树的根部,并通过树传播,直到到达一个叶子节点。

节点状态 NodeStatus

cpp 复制代码
enum class NodeStatus
{
  IDLE = 0,
  RUNNING = 1,
  SUCCESS = 2,
  FAILURE = 3,
  SKIPPED = 4,
};

节点在一次tick周期中执行完一定会返回一个节点状态,节点枚举如上:一般返回RUNNING SUCCESS FAILURE三种状态,IDLE也可能

节点分类

ActionNode

2、BehaviorTree.CPP源码编译

github源码下载地址:

https://github.com/BehaviorTree/BehaviorTree.CPP

使用cmake编译时候会依赖zmq(负责和Groot开发)、sql(日志)以及gtest (单元测试),如果这些需要的话需要在本地进行安装,本文只是测试不需要这些,所以在cmakelsit中进行修改

这三个都给改成OFF就不会有依赖

然后命令行操作如下:

bash 复制代码
mkdir build_release
cmake -S . -B build_release -DCMAKE_INSTALL_PREFIX=/home/qhr/Downloads/behavier
cmake --build build_release --parallel
cmake --install build_release --prefix /home/qhr/Downloads/behavier

/home/qhr/Downloads/behavier这个是编译产物的存放路径,大家可以根据自己的条件进行修改生成的产物上图,至此测试需要的依赖头和库已经编译出来

相关推荐
广州创科水利16 小时前
智慧赋能,守护安澜—广州创科助力五华县37宗水库安全监测
大数据·人工智能·安全
见行AGV机器人16 小时前
本质安全型防爆AGV
人工智能·安全·agv·非标定制agv·agv控制器·麦轮agv
guslegend16 小时前
第4节:切片语义割裂怎么办?
人工智能·大模型·rag
芝士爱知识a16 小时前
【深度解析】当人工智能遇见当代艺术:探索 Dynamic Art Award (DAA) 动态艺术奖的科技与创意之美
人工智能·科技
AI科技星17 小时前
基于四维速率恒为c公设的北斗GEO卫星昼夜钟差模型修正与实测验证
开发语言·人工智能·线性代数·算法·数学建模
CS创新实验室17 小时前
数据分析与数据挖掘领域就业分析报告
人工智能·数据挖掘·数据分析
rrrjqy17 小时前
深入浅出 RAG:基于 Spring AI 的文档分块 (Chunking) 策略详解与实战
java·人工智能·后端·spring
测试员周周17 小时前
【Hermes系列3】登录回归不用先搭平台:我用 Hermes 跑通拆解→脚本→报告(实战篇:提示词可复制)
人工智能
Deepoch17 小时前
VLA分布式协同中枢:Deepoc开发板激活采摘机器人集群智能
人工智能·科技·机器人·具身模型·deepoc·采摘
薛定猫AI17 小时前
【技术干货】自进化知识库 + AI 编码代理:从概念到落地实战(含完整代码示例)
人工智能