Groot 行为树编辑器
- 可视化行为树
- 编辑行为树
- 添加自定义节点
可视化行为树
Section titled “可视化行为树”要显示「完整 Nav2 默认行为树」中的行为树,首先启动 Groot。 默认情况下,Groot 只能显示 BT.CPP 自带的行为树和节点,并不了解 Nav2 或你的项目。 因此需要让 Groot 加载我们的调色板(palette),也就是 Nav2/自定义行为树节点的索引:
- 以编辑器模式打开 Groot,界面如「默认编辑器视图」所示。
- 通过右键上下文菜单或菜单栏顶部中央的导入图标,选择
Load palette from file。 - 打开文件
/path/to/navigation2/nav2_behavior_tree/nav2_tree_nodes.xml,导入导航所用的全部自定义行为树节点。这就是 Nav2 的自定义行为树节点调色板。此时 Groot 界面如「已加载蓝色自定义节点的编辑器」所示。 - 选择左上角附近的
Load tree。 - 浏览并选择要可视化的行为树,然后点击
OK。Nav2 的行为树位于/path/to/navigation2/nav2_bt_navigator/behavior_trees/目录下。
![]() | ![]() |
|---|
如果你选择默认的行为树 navigate_w_replanning_and_recovery.xml,Groot 编辑器界面如「完整 Nav2 默认行为树」所示。

完整 Nav2 默认行为树
注意:如果因调色板缺少某些节点导致行为树无法显示,需要将这些节点手动添加到调色板中。我们会尽量保持 Nav2 的 BT 节点与调色板同步,但若发现某个节点缺失,请提交 issue 或 pull request,我们会尽快更新。
在编辑器模式下用 Groot 打开 Nav2 行为树后,即可通过 GUI 轻松修改。 如「完整 Nav2 默认行为树」所示,可以从侧边面板拖入新节点添加到工作区,然后在节点的输入和输出端口之间拖放连线,将新节点组装到行为树中。
选中某个节点后,可以修改它的元数据,例如名称或可参数化端口的值。修改完成后,保存新的配置文件即可在机器人上使用。
添加自定义节点
Section titled “添加自定义节点”行为树中的每个节点都承担一项专门功能。 在设计过程中,有时需要创建新节点并添加到调色板——甚至在具体实现完成之前就先定义好。 这样设计者就可以将实现细节抽象掉,专注于行为树本身的高级逻辑以及节点之间的交互方式(例如类型、端口等)。 在 Groot 中,你可以创建新的自定义节点添加到行为树中,并将这些新节点导出到调色板。 节点本身的实现需要在 Groot 之外单独完成,相关内容参见编写新的 BT 插件。

创建新的自定义节点
Groot 处于编辑器模式时,点击「创建新的自定义节点」图中橙色标记的图标,即可开始创建新的自定义节点。 此时会弹出一个新窗口,如「描述新节点的界面」所示。 在该窗口中需要填写新节点的元数据,包括一些标准信息:名称(绿色框)、节点类型(橙色框),以及用于参数化或访问黑板变量的可选端口(蓝色框)。
完成后,在「描述新节点的界面」中点击 OK,新的自定义节点将以蓝色出现在 TreeNode Palette 中,如「导出新的自定义节点」所示。
![]() | ![]() |
|---|
在基于新自定义节点创建行为树之前,建议先导出并保存新创建的节点,以防 Groot 崩溃导致数据丢失。 导出操作通过「导出新的自定义节点」中绿色高亮的图标完成。 「描述新节点的界面」中创建的节点,其生成的 XML 输出如下所示。 更多示例可参见 Nav2 的 BT 节点调色板 XML。
<root> <TreeNodesModel> <Action ID="MyAwesomeNewNode"> <input_port name="key_name" default="false">coffee</input_port> <output_port name="key_name2" default="42">Sense of life</output_port> <inout_port name="next_target" default="pancakes">rolling target</inout_port> </Action> </TreeNodesModel></root>


