2. 导航编排 BT 算法
Autonomy navigator 通过 BehaviorTree.CPP 与 52 个插件节点编排规划、控制与恢复。本文是 §3–§5 专题的索引与对比;形式化见 §0.3,架构见 §1,谱系与选型见 §6 综述。
2.1 组件一览
组件 |
文档 |
职责 |
状态 |
|---|---|---|---|
|
插件加载、XML 解析、工厂 |
⏳ |
|
|
Action ↔ BT tick 循环 |
⏳ |
|
|
规划→跟踪→恢复 + 局部生存 |
✅ XML |
|
|
多点巡航 + 10 Hz 重规划 |
✅ XML |
|
BT 插件(52) |
Action / Condition / Control / Decorator |
⏳ |
继承关系
BehaviorTreeNavigator<ActionT>
├── NavigateToPoseNavigator ← navigate_to_pose.xml
└── NavigateThroughPosesNavigator ← navigate_through_poses.xml
2.2 编排模式对比
维度 |
直驱模式 |
BT 单点 |
BT 多点 |
|---|---|---|---|
入口 |
|
|
|
规划 |
单次 |
|
10 Hz 贯穿航点 |
跟踪 |
无 |
|
|
恢复 |
无 |
|
|
TF 丢失 |
立即失败 |
局部生存模式 |
nav2 同型(无局部生存) |
典型场景 |
规划调试 |
标准室内导航 |
仓库巡检 |
2.3 控制节点语义
节点 |
代数语义 |
Autonomy 用途 |
|---|---|---|
|
\(N_1 \land \cdots \land N_m\) |
顺序执行 |
|
\(N_1 \lor \cdots \lor N_m\) |
恢复备选 |
|
每 tick 重求 \(\lor\) |
|
|
流水线激活 |
规划→平滑→跟踪 |
|
\(\mathrm{retry}(M, R, K)\) |
SafeNavigate |
|
频率限制子节点 |
5/10 Hz 重规划 |
2.4 标准流水线
阶段 |
BT 节点 |
子系统 |
|---|---|---|
规划 |
|
|
平滑 |
|
Smoother |
验证 |
|
|
跟踪 |
|
|
恢复 |
|
Map + Control |
单点树在流水线外包裹 ReactiveFallback(TF 分支)与顶层 RecoveryNode。XML 逐层见 §4。
2.5 选型速查
场景 |
推荐 |
关键配置 |
|---|---|---|
规划算法调试 |
直驱 |
|
标准室内 |
BT 单点默认 XML |
|
定位不稳定 |
BT 单点 + 增大超时 |
|
动态拥挤 |
BT + 10 Hz 规划 |
|
窄通道 |
BT + Theta* |
|
仓库巡检 |
BT 多点 |
|
完整矩阵见 §6.6。
2.6 扩展阅读
§ |
文档 |
内容 |
|---|---|---|
3 |
BtEngine、tick 循环、黑板 |
|
4 |
|
|
5 |
52 节点目录 + 多点树 |
|
6 |
历史、分类、Nav2 对照 |