2. 空间感知基础

在3D Occupancy空间感知中,所有算法都建立在统一的几何语言之上。若把感知系统比作一座建筑,坐标系是地基,相机模型是窗户,点云是砖块,体素网格与占据栅格则是把砖块砌成可计算结构的模具。本节围绕这五个基本概念展开,帮助读者建立从二维图像到三维占据空间的完整认知链条。

一、坐标系:空间感知的公共语言

自动驾驶与机器人系统通常同时存在多个坐标系:世界坐标系(World)、自车坐标系(Ego/Body)、相机坐标系(Camera)、激光雷达坐标系(LiDAR)以及图像像素坐标系(Image)。每个传感器只能在自己的坐标系下描述观测结果,而融合与占据预测必须把不同来源的数据变换到同一参考系中。

坐标变换的核心是刚体变换:旋转矩阵 R 与平移向量 t 组成外参矩阵 T。若已知某点在相机坐标系下的坐标 P_c,则其在自车坐标系下的坐标可表示为 P_e = R_ce · P_c + t_ce。实际工程中,外参通常由标定得到,并随车辆振动、温度变化发生漂移,因此在线标定与时间同步是空间感知稳定性的前提。

记忆要点:坐标系变换的本质是“先旋转、再平移”,外参描述传感器之间的相对位姿,内参描述传感器自身的投影特性。

二、相机模型:从三维到二维的投影

针孔相机模型是最常用的成像近似。设相机坐标系下一点 P_c = (X, Y, Z),其像素坐标 (u, v) 由内参矩阵 K 决定:

u = fx * X / Z + cx
v = fy * Y / Z + cy

K = [ fx   0  cx
       0  fy  cy
       0   0   1 ]

其中 fx、fy 为焦距,cx、cy 为主点。该模型揭示了单目相机的根本局限:深度 Z 在投影过程中被消去,仅凭一张图像无法唯一恢复三维结构。因此,Occupancy感知常采用多相机环视、双目、结构光或与LiDAR融合的方式获取深度线索。此外,镜头畸变(径向畸变、切向畸变)需通过畸变系数进行校正,否则边缘区域的像素反投影会产生明显偏差。

三、点云表示:稀疏而精确的三维观测

激光雷达输出的点云是一组无序的三维点集合,每个点通常包含 (x, y, z, intensity, timestamp)。点云的优势是精度高、视角广、不受光照影响;缺点是稀疏、无序、密度随距离衰减。常见的点云表示方式包括:

  • 原始点集:直接保留每个点的坐标,适合PointNet类网络,但计算量大。
  • 体素化表示:将空间划分为规则网格,统计每个体素内的点,便于3D卷积。
  • 柱面投影:将点云投影为距离图像,适合快速2D卷积处理。
  • BEV表示:将点云压缩到鸟瞰图平面,兼顾效率与空间关系。

在Occupancy任务中,点云常被用作监督信号或几何先验,用于生成占据标签、补全遮挡区域以及验证预测结果的三维一致性。

四、体素网格与占据栅格:从离散到可计算

体素网格(Voxel Grid)把连续三维空间划分为规则的小立方体,每个体素可存储占据概率、语义类别、特征向量或TSDF值。占据栅格(Occupancy Grid)则是体素网格的一种概率化表达:每个体素用 0~1 的概率描述“是否被物体占据”。

占据概率的更新通常采用贝叶斯滤波。设某体素在 t 时刻的占据概率为 P(o|z_1:t),当新观测 z_t 到来时:

log_odds = log(P(o|z_t) / (1 - P(o|z_t)))
L_t = L_{t-1} + log_odds - L_0
P_t = 1 / (1 + exp(-L_t))

这种对数几率(log-odds)形式把乘法更新转化为加法更新,数值稳定且易于增量计算。体素分辨率是关键参数:分辨率越高,细节越丰富,但显存与计算量呈三次方增长;分辨率过低,则小物体和薄结构容易被漏检。

从传感器观测到占据栅格的空间感知链路 世界坐标系 World / Map 自车坐标系 Ego / Body 相机坐标系 Camera 像素坐标系 Image (u, v) 外参 外参 内参 K 点云表示 (x, y, z, intensity) 稀疏 · 无序 · 精度高 LiDAR / 深度相机 体素网格 Voxel Grid 规则划分 · 3D卷积 分辨率决定细节与开销 占据栅格 Occupancy Grid 概率 0~1 · 贝叶斯更新 log-odds 增量融合 体素化 概率化 关键参数与工程权衡 • 外参标定精度 → 多传感器对齐误差 • 体素分辨率 → 细节 vs 显存/算力 • 深度估计质量 → 占据预测上限 • 时间同步 → 运动物体拖影与错位

五、案例场景:路口Occupancy感知

假设自车在十字路口行驶,环视相机与LiDAR同时工作。系统首先将LiDAR点云从LiDAR坐标系变换到自车坐标系,再将相机图像通过内参反投影生成深度候选;随后把融合后的三维点云体素化,得到 0.1m 分辨率的体素网格;最后对每个体素进行贝叶斯占据更新,输出包含车辆、行人、路沿、植被等语义的占据栅格。该栅格可直接用于下游的轨迹规划与碰撞检测。

六、常见误区与复盘

误区一:忽略坐标系方向约定。不同框架对相机坐标系轴向定义不同(如Z向前或Z向后),混用会导致投影完全错误。务必在代码中显式标注坐标系定义。

误区二:体素分辨率一味求高。分辨率翻倍,体素数量变为8倍,显存和计算量急剧上升。应根据感知距离与目标尺寸选择合理分辨率。

误区三:把占据概率当作确定性标签。占据栅格是概率表达,阈值选择会影响漏检与误检的平衡,需结合下游任务调参。

概念 核心作用 关键参数/公式 典型误区
坐标系 统一多传感器观测 R, t, 外参矩阵 T 轴向约定不一致
相机模型 三维到二维投影 K, fx, fy, cx, cy 忽略畸变校正
点云表示 稀疏三维观测 (x, y, z, intensity) 直接送入2D网络
体素网格 规则化三维空间 分辨率、体素数量 分辨率过高导致显存爆炸
占据栅格 概率化占据表达 log-odds, 贝叶斯更新 阈值选择不当