5. 地图表示综述(Survey)

本文范围:地图表示谱系、近三十年里程碑、Autonomy 能力边界与选型依据
公式与图层实现见 §3 Costmap2D · §4 GridMap;架构见 §1


5.1 综述定位

维度

本文

其他文档

坐标变换、膨胀公式

不展开

§3.5–§3.8 · §4.6–§4.8

图层配置、API 时序

不展开

§0 指南 · §1

表示分类、历史、前沿

本文

Autonomy 内置能力

本文 §5.11

§2 组件总览

建议阅读顺序

角色

路径

选型 / 集成

§5.11 → §2§0.7 排错

算法研发

§5.3 分类 → §5.4 时间轴 → §5.5 表示族 → §3–§4 专题

背景调研

§5.4 → §5.5 → §5.13 前沿 → §5.14 参考文献

移动机器人导航依赖环境地图作为规划与感知的空间基准:

子问题

典型地图类型

Autonomy 模块

频率

全局定位

静态占据栅格

MapServer

一次性 / 低频

路径规划

2D 代价地图

Costmap2D

1–10 Hz

局部避障

滚动代价地图

Costmap2D (rolling)

5–20 Hz

地形感知

2.5D 多层栅格

GridMap

1–10 Hz

SLAM 建图

点云 / 子图

外部模块 → 注入

变化

SLAM / 文件 ──→ MapServer ──→ OccupancyGrid ──→ static_layer ──┐
激光 / 点云 ────────────────────────────────→ obstacle_layer ──┼──→ Costmap2D ──→ Planning
                                                              │
                                              inflation_layer ─┘

深度 / 点云 ──→ GridMap (elevation / slope / ...) ──→ [未来桥接]

5.2 地图表示的形式化

5.2.1 占据栅格(Occupancy Grid)

环境 \(\mathcal{W} \subset \mathbb{R}^2\) 离散为 \(N_x \times N_y\) 栅格,每格存储占据概率或标签:

\[ p(m_{ij} = \mathrm{occupied} \mid z_{1:t}) \]

典型输出:\(o_{ij} \in \{-1, 0, \ldots, 100\}\)(未知 / 自由 / 占据百分比)。

Autonomy 实现MapServer 加载 YAML+PGM,StaticLayer 消费 OccupancyGrid

5.2.2 代价地图(Costmap)

在占据栅格基础上引入通行代价 \(c_{ij} \in [0, 255]\),使规划器不仅避开障碍,还能远离障碍

\[ c_{ij} = f(d_{ij}^{\text{obs}}, r_i, \lambda) \]

其中 \(d_{ij}^{\text{obs}}\) 为到最近障碍的距离,\(r_i\) 为机器人内切半径,\(\lambda\) 为衰减系数。

Autonomy 实现Costmap2D + InflationLayer,指数衰减公式见 §3.8

5.2.3 2.5D 多层栅格(Grid Map)

在 XY 平面维护多层浮点属性 \(\{L_k\}\),第三维信息编码在层值中:

\[ \mathcal{M}_{2.5D} = \{ L_k(i,j) \mid k = 1,\ldots,K \} \]

典型层:高程 \(z\)、方差 \(\sigma_z^2\)、坡度、法向量、可通行性。

Autonomy 实现grid_map::GridMap,ETH grid_map 架构。

5.2.4 其他表示(Autonomy 未内置)

表示

特点

典型应用

点云地图

精确 3D,数据量大

LOAM、LIO-SAM

八叉树 (OctoMap)

稀疏 3D 占据

无人机、机械臂

拓扑地图

节点+边,全局结构

多楼层、大范围

语义 / 场景图

物体、房间、关系

任务规划、人机交互

ESDF / TSDF

有符号距离场

Voxblox、实时避障

神经隐式 (NeRF/3DGS)

连续场、可微渲染

稠密 SLAM、仿真


5.3 表示分类全景

