鉴源实验室|自动驾驶仿真测试技术分析

01

引言

随着科技的不断发展,自动驾驶技术逐渐成为汽车行业的热门话题。然而,要将自动驾驶车辆投放到真实道路上之前,必须进行广泛的测试,以确保其在各种情况下都能安全可靠地运行。自动驾驶车辆的测试是一个复杂而昂贵的过程。在真实道路上进行测试存在许多挑战,包括安全性、成本和时间。为了克服这些问题,仿真测试技术不失为一种有效的解决方法。

自动驾驶仿真测试是通过虚拟环境来模拟各种驾驶场景,以评估自动驾驶系统的性能。自动驾驶汽车的仿真测试的核心技术点主要可以分为虚拟场景仿真、感知系统仿真、车辆动力学仿真以及云加速仿真[1]。

02

虚拟场景仿真

自动驾驶汽车的仿真测试,首先需要模拟构建出一个逼真的虚拟场景,而场景的构建可以分为静态场景构建和动态场景构建两个层面[2]。

2.1 静态场景构建

静态场景主要用于模拟出与车辆行驶相关的静态元素,其中包含的静态元素有道路、建筑、交通标志等。构建静态场景的方法可以采用基于高精度地图及三维重建技术[3]。基于高精度地图及三维重建技术来构建场景,首先需要采集点云、全景图、测绘矢量等非结构化的测绘数据,并将测绘数据结构化,构建厘米级的高精度地图,其中包含路面、道路标线、交通标识等信息,之后以此为基础,使用三维建模软件建立基础设施与周边环境的可视化数字模型。

图1 静态场景(来源于Carsim的demo)

2.2 动态场景构建

动态场景包括天气变化(雨、雪、雾等天气状况)、时间变化(不同时间和季节的光照条件等)、交通流(交通参与者的行为,例如机动车行为、非机动车行为、行人行为)等动态要素。动态场景的构建是在静态场景的基础上,还原出场景中的动态元素,并且使得这些元素的动作及其产生的影响严格遵循现实世界的物理规律以及行为逻辑。动态场景的构建,可以借助物理引擎、AI Agent 等来实现。

物理引擎可以模拟出物体在真实世界中的物理规律,赋予真实的物理属性的方式来计算运动和碰撞行为等。物理引擎可以模拟刚体(硬物体)和软体(如布料、液体等)的运动和变形,从而更全面地模拟多样化的物体行为。

AI Agent (人工智能体)是一种能够感知环境、进行决策和执行动作的智能实体。在虚拟场景中,AI Agent 可以做出决策,选择合适的行为,并规划最优路径以实现目标;可以模拟对环境的感知能力,例如通过传感器获取周围物体的信息,以便做出合适的决策;可以模拟智能体之间的协作行为,例如避让、跟随、协同工作等。此外,Agent AI还具备学习能力,能够根据经验调整其行为。

03

感知系统仿真

自动驾驶车辆依赖于各种传感器,如摄像头、雷达和激光雷达等。仿真测试技术需要能够准确模拟这些传感器的输入,以确保自动驾驶系统在虚拟环境中能够正确地感知和理解周围的环境。传感器仿真指的是数学模型和计算机算法来模拟和重现真实世界中传感器所能感知的物理现象的过程[4]。它可以在虚拟环境中重现传感器的工作情况,从而在没有实际硬件的情况下评估和测试传感器的性能。

3.1 摄像头仿真

摄像头仿真的一般方法是基于环境物体的几何空间信息构建对象的三维模型。根据物体的真实材质与纹理,并通过计算机图形学对三维模型添加颜色与光学属性等,来模拟实现图像合成。摄像头仿真通过坐标系转换的方法,将三维空间中的点通过透视关系变换为图像上的点。

3.2 毫米波雷达仿真

雷达(无线电探测与测距)仿真是一种模拟雷达系统操作的过程,它可以重现雷达波的传播、目标的检测和回波的分析。雷达仿真一般会根据配置的视场角和分辨率信息,向不同方向发射一系列虚拟连续调频毫米波,并接收目标的反射信号。不同车辆的雷达回波强度可使用微表面模型能量辐射计算方式,由车辆模型以及车辆朝向、材质等计算。

3.3 激光雷达仿真

激光雷达(或LiDAR,Light Detection and Ranging)仿真则是模拟使用激光扫描来构建物体或环境的三维图像的过程。激光雷达传感器仿真,需要准确模拟出发射激光束并测量其反射,生成点云数据。生成模拟的激光雷达点云数据,其中包含了周围环境中的物体位置和形状信息。

04

车辆动力学仿真

自动驾驶汽车在仿真测试中,需要借助车辆动力学模型来模拟车辆的横向和纵向运动控制,还原出车辆在真实道路上各种物理条件下的行为[5]。复杂的车辆动力学模型,可以保证车辆有良好的仿真精度,使仿真车辆的行驶反应更贴近真实行为。因此,车辆动力学仿真,可以逼真地模拟出车辆的运动、碰撞检测和处理,以及不同路面条件对车辆行驶的影响等等。

