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)形式把乘法更新转化为加法更新,数值稳定且易于增量计算。体素分辨率是关键参数:分辨率越高,细节越丰富,但显存与计算量呈三次方增长;分辨率过低,则小物体和薄结构容易被漏检。
五、案例场景:路口Occupancy感知
假设自车在十字路口行驶,环视相机与LiDAR同时工作。系统首先将LiDAR点云从LiDAR坐标系变换到自车坐标系,再将相机图像通过内参反投影生成深度候选;随后把融合后的三维点云体素化,得到 0.1m 分辨率的体素网格;最后对每个体素进行贝叶斯占据更新,输出包含车辆、行人、路沿、植被等语义的占据栅格。该栅格可直接用于下游的轨迹规划与碰撞检测。
六、常见误区与复盘
误区一:忽略坐标系方向约定。不同框架对相机坐标系轴向定义不同(如Z向前或Z向后),混用会导致投影完全错误。务必在代码中显式标注坐标系定义。
误区二:体素分辨率一味求高。分辨率翻倍,体素数量变为8倍,显存和计算量急剧上升。应根据感知距离与目标尺寸选择合理分辨率。
误区三:把占据概率当作确定性标签。占据栅格是概率表达,阈值选择会影响漏检与误检的平衡,需结合下游任务调参。
| 概念 | 核心作用 | 关键参数/公式 | 典型误区 |
|---|---|---|---|
| 坐标系 | 统一多传感器观测 | R, t, 外参矩阵 T | 轴向约定不一致 |
| 相机模型 | 三维到二维投影 | K, fx, fy, cx, cy | 忽略畸变校正 |
| 点云表示 | 稀疏三维观测 | (x, y, z, intensity) | 直接送入2D网络 |
| 体素网格 | 规则化三维空间 | 分辨率、体素数量 | 分辨率过高导致显存爆炸 |
| 占据栅格 | 概率化占据表达 | log-odds, 贝叶斯更新 | 阈值选择不当 |