基于CARLA的仿真数据集生成框架研究

2023-12-22 13:15王宇唯黄宏成
传动技术 2023年4期
关键词:视场激光雷达反射率

王宇唯 黄宏成

(上海交通大学机械与动力工程学院,上海 200240)

1 仿真数据集研究现状

3D检测是自动驾驶技术的基础,随着技术的发展,3D检测也从最初的基于图像和基于点云的方法发展到了基于融合的方法[1]。但随着技术的快速发展,业界也对自动驾驶数据集提出的更高的要求,如要求激光雷达数据要有更高的线数,要求数据集包含多模态数据等。这时,传统多模态数据集时效性差、标注成本高、校准困难等问题就暴露出来,仿真数据集在进行算法快速迭代时成为了不二之选。

仿真数据集具有获取成本低、易获取极端场景、有较强的连续性等特征,已经有如SHIFT[2]这样的多尺度、多场景、多模态的连续性仿真数据集问世。大多数仿真数据集都是基于CARLA这样的仿真平台生成的,但这些平台都不重视点云的第四维度即点云反射率的值(点云的4维分别为x, y, z, intensity),往往通过一些简单的填充方式把一些与反射率无关的值填到第四维上,这在做3D检测算法时会白白损失掉一维重要的信息,在检测车牌、车辆表面、车道线等高反物体上是极其不利的。所以,本文基于BRDF反射率模型对CARLA的激光雷达模型进行了重建,使其可以生成具有较为准确反射率的点云,并利用该模型搭建了一个多模态仿真数据集的生成框架。

2 基于BRDF的激光雷达反射率模型

2.1 CARLA仿真平台及其激光雷达模型

CARLA是一个基于虚幻4引擎为了支持自动驾驶系统的开发、训练和验证而被开发出来的开源自动驾驶仿真平台。CARLA具有很高的灵活性,支持相机、激光雷达、深度相机等多种传感器,支持雨天、雪天、雾天、夜晚等复杂天气与光照情况,支持城镇、乡村、高速、居民区等多种场景,支持控制多个动态或静态交通参与者。同时,CARLA代码完全开源,具有很强的二次开发性,用户可自定义传感器、地图场景、车辆模型等,对自动驾驶感知、决策都能起到强大的赋能作用。

CARLA并未对激光雷达的反射率进行准确建模,其反射率公式为

I=e-ad

(1)

其中a为衰减系数,d为距离,衰减系数与激光波长以及空气有关,同一情况下为定值。不难看出,CARLA对激光雷达反射率的建模只与距离有关,距离越大,反射率越小,与被照射的物体的性质无关,这显然是不符合现实的,所以需要对激光雷达模型进行重建。

2.2 基于BRDF的反射率模型

BRDF(Bidirectional Reflectance Distribution Function)是一种常用在图形学算法中的用于描述光反射现象的基本模型。一般来说,物体对光的反射分为漫反射和镜面反射,对于一个物体,单个光源照射到物体上反射到观测点的辐射强度可以表示为式(2)。

(2)

则反射率可表示为

(3)

其中,Lo是出射的辐亮度,Li是入射的辐亮度,θi是入射角,kd是不发生镜面反射的比例,rd是漫反射的系数,ks是发生镜面反射的比例,rs是镜面反射的系数,他们之间存在以下关系:

(4)

进一步地,根据Cook-Torrance的BRDF模型[3],反射过程的示意图如图1所示。

图1 BRDF反射过程示意图

其中,L为反射点指向光源的单位向量,N为反射点的法向单位向量,V为反射点指向观察点的单位向量,H为V和L的角平分线单位向量,R是遵循镜面反射的出射单位向量。

ks,kd,rs,rd,分别等于:

(5)

(6)

(7)

(8)

其中,F0为反射率,表达式如式(9)所示。

F0=0.04+(albedo-0.04)×metallic

(9)

(10)

a=roughness2

(11)

