当前位置: 首页 > news >正文

建图:从占用栅格到3D高斯——三种SLAM的地图表示理论

专栏系列:2D/3D/视觉SLAM理论详解(共10篇) |难度:中级 |预计阅读:26分钟
前置知识:传感器模型(第3章)、SLAM前端(第4章)、BA/图优化(第5章)
本文定位:第8篇,讲解三种SLAM中地图表示的理论谱系——从2D占用栅格到3D高斯椭球

摘要

建图是SLAM的"产出物"——最终交付给上层应用的环境模型。本章横向对比三种SLAM的地图表示:(1) 2D激光的占用栅格地图(Occupancy Grid)——二值贝叶斯滤波与log-odds更新,(2) 3D激光的点云特征图与TSDF地图——从稀疏特征到稠密体素,(3) 视觉的路标地图(从稀疏共视图到稠密网格/3DGS)。核心论点是:地图表示的选择由传感器特性(直接几何 vs 间接光度)和下游任务(导航 vs 渲染 vs 定位)共同决定。

目录

  • 1. 地图表示的理论谱系
  • 2. 2D激光:占用栅格地图
  • 3. 3D激光:从点云特征到TSDF
  • 4. 视觉:从稀疏路标到可渲染场景
  • 5. 三种路标参数化的对比
  • 6. 地图选择的下游驱动原则

1. 地图表示的理论谱系

1.1 信息密度谱

三种SLAM的地图表示可以从信息密度来分类:

表示传感器存储量更新方式典型系统
占用栅格图2D激光~100KBlog-odds贝叶斯更新GMapping, Cartographer
稀疏路标点视觉~100KB三角化+BAORB-SLAM3
3D点云特征图3D激光~1-10MBLOAM特征累积LOAM, LeGO-LOAM
八叉树占据图3D激光/RGB-D~5-50MBlog-odds贝叶斯更新OctoMap
TSDF体素RGB-D/3D激光~500MB-2GB滑动平均融合KinectFusion, Voxblox
半稠密图视觉~10MB逐像素深度滤波LSD-SLAM
3D高斯椭球视觉/RGB-D~50-500MB增量添加+优化3DGS-SLAM

1.2 地图 = 传感器特性 × 下游任务

地图表示的选择由两个正交因素决定:

  • 传感器特性:激光直接提供几何信息→自然适合几何地图(栅格、体素);视觉间接提供外观信息→自然适合外观+几何混合地图
  • 下游任务:导航需要"哪里可通行"(占据栅格);AR需要视角渲染(3DGS/网格);定位需要稳定的可匹配特征(稀疏路标)

2. 2D激光:占用栅格地图

2.1 栅格地图的贝叶斯基础

2D激光SLAM将环境划分为规则的栅格阵列。每个栅格c cc维护其被障碍物占据的后验概率P ( m c = 1 ∣ z 1 : t , x 1 : t ) P(m_c = 1 \mid \mathbf{z}_{1:t}, \mathbf{x}_{1:t})P(mc=1z1:t,x1:t)

在"给定轨迹"的条件下(RBPF的分解),各栅格是条件独立的——每个栅格的占据概率仅由穿过该栅格的所有激光射线所独立确定。

2.2 Log-odds更新

直接使用贝叶斯公式更新概率需要乘除法(有数值下溢风险)。Log-odds形式将贝叶斯更新转化为一次加法

L ( m c ∣ z 1 : t ) = L ( m c ∣ z 1 : t − 1 ) + L ( m c ∣ z t ) L(m_c \mid \mathbf{z}_{1:t}) = L(m_c \mid \mathbf{z}_{1:t-1}) + L(m_c \mid z_t)L(mcz1:t)=L(mcz1:t1)+L(mczt)

