拓扑导航 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. 形成**分层导航架构**:拓扑层 + 几何层

相关推荐
副露のmagic14 小时前
更弱智的算法学习 day24
python·学习·算法
颜酱14 小时前
前端必备动态规划的10道经典题目
前端·后端·算法
wen__xvn14 小时前
代码随想录算法训练营DAY10第五章 栈与队列part01
java·前端·算法
cpp_250114 小时前
P2708 硬币翻转
数据结构·c++·算法·题解·洛谷
程序猿阿伟15 小时前
《Python复杂结构静态分析秘籍:递归类型注解的深度实践指南》
java·数据结构·算法
bubiyoushang88815 小时前
LFM脉冲串信号的模糊函数
算法
踩坑记录15 小时前
leetcode hot100 11.盛最多水的容器 medium 双指针
算法·leetcode·职场和发展
MM_MS16 小时前
Halcon基础知识点及其算子用法
开发语言·人工智能·python·算法·计算机视觉·视觉检测
大厂技术总监下海16 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache