Advertisement

基于Simulink的智能驾驶辅助系统性能评估与优化

阅读量:

目录

基于Simulink的智能驾驶辅助系统性能评估与优化

一、背景介绍

二、所需工具和环境

三、步骤详解

步骤1:创建Simulink模型

步骤1.1:打开Simulink并新建模型

步骤2:添加车辆动力学模型

步骤2.1:添加车辆动力学模块

步骤3:添加雷达传感器模块

步骤3.1:添加雷达传感器模块

步骤4:设计自动紧急制动控制器

步骤4.1:添加PID控制器模块

步骤4.2:设计制动控制器

步骤4.3:连接反馈回路

步骤5:设置仿真参数

步骤6:运行仿真

步骤7:性能评估

车辆速度变化波形

制动力变化波形

上升时间和调节时间

动态响应特性

安全性分析

步骤8:性能优化

调整PID参数

增加前馈控制

使用更先进的控制算法

使用Simulink Test进行自动化测试

四、总结


基于Simulink的智能驾驶辅助系统性能评估与优化

智能驾驶辅助系统(ADAS)涵盖多种功能:自适应巡航控制、自动紧急制动、车道保持辅助以及自动泊车等多种技术。这些先进的技术配置直接决定了车辆的安全性和乘坐舒适度。为了确保这些系统能够正常高效地运行,在开发和部署过程中必须对其进行全面的技术评估与优化

本指南旨在说明如何利用Simulink平台对智能驾驶辅助系统进行系统的性能评价与改进或提升。采用自动紧急制动系统(AEB)作为示例, 详细阐述设计方法, 进行仿真模拟, 进行性能评价, 最后实施优化改进。

一、背景介绍

主动安全技术(AEB)是一种旨在感知并及时反应前方潜在威胁的技术装置,在检测到障碍物时通过施加制动力来避免或减轻碰撞风险。该系统的核心功能模块主要包括

  1. 传感器模块:负责测量前方物体的距离及速度。
  2. 控制器模块:基于传感器提供的数据来计算所需施加的制动力,并发出控制指令。
  3. 执行器模块:按照控制器发送的具体指令来调节车辆的动力输出。

借助Simulink建模与仿真技术能够深入分析系统的各项性能指标,并通过进一步优化来显著提升系统的响应速度、稳定性以及安全性。

二、所需工具和环境

为了进行智能驾驶辅助系统的性能评估和优化,你需要以下工具和环境:

  1. MATLAB/Simulink :专为模型建立与仿真设计。
  2. Automated Driving Toolbox :专门提供实现自动驾驶功能所需的工具模块集合。
  3. Sensor Fusion and Tracking Toolbox :专注于整合多源传感器数据进行目标追踪与状态估计。
  4. Vehicle Dynamics Blockset :提供用于车辆动力学研究与开发的模块库。
  5. Control System Toolbox :集成了系统控制理论中的核心算法与分析工具。
  6. Simulink Control Design :支持基于Simulink平台的控制系统设计与优化技术。
  7. Simulink Test :提供了自动化测试方案以确保系统性能符合预期要求。

三、步骤详解

步骤1:创建Simulink模型

首先,打开 MATLAB 并启动 Simulink 创建一个新的空白模型。

步骤1.1:打开Simulink并新建模型

  • 打开 MATLAB 应用程序。
  • 在命令窗口中输入 simulink 后系统会自动打开 Simulink 的启动界面。
  • 单击‘Blank Model’按钮生成一个新的空模型结构。
复制代码

matlab

深色版本

复制代码
 % 创建新的Simulink模型

    
 modelName = 'AutomaticEmergencyBrakingSystem';
    
 new_system(modelName);
    
 open_system(modelName);

步骤2:添加车辆动力学模型

我们将使用 Vehicle Dynamics Blockset 来构建车辆的动力学模型。

步骤2.1:添加车辆动力学模块

  • 在指定库中导入长驱动力模块。
  • 在指定库中导入制动力组件。
  • 在指定库中导入结构组件。
复制代码

matlab

深色版本

复制代码
 % 添加车辆动力学模块

    
 add_block('vehicleDynamics/Longitudinal Driver', [modelName '/Longitudinal_Driver']);
    
 add_block('vehicleDynamics/Brake System', [modelName '/Brake_System']);
    
 add_block('vehicleDynamics/Rigid Body', [modelName '/Rigid_Body']);

步骤3:添加雷达传感器模块

我们将使用雷达传感器来检测前方障碍物的距离和速度。