近年综述将机器人空间记忆按几何—语义—拓扑逐层叠加(metric → metric–semantic → metric–semantic–topological)。Autonomy 当前落在度量 2D/2.5D层,语义与拓扑需外部模块注入。

5.3.1 五维分类法

环境地图表示
├── 几何粒度:度量(栅格/点云/体素)· 拓扑(图)· 混合(SSH / 场景图)
├── 空间维度:2D · 2.5D · 3D · 隐式连续场
├── 语义层级:几何 only · 物体实例 · 房间/功能 · 开放词汇
├── 更新方式:静态 · 增量 SLAM · 滚动局部 · 动态物体剔除
└── 存储结构:稠密数组 · 稀疏树 · 子图 · 神经网络权重

5.3.2 方法—特性矩阵

表示族

代表

定位精度

规划直接可用

内存缩放

长期运维

Autonomy

2D 占据栅格

Elfes, Nav2 map_server

✅ 经 costmap

\(O(N^2)\)

静态优

✅ MapServer

2D 代价图

costmap_2d

\(O(N^2)\)

动态融合

✅ Costmap2D

2.5D 多层栅格

grid_map

中–高

需桥接

\(O(KN^2)\)

地形优

✅ GridMap

3D 八叉树

OctoMap

需投影/3D 规划

稀疏

探索优

子图 / 图优化

Cartographer, g2o

导出 2D

子图数

大规模 SLAM

外部注入

拓扑 / 外观

FAB-MAP, SSH

低–中

全局路由

\(O(\text{places})\)

回环检测

度量–语义

Kimera, SuMa++

加权代价

中–大

任务语义

3D 场景图

Hydra, 3D Scene Graph

高层规划

分层图

长期语义

神经隐式

NeRF-SLAM, 3DGS-SLAM

研究中

权重体积

渲染/重建


5.4 发展时间轴(1995–2025)

按五个历史阶段分块展示里程碑;完整对照见 §5.4.1

概率度量建图 · 1995–2004
1996
Thrun 占据栅格综述
贝叶斯逆传感器模型,概率地图更新框架
1998
FastSLAM
Rao-Blackwellized 粒子滤波,$O(M\log K)$ 地标
2001
Topological SLAM
Choset & Nagatani,拓扑+度量混合
2004
Hybrid SSH
Kuipers,局部度量+全局拓扑
图优化与 3D 体素 · 2005–2014
2008
FAB-MAP
外观拓扑 SLAM,在线回环检测
2010
g2o / 图 SLAM
Grisetti 等,位姿图非线性优化标准框架
2013
OctoMap · grid_map
3D 概率八叉树;ETH 2.5D 多层栅格
2014
NDT-OM · ElasticFusion
正态分布变换占据;TSDF 稠密 RGB-D SLAM
工程栈与语义萌芽 · 2015–2019
2015
ORB-SLAM · Voxblox
特征视觉 SLAM;ESDF/TSDF 实时体素融合
2016
Cartographer
子图 + 扫描匹配,产品级 2D/3D SLAM
2017
SemanticFusion
CNN 语义注入 TSDF 体素地图
2019
3D Scene Graph
Armeni 等,统一语义+几何+相机
度量–语义与神经隐式 · 2020–2023
2020
NeRF · Kimera
神经辐射场;实时度量–语义 SLAM
2022
Hydra
增量构建 3D 场景图,房间级拓扑
2023
3D Gaussian Splatting
显式高斯原语,实时渲染与 SLAM 融合
2023
NeRF-SLAM / GS-SLAM
隐式/高斯 SLAM,稠密重建+定位
开放语义与动态场景 · 2024–2025
2024
Khronos
动态环境时空度量–语义 SLAM
2024
SNI-SLAM · SemGauss-SLAM
语义神经隐式 / 语义高斯 SLAM
2024
开放词汇地图
CLIP 类特征,自然语言查询地标
2025
Autonomy map
Nav2 costmap + ETH grid_map 工程融合

5.4.1 分阶段特征表