车辆动力学模型包含了车体、悬架系统、转向系统、制动系统、动力系统、 传动系统等多个部分的模型,通过将车辆动力学模型实例参数化之后,就可以实现对仿真车辆模型的转向、加速、制动等行为的模拟和控制。

借助专业的车辆动力学仿真软件可以模拟出高精度的车辆动力学模型,同时,一些强大的车辆动力学仿真软件还可以提供车辆可视化和驾驶场景搭建功能。目前,专业的车辆动力学仿真软件,有 CarSim、Prescan、CarMaker、VI-Grade、VeDYNA 和 PanoSim 等,仿真平台可以接入这些成熟的车辆动力学模型,以获得比较逼真的行驶控制仿真效果。

图2 车辆动力学模型(来源于Carsim的demo)

05

云加速仿真

自动驾驶仿真测试系统在进行仿真任务时需要访问大量采集或者生成的数据,并根据生成的数据利用 CPU 和 GPU 资源对数据进行再处理并还原,或者对已经结构化的数据进行 GPU 渲染再现。这些仿真任务都需要依赖强大的计算和存储能力,而借助云加速仿真的技术,可以高效执行大规模的仿真任务。

云加速仿真是指利用云计算平台的强大计算和存储能力,通过将仿真任务迁移到云端来加速仿真过程。这种方法可以显著提高仿真效率,减少仿真时间,同时降低了对本地硬件资源的依赖。同时,云加速仿真可以通过并行化和分布式计算来加速任务的执行。云平台提供了强大的计算资源,可以同时处理多个任务或者将一个大任务分解成多个子任务并行执行,从而提高仿真效率。

06

小结

自动驾驶仿真测试技术在推动自动驾驶技术的发展中发挥着重要作用。通过在虚拟环境中模拟各种复杂情景,该技术降低了测试成本、提高了安全性,并加速了自动驾驶系统的迭代和创新。然而,仍然有一些挑战需要克服,如提升虚拟场景的逼真度、提高传感器模拟精度等。未来,随着技术的不断发展,自动驾驶仿真测试技术将继续演进,为自动驾驶技术的商业化和普及做出更大的贡献。

参考文献:

[1]中国电动汽车百人会. 中国自动驾驶仿真蓝皮书 [R]. (2020) .

[2]朱冰,张培兴,赵健,陈虹,徐志刚,赵祥模,邓伟文.基于场景的自动驾驶汽车虚拟测试研究进展[J].中国公路学报,2019,32(06):1-19.DOI:10.19721/j.cnki.1001-7372.2019.06.001.

[3]Huang W L, Wang K, Lv Y, et al. Autonomous vehicles testing methods review[C]//2016 IEEE 19th International Conference on Intelligent Transportation Systems (ITSC). IEEE, 2016: 163-168.

[4]Rosique F, Navarro P J, Fernández C, et al. A systematic review of perception system and simulators for autonomous vehicles research[J]. Sensors, 2019, 19(3): 648.

[5]Schöner H P. Simulation in development and testing of autonomous vehicles[C]//18. Internationales Stuttgarter Symposium: Automobil-und Motorentechnik. Springer Fachmedien Wiesbaden, 2018: 1083-1095.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/634440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

细说CubeIDE——之建立一个工程

博主今天给大家带来新的一个软件,由于公司要上市,盗版软件不让装,IAR,KEIL律师函争相投递,博主只能老老实实把软件卸掉,苦逼工作还得干,怎么办? 你说怎么办?怎么办&#…

常用中间件漏洞

IIS6 IIS7 安装 控制面板-----打开关闭windows功能 添加角色-----添加IIS 启动之后访问localhost 复现 服务器换成IIS7 访问报错 大概就是缺少CGI模块 问题解决 添加php-cgi的路径 添加脚本映射 修改php.ini文件 将 cgi.fix_pathinfo1 然后设置一个图片 访问 在后缀加上/.…

如何使用JS逆向爬取网站数据

引言: JS逆向是指利用编程技术对网站上的JavaScript代码进行逆向分析,从而实现对网站数据的抓取和分析。这种技术在网络数据采集和分析中具有重要的应用价值,能够帮助程序员获取网站上的有用信息,并进行进一步的处理和分析。 基…

Linux第29步_安装“Notepad++”软件

STM32CubeProgrammer脚本文件的后缀为“.tsv”,ST公司官方也叫做FlashLayout。在烧写“TF-A固件”之前,我们需要用“Notepad”软件打开“后缀为.tsv”的脚本文件,根据需求决定哪些文件需要更新,设置好这个脚本文件。 .tsv是文本格…

C++ 之LeetCode刷题记录(十三)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可…

