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这个是编译产物的存放路径,大家可以根据自己的条件进行修改生成的产物上图,至此测试需要的依赖头和库已经编译出来

相关推荐
AI枫林晚7 小时前
OpenClaw Hooks 机制深度解析:插件扩展的核心架构
人工智能
蓝桉~MLGT7 小时前
Ai-Agent学习历程(插播内容)—— 基于现在最新的Skills、MCP、Rules等进行详细拆解,并列举出使用场景
人工智能·学习
智慧化智能化数字化方案7 小时前
数字化进阶——解读场景化、图谱化推进重点行业数字化转型的参考指引(2025版)
大数据·人工智能·云计算·行业数字化转型的参考指引
AI程序员7 小时前
Harness Engineering:不是写规则,而是设计控制系统
人工智能
flyfox7 小时前
Kiro AI IDE 深度使用指南:从入门到高效开发
前端·人工智能·ai编程
lovingsoft7 小时前
Cursor Skills 实战教程:解锁AI编码效率,附多场景案例
前端·人工智能
无限大.7 小时前
数字生存03:在AI时代,如何保持工作与生活的平衡
人工智能·生活
梦想的初衷~7 小时前
无人机多光谱-生态三维建模全流程实战——基于Python与AI辅助技术
人工智能·python·无人机·生态·遥感·多光谱
感性的程序员小王7 小时前
阿里面试官:说说Agent Skills、MCP、Function Call之间的区别吧?
人工智能·面试
G***技7 小时前
物流自动化迈入边缘智能,杰和科技AR707成为关键引擎
人工智能·嵌入式硬件·机器人·边缘计算盒