步骤3.1:添加雷达传感器模块

  • Sensor Fusion and Tracking Toolbox > Sensors and Measurements 库中导入 Radar Detection Generator 模块至模型编辑区。
    • 配置相关参数设置项如最大检测范围、最小检测范围以及更新频率等。
复制代码

matlab

深色版本

复制代码
 % 添加雷达传感器模块

    
 add_block('sensorFusion/Radar Detection Generator', [modelName '/Radar_Sensor']);
    
 set_param([modelName '/Radar_Sensor'], 'MaxRange', '150'); % 设置最大检测范围为150米
    
 set_param([modelName '/Radar_Sensor'], 'MinRange', '5'); % 设置最小检测范围为5米
    
 set_param([modelName '/Radar_Sensor'], 'UpdateRate', '10'); % 设置更新频率为10Hz

步骤4:设计自动紧急制动控制器

我们采用基于反馈机制的 PID 控制器来完成自动紧急制动功能。该控制器通过实时采集雷达传感器数据来优化车辆运行状态,并通过精确调节前轮驱动转矩来实现与前方障碍物的安全距离维护。

步骤4.1:添加PID控制器模块

  • 在 Simulink 的连续库中拖放 PID 控制器模块至模型编辑区。
  • 配置初始参数设置(包括比例系数 Kp、积分系数 Ki 和微分系数 Kd)。
复制代码

matlab

深色版本

复制代码
 % 添加PID控制器模块

    
 add_block('simulink/Continuous/PID Controller', [modelName '/PID_Controller']);
    
 set_param([modelName '/PID_Controller'], 'P', '1'); % 设置比例系数Kp为1
    
 set_param([modelName '/PID_Controller'], 'I', '0.1'); % 设置积分系数Ki为0.1
    
 set_param([modelName '/PID_Controller'], 'D', '0.01'); % 设置微分系数Kd为0.01

步骤4.2:设计制动控制器

  • 测量车辆与前方障碍物之间的偏差(即相对距离)。
  • 被PID控制器所调节的车辆制动力被设计为能够实现制动或停车作用,并以防止碰撞为目标。
复制代码

matlab

深色版本

复制代码
 % 计算相对距离

    
 relativeDistance = calculateRelativeDistance(radarData); // 自定义函数计算相对距离
    
  
    
 % 添加制动控制器
    
 add_block('simulink/User-Defined Functions/MATLAB Function', [modelName '/Braking_Controller']);
    
  
    
 % 编写MATLAB Function代码
    
 function brakingForce = fcn(relativeDistance)
    
     brakingForce = pid(relativeDistance); % 使用PID控制器计算制动力
    
 end

步骤4.3:连接反馈回路

将其输出与制动能控模块的输入端子相连,并随后使制动能控模块与动力学模型中的制动能子相联结以完成整个系统的闭环控制

复制代码

matlab

深色版本

复制代码
 % 连接各模块

    
 add_line(modelName, [modelName '/Radar_Sensor'], [modelName '/Braking_Controller'], 'autorouting', 'on');
    
 add_line(modelName, [modelName '/Braking_Controller'], [modelName '/Brake_System'], 'autorouting', 'on');

步骤5:设置仿真参数

在模型编辑器的顶部菜单栏中单击 Simulation > Model Configuration Parameters 菜单项,在设置仿真时长(例如设为 60 秒)的同时,请选择合适的求解器类型(建议选择 ode45),并根据需求调整其他相关参数设置。

复制代码

matlab

深色版本

复制代码
 % 设置仿真参数

    
 set_param(modelName, 'StopTime', '60'); % 模拟运行时间为60秒
    
 set_param(modelName, 'Solver', 'ode45');

步骤6:运行仿真

完成后,请启动仿真的具体操作:点击"Run"按钮开始仿真。通过观察车辆的速度变化、制动距离以及制动力变化等波形,以确保车辆运行的稳定性和安全性达到设计标准.

步骤7:性能评估

为了从多维度进行系统性角度出发,在分析自动紧急制动系统的各项关键性能参数时,请重点关注以下几个核心性能参数:

车辆速度变化波形

利用 Scope 模块监测车辆的动态变化特征,并对其实现自动制动力学行为进行持续监控。

制动力变化波形

利用 Scope 模块监测制动力的变化波形以验证其稳定性和安全性是否达到设计标准

上升时间和调节时间

通过对制动力波形的分析可用来计算系统的上升时间和调节时间。即指系统从初始作用力逐步提升至目标作用力所需要的时间间隔;而调节时间为系统达到并维持在目标作用力周边指定范围内所需要的时间。

复制代码

matlab

深色版本

