自动驾驶ADAS系统开发架构
自动驾驶系统开发的“V”流程

仿真测试方法:
### MIL
Model-in-the-loop

在仿真环境中用数学或仿真模型测试和验证控制算法,是开发过程中的最初的阶段,验证算法的基本功能和逻辑,整个测试过程都是在模型环境中进行,没有涉及到实际的软件代码或硬件设备。算法以模型的形式存在,并通过仿真环境进行循环测试。
验证测试系统功能是否能实现
### SIL
Software-in-the-loop

在仿真环境中运行实际的控制软件代码,验证软件的功能和性能。对软件进行测试和验证的中间阶段,实际的软件代码被放入仿真环境中进行循环测试,以便在不依赖实际硬件的情况下验证软件的正确性。
验证测试功能是否一致
### PIL
Processor-in-the-loop
将自动生成的代码编译为目标处理器需要的形式,下载到目标处理运行,为了防止编译过程引入新的错误,PIL测试也是等效性测试,其方式与SIL类似,不同之处是编译好的算法运行在目标处理器上,SIL测试是在算法开发环境进行的(如windows)。
### HIL
Hardware-in-the-loop

在仿真环境中使用实际的控制硬件来测试系统。验证硬件和软件的集成和系统的实时性能,实际的硬件被放入仿真循环中进行测试,确保系统在现实条件下的工作性能和响应速度
真实硬件设备下全面验证系统和功能
### VIL
Vehicle-in-the-loop

在仿真环境中测试整个车辆系统,包括所有硬件和软件组件,用于最终的系统验证,确保整个系统在实际驾驶条件下的性能和安全性,实际车辆被放入仿真循环中进行测试,综合验证整个系统在真实条件下的表现。
### DIL
Driver-in-the-loop

在仿真环境中引入实际驾驶员,测试系统在实际驾驶条件下的表现。评估自动驾驶或驾驶员辅助系统的用户体验和人机交互,实际驾驶员作为测试的一部分,被引入仿真循环中进行测试,观察驾驶员和系统的交互行为。
### 场地测试


在受控环境中对智能驾驶车进行测试,评估其性能、安全性和可靠性。场地测试在专门设计的测试场地或闭合道路上进行,模拟实际驾驶环境中的各种情况,是在一个可控和安全的环境中进行测试。基础测试: 包括车辆的启动、停车、加速、减速、转向等基本功能。传感器测试:
测试自动驾驶车辆上的各种传感器(雷达、激光雷达、摄像头等)的性能和准确性。环境感知:
测试车辆在不同环境条件下的感知能力(雨、雪、雾)和光照条件(白天、夜晚)下的表现。场景模拟: 在测试场地中模拟各种驾驶场景,例如红绿灯路口、行人横穿马路、其他车辆并线或超车等,以评估自动驾驶系统在这些场景下的应对能力。
### 道路测试

在法规允许下进行真实道路的条件自动驾驶测试,实战检验车辆的各种性能在真实道路下的表现。Reference:
[1]https://www.auto-testing.net/news/show-107454.html
[2]https://www.gov.cn/xinwen/2021-10/20/content_5643859.htm#1
[3]公路院 长安大学 重庆车检院
智能驾驶仿真测试需求分析:
## 算法模型仿真需求$(1)车辆仿真软件$(2)环境仿真软件
$(3)自动化测试软件

simulink 工作站验证算法模型