【MySQL自身的性能优化】InnoDB 的 Buffer Pool

这里写目录标题 一、引入缓存的重要性二、InnoDB 的 Buffer Pool1. Buffer Pool 内部组成2. free 链表管理空闲页3. flush 链表管理脏页4. LRU 链表提高缓存命中那咱需要咋地解决预读问题呢?那咱需要咋地解决 Buffer Pool 污染问题呢? 5. 脏页什么时候被…

94.乐理基础-记号篇-装饰音记号(二)助音的四种类型

内容参考于:三分钟音乐社 上一个内容:93.乐理基础-记号篇-装饰音记号(一)级进、跳进、经过音、辅助音-CSDN博客 当前写的助音是扩展的辅助音的内容,所以要先看上一个内容 助音的四种类型:下方的三个辅助…

自己是如何使用单元测试

前言 自己是如何使用单元测试 进行单元测试能够让我们在编写方法的具体实现代码后,能清晰地看到其是否能实现预期的功能,有助于我们及时修正自己方法中存在的bug,以免在后续使用到某方法时出现意想不到的错误。 一、引入单元测试所使用的依赖…

【ARMv8M Cortex-M33 系列 7.2 -- HardFault 问题定位 1】

文章目录 问题背景堆栈对齐要求Cortex-M33 的 FPU 功能 问题背景 rt-thread 在PendSV_Handler退出的时候发生了HardFault_Handler是什么原因?且 LR 的值为0xfffffffd 堆栈对齐要求 在 ARM Cortex-M 架构中,堆栈指针 (SP) 必须始终保持 8 字节对齐。这…

米贸搜|Facebook新手请查收!如何在FB上定位到B类受众?

一、确定目标受众和营销目标 在利用Facebook进行获客之前,B2B企业需要首先明确目标受众和营销目标。目标受众是指潜在的客户或合作伙伴,而营销目标可能是增加销量、提高品牌知名度、获取客户线索等。 Facebook的受众定位可以分成三大类:人口…

对象存储, 开源MinIO docker-compose.yml 文件

文章目录 python SDK 文档地址:docker-compose.yml 文件控制台使用:应用服务中使用样例: python SDK 文档地址: https://min.io/docs/minio/linux/developers/python/API.html docker-compose.yml 文件 version: 3services:min…

C语言中的浮点数存储

首先明确一个概念:C语言中整形是按照二进制存储在内存中,浮点型是按科学计数法存储在内存中(本质上存储的还是二进制数据0和1)。 如果没看懂这句话,没关系!看完以下正文,你就会豁然开朗&#x…

Qt简单使用与初识

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

【汇编】pushf popf

两个指令的作用分别是将16位标志寄存器压入栈、从栈中取出,但是貌似没人做实验验证。 这里做个实验加深理解,顺便总结下几个标志寄存器的作用。 一、结构 8086CPU的flag寄存器的结构如下: OF:判断运算结果是否溢出 CF&#xff1…

VUE--组件的生命周期及其基本应用

VUE的生命周期 上图是实例生命周期的图表,需要注意以下几个重要时期: 创建期:beforeCreated、created 挂载期:beforeMount、mounted 更新期:beforeUpdate、updated 销毁期:beforeUnmount、unmounted 生命周…

蓝桥杯真题(Python)每日练Day2

题目 题目分析 对于本题首先确定其数据结构为优先队列,即邮费最小的衣服优先寄,算法符合贪心算法。可以直接使用queue库的PriorityQueue方法实现优先队列。关于PriorityQueue的使用方法主要有: import queue q queue.Queue()# 队列 pq qu…

JAVA实现向Word模板中插入Base64图片和数据信息

目录 需求一、准备模板文件二、引入Poi-tl、Apache POI依赖三、创建实体类(用于保存向Word中写入的数据)四、实现Service接口五、Controller层实现 需求 在服务端提前准备好Word模板文件,并在用户请求接口时服务端动态获取图片。数据等信息插…

代理IP是什么,代理IP的工作原理是怎么样的?

数字时代,随着数据采集的应用,代理IP也受到越来越多人的关注。但是,很多人对代理IP的具体概念及其工作原理并不是很了解。今天我们就来针对代理IP的相关知识做一个简单的探讨,说说代理IP是什么,它的工作原理又是什么&a…

redis未授权访问全漏洞复现

redis未授权访问全漏洞复现 Redis 有关的漏洞具有明显的时间分段性,在15年11月之前,主要是未授权导致的数据泄露,获得一些账号密码。另外还可以 DoS(参考:Sangfor VMP redis unauthorized access vulnerability&#…

VUE--组件通信(非父子)

一、非父子通信 --- event bus 事件总线 作用:非父子组件之间进行简易的消息传递 步骤: 1、创建一个都能访问到的事件总线(空vue实例)--- utils/EventBus.js import Vue from vue export default new Vue({}) 2、 接收方&…