使用 Groot

Groot 是 BehaviorTree.CPP 库的配套图形工具,用于创建、编辑和可视化行为树。 行为树(Behavior Tree,简称 BT)深度集成于 Nav2,是复杂导航和自主系统中编排任务服务器逻辑的主要手段。 BT 由许多执行不同任务的节点组成,控制逻辑流程,其工作方式类似层次状态机(hierarchical state machine)或有限状态机(finite state machine),但以树结构组织。 节点类型包括:动作(Action)、条件(Condition)、控制(Control)和装饰器(Decorator),详见概念和 BehaviorTree.CPP 中的节点类型。
如果你有兴趣创建新的 BT 节点,编写新的 BT 插件提供了一个创建简单 Action 节点的完整示例。本教程仅介绍如何启动 Groot、可视化行为树,并根据需求定制修改树结构,前提是已有可用的 BT 节点库。Nav2 已内置大量 BT 节点供直接使用,详见插件。
BehaviorTree.CPP 的 BT 配置文件采用 XML 格式,用于在运行时从节点名称对应的库中动态加载 BT 节点插件。XML 格式的详细定义见此处。Groot 需要一份可访问的节点列表以及相关的元数据(如类型、端口(port,即参数)),本教程后续将这份列表称为节点的「调色板」(palette)。
在上面的视频中可以看到 Groot 与 RViz、以及一台 100% 配备西门子(SIEMENS)ROS 硬件的测试平台并排展示。
Groot 和 Groot2 均有相应教程,其中 Groot2 是较新的版本。Groot 用于 BehaviorTree.CPP v3.x,Groot2 则专为 v4.x 设计。