下列代码展示了用ROS API创建一个节点,并在节点中使用多线程来处理不同的任务。创建两个线程来分别处理车辆控制指令和传感器数据,通过发布和订阅ROS话题来进行数据交换。
#include "vtd_parse.h"#include "thread"using namespace VTD;
int main(int argc, char* argv[]){// 初始化ROS的节点ros::init(argc, argv, "VTD_publisher");ros::NodeHandle n;// 节点句柄n// 创建启动线程,两个共享指针指向‘VTD_Parse的实例’std::shared_ptr<VTD_Parse> VTD_SendDriverCtrl_Handler = std::make_shared<VTD_Parse>(48190);std::thread VTD_SendDriverCtrl_Thread(&VTD_Parse::vtd_parse, VTD_Parse::vtd_parse, VTD_SendDriverCtrl_Handler, argc, argv, &n);std::shared_ptr<VTD_Parse> VTD_Sensor_Handler = std::make_shared<VTD_Parse>(48185); std::thread VTD_Sensor_Thread(&VTD_Parse::vtd_parse, VTD_Parse::vtd_parse, VTD_Sensor_Handler, argc, argv, &n);ros::Rate loop_rate(1000);while (ros::ok()){ros::spinOnce();// 处理ROS的回调函数loop_rate.sleep();}return 0;}
VTD_Parse::vtd_parse函数
int VTD_Parse::vtd_parse(int argc, char* argv[], ros::NodeHandle *n){// 创建发布者,发布到‘/VTD_line_info’和'/VTD_obj_info,队列大小为10和12'VTD_line_info_pub = n->advertise<vtd::VTD_line_info>("/VTD_line_info", 10); VTD_obj_info_pub = n->advertise<vtd::VTD_obj_info>("/VTD_obj_info", 12);// 创建订阅者订阅‘/VTD_driver_ctrl’队列10VTD_driver_ctrl_sub = n->subscribe("/VTD_driver_ctrl", 10, &VTD_Parse::receiveDriverCtrl, this);
}
## 单体控制器仿真需求
### 控制器仿真需求
$—控制器供电$ $~~$被控车辆
$—实时机$ $~~$车辆模型计算,实时通信
$—车辆仿真软件$ $~~$被控车辆
$—环境仿真软件$ $~~$仿真场景
$—自动化测试软件$ $~~$自动化测试
$—传感器仿真设备$ $~~$视频暗箱,雷达模拟器
#### 自动驾驶方案
行车方案泊车方案行泊一体
### 整车级集成仿真
$—实时机$ $~~$车辆模型计算,实时通信
$—整车台架$ $~~$转鼓实验台
$—车辆仿真软件$ $~~$被控车辆
$—环境仿真软件$ $~~$仿真场景
$—自动化测试软件$ $~~$自动化测试
$—传感器仿真设备$ $~~$视频暗箱,雷达模拟器

针对整车的功能逻辑,故障测试;
从感知控制到执行的整个链路环节有没有问题。
## 智能驾驶仿真软件
## 车辆仿真
Carsim

厂商: Mechanical Simulation(美国)
Carsim提供详细的车辆动力学模型,支持不同车辆配置和驾驶条件。
支持集成多种传感器模型,用于模拟不同驾驶环境下的车辆行为。
Carsim本身不包含自动化测试功能,需要与其他测试平台集成。
Carmaker

厂商: IPG(德国)
Carmaker提供高度详细的车辆模型,支持多种车辆配置。
支持半物理的传感器模型,提供更真实的传感器数据仿真。
内置自动化测试功能,支持复杂驾驶场景和测试用例的自动化执行。
$\textbf{\textit{Dyna4}}$
厂商: Vector(德国)
Dyna4支持详细的车辆动力学模型配置。
包含多种传感器模型,用于模拟和验证自动驾驶算法。
内置自动化测试功能,适用于大规模测试和验证。
$\textbf{\textit{PanoSim}}$
厂商: PanoSim(中国)
提供详细的车辆动力学模型配置。
主要用于动力学建模,不包含传感器仿真。
不带自动化测试模块,需要与其他测试平台集成。
总结
## 场景仿真
PreScan

厂商: Siemens(德国)基于simulink
$\textbf{无车辆动力学模型:}$
不包含详细的车辆动力学建模,主要侧重于环境和传感器的仿真。
$\textbf{物理传感器模型:}$
提供详细的物理传感器模型,用于模拟各种传感器的行为。
$\textbf{支持第三方交通流软件:}$
可以与第三方交通流软件集成,模拟复杂的交通环境。
$\textbf{视景渲染较差:}$
图形渲染效果一般,主要用于功能验证和算法开发。
$\textbf{不支持实时:}不适合实时仿真。$\textbf{支持OpenDRIVE:}$
支持OpenDRIVE格式的道路网络描述。
VTD

厂商: MSC(德国)
$\textbf{无车辆动力学模型:}$
不包含详细的车辆动力学建模,侧重于环境和传感器仿真。
$\textbf{参数化及物理传感器模型:}$
提供详细的传感器模型,支持参数化和物理传感器的仿真。
$\textbf{支持第三方交通流软件:}$
可以与第三方交通流软件集成,模拟复杂的交通环境。
$\textbf{视景渲染一般:}$
图形渲染效果一般,主要用于功能验证和算法开发。
$\textbf{支持实时:}$可以进行实时仿真。
$\textbf{支持OpenDRIVE和OpenScenario:}$
支持OpenDRIVE格式的道路网络描述和OpenScenario场景描述。
Carla厂商: Intel(美国)
$\textbf{简单车辆动力学模型:}$
提供基本的车辆动力学建模,支持车辆运动仿真。
$\textbf{参数化传感器模型:}$
提供详细的传感器模型,支持参数化设置。
$\textbf{支持第三方交通流软件:}$
可以与第三方交通流软件集成。
$\textbf{视景渲染较好:}$
图形渲染效果较好,适用于高逼真度的场景仿真。
$\textbf{开源:}$
Carla是开源软件,社区支持广泛。
$\textbf{支持OpenDRIVE:}$
支持OpenDRIVE格式的道路网络描述。
Apollo

厂商: Baidu(中国)
$\textbf{无车辆动力学模型:}$
不包含详细的车辆动力学建模。
$\textbf{参数化传感器模型:}$
提供详细的传感器模型,支持参数化设置。
$\textbf{自带交通流软件:}$
内置交通流仿真功能,支持复杂的交通环境仿真。
$\textbf{视景渲染较好:}$
图形渲染效果较好,适用于高逼真度的场景仿真。
$\textbf{支持实时:}$
可以进行实时仿真。$~~$PreScan 和 VTD 作为商用软件应用广泛,适用于传感器仿真和环境建模.Carla 作为开源软件,应用也比较广泛,适用于自动驾驶研究和传感器融合,国内的软件(Apollo) 提供了丰富的功能和良好的视景渲染,适用于自动驾驶研究和高保真环境建模。
以上是关于智能驾驶仿真测试的方法以及需求分析和仿真软件的介绍,仿真测试对智能自动驾驶的实现是占非常重要地位,成熟的仿真体系对主机厂产品的上市也有不可或缺的作用,仿真测试还有很多其他的内容,本文只是大略的入门测试需求和软件说明。
(which $~~$,\textbf,\textit,{} is tex form)

发表回复