资讯详情

自动驾驶汽车传感器数字孪生建模(一)

注:本文来自本实验室肖轩的研究成果。

目前,自动驾驶汽车感知系统中使用的传感器主要包括摄像头、激光雷达和毫米波 雷达等。这三种传感器具有不同的特性,需要在实验过程中共同完成对周围环境的分析。这里有三个传感器。

摄像头是自动驾驶车辆中最接近肉眼成像的传感器。摄像头传感器可以通过使用计算机视觉技术实时拍摄周围环境生成图像数据,分析图像数据,检测车辆周围 从而判断行驶状态。摄像头传感器的优缺点非常明显:与其他传感器相比,摄像头的主要优点是分辨率高,成本低,在实际生产中应广泛使用 用。然而,在极端恶劣天气下,摄像头的性能会显示悬崖式下降;此外,摄像头传感器可以覆盖的观察距离非常有限,只有摄像头信息不能准确捕获远程目标位置的环境信息;此外,由于摄像头拍摄 图片是二维的,即使可以根据二维图像建立三维模型,也很难保证效果。

毫米波雷达是自动驾驶技术中另一种常见的传感器。毫米波雷达选择20-2000的工作频率GHz(波长为1-10mm,雷达[21],即毫米波段)。随着第五代通信技术的快速发展,毫米波这个词被提及的频率越来越高。毫米波有四个主要特征:第一个是毫米波的频带宽。在当今人类现有频率资源日益短缺的今天,毫米波宽带可以是 数据选择提供多种选择;二是毫米波波束窄,使毫米波信号与其他波相比 长信号可以更准确地传输到指定区域,因此,通过毫米波信号传输的数据可以观察到 更多细节;第三,毫米波的抗干扰能力强于其他波。毫米波颗粒在降雨、降雪等特殊天气条件下的穿透能力远强于激光和红外线;第四是发射毫米波元件装置的尺 寸极小,使毫米波雷达更容易小型化、方便化。以上是毫米波的四个特征,也可以说是优点。然而,毫米波也有一些缺陷。例如,毫米波的信号很弱,已经被对象使用 身体屏蔽;毫米波的传输距离太短,毫米波是一种高频电磁波,短传输距离似乎是一种固有的缺陷。毫米波雷达持续向外界发送毫米波级别的信号,并且同时接受发送方目标 反馈信号,确定两辆车之间的距离,只需计算信号传输时间。毫米波雷达继续向外界发送毫米波级信号,并接受发送方的目标 反馈信号,确定两辆车之间的距离,只需计算信号传输时间。因此,毫米波雷达主要用于防止自动驾驶领域的碰撞。

激光雷达在自动驾驶领域的地位比上述两种传感器更为突出。激光雷达又 名光雷达。激光雷达逐渐从早期的测量距离和角速功能发展到测量速度(径向、水平)功能,现在激光雷达成像可以给出极高的空间分辨率[22]。激光雷达是一种精华 高传感器逐渐成为自动驾驶领域不可缺少的传感器装置。使用激光雷达和毫米波雷达ToF技术确定目标的位置和间距。不同的是,激光雷达是探测目标 其目的是通过发射激光来实现,使其测精度高于毫米波雷达,检测精度高于毫米波雷达 也比毫米波雷达宽。但是激光雷达的缺点也非常明显,那就是它更容易受到空气中雨雪的干扰,它的高成本也是极大的制约了它的发展和应用。自动激光雷达 传感器在驾驶领域非常重要的原因是它可以建立三维环境模型。它发射多线程 激光收集不同高度的环境信息,然后通过雷达内部的旋转装置实现全方位数 据采集。激光雷达上的接收装置可以接收反射的激光束,形成点云。对点云数据进行一定的处理,可以划分周围环境。然而,一切都有优缺点。多线程激光雷达可以探测到更大的环境范围和更多可接受的点云数据,但硬件数 对处理能力的要求也会越来越高。此外,由于激光雷达的旋转装置需要不断工作,因此对 硬件的耐磨程度和精度都有很高要求。

本文会运用Carla建模传感器数据,首先生成实验车,定义传感器参数,然后集成车辆和传感器,最后添加实验视角的观察功能。具体思路如下:

图片

宏定义egg文件是Carla 有很多核心文件Carla包装在中间的模块和块和接口egg在文件中,可以说是调用egg文件是使用Carla模拟工具建模的关键是 通过编译调用传感器接口和汽车模型egg文件实现。以下代码的功能是找到Carla的egg制作文件Carla包文件,并为摄像头添加宏定义。

添加摄像头宏定义

车辆和传感器将作为模拟场景中的行人actor以栈的数据结构为例,存在于此列表中,actor也就是堆栈中的数据元素。因此,在这一部分中,有必要对演员列表进行一定的处理特别注意列表中的数据元素actor如果服务器上的客户机不清洗,服务器就会过载,导致服务器停机。

创建清理actor Create a cleanup actor

actor只链接客户端上的列表。world只有这样,主要功能代码块才能被包装try或者finally里。try所有的逻辑和角色创建都存储在程序的末尾,需要清理 它。下一步需要连接Carla获取世界并访问蓝图的服务器 所需的汽车模型。

连接世界访问蓝图

获得蓝图后,可以通过过滤函数过滤不必要的东西,获得所需的特斯拉model2.默认蓝图,这样实验车就会在地图上生成。Carla地图上有数百个衍生点,随机选择其中一个衍生点生成车辆模型;选择衍生点后,设置车辆的运动模式,最后将车辆添加到需要跟踪和清理的角色列表中。如图所示。为了 设置60,防止资源占用 几秒钟后清理车辆。

添加特斯拉model2代码 AddTeslamodel2 code

添加特斯拉model2 AddTeslamodel2

考虑在模型上添加摄像头传感器,然后找出如何访问这些数据。第二部分给出了相关数据结构。首先设定传感器图像的宽度 高度分别为640像素和480像素,传感器的水平视角设置为110度。然后将传感器添加到汽车上,将传感器设置在引擎盖上。之后需要添加传感器 actor在列表中,它成为世界的一部分,最后是callback传感器加载蓝图并设置一些属性 性。摄像头传感器的设置基本完成。此外,从传感器中获取数据需要一个函数来传输这些数据,具体代码如下:

设置摄像头参数

数据传输函数

为了观察摄像头传感器的视角,再次操作脚本,除车辆外,还将获得摄像头传感器的视角,效果如下:

添加摄像头效果图

添加摄像头传感器后,我们开始添加雷达传感器。同样,雷达传感器也需要在世界上创建,相关数据结构已在第二部分给出。雷达激光的速度为7.每秒4米,然后在车辆模型上设置雷达的位置(高1.0,位置2.8). 以上同样的添加actor列表并连接蓝图,最后设置雷达激光的属性:

激光属性

激光雷达传感器代码

在数据传输过程中,每个传感器都发送类似大小的缓冲区。特别是在相机的情况下,图像的大小在执行过程中是恒定的。为了优化内存利用率,在这些情况下,可以通过重用帧间分配的内存来节省很多。每个流量都有一个缓冲池,可以避免不必要的内存分配。若池为空,则返回空缓冲区,即未分配内存的缓冲区。在这种情况下,在调整缓冲区大小时,将分配新的内存。在前几帧期间,这种情况会发生几次。但是,如果从池中检索缓冲区,一旦缓冲区超过作用区,其内存将返回池中。下次从池中获得另一个缓冲区时,它将包含前一个缓冲区分配的内存。如所见,缓冲区的对象实际上是指向连续原始内存块的智能指针。缓冲区将重用内存,只要所需内存不超过当前分配的内存。如需要更多,则必须删除当前内存并分配更大的块。缓冲区的工作方式如下:

缓冲区

在前面对Carla在介绍中,我们提到了它Carla唯一的环境交互方式是客户端,但上述模拟模型汽车没有能力输出视频。这需要添加一个所谓的观点 察者spectator,可理解为Carla环境视角。

观察者代码

使用此代码,在模拟模型汽车的正上方向下设置观察者的位置 在间隔中,观察者的位置按照模型汽车的位置重新设置,以这种方式实现模拟模型汽车 跟踪并观察汽车的正上方。

观察者效果

这一部分功能最后会得到两个输出:(1)在仿真环境中基于观察者的功能实时看到 模拟汽车模型驾驶。(2)将摄像头传感器实时拍摄的车辆图片存储在输出文件夹中。

标签: 突出传感器传感器存在缺陷5本安型红外传感器model1022传感器自动化装置传感器速度传感器小型

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台