其中L = log ⁡ P 1 − P L = \log\frac{P}{1-P}L=log1PP是log-odds。核心优势:

  • 每次观测仅需一次加法
  • Log-odds=0 ↔P = 0.5 P=0.5P=0.5(完全未知)
  • 正值 ↔ 被占据(P > 0.5 P > 0.5P>0.5),负值 ↔ 空闲(P < 0.5 P < 0.5P<0.5
  • 占据概率随时可通过P = 1 / ( 1 + e − L ) P = 1/(1 + e^{-L})P=1/(1+eL)恢复

2.3 激光射线对栅格的更新

一条激光射线从传感器原点x t \mathbf{x}_txt出发,沿方向θ \thetaθ到达测量距离z t z_tzt处。它对沿线的栅格产生两种更新:

  • 射线穿过的栅格(从原点到测量终点之间的所有栅格):观测为"miss"(空闲)→ log-odds减少(L ← L + l miss L \leftarrow L + l_{\text{miss}}LL+lmissl miss < 0 l_{\text{miss}} < 0lmiss<0
  • 测量终点的栅格(射线终止处):观测为"hit"(被占据)→ log-odds增加(L ← L + l hit L \leftarrow L + l_{\text{hit}}LL+lhitl hit > 0 l_{\text{hit}} > 0lhit>0

逆传感器模型(Inverse Sensor Model):给定一次测量z t z_tzt,推断每个栅格的占据概率。这是传感器模型的"逆向"——从效果(一次测量读数)推断原因(栅格状态)。

2.4 栅格分辨率的选择

分辨率栅格大小(5m×5m区域)内存精度适用
1cm250,000 栅格~1MB精确定位、室内导航
5cm10,000 栅格~40KB通用导航、扫地机器人
10cm2,500 栅格~10KB大范围拓扑导航

Cartographer使用5cm分辨率的子图(submap),每个子图通常为200×200栅格(10m×10m)。多个子图通过位姿图拼接为全局地图。

2.5 子图策略:Cartographer的地图管理

Cartographer将全局地图分解为多个独立的子图(submap)

  • 每个子图在局部坐标系中累积几十到几百帧的扫描
  • 子图由一组雷达扫描帧通过局部CSM构建(子图内的累计位姿通过CSM估计)
  • 多个子图的相对位姿通过全局位姿图优化(回环后)确定

子图策略的好处:局部约束在一个子图内紧密,全局约束通过位姿图的稀疏边连接——避免了"一个栅格的微小位移导致全局地图错位"的问题。


3. 3D激光:从点云特征到TSDF

3.1 LOAM的局部点云特征地图

LOAM维护的"地图"是一组累积的特征点(边缘点和平面点),而非完整的3D栅格地图。这个特征地图:

  • 局部性:仅保留最近若干帧的特征点(通过滑动窗口或距离阈值剔除旧点)
  • 特征累积:新帧的特征点变换到世界坐标系后并入地图
  • 用于配准:新扫描不是配准到上一帧,而是配准到这个累积特征地图(扫描→地图配准)

LOAM里程计的漂移远低于帧-帧配准——因为累积地图包含多帧的信息,对测量噪声有平滑效果。

3.2 TSDF:从点云到体素

TSDF(截断符号距离函数)是3D稠密重建的基础表示:

SDF ( x ) = { + d ( x , S ) 若 x 在曲面外部 − d ( x , S ) 若 x 在曲面内部 0 若 x 恰好在曲面上 \text{SDF}(\mathbf{x}) = \begin{cases} +d(\mathbf{x}, S) & \text{若 } \mathbf{x} \text{ 在曲面外部} \\ -d(\mathbf{x}, S) & \text{若 } \mathbf{x} \text{ 在曲面内部} \\ 0 & \text{若 } \mathbf{x} \text{ 恰好在曲面上} \end{cases}SDF(x)=+d(x,S)d(x,S)0x在曲面外部x在曲面内部x恰好在曲面上

截断版本仅对距曲面± δ \pm\delta±δ范围内的体素存储SDF值。每个体素存储截断SDF值D ( v ) D(\mathbf{v})D(v)和权重W ( v ) W(\mathbf{v})W(v)

TSDF的滑动平均更新

D k + 1 = W k ⋅ D k + w k + 1 ⋅ d k + 1 W k + w k + 1 , W k + 1 = W k + w k + 1 D_{k+1} = \frac{W_k \cdot D_k + w_{k+1} \cdot d_{k+1}}{W_k + w_{k+1}}, \quad W_{k+1} = W_k + w_{k+1}Dk+1=Wk+wk+1WkDk+wk+1dk+1,Wk+1=Wk+wk+1

其中d k + 1 d_{k+1}dk+1是新测量的SDF值(从当前相机/LiDAR视角计算的投影距离)。

2D栅格 vs 3D TSDF的对比

2D占用栅格3D TSDF
更新方式Log-odds贝叶斯(二值)滑动平均(连续值)
存储内容占据概率(标量)截断SDF值+权重(两标量)
曲面位置占据概率>阈值SDF=0的等值面(Marching Cubes提取)
存储量极低(2D网格)高(3D体素网格,O ( N 3 ) O(N^3)O(N3)
适用传感器2D激光RGB-D、3D激光

3.3 八叉树地图(OctoMap)

八叉树将3D空间自适应地递归分割为8个子立方体,解决均匀TSDF网格"存储量随分辨率立方增长"的问题。

每个叶节点维护log-odds占据概率。如果所有子体素处于相同状态(全空闲或全占据),则被剪枝为父体素——大幅压缩内存。在室内结构化场景中压缩率可达90%以上。


4. 视觉:从稀疏路标到可渲染场景

4.1 稀疏路标 + 共视图:定位优化的地图

ORB-SLAM的地图 = 一组3D路标 + 共视图(covisibility graph)。

共视图:两个关键帧被视为"共视"当且仅当它们共享至少15个地图点的观测。权重 = 共视地图点数。局部BA仅优化与当前帧在共视图中直接相连的相机——大幅缩减局部BA规模。

本质图(Essential Graph):共视图的稀疏化子图(仅保留最强连接边),用于回环修正时的高效位姿图优化。

4.2 半稠密地图:LSD-SLAM的梯度区域深度

LSD-SLAM仅对具有足够梯度的像素进行深度估计——因为深度估计的信息主要来自图像梯度。在均匀区域(如白墙),深度估计的特征值趋于零。

深度通过极线搜索 + 逆深度方差建模来估计。TV-L1深度正则化(min ⁡ D ∑ ∥ ∇ D ∥ 1 \min_D \sum \|\nabla D\|_1minD∥∇D1)保持深度边缘的不连续性——L1允许尖锐的跳变存在(物体边界处的深度突变),而L2会将其模糊。

4.3 3DGS地图:可渲染的场景表示

3D Gaussian Splatting(3DGS)用显式的各向异性高斯椭球表示场景:

  • 均值位置μ \mathbf{\mu}μ(3D坐标)
  • 协方差矩阵Σ \mathbf{\Sigma}Σ(空间扩展的形状和方向)
  • 颜色和不透明度参数

每个高斯元的空间密度:
G ( x ) = exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) G(\mathbf{x}) = \exp\left(-\frac{1}{2}(\mathbf{x} - \mathbf{\mu})^T \mathbf{\Sigma}^{-1} (\mathbf{x} - \mathbf{\mu})\right)G(x)=exp(21(xμ)TΣ1(xμ))

通过可微光栅化(将3D高斯按前后顺序投影到图像平面并叠加以生成像素颜色),可从任意新视角渲染。相比传统地图,3DGS地图同时编码了几何和外观——地图本身就可以用于渲染。


5. 三种路标参数化的对比

5.1 视觉SLAM中三种路标参数化

视觉SLAM的路标(3D点)有三种数学表示:

(1) Euclidean坐标( X , Y , Z ) (X, Y, Z)(X,Y,Z):直观、雅可比简单(∂ P / ∂ P = I \partial\mathbf{P}/\partial\mathbf{P} = \mathbf{I}P/P=I)。对远距离点不确定性建模差——100米的点的Z坐标方差可能50米,这在优化中产生病态的数值条件。

(2) 逆深度[ u , v , ρ ] T [u, v, \rho]^T[u,v,ρ]Tu = X / Z , v = Y / Z , ρ = 1 / Z u=X/Z, v=Y/Z, \rho=1/Zu=X/Z,v=Y/Z,ρ=1/Z):远距离点(ρ → 0 \rho \to 0ρ0)在逆深度空间中是接近零的高斯分布——高斯能准确建模。ρ = 0 \rho = 0ρ=0自然表示无穷远点。是单目SLAM初始化和远距离点的首选参数化。

(3) 锚点参数化:路标 = 锚点相机T anchor \mathbf{T}_{\text{anchor}}Tanchor+ 从锚点视角的逆深度ρ \rhoρ。初始化用逆深度(初期不确定性建模好),深度稳定后转为Euclidean(计算更快)。

5.2 为什么激光SLAM不需要这些参数化

激光SLAM中,每个点的3D坐标是直接测量的(距离+角度 → XYZ),其不确定性近似为常值高斯(~1-3cm)——不需要逆深度来"线性化"远距离的不确定性。这是本章"传感器特性决定地图表示"的最直接的例证。


6. 地图选择的下游驱动原则

6.1 下游任务与地图表示的对应

下游任务最优地图表示典型传感器
机器人导航(2D)2D占用栅格图(log-odds)2D激光
无人机导航(3D)八叉树占据图(自适应分辨率)3D激光/RGB-D
AR/虚拟内容放置稠密网格/3DGS(可渲染几何)RGB-D/视觉
长期定位稀疏特征地图(存储小、跨季节鲁棒)视觉
三维重建TSDF+Mesh(连续曲面)RGB-D/3D激光
场景渲染3DGS/NeRF(照片级外观)视觉
拓扑规划拓扑图(节点+连通性)任意传感器

6.2 核心原则

地图是SLAM的产出,但不是最终目标——是后续应用(导航、AR、重建、长期定位)决定了需要什么类型的地图。

选择地图表示时应考虑:

  • 传感器的自然信息类型:激光→几何地图 / 视觉→外观+几何混合地图
  • 存储和计算预算:嵌入式平台→稀疏特征 / 桌面/服务器→稠密/3DGS
  • 时间尺度:实时导航→轻量地图(栅格/八叉树) / 离线重建→高质量地图(TSDF/3DGS)
  • 光照/季节鲁棒性:户外→几何地图(光照不变) / 室内→外观地图可用

本文总结

  • 三种SLAM的地图表示由传感器特性决定:激光的直接几何测量→自然适配栅格/体素/八叉树;视觉的间接光度测量→适配路标+描述子+可渲染场景表示
  • 2D占用栅格 = log-odds贝叶斯更新:每次激光射线的一次加法更新,hit→log-odds增加,miss→log-odds减少——渐进式地建立占据/空闲信念
  • 3D激光特征图 = LOAM的边缘+平面点累积:扫描→地图配准优于帧-帧配准(多帧信息平滑噪声);TSDF滑动平均融合深度观测
  • 视觉地图的演进:稀疏路标+共视图(ORB-SLAM, 定位用) → 半稠密梯度区域(LSD-SLAM, 场景结构) → 3DGS椭球(可渲染, AR用)
  • 路标参数化的选择取决于深度不确定性:逆深度解决了远距离的高斯建模(ρ → 0 \rho \to 0ρ0vsZ → ∞ Z \to \inftyZ);激光不需要这些参数化——因为深度直接测量且精度与距离弱相关
  • 地图选择 = 下游任务驱动:导航要占据栅格、AR要3DGS、定位要稀疏特征、重建要TSDF+Mesh

标签

SLAM占用栅格TSDF八叉树3DGS共视图

http://www.jsqmd.com/news/892771/

相关文章:

  • 从0到1手写一个Skill:我的竞品情报分析工作流实战教程
  • Jmeter性能测试避坑指南:关于‘线程组顺序执行’和‘固定定时器’的那些常见误解
  • 兰州口碑好的装修公司,如何判断兰州装修公司是否“靠谱”? - 企业品牌
  • 在多模型项目开发中利用Taotoken模型广场进行快速选型与切换
  • UE5蓝图迁移指南:节点变更、类型重构与替代方案
  • LMRank:基于依存句法与语义嵌入的智能关键词抽取方法详解
  • 暗黑3免费宏工具终极指南:D3keyHelper从零到精通完整教程
  • 2026年权威的 山东青岛铝门窗、系统门窗品牌排行:5家实力品牌深度对比 - 奔跑123
  • 2026年度深圳劳动仲裁好评榜深度解读 - 资讯速览
  • Unity Android后台定位崩溃:SecurityException listen根因与修复
  • 机器学习辅助高通量筛选:uMLIP与迁移学习加速功能材料发现
  • 不止于Cookie:手把手教你用Fiddler Hook住任意Header与AJAX请求(附常用代码片段)
  • HANNA模型:融合机器学习与热力学的智能活度系数预测新范式
  • OHiFormer:基于结构相对位置编码的Transformer模型实现UI屏幕摘要
  • Unity中零依赖读取Excel:ExcelDataReader跨平台实战指南
  • 90%程序员拿10-15K,懂AI的已经年薪50万:四个阶段看清你差在哪儿
  • LSTM结合语义特征优化机器翻译:从序列建模到语义理解
  • 一文读懂天梭官方售后:网点布局、保养维修与服务流程 - 资讯速览
  • 原子尺度机器学习工程化:metatensor生态标准化模型开发与部署
  • ngx_http_request_handler
  • 网盘直链下载助手:八大网盘免费高速下载的终极解决方案
  • 用curl_cffi复刻浏览器可信链路突破AKM 3.0反爬
  • 近两年深圳劳动仲裁机构实力测评:技术效果口碑多维度对比 - 资讯速览
  • qLSTM-RvNN:引入二次连接增强递归神经网络语义组合能力
  • 企业内如何规范管理Taotoken的API Key与访问日志
  • 【学习笔记】《Python编程 从入门到实践》第3章:Python列表完全指南——创建、修改、删除与排序
  • 半监督图学习在金融反洗钱中的应用:从图嵌入到模型解释
  • 深圳劳动仲裁服务机构选择参考:多场景下的实操经验 - 资讯速览
  • 多语言仇恨言论检测:从词嵌入到Transformer的混合策略与实战
  • 从频域到电路:DCDC开关电源补偿网络的设计与实战调优