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

相关推荐
叠层归一研究院10 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
zlinear数据采集卡11 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
杨石兴11 小时前
31、玩具MoM:用2x2矩阵串起全套流程
人工智能·算法·矩阵·电磁学
江畔柳前堤12 小时前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php
Navigator_Z12 小时前
LeetCode //C - 1192. Critical Connections in a Network
c语言·算法·leetcode
zander25812 小时前
LeetCode 739:每日温度——为什么单调栈要持续弹出
开发语言·python·算法
2601_9557598812 小时前
如何降低 Claude API 批量生产返工率
大数据·人工智能·算法
rannn_11112 小时前
【力扣hot100】链表专题下|138、148、23、146
java·算法·leetcode·链表·开发
ly768912 小时前
分布式一致性算法详解:从 2PC、3PC 到 Paxos、Raft、ZAB
分布式·算法
阿维的博客日记13 小时前
保姆级教程-BBPE分词算法
算法·bbpe