拓扑导航 vs 几何导航的具体实现位置

让我明确指出这两种导航方式在代码中的具体实现位置。

拓扑导航 vs 几何导航的具体实现位置

1. **拓扑导航:基于 GVD Place 节点的中层规划**

实现文件

`@/home/jiayuliang/WS/CMU_VLFM/Active_Semantic/src/exploration/scripts/mid_planning.py:20-99`

关键代码

**订阅 GVD 占用栅格**(第 33-36 行):

```python

grid_topics = [

f"{self.config.OCCUPANCY_GRID_TOPIC_PREFIX}{i}/gvd/occupancy"

for i in range(self.config.OCCUPANCY_GRAPH_COUNT)

]

```

**输入话题**:

  • `/clio_node/graph0/gvd/occupancy`

  • `/clio_node/graph1/gvd/occupancy`

  • ...(根据 `OCCUPANCY_GRAPH_COUNT` 配置)

**输出**:

  • 发布路径到:`/planned_mid_path`(第 31 行)

  • 发布合并地图到:`/gvd_merged_map`(第 24 行)

**核心特点**:

  • ✅ 使用 **GVD (Generalized Voronoi Diagram)** 占用栅格

  • ✅ GVD 基于 **Place 节点**生成(自由空间骨架)

  • ✅ 在拓扑空间中规划,避开障碍物中心线

  • ✅ 合并多个 Scene Graph 的 GVD 地图


2. **几何导航:基于 TSDF 的局部避障**

实现文件

`@/home/jiayuliang/WS/CMU_VLFM/Active_Semantic/src/exploration/scripts/local_planning.py:19-98`

关键代码

**订阅 TSDF 占用栅格**(第 33-36 行):

```python

grid_topics = [

f"{self.config.OCCUPANCY_GRID_TOPIC_PREFIX}{i}/tsdf/occupancy"

for i in range(self.config.OCCUPANCY_GRAPH_COUNT)

]

```

**输入话题**:

  • `/clio_node/graph0/tsdf/occupancy`

  • `/clio_node/graph1/tsdf/occupancy`

  • ...(根据 `OCCUPANCY_GRAPH_COUNT` 配置)

**输出**:

  • 发布路径到:`/planned_local_path`(第 31 行)

  • 发布膨胀地图到:`/inflated_map`(第 23 行)

**核心特点**:

  • ✅ 使用 **TSDF (Truncated Signed Distance Field)** 占用栅格

  • ✅ TSDF 提供精确的几何距离信息

  • ✅ 执行障碍物膨胀(merge_and_inflate_grid(cci:1://file:///home/jiayuliang/WS/CMU_VLFM/Active_Semantic/src/exploration/scripts/local_planning.py:174:4-286:30),第 49 行)

  • ✅ 局部精细避障规划


对比总结

| 特性 | 拓扑导航(Mid Planner) | 几何导航(Local Planner) |

|------|------------------------|--------------------------|

| **文件** | mid_planning.py(cci:7://file:///home/jiayuliang/WS/CMU_VLFM/Active_Semantic/src/exploration/scripts/mid_planning.py:0:0-0:0) | local_planning.py(cci:7://file:///home/jiayuliang/WS/CMU_VLFM/Active_Semantic/src/exploration/scripts/local_planning.py:0:0-0:0) |

| **数据源** | **GVD 占用栅格** | **TSDF 占用栅格** |

| **话题** | `/*/gvd/occupancy` | `/*/tsdf/occupancy` |

| **规划空间** | Place 节点拓扑空间 | 几何网格空间 |

| **输出路径** | `/planned_mid_path` | `/planned_local_path` |

| **输出地图** | `/gvd_merged_map` | `/inflated_map` |

| **特点** | 全局拓扑路径 | 局部避障路径 |

| **障碍物处理** | 基于 Voronoi 骨架 | 基于距离场 + 膨胀 |

数据流

```

Scene Graph (Clio)

├─→ GVD Layer (Place 节点) → /gvd/occupancy → Mid Planner → /planned_mid_path

└─→ TSDF Layer (几何网格) → /tsdf/occupancy → Local Planner → /planned_local_path

```

**两者协同工作**:

  1. Mid Planner 在 GVD 拓扑空间规划全局路径

  2. Local Planner 跟随 Mid 路径,在 TSDF 几何空间执行精细避障

  3. 形成**分层导航架构**:拓扑层 + 几何层

相关推荐
HjhIron1 天前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩1 天前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹1 天前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
vivo互联网技术1 天前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc
浮生望1 天前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法
黄敬峰1 天前
面试必刷:从JS底层包装类到双指针,彻底搞懂字符串与回文算法
算法
地平线开发者2 天前
J6B vio scenario sample
算法
BothSavage2 天前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn2 天前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法