基于激光雷达Occupancy 算法的障碍物感知
Occupancy 算法的来源
特斯拉的Occupancy算法是该公司自动驾驶系统(FSD,Full Self-Driving)中的一个关键组件,旨在提高车辆对周围环境的理解和建模能力。
基于激光点云的Occupancy算法在周围障碍物感知中的原理涉及多个步骤,结合了三维数据处理、概率建模及深度学习技术。以下是其核心原理的详细分步解释:
1. 激光点云数据获取与预处理
-
数据获取:激光雷达发射激光束并接收反射信号,生成三维点云数据,每个点包含坐标(x, y, z)和反射强度信息。
-
预处理步骤:
-
去噪:使用统计滤波或半径滤波去除离群点。
-
地面分割:通过RANSAC等算法或深度学习模型分离地面点云,减少误判。
-
体素化:将点云划分为规则的三维体素网格,降低数据量并保留结构信息。
-
2. 构建三维Occupancy Grid
-
网格划分:将环境划分为三维体素网格,每个体素表示固定体积的空间(如0.1m³)。
-
占用概率初始化:初始时,每个体素的占用概率设为中性值(如0.5),表示未知状态。
3. 占用概率计算
-
传统方法(反传感器模型):
-
光线投射:根据激光雷达的传感器位置和点云位置,推断哪些体素被占据(点云所在位置)或空闲(光线经过但无反射的区域)。
-
贝叶斯更新:利用观测数据动态更新体素占用概率。例如,若某体素被多次观测到有障碍物,其占用概率增加。
-
-
深度学习方法:
-
3D卷积网络:使用稀疏卷积网络(如Minkowski Engine)处理体素化点云,直接预测每个体素的占用概率。
-
时序融合:结合多帧点云数据,通过循环神经网络(RNN)或Transformer建模时序依赖,提升动态障碍物检测能力。
-
4. 动态障碍物处理
-
多帧累积与运动补偿:对齐历史帧点云(考虑自车运动补偿),通过累积数据增强障碍物检测。
-
运动估计:结合卡尔曼滤波或光流法预测动态障碍物轨迹,更新Occupancy Grid中的动态区域标签。
5. 后处理与障碍物提取
-
聚类分析:对占用体素进行聚类(如DBSCAN、欧氏聚类),形成独立障碍物区域。
-
边界框生成:拟合障碍物的3D边界框,估计尺寸和朝向。
-
可行驶区域分割:结合地面分割结果,提取安全通行区域。
6. 多传感器融合(可选)
-
相机融合:利用图像语义信息(如目标检测)提升障碍物分类精度。
-
雷达数据:融合毫米波雷达的速度信息,辅助动态障碍物跟踪。
关键挑战与解决方案
-
稀疏点云处理:使用深度学习补全点云(如PU-Net)或概率模型推断遮挡区域。
-
实时性优化:采用稀疏体素表示和GPU加速,降低计算负载。
-
动态环境建模:引入时序建模和运动预测,区分静态与动态障碍物。
应用场景
-
自动驾驶:实时输出3D Occupancy Grid,用于路径规划和碰撞避免。
-
机器人导航:构建环境地图,支持SLAM(同步定位与建图)。
总结
基于激光点云的Occupancy算法通过几何建模或深度学习将稀疏点云转换为稠密3D占用网格,结合时序与多传感器数据,实现对周围障碍物的精确感知。其核心在于高效处理三维数据、动态更新占用状态,并提取可解释的障碍物信息,为自动驾驶系统提供关键环境理解能力。
从可达空间(Drivable Space)到占据网络(Occupancy Network)
Occupancy算法
Occupancy是一种三维表示,它将环境或者一个连续的物体划分为一系列的立方体(或称为体素,voxels),并为每个体素分配一个值表示该体素是否被物体占据(该部分是属于物体点或者非物体点),可以是0/1二元表示,也可以是[0, 1]之间的一个概率值,对应下图左边部分;同时每个占用的体素还能带有语义信息,即对应的类别预测,对应下图右边部分。
Occupancy模型一般步骤:
特征提取:使用不同的网络结构从图像或其他传感器数据中提取特征
体素化表示:使用attention、反卷积等生成3D体素网格(或类似NeRF的3D重建技术)
占用预测:基于提取的特征,预测每个体素是否被占用
后处理:对网格进行简化、细化、平滑或其他处理,以优化占用预测结果
优点:
更丰富的几何信息:3d的表示,更精确描述物体位置和形状(如悬空物体)、能处理未知类别物体(占用栅格则存在物体)
易用于各种下游任务:可以用于3D检测和分割,或者灵活地转为BoundingBox、Freespace可行驶区域等形式
缺点:
计算复杂度:三维表示计算密集度更高,占用网格的存储和处理需要更多的计算资源
GT难制作:训练需要大量的三维标注数据(空间、时序),数据的获取和标注非常耗时且昂贵