阶段

年代

代表方法

核心突破

局限

概率栅格

1985–1999

Occupancy Grid, EKF-SLAM

逆传感器模型、在线更新

\(O(K^2)\) 地标、栅格内存

粒子与子图

2000–2014

FastSLAM, Cartographer, OctoMap

可扩展 SLAM、3D 稀疏体素

调参复杂、3D 规划难

图优化工程化

2010–2018

g2o, costmap_2d, Nav2

非线性优化、插件化代价图

仍以 2D 规划为主

语义与场景图

2017–2023

Kimera, Hydra, 3D Scene Graph

物体/房间/关系可查询

算力与标注成本

神经隐式

2020–至今

NeRF, 3DGS, 语义 NeRF

连续场、照片级重建

实时性、可编辑性、安全认证


5.5 表示族速览

以下各节为摘要;Autonomy 已实现类型见 §5.11,完整推导见 §3 · §4

5.5.1 2D 度量栅格与代价图

占据栅格(Elfes 1989;Thrun 1996 概率框架)将环境离散为独立单元,用 log-odds 或 Beta 分布融合激光/声纳。代价图在占据基础上叠加距离相关代价,Nav2 costmap_2d(2008–)以插件链(static / obstacle / inflation)成为移动底盘事实标准。

里程碑

年份

贡献

Elfes, occupancy grids

1989

栅格感知与导航

Thrun, probabilistic mapping

1996

贝叶斯占据更新

nav2_costmap_2d

2008+

多层融合、滚动窗口

Autonomy:MapServer + Costmap2DWrapper

5.5.2 3D 体素与距离场

OctoMap(Hornung et al., 2013)用八叉树存概率占据,显式建模 free / occupied / unknown。Voxblox(Oleynikova et al., 2017)在 TSDF/ESDF 上支持规划器梯度查询,优于 costmap 指数膨胀近似。

里程碑

年份

贡献

OctoMap

2013

稀疏 3D 概率地图

Voxblox

2017

实时 ESDF/TSDF 融合

NDT-OM

2013

大场景 NDT 占据图

Autonomy:VoxelLayer 将 3D 投影到 2D;完整 OctoMap/ESDF 未内置。

5.5.3 2.5D 多层栅格

grid_map(Fankhauser et al., 2014;ETH 2013 起)在固定分辨率 XY 栅格上堆叠命名浮点层,用循环 buffer 实现 \(O(1)\) 滑动,适合高程、坡度、方差等地形量。

里程碑

年份

贡献

grid_map library

2014

2.5D 多层 + 插值

Traversability analysis

2014

坡度/台阶可通行性

Autonomy:GridMapWrapper;与 Costmap 桥接待恢复。

5.5.4 拓扑与混合地图

Spatial Semantic Hierarchy(Kuipers, 2000;混合扩展 2004)在局部用度量 LPM、全局用拓扑 place 图,解决大尺度歧义。FAB-MAP(Cummins & Newman, 2008)用外观词袋概率模型做 place recognition,复杂度线性于地点数。

里程碑

年份

贡献

SSH

2000

分层空间语义

Hybrid SSH

2004

局部度量+全局拓扑

FAB-MAP

2008

外观拓扑 SLAM

Autonomy 未内置;大规模园区可外部建拓扑图,局部仍用 Costmap2D。

5.5.5 度量–语义与 3D 场景图

Kimera(Rosinol et al., 2020)实时输出 mesh + 语义标签 + 位姿图。Hydra(Hughes et al., 2022;IJRR 2024 扩展)增量构建分层 3D 场景图:体素 → 物体 → 房间 → 建筑,支持回环优化。

里程碑

年份

贡献

SemanticFusion

2017

稠密语义 TSDF

Kimera

2020

开源度量–语义 SLAM

Hydra

2022–2024

实时 3D 场景图

Khronos

2024

动态环境时空语义

语义信息可通过 GridMap 自定义层或 costmap filter 间接注入;物体级场景图需外部管线。

