Advertisement

手把手教你学Simulink实例--基于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系统(Advanced Driver Assistance Systems)是一种集成化的智能驾驶辅助技术集合,主要由自适应巡航控制(ACC)、自动紧急制动(AEB)、车道保持辅助(LKAS)以及自动泊车(APS)等多个功能模块组成。这些技术的综合性能直接关系到车辆的安全性和乘坐舒适度。为了实现系统的高效运行状态,必须实施严格的综合性能评估并持续进行优化工作

本指南旨在阐述基于Simulink对智能驾驶辅助系统的性能分析与优化方法。我们采用自动紧急制动系统(AEB)作为示例对象,并详细说明其设计过程、仿真验证以及性能评估与优化的具体步骤。

一、背景介绍

主动安全系统(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:支持从系统建模到控制器设计与优化的完整流程。
  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:添加车辆动力学模块

请将 Longitudinal Driver 模块从 Vehicle Dynamics Blockset > Vehicle Library > Longitudential Driver Inputs 库中移入至车辆纵向运动学配置的建模区域。
请将指定的 Brake System 模块从 Vehicle Dynamics Blockset > Vehicle Library > Brake System 库中导入至车辆制动系统的建模区域。
请将 Rigid Body 模块从 Vehicle Dynamics Blockset > Vehicle Library > Chassis 库中转移至车辆底盘部分的建模区域。

复制代码

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:添加雷达传感器模块

  • 在指定的库中拖拽Radarsat模块到模型编辑区;
  • 配置其参数设置为最大探测距离、最小探测距离及更新频率等。
复制代码

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 的 Continuous 库目录下拖放 PID Controller 模块至模型编辑区。
    • 配置模块的初始参数设置(包括比例系数 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:运行仿真

在执行完前述步骤之后

步骤7:性能评估

为了全面分析自动紧急制动系统的性能,请关注以下一些重要性能指标:

车辆速度变化波形

该模块被用来捕获车辆速度的变化波形信息,并保证车辆在接近障碍物时能够迅速减缓速度直至完全停止。

制动力变化波形

借助 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为例)进行性能评估与优化方案的设计与实现。涵盖的主要内容包括:性能指标量化分析方法、优化策略的具体实施步骤以及相关的仿真验证过程等详细的技术内容。

  • 背景介绍 :深入解析自动紧急制动(AEB)系统及其在智能汽车开发中的重要性。
  • 所需工具和环境 :明确仿真过程中涉及的主要软硬件配置及运行环境要求。
  • 步骤详解 :从基础模块构建开始,在详细设计阶段完成核心功能模块的开发;随后进入调试阶段,在严格测试环节确保各功能模块的正常运转;最终进入优化阶段,在全面验证环节实现系统的稳定运行与精确控制。
  • 性能评估 :通过全面分析车辆速度变化情况、制动力输出特性、快速度响应能力(包括上升时间和调节时间)、动态平衡性(如超调量)以及安全性指标(如稳定性分析)等多维度量化标准来综合评估系统的性能表现。
  • 性能优化 :在现有PID控制系统基础上进行深入优化研究;结合实际测试数据对控制系统进行反复调试;引入前馈补偿机制或采用先进控制算法替代现有策略,并通过实验验证显著提升系统性能指标。

全部评论 (0)

还没有任何评论哟~