复制代码
 % 获取制动力数据

    
 brakingForce = getBrakingForce();
    
  
    
 % 计算上升时间和调节时间
    
 riseTime = calculateRiseTime(brakingForce); % 自定义函数计算上升时间
    
 settlingTime = calculateSettlingTime(brakingForce); % 自定义函数计算调节时间
    
  
    
 % 显示结果
    
 disp(['Rise Time: ', num2str(riseTime), ' seconds']);
    
 disp(['Settling Time: ', num2str(settlingTime), ' seconds']);

动态响应特性

采用阶跃信号或斜坡信号测试的方法用于分析系统动态特性的关键指标。

复制代码

matlab

深色版本

复制代码
 % 计算超调量

    
 overshoot = calculateOvershoot(brakingForce); // 自定义函数计算超调量
    
  
    
 // 显示结果
    
 disp(['Overshoot: ', num2str(overshoot), '%']);

安全性分析

通过对车辆速度变化和传感器数据的分析研究,在接近障碍物时被车辆迅速减速并停下以避免碰撞

复制代码

matlab

深色版本

复制代码
 % 获取车辆速度数据

    
 vehicleSpeed = getVehicleSpeed();
    
  
    
 % 检查是否发生碰撞
    
 if any(isCollision(vehicleSpeed, radarData)) % 自定义函数检查是否发生碰撞
    
     disp('Warning: Collision detected.');
    
 else
    
     disp('Vehicle successfully avoided collision.');
    
 end

步骤8:性能优化

为了提高自动紧急制动控制器的性能水平,我们可以采用多种改善方案进行优化

调整PID参数

人工调节 PID 参数(例如设置比例系数 Kp、积分系数 Ki 和微分系数 Kd),以满足系统的性能要求。

复制代码

matlab

深色版本

复制代码
 % 调整PID控制器参数

    
 set_param([modelName '/PID_Controller'], 'P', '1.2'); % 增加比例系数Kp
    
 set_param([modelName '/PID_Controller'], 'I', '0.15'); % 增加积分系数Ki
    
 set_param([modelName '/PID_Controller'], 'D', '0.02'); % 增加微分系数Kd
    
  
    
 % 重新运行仿真
    
 sim(modelName);

增加前馈控制

采用前馈控制策略(Feedforward Control),能够提前预测前方障碍物的行为,并从而相应地调节制动力的大小。

复制代码

matlab

深色版本

复制代码
 % 添加前馈控制模块

    
 add_block('simulink/User-Defined Functions/MATLAB Function', [modelName '/Feedforward_Controller']);
    
  
    
 % 编写MATLAB Function代码
    
 function feedforwardSignal = fcn(predictedRelativeDistance)
    
     feedforwardSignal = calculateFeedforward(predictedRelativeDistance); % 自定义函数计算前馈控制信号
    
 end

使用更先进的控制算法

采用更为先进的控制算法(如滑模控制、模糊逻辑控制系统或模型预测控制系统)以提升系统的性能为基础进行操作

复制代码

matlab

深色版本

复制代码
 % 使用模型预测控制(MPC)

    
 add_block('simulink/Control System Toolbox/Model Predictive Control Toolbox/MPC Controller', [modelName '/MPC_Controller']);

使用Simulink Test进行自动化测试

基于 Simulink Test 工具箱实现系统的自动化测试与验证过程,并通过该方法保证系统在各种不同的工作情境下都能稳定运行。

复制代码

matlab

深色版本

复制代码
 % 创建测试用例

    
 testCase = sltest.testmanager.TestFile('AEB_TestCases');
    
 testCase.addTestSuite('AEB_TestSuite');
    
 testCase.addTestCase('Scenario_1', 'Initial_Speed_50kmh');
    
  
    
 % 运行测试
    
 sltest.testmanager.run(testCase);

四、总结

按照本指南阐述了如何基于Simulink对智能驾驶辅助系统(其中以AEB为例)进行性能评估与优化。主要内容涉及:

  • 背景介绍:深入掌握自动紧急制动系统的工作原理及其在智能驾驶技术领域中的重要性。
    • 所需工具和环境:详细说明实现自动紧急制动系统仿真所必需的各类工具及运行环境配置要求。
    • 步骤详解:从基础开始构建一个完整的自动紧急制动系统模型,并完成控制器设计及仿真过程。
    • 性能评估:通过车辆速度变化情况、制动力值波动特征以及动态响应指标等多方面因素全面评估系统的性能表现。
    • 性能优化:优化PID参数设置的同时可引入前馈控制系统结构或采用更为先进的控制算法策略以提升系统效能。

全部评论 (0)

还没有任何评论哟~