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

相关推荐
江湖有缘3 分钟前
跨平台AI终端Wave:智能SSH与文件管理
运维·人工智能·ssh
IT_陈寒10 分钟前
Python装饰器把我坑惨了,原来这样用才不掉链子
前端·人工智能·后端
吃旺旺雪饼的小男孩11 分钟前
自动驾驶图像分割开源数据集指南(2026)
人工智能·开源·自动驾驶
A133455512 分钟前
视频特效字幕怎么翻译?保姆级AI字幕与外挂字幕教程
人工智能·音视频
飞哥数智坊14 分钟前
我给 DeepSeek 看了两次截图,才发现 Vision 真正的价值
人工智能·ai编程·deepseek
飞哥数智坊25 分钟前
AI提升了人效,但组织却接不住释放的生产力
人工智能
飞哥数智坊33 分钟前
什么才叫真正的端到端?
人工智能
武科大许志伟1 小时前
从并行进化到分布式进化计算读 A Survey on Distributed Evolutionary Computation
人工智能·分布式·演化计算
长谷深风1111 小时前
好的 Tool Schema,不是字段越全越好
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计
Moon上有月亮1 小时前
Ollama 完全指南:本地大语言模型的“开箱即用”方案
人工智能·语言模型·自然语言处理·ollama