5.5.6 神经隐式与 3D 高斯

NeRF(Mildenhall et al., 2020)用 MLP 编码辐射场,实现视角合成。3D Gaussian Splatting(Kerbl et al., 2023)用显式高斯原语达到实时渲染,催生 GS-SLAM、SplaTAM、语义高斯 SLAM 等。

里程碑

年份

贡献

NeRF

2020

隐式连续场景表示

NeRF-SLAM

2023

单目稠密 SLAM

3D Gaussian Splatting

2023

显式原语、实时渲染

Gaussian Splatting SLAM

2024

稠密 RGB-D SLAM

前沿方向是可查询、可编辑、可规划的神经地图,而非仅渲染;与 Autonomy 栅格栈的桥接尚在研究阶段。


5.6 地图表示对比

维度

OccupancyGrid

Costmap2D

GridMap 2.5D

OctoMap

场景图

NeRF/3DGS

维度

2D

2D

2.5D

3D

分层 3D

3D 隐式/显式

数值类型

int8

uint8

float 多层

float 概率

图+属性

网络/高斯

更新方式

静态/SLAM

插件融合

应用写入

概率射线

增量构建

优化拟合

规划用途

静态障碍

全局/局部

地形

3D 避障

任务级

研究中

内存

\(O(N^2)\)

\(O(N^2)\)

\(O(KN^2)\)

稀疏

\(O(\text{obj}+\text{places})\)

中–大

Autonomy


5.7 Costmap2D 图层体系

Autonomy 采用 Nav2 风格的插件化图层架构:

图层

输入

输出

合并模式

static_layer

OccupancyGrid

LETHAL / FREE

Max

obstacle_layer

LaserScan / PointCloud2

LETHAL / FREE

Max

inflation_layer

下层 lethal 种子

1–253 梯度

Max

voxel_layer

3D 点云

2D 投影

Max

denoise_layer

连通域过滤

去除小簇

Overwrite

keepout_filter

Filter mask

禁行区

Filter

更新流程:各层 updateBounds 累加矩形 → resetMap → 按序 updateCosts → filter 后处理。

详见 Costmap2D 文档


5.8 膨胀算法的物理意义

膨胀层将离散障碍转化为连续代价场,使规划器自然产生安全裕度:

\[ c(d) = \lfloor 252 \cdot e^{-\lambda (d \cdot \Delta - r_i)} \rfloor \]

参数

物理含义

调大效果

\(r_i\) (inscribed_radius)

机器人内切圆

更大不可进入区

\(R\) (inflation_radius)

膨胀传播范围

更远仍保持高代价

\(\lambda\) (cost_scaling_factor)

衰减速度

更快恢复自由

与 ESDF 的关系:膨胀代价是 ESDF 的指数近似,计算复杂度 \(O(N \cdot R_{\text{cell}})\) vs ESDF 的 \(O(N)\),但实现简单、与 Nav2 生态兼容。


5.9 GridMap 2.5D 的设计哲学

ETH grid_map 的设计目标:

  1. 多层解耦:不同传感器/算法写入不同层,互不干扰

  2. 循环 buffer\(O(1)\) 滑动窗口,无需全图 copy

  3. 连续插值:支持 sub-cell 精度查询

  4. Eigen 集成:矩阵运算、滤波器无缝对接

2.5D vs 3D:不维护完整 3D 体素,而是用层值编码高度信息,在计算效率与表达能力间折中。


5.10 Autonomy map 模块定位

能力

状态

说明

静态地图服务

✅ 已实现

MapServer,YAML+PGM

2D 代价地图

✅ 已实现

Nav2 兼容,插件化图层

2.5D GridMap

✅ 已实现

ETH grid_map 封装

Costmap ↔ GridMap 桥接

❌ 未实现

grid_map_costmap_2d/ 已注释

3D 体素地图

部分

VoxelLayer 投影到 2D

语义 / 场景图

