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

作者 | Emmett  编辑 | 深信科创

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【仿真测试】技术交流群

本文只做学术分享,如有侵权,联系删文

前言

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

什么是传感器?

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

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

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

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

知识铺垫:

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

6f9e35085f326696b7d89a84a9204a3a.png

  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标注,使用文件搜索关键词,能搜索到在文件夹中的位置。

6192f7066208d481f577c8ad55b1d5be.png语义视觉传感器初始化时添加后处理材质图

从UE Editor里面去找,该文件属于CARLA插件带的材质,不属于场景内容文件,所以要在视图选项中选上 【显示插件内容】,才能在左边的内容浏览器目录中看到【CARLA内容】。在对应路径下就可以看到对应的材质文件。

97666062f770deff7c7215bf1d22ad27.png后处理材质文件图

34f9f4b8b73995fc4a12f6c237865b9f.png  CARLA插件内容文件夹路径图                                                                     

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

1d327a89b2c36e7d7042bdd2a650c98a.png深度视觉传感器后处理材质蓝图

在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端,然后再解码二进制。

语义分割的实现原理

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

e753955f904bf3dcc64dae998520b3c8.png

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

首先材质里引入了两个概念:一个是,场景深度。场景深度就是用于渲染的Z-Depth,光栅渲染判断前后关系用的,在GBuffer中也存在。

另一个是,自定义深度。自定义深度模具值,Custom Depth Stentil Value,CARLA拿来做语义分割的标记,以Actor为单位,可以用来区分不同物体,最后根据这个与CARLA内部逻辑,对图像进行上色。【CARLA官方文档-Create semantic tags】

c3ec7824cba3e84141e8171166fe1043.png路面Mesh自定义深度模具值图   

6a88b87330ac615839acd5758d1da033.png车道线Mesh自定义深度模具值图                                                                          

投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署大模型与自动驾驶Nerf语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

734298686ac0c13cb31cc2b7a1da4be8.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2400人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

90a32e2e29c139bafef0965fc86306b7.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

670ab45c3221e733b087ab19c6309888.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

5333dc62f45b7c90f58d0101545a0f8b.jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值