大数跨境

一文看懂CARLA中的视觉传感器

一文看懂CARLA中的视觉传感器 清科灵境
2024-01-18
1
导读:一文看懂CARLA中的视觉传感器
前言


本文从CARLA出发,深入Unreal Engine内部,带大家理解CARLA中的视觉传感器及真值系统的实现原理。得益于UE,自动驾驶测试仿真工具CARLA在图像渲染方面有着远超其他传统仿真器的画面质量。最明显的就是CARLA中一系列的视觉传感器(Camera Sensor)。

什么是传感器?


传感器是连接外界环境和被测车辆的媒介。传感器使汽车自动驾驶能够感知其环境,从而发现并分类障碍物,预测速度,协助精准定位车辆周围的环境。


从仿真角度来讲,无论是哪种传感器,理论上都可以从以下三个不同层级进行仿真。第一个层级是对物理信号进行仿真,第二个层级是对原始信号进行仿真,第三个层级是对传感器目标进行仿真。


传感器的发展推动了智能技术和自动化系统的进步,对于提高生活质量,生产效率以及安全性具有重要意义。

  CARLA自带语义分割传感器实现路径


知识铺垫:
CARLA RGB摄像头传感器代码分析讲了Camera之间的继承关系。借用文中的一张图表达它们的层次关系。

‍‍‍‍‍‍‍
  CARLA RGB Camera传感器继承关系图 
ASensor完成CARLA的抽象传感器功能;
ASceneCaptureSensor实现UE渲染接口UTextureRenderTarget2D和USceneCaptureComponent2D的加入,并且USceneCaptureComponent2D控制着后处理(FPostProcessingSetting)参数;
AShaderBasedSensor主要负责加入后处理材质(PostProcessing Material),后处理材质也是一种shader,对着色有影响,AShaderBasedSensor是抽象类,不是具体的传感器函数,所以只提供功能,供继承子类扩展shader;
ASceneCaptureCamera,ASemanticSegmentationCamera,AOpticalFlowCamera,ASemanticSegmentationCamera等其他camera均继承自AShaderBasedSensor,它们的逻辑大多都很简单,就是使用AShaderBasedSensor提供的AddPostProcessingMaterial接口,添加后处理材质,根据不同的传感器类型,有不同的着色需求。

从UE层面理解Camera

后处理材质都放在哪:从代码中去看,拿语义分割Camera举例。该传感器用了两个后处理材质:物理畸变模型、GroundTruth标注,使用文件搜索关键词,能搜索到在文件夹中的位置

语义视觉传感器初始化时添加后处理材质图‍‍‍‍
从UE Editor里面去找,该文件属于CARLA插件带的材质,不属于场景内容文件,所以要在视图选项中选上 【显示插件内容】,才能在左边的内容浏览器目录中看到【CARLA内容】。在对应路径下就可以看到对应的材质文件。

后处理材质文件图

  CARLA插件内容文件夹路径图                                                                     

点开后可以看到该材质文件的蓝图逻辑:

深度视觉传感器后处理材质蓝图‍‍‍‍






在UE Editor里可视化Camera(推荐看视频)


这里我参考了一篇文章,UE4场景采集之场景采集2D(https://blog.csdn.net/lei_7103/article/details/106020942)。这篇文章对我后面的帮助很大,而且我很推荐大家熟练掌握在UE Editor中使用各种Component的方式,因为这样会比重新写代码,编译代码,验证问题整个流程快很多,很多时候我们调整的Component参数可以直接在Editor里面尝试,可视化效果,在传感器开发的路上尤其重要。
下面用视频简单介绍一下UTextureRenderTarget2D和USceneCaptureComponent2D到底是什么


视频里主要做了几个操作:
1.将SceneCapture2D拖入场景(初始化)
2.创建TextureRenderTarget2D(初始化)
3.将TextureRenderTarget2D指派给SceneCapture2D
4.选择渲染输出内容(可以选法线、底色、LDR、HDR等)
5.在【后期处理体积】里面,添加后处理材质,并选择从现有资产中添加
6.加入不同的后处理材质,查看效果
所以看完了对UTextureRenderTarget2D和USceneCaptureComponent2D的操作,我们大概就了解了它们分别是什么角色。
USceneCaptureComponent2D负责设置渲染的视角(FViewInfo)、传感器外参、后处理参数设置(FPostProcessSettings)、捕获源(Capture Source)等渲染需要的参数。
UTextureRenderTarget2D负责记录渲染结果,Source里面是该场景捕捉器的渲染结果Texture,然后通过一些取出Buffer的方式,将该渲染结果取出,然后通过CARLA写的一些传输数据方式,传给client端,然后再解码二进制。



语义分割的实现原理


语义分割的后处理材质蓝图:

语义分割的后处理材质蓝图‍‍‍‍‍

首先材质里引入了两个概念:一个是,场景深度。场景深度就是用于渲染的Z-Depth,光栅渲染判断前后关系用的,在GBuffer中也存在。
另一个是,自定义深度。自定义深度模具值,Custom Depth Stentil Value,CARLA拿来做语义分割的标记,以Actor为单位,可以用来区分不同物体,最后根据这个与CARLA内部逻辑,对图像进行上色。【CARLA官方文档-Create semantic tags】
路面Mesh自定义深度模具值图   
车道线Mesh自定义深度模具值图                                                                          




深信科创CARLA交流群招募开始啦!欢迎各位使用CARLA仿真器进行开发的爱好者入群进行交流~后期在群里将会不定期分享与CARLA有关的专业文章以及活动,也欢迎大家邀请身边感兴趣的朋友入群一起交流~


请添加深信科创企业客服:synkrotron1,备注「CARLA」即可加入。

图灵奖得主姚期智等三位院士、陕西省科技厅厅长姜建春一行莅临深信科创


再获殊荣!深信科创荣获「年度智能汽车软件及数据工具链平台TOP10供应商」奖项


继英伟达之后,深信科创成为CARLA第五位理事单位

深信科创


致力于自动驾驶工业软件
深信科创是一家专注于提供自动驾驶仿真及智慧交通解决方案的国家高新技术企业。公司基于人工智能软件测试数字孪生大数据等技术,一直致力于自动驾驶领域的研发和探索,拥有一支高素质的研发团队,自主研发了自动驾驶仿真及数据闭环工具链SYNKROTRON®  Oasis产品系列,能够提供高精度传感器模型动力学模型感知级交通环境仿真解决方案等,客户可以在仿真平台上对自动驾驶系统开展大规模的仿真测试和模型训练,提前识别自动驾驶系统缺陷降低实车测试成本消除场景端落地的安全隐患,加速无人驾驶技术在场景端的安全落地。

【声明】内容源于网络
0
0
清科灵境
清科灵境官方 打通虚拟仿真到实体机器人的闭环,实现人机融合、虚实共生的智慧境界。
内容 148
粉丝 0
清科灵境 清科灵境官方 打通虚拟仿真到实体机器人的闭环,实现人机融合、虚实共生的智慧境界。
总阅读109
粉丝0
内容148