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

相关推荐
xiao5kou4chang6kai416 小时前
贯通LLM应用→数据分析→自动化编程→文献及知识管理→科研写作与绘图→构建本地LLM、Agent→多模型圆桌会议→N8N自动化工作流深度应用
人工智能·自动化·llm·科研绘图·n8n
啊巴矲16 小时前
小白从零开始勇闯人工智能:机器学习初级篇(TF-IDF)
人工智能·机器学习·tf-idf
dulu~dulu16 小时前
机器学习---计算题总结
人工智能·机器学习·支持向量机·集成学习·贝叶斯分类器
Das116 小时前
【机器学习】03_贝叶斯决策
人工智能·机器学习
迷你可可小生16 小时前
常见神经网络模块
人工智能·深度学习
大厂技术总监下海16 小时前
你的个人AI工作站已就绪:Ollama开源框架,支持多模态、可定制、一键部署
人工智能·机器学习·开源
行业探路者17 小时前
如何利用二维码提升产品画册的制作与传播?
大数据·人工智能·安全·二维码·设备巡检
安达发公司17 小时前
安达发|给“工业心脏”装上新大脑:APS生产排产的硬核智慧
大数据·人工智能·aps高级排程·aps排程软件·生产计划排单软件·aps生产排产