# Nav2自定义行为树如何复用内置Spin节点并集成

> 原文链接：https://robotics.hellobike.com/pitfalls/2025-07-16-robotics-se-117048
> 频道：pitfalls | 更新日期：2025-07-16 | 标签：auto, stackexchange, nav2
> 核心摘要：确认nav2_behavior_tree包支持外部复用，可直接在自定义XML中调用内置节点实现启动旋转等逻辑。

# Nav2自定义行为树如何复用内置Spin节点并集成

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Integrating custom tree with Nav2 behaviour tree](https://robotics.stackexchange.com/questions/117048/integrating-custom-tree-with-nav2-behaviour-tree)（Robotics Stack Exchange #117048）

**状态**：已解决

## 问题

开发者希望在机器人启动后先执行旋转动作再进行目标导航，不确定能否直接复用Nav2内置的Spin等节点构建自定义行为树，或是否需要将其封装为插件及新建功能包重写逻辑，以避免默认nav_to_pose树直接发布cmd_vel。

## 环境

ROS2 Humble, Ubuntu 22.04, CycloneDDS, Nav2, Groot

## 解决办法

1. 直接在自定义行为树XML文件中引用 `nav2_behavior_tree` 包提供的内置节点（如 `Spin`），无需重新编写C++插件或创建新功能包。
2. 使用Groot编辑包含Nav2原生节点的自定义行为树逻辑，并将其导出为XML文件。
3. 将生成的自定义XML路径配置到Nav2参数中替换默认行为树，系统会自动加载 `nav2_behavior_tree` 中的节点定义供运行时调用。

原问题作者：Adi；采纳答案作者：Steve Macenski。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #117048：Integrating custom tree with Nav2 behaviour tree](https://robotics.stackexchange.com/questions/117048/integrating-custom-tree-with-nav2-behaviour-tree)