6. 导航编排综述(Survey)
6.1 综述定位
维度 |
本文 |
其他文档 |
|---|---|---|
SE(2) 任务形式化、双层 GoalChecker |
不展开 |
|
BtNavigator 分层、tick 时序 |
不展开 |
|
XML 逐层、插件端口 |
摘要 + 链接 |
|
编排历史、分类、选型 |
本文 |
— |
全局路径 / 局部轨迹 |
摘要 |
建议阅读顺序
角色 |
路径 |
|---|---|
选型 / 集成 |
§6.6 → §6.7 排错对照 |
BT 定制 |
§6.3 → §6.5 模式族 → §4 |
背景调研 |
§6.4 → §6.5 → §6.9 参考文献 |
6.2 Autonomy 能力边界
Autonomy navigator 是 nav2 兼容的 L1 编排层:将用户目标转化为对 planning / control / map 的 Action 调用序列,不实现路径搜索或跟踪律。
1995 BDI/FSM → 2010 ROS move_base → 2018 Nav2 BT → 2022 Groot2 → 2025 Autonomy navigator
├── BT XML(局部生存)
├── 52 插件清单
└── 直驱 / BT 双模式
能力 |
状态 |
说明 |
|---|---|---|
nav2 对齐 BT XML |
✅ |
单点 + 多点 + Groot 模型 |
|
✅ XML |
与 Nav2 默认同型 |
局部生存(TF 丢失) |
✅ XML |
Autonomy 增强 |
|
⏳ |
待迁回 |
直驱规划调试 |
✅ |
|
HTN / 任务规划器 |
❌ |
上层应用 |
多机 MAPF 编排 |
❌ |
需 Fleet 层 |
LLM 高层任务分解 |
❌ |
研究向(见 §6.8) |
6.3 编排范式分类
6.3.1 四维分类法
导航编排
├── 表示:FSM · 行为树 BT · BDI · HTN · 脚本/DSL
├── 反应性:开环脚本 · 每 tick 重检(ReactiveFallback)· 事件驱动 FSM
├── 恢复:硬编码(move_base)· 子树组合(RecoveryNode)· 学习策略
└── 可配置性:编译期 · XML 热替换 · 运行时 Goal 指定树
6.3.2 范式—特性矩阵
范式 |
代表 |
可读性 |
组合性 |
反应性 |
恢复扩展 |
Autonomy |
|---|---|---|---|---|---|---|
FSM |
move_base、早期游戏 AI |
状态少时好 |
差(\(N^2\) 转移) |
需显式边 |
硬编码 |
历史对照 |
BT |
Nav2、BT.CPP |
XML + Groot 高 |
子树复用 |
Reactive 节点 |
RecoveryNode |
✅ 目标 |
BDI |
PRS、JAM |
信念/意图抽象 |
中 |
强 |
需设计 |
❌ |
HTN |
SHOP2、ROSPlan |
任务分解清晰 |
强 |
规划周期 |
重规划层 |
❌ |
脚本 |
launch + 服务调用 |
低 |
弱 |
弱 |
手动 |
直驱近似 |
6.4 发展时间轴
按五个历史阶段分块展示里程碑;完整对照见 §6.4.1。
6.4.1 分阶段特征表
阶段 |
年代 |
核心矛盾 |
编排解法 |
局限 |
|---|---|---|---|---|
任务表示 |
1980s–90s |
复合任务如何分解 |
BDI、HTN、三层架构 |
与运动层耦合弱 |
ROS 反应式 |
2000s–10s |
实时避障 + 全局路径 |
move_base FSM、actionlib |
恢复逻辑难定制 |
BT 理论 |
2005–18 |
FSM 状态爆炸 |
层次 BT、与 FSM 等价证明 |
工程库分散 |
Nav2 工程 |
2019–23 |
ROS 2 生命周期 + 可配置 |
BT Navigator、BT.CPP、Groot2 |
默认树偏保守 |
前沿 |
2023– |
自然语言任务 + 安全执行 |
LLM 规划 + BT 护栏、语义地图 |
可靠性待验证 |
6.5 编排模式族
6.5.1 行为树导航理论与优势
维度 |
FSM(move_base) |
BT(Nav2 / Autonomy) |
|---|---|---|
结构 |
扁平转移图 |
层次树 + 子树复用 |
可读性 |
状态多时难维护 |
XML + Groot 可视化 |
反应性 |
需显式转移边 |
|
恢复 |
|
|
定制 |
改 C++ 重编译 |
换 XML 或 Goal 指定树 |
黑板模式:节点通过 \(\mathcal{B} = \{g, p, q_r, \ldots\}\) 共享数据,解耦 Action 与 Condition。详见 §2.3。
6.5.2 标准流水线(Pipeline)
PipelineSequence + RateController:Nav2 与 Autonomy 默认同型。Autonomy 在 ReactiveFallback 内增加 局部生存 分支(TF 丢失时低速运动 + 重定位),见 §4。
6.5.3 恢复层级
级别 |
触发 |
动作 |
Autonomy |
|---|---|---|---|
L0 上下文 |
单节点 FAILURE |
清局部图 + Wait |
LocalSurvival 内 |
L1 导航 |
Pipeline FAILURE |
清全局 + BackUp + Spin |
|
L2 航点 |
多点 FAILURE |
清图 + Wait 0.5s |
ThroughPoses ×6 |
6.5.4 ROS 导航栈演进
系统 |
编排 |
里程碑意义 |
|---|---|---|
ROS 1 |
FSM + 恢复行为列表 |
十年工业标准,恢复难扩展 |
ROS 2 Nav2 |
|
可配置、社区插件生态 |
Isaac Sim / Nav2 |
同型 BT |
仿真—真机同一编排 |
Autonomy |
nav2 对齐 + 局部生存 |
C++ 栈、进程内 Action |
6.6 Autonomy 编排选型
6.6.1 模式决策树
需要 FollowPath + 恢复?
├── 否 → 直驱模式(规划调试)
└── 是 → 单目标还是多航点?
├── 单点 → navigate_to_pose.xml
│ └── TF 不稳定?→ 增大 local_survival_timeout
└── 多点 → navigate_through_poses.xml
6.6.2 场景矩阵
场景 |
模式 |
关键配置 |
理由 |
|---|---|---|---|
规划算法调试 |
直驱 |
|
跳过 BT |
标准室内 |
BT 单点 |
默认 XML |
完整流水线 |
定位慢恢复 |
BT 单点 |
|
局部生存 |
仓库巡检 |
BT 多点 |
10 Hz |
动态重规划 |
窄通道 |
BT + Theta* |
|
任意角路径 |
动态拥挤 |
BT 10 Hz 规划 |
|
快速响应 |
6.6.3 参数敏感度
参数 |
过小 |
过大 |
|---|---|---|
|
tick 延迟 |
CPU 占用 |
规划频率 (Hz) |
动态障碍反应慢 |
规划负载高 |
|
轻易放弃 |
长时间原地恢复 |
|
难以 SUCCESS |
停车精度差 |
6.8 前沿方向
方向 |
代表工作 |
与 Autonomy 关系 |
|---|---|---|
BT 形式化验证 |
合成、模型检测 |
长期:关键安全任务 |
LLM → BT |
自然语言生成 XML / 节点 |
上层接口,执行层仍用 BT.CPP |
VLM + 经典栈 |
语义目标 → |
Bridge 下发目标位姿 |
行为树 + 学习恢复 |
学习何时 Spin/BackUp |
研究向,默认仍用规则恢复 |
多机编排 |
Fleet / MAPF 上层 |
超出单机器人 navigator |
LLM + BT 的常见分层:大模型负责任务分解与自然语言接口,确定性 BT 负责运动安全与实时反应——与 move_base→Nav2 的「可配置 + 可验证」路线一致,而非端到端替代规划/控制。
6.9 参考文献
教材与专著
里程碑论文
年份 |
论文 |
贡献 |
|---|---|---|
1985 |
BDI 哲学基础 |
|
1992 |
层次任务网络 |
|
1995 |
反应式 BDI 智能体 |
|
1998 |
规划/执行/控制分层 |
|
2005 |
游戏 BT 工程化 |
|
2007 |
机器人操作系统 |
|
2012 |
BT 学术形式化 |
|
2014 |
BT 与 FSM 等价 |
|
2018 |
ROS 2 导航设计 |
|
2022 |
机器人/AI BT 全面调查 |
|
2022 |
ROS 2 生态与 Nav2 |
|
2023 |
Nav2 算法与 BT 章节 |
工程资源