需外部模块

推荐选型

场景

推荐组件

室内平面导航

Costmap2D(static + obstacle + inflation)

已知静态环境

MapServer + static_layer

动态障碍环境

+ obstacle_layer + 激光

越野 / 台阶

GridMap(elevation + slope)

窄通道 / 精确定位

减小 inflation_radius,禁用 denoise

完整决策树见 §2.3


5.11 与 Planning 的耦合

Costmap2D 是 Planning 模块的核心输入

Costmap2D (char map)
    │
    ├── NavFn: F_ij = 50 + 0.8 · c_ij → 导航势场
    ├── Dijkstra: 同上,强制 Dijkstra 传播
    └── Theta*: c ≥ 253 阻塞,LOS 检测

规划时复制 costmap 快照,避免与地图更新线程竞争。详见 Planning 架构


5.12 影响因素与调参

因素

影响

调参方向

分辨率 \(\Delta\)

精度 vs 内存/速度

室内 0.05 m,室外 0.1–0.2 m

膨胀半径 \(R\)

安全裕度 vs 窄通道

0.35–0.55 m

更新频率

动态响应 vs CPU

5 Hz 通常足够

Rolling window

大地图内存

局部规划启用

denoise

噪声过滤 vs 薄墙保留

谨慎启用

footprint

碰撞模型精度

多边形优于圆形


5.13 前沿方向

方向

代表工作

与 Autonomy 关系

ESDF / TSDF 图层

Voxblox, FIESTA

可替代 inflation 指数近似,支持 CHOMP/梯度规划

grid_map ↔ costmap 桥接

grid_map_costmap_2d

代码已预留,elevation→traversability→cost

动态物体语义剔除

Khronos, DS-SLAM

减少动态障碍假阳性

3D 场景图

Hydra, ConceptGraphs

多楼层任务规划,非替代 2D costmap

开放词汇语义

CLIP-Fields, OpenScene

自然语言地标查询

神经隐式 SLAM

NeRF-SLAM, GS-SLAM, SNI-SLAM

稠密重建;规划接口未标准化

GPU 体素

OctoMap-RT, nvblox

大规模实时 3D 占据

地图–规划联合学习

Neural Planner + 隐式地图

安全可解释性仍待验证

工程侧近期优先(Autonomy 路线图):(1) 恢复 traversability 桥接;(2) 可选 ESDF 图层;(3) 语义 filter 接入 GridMap 层;(4) 地图版本与配置协同管理。


5.14 参考文献

综述

  1. Cadena et al., Past, Present, and Future of SLAM (2016)

  2. Garg et al., Semantics for Robotic Mapping (2020)

  3. Saarinen et al. / Annual Reviews, Scene Representations for Robotic Spatial Perception (2024)

  4. Tosi et al., NeRFs and 3D Gaussian Splatting reshaping SLAM (2024)

里程碑论文(1995–2025 精选)

年份

论文

贡献

1996

Thrun, Probabilistic Robotics mapping survey

概率占据栅格框架

2002

Montemerlo & Thrun, FastSLAM

可扩展 RBPF-SLAM

2004

Kuipers, Hybrid SSH

度量–拓扑混合

2008

Cummins & Newman, FAB-MAP

外观拓扑 SLAM

2010

Grisetti et al., g2o tutorial

图优化 SLAM

2013

Hornung et al., OctoMap

3D 概率八叉树

2014

Fankhauser et al., grid_map

2.5D 多层栅格

2016

Hess et al., Cartographer

子图 SLAM

2017

Oleynikova et al., Voxblox

实时 ESDF

2020

Mildenhall et al., NeRF

神经辐射场

2020

Rosinol et al., Kimera

度量–语义 SLAM

2022

Hughes et al., Hydra

实时 3D 场景图

2023

Kerbl et al., 3D Gaussian Splatting

显式辐射场原语

2024

Schmid et al., Khronos

动态时空语义 SLAM

工程


5.15 相关文档