到现在,还只剩下albedo、metallic、roughness三个未知量,metallic和roughness容易理解,分别为金属度和粗糙度,为0~1之间的小数,albedo为物体的基础反射率,也为0~1之间的小数,同一物体对不同波长的光的基础反射率是不同的,在UE4引擎中,所有物体的基础反射率都为一个三维的矩阵,分别表示对RGB三个通道的光的基础反射率,由于激光雷达用的是近红外光,物体对激光的基础反射率与红光的近似,所以采用R通道的基础反射率作为物体对激光的基础反射率。通过CARLA的相机传感器接后处理获取到场景的金属度、粗糙度和基础反射率,把得到的属性图像传到client端,后处理的蓝图如下页图2所示。

图2 基础反射率、金属度、粗糙度后处理蓝图

获取各个通道的灰度图如下页图3。

图3 R通道基础反射率、金属度、粗糙度灰度图

3 仿真数据集生成框架

已经有了激光雷达的模型,还需要一个自动化的仿真数据集生成框架,在该框架中,只需通过一个简单的config文件对雷达的线数、视场角、分辨率等进行配置,就可以在仿真场景中进行仿真数据采集。

3.1 仿真点云生成

大部分的激光雷达的垂直视场角都在30°以内,所以获取属性的相机传感器的视场角设为60°,这样在垂直视场角上单个相机就可以涵盖绝大部分的激光雷达,至于水平方向,当激光雷达的水平视场角大于60°时,通过在水平方向上堆叠多个相机获取多张图像从而实现大于60°的水平视场角的图像获取,示意图如图4所示。

图4 3个相机组成180°视场角

获取到金属度、粗糙度、基础反射率的图像后,需要获取到激光雷达点云投影到图像坐标系下对应的像素点,只需要利用坐标系转换公式,把激光雷达坐标系下的点坐标转到相机坐标系下即可,由于激光雷达的位置坐标和相机的位置坐标相同,所以只需对激光雷达坐标系下的点坐标进行旋转变换即可,公式如下

xcam=Axlidar

(12)

其中,坐标系用的是左手系,正前方为x轴,正上方为z轴,yaw表示相机相对于雷达的z轴转角。

转换到相机坐标系后,把相机坐标系下的三维点坐标转到图像的二维坐标系下,这样即可实现激光点云对应的金属度、粗糙度、基础反射率的获取,图5为变换后采样点的示意图,其中黑色点为采样点。

图5 基础反射率、金属度、粗糙度采样图

采样读取各个灰度图的值,得到采样点的金属度、粗糙度、基础反射率,利用公式(3)~(8)即可计算出点云的反射率,利用jet色度图对点云进行可视化(反射率从低到高变化时点云的颜色从蓝色向红色过渡),得到的点云示意图如图6所示。

图6 点云示意图

可以看到车道线、车牌等高反物体的反射率明显高于其他物体,通过BRDF模型对激光雷达建模的结果正确。

3.2 标注框获取

通过UE4的hitresult获取点对应的actor id,在client端通过actor id读取到actor,通过CARLA自带的Api获取actor的绑定框即可,获取到的绑定框如图7所示。

图7 带标注框的点云示意图

3.3 多模态数据集框架搭建

利用config文件对雷达和相机参数进行配置,如图8所示。

图8 数据集采集框架配置示意

在该配置中,cameras_fov和cameras_pos是两个长度相同的列表,分别表示相机的视场角和相对于数据采集车的位置,位置列表有三个量,分别表示相对于数据采集车的Δx,Δy和Δyaw(左手系,车辆正前方为x轴正方向),把上图的配置注入脚本后,得到的数据集如图9所示。

图9 采集到的多模态数据集

4 结 论

本文基于BRDF模型对CARLA中的激光雷达模型进行了重建,使激光雷达反馈回较为准确的反射率结果,同时在该激光雷达的基础上搭建了一个自动化的多模态数据集采集框架,自动化地获取多模态的3D检测数据集。

猜你喜欢
视场激光雷达反射率
影响Mini LED板油墨层反射率的因素
手持激光雷达应用解决方案
近岸水体异源遥感反射率产品的融合方法研究
一种晶圆自动光学检测系统的混合路径规划算法
具有颜色恒常性的光谱反射率重建
星模拟器光学系统视场拼接方法的研究
法雷奥第二代SCALA?激光雷达
基于激光雷达通信的地面特征识别技术
医用内窥镜矩形视场下入瞳视场角的测试方法研究
基于激光雷达的多旋翼无人机室内定位与避障研究