上一章工作基本完成 Carla 环境中的汽车建模和摄像头传感器的添加 传感器和第三方观察者的工作。本章将设计摄像头传感器来识别车辆周围的环境 基于一定的安全驾驶逻辑,实现模型自动驾驶策略。模型会添 在识别场景中添加其他车辆的功能,然后针对被识别的其他车辆的位置和驾驶状态 模拟模型将采取不同的决策来避免潜在的危险和碰撞。
在这一部分,将实现一个功能,即分析和利用摄像头传感器收集的图像, 并用识别框选择识别其他车辆。最后,当配备摄像头传感器的模型运行时, 将实时反馈给客户端传感器拍摄的图像并标记。基于此功能进行感知 来向车辆的行驶状态来作为安全行驶逻辑的判断依据。
使用定义的 API 库创建客户端,然后连接到服务器,然后加载 Carla 获取内置地图 当然,为了提高识别率,方便演示,需要将天空设置为日照充足、万里无云的白天。
设定客户端
有了 world 对象完成后,可以在蓝图库中找到需要使用的对象 actor 在本章中,是一样的 我们需要一辆装有摄像头传感器的所以我们又建立了一个特斯拉 model2 的实验车并 加载一个 RGB 相机蓝图。
生成车辆
正如我们在第二部分所介绍的,blueprint 为演员提供目标,使模型参与 设置数字,例如将特斯拉的颜色设置为黑色。此外,摄像头采集的图像尺寸也被设置为黑色 设置为 1680 ? 960。下一步,可以用 blue 生成实验模型。
部署车辆
在上述代码中 numpy 随机函数,随机选择可能生成汽车的生成 在这个位置生成白色特斯拉。摄像头部署在特斯拉上,提供摄像头 相机的位置是特斯拉的坐标系,相机的位置设置在汽车的后上方, 为了产生亲切感,有一定的视角,实现了类似赛车游戏的第三人称视角。
参数回调函数设置在实验模型配置的摄像头中,回调是模型传感器捕获的 摄像头捕获的图像数据是平面的一维数据,结合上述数据 Carla 文档中对摄 像头一维数据定义的单位是比特,即针对每一个像素点,都有 BGRA 四个值。想要对能 操作足够的摄像头捕获数据时,首先应将其转换为数组,并将其转换为形式化 对我们来说,图像矩阵 1680x960 矩阵的形状为:1680x960x2,即 1680x960 个 像素点。
转化矩阵
建模一维黑白图像数据作为模型的输入,以提高计算效率。最后,通过识别 识别车辆函数的车辆将根据车辆坐标汇总并存储在坐标列表中。
所有准备工作完成后,开始设计标记车辆的功能。在第三部分,模型引入了观察 然而,如果这部分功能需要在本章中引入,一个有效的方法是拍摄 直观地显示了像头传感器捕获的图像数据。
显示摄像头视角,标记车辆
借助上述代码,通过上述代码 opencv 提供的 api 如果实现图像显示功能, 如果车辆出现在摄像头传感器的视野中,图像上的车辆框可以通过函数选择。最后,为了防止程序持续运行占用资源,使用函数检测用户是否按下停止按钮。
识别车辆效果图
首先需要为 python 装载 pygame 和 numpy 模块。pygame 是 SDL 的 python 封装。使 用 pygame 所有支持的多媒体程序都可以无修改地移植 SDL 的平台。numpy 是 python 支持大量多维数组、矩阵运算和数学函数库的扩展程序库。这两个模块对我们写自动驾驶脚本非常重要,所以特别介绍。然后我们找到了 Carla 的 egg 为发布的模型提供一些文件 API。天气系统和 actor 我们将名称列表定义为全局 在函数中实现。
天气及演员名称
为了保证模拟的真实性和准确性,本部分对世界类的定义与前一部分相似。 不要加一个 HUD(平行驾驶系统)。其功能是在汽车仪表盘上使用一些关键数据 在前挡风玻璃上投射,防止驾驶员低头检查某些仪表参数的风险。onworldtick 是在 world 中通过每个 tick 计算时间间隔 tick 数,tick 仪表盘定义 显示相关数据的频率。本文将介绍两个传感器的管理函数。雷达传感器主要用于辅助摄像头传感器的数据生成。
HUD 代码
摄像头传感器的定义包括本体和母系 actor,hud,以及 gamma 矫正。继承相关参数 母系 actor 参数,视野范围 y 轴会比母系 actor 视野多 0.4。对于 RGB 相机 坐标(-4.4,0,2.四、旋转角度为 8.0. 深度相机的坐标是(4.4,1.4,1.4),两 都添加了摇臂功能(虚幻) 4 引擎下的函数)。定义后,将传感器的参数上传到 world 建立一定的初始值。因为添加了多个摄像头传感器,也会定义 toggglecamera 函 切换摄像头传感器的显示,并记录切换过程。
摄像头管理
切换传感器
关于雷达的数据处理,请参见第二章的介绍。本文采用了最简单的点云数据计算方 类型,对于捕获的图片,与第三部分的观察者标本相同,存储在磁盘输出中。
图像处理输出
使用传感器获得的数据和识别的其他车辆位置使我们的模型面对汽车 能够做出有效的决策来应对。如果分别位于道路两侧,首先判断自己和来车的相对位置, 没有碰撞的危险,车辆的驾驶状态没有任何变化;如果车辆位于同一侧,则根据传感器数据判断车辆的方向。如果车辆与模型本身相反,则不会改变驾驶状态;如果车辆与模型相反,则根据传感器数据判断车辆的驾驶速度,并计算两辆车的碰撞时间,如果时间足够长,模型可以选择减速停车等待汽车绕道,如果时间不足,模型将主动识别另一条车道的交通流量,车道第三方车辆状态分析判断,如果安全,可以改变车道操作,绕道。
自动驾驶逻辑判断
我们现有的 model2 该模型增加了一些额外的功能,用摄像头识别车辆来感知和处理周围的场景;改进了模型在特定场景中自动驾驶的脚本,正式处理了传感器数据,使模型看起来更完美,更集成到实际应用中,定义了模型响应 为了实现简单的自动驾驶功能,汽车的处理逻辑和策略完成了简单的自动驾驶逻辑,在下 本章将验证自动驾驶的战略逻辑。
我们将结合实验车验证模型,验证算法的准确性和安全性。 模型测试逻辑如下图所示,检验传感器模拟模型在不同天气环境下的数据处理精度, 模拟模型验证的实验。
由于逻辑上需要判断车辆模型和速度的相对位置和速度状态, 因此,有必要判断车辆的速度。车辆模型本身的速度参数已被模型独立给出并通过 HUD 显示出来。其他车辆的速度需要判断,逻辑策略是连续对同一车辆 以 0.04 连续拍摄秒的拍摄间隔。根据图像和场景的像素矩阵缩小比例,判断车辆在 0.04 行驶距离在秒内,然后通过公式:距离/时间 = 速度得出我们欲分析车辆 的速度。而且相对距离明显,在计算速度的过程中已经判断出来,只需要记录即可。值得注意的是,在分析和判断过程中,两辆车的行驶状态没有改变,因此在判断中 在是否会发生碰撞的逻辑中,应包括所有的分析和计算时间。即碰撞预计总时间计时 从摄像头捕捉车辆图像开始。
基于上述算法,我们可以判断模拟模型和周围车辆的相对驾驶状态和速度。然后根据简单的防碰撞逻辑进行测试。首先是模拟模型和驾驶 判断车辆的相对位置,然后判断车辆的速度,并根据不同情况驾驶不同的车辆 具体逻辑如下:
自动驾驶逻辑判断