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智能驾驶场景实例:电动汽车自适应巡航控制系统仿真

自适应巡航控制系统(Adaptive Cruise Control System, ACC)是现代智能驾驶技术体系中不可或缺的关键组成部分。该系统通过先进的传感器网络实时采集并分析前方道路信息数据包,并基于获取的信息动态计算并发出控制指令以维持理想的行车间距与速度参数。在电动汽车应用领域,ACC系统需综合考量电池剩余电量、能量回收利用效率等多个关键性能参数。

本示例旨在介绍如何利用Simulink及其相关工具箱来实现电动汽车自适应巡航控制系统的建模与仿真。

一、背景介绍

自适应巡航控制(ACC)是一种高级的驾驶辅助技术

  1. 传感器模块负责监测前向物体的距离与速度信息。
  2. 控制器模块通过感应数据计算所需的加减速指令,并发送控制命令。
  3. 执行机构按控制器发出的速度指令进行调整。

对于电动汽车来说,在ACC系统设计时还需考虑到电池容量、能量回收机制等多方面的因素,并致力于提升能源利用效率

二、所需工具和环境

为了进行自适应巡航控制系统的仿真,你需要以下工具和环境:

  1. MATLAB/Simulink 被用来建立模型并进行仿真。
  2. Simscape Multibody 或 Vehicle Dynamics Blockset 被应用于车辆动力学建模过程中。
  3. Sensor Fusion and Tracking Toolbox 被用来处理传感器数据。
  4. Control System Toolbox 被用来设计和分析控制系统的方案。
  5. Simulink Control Design 被应用于控制器的设计与优化过程。

三、步骤详解

步骤1:创建Simulink模型

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

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

  • 打开MATLAB环境。
    • 在命令窗口中输入Simulink以打开Simulink起始界面。
    • 单击"Blank Model"按钮创建一个新的空白模型。

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

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

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

  • 在指定库夹 Vehicle Dynamics Blockset > Vehicle Library > Longitudinal Driver Inputs 中进行 Longitudinal Driver 模块的拖放操作至工作区。
    • 在指定库夹 Vehicle Dynamics Blockset > Vehicle Library > Powertrain 中进行 Electric Powertrain 模块的拖放操作至工作区。
    • 在指定库夹 Vehicle Dynamics Blockset > Vehicle Library > Chassis 中进行 Rigid Body 模块的拖放操作至工作区。
复制代码

matlab

深色版本

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

    
 add_block('vehicleDynamics/Longitudinal Driver', [modelName '/Longitudinal_Driver']);
    
 add_block('vehicleDynamics/Electric Powertrain', [modelName '/Electric_Powertrain']);
    
 add_block('vehicleDynamics/Rigid Body', [modelName '/Rigid_Body']);

步骤3:添加传感器模块

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

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

  • Radar Detection Generator 模块从 Sensor Fusion and Tracking Toolbox > Sensors and Measurements 库中拖放至模型编辑区。
    • 配置参数包含最大探测距离、最小探测距离以及更新频率等内容。
复制代码

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

深色版本

复制代码
 % 计算期望跟车距离

    
 desiredSpacing = calculateDesiredSpacing(leadVehicleSpeed, egoVehicleSpeed); % 自定义函数计算期望跟车距离
    
  
    
 % 添加跟车距离控制器
    
 add_block('simulink/User-Defined Functions/MATLAB Function', [modelName '/Spacing_Controller']);
    
  
    
 % 编写MATLAB Function代码
    
 function controlSignal = fcn(leadVehicleSpeed, egoVehicleSpeed)
    
     desiredSpacing = calculateDesiredSpacing(leadVehicleSpeed, egoVehicleSpeed);
    
     currentSpacing = getCurrentSpacing(); % 获取当前跟车距离
    
     error = desiredSpacing - currentSpacing;
    
     controlSignal = pid(error); % 使用PID控制器计算控制信号
    
 end

步骤4.3:连接反馈回路

用于将雷达传感器模块的数据传输至跟车距离控制器模块,并随后将该系统的反馈信号传递至车辆动力学模型以完成整体系统的闭环控制流程

复制代码

matlab

深色版本

复制代码
 % 连接各模块

    
 add_line(modelName, [modelName '/Radar_Sensor'], [modelName '/Spacing_Controller'], 'autorouting', 'on');
    
 add_line(modelName, [modelName '/Spacing_Controller'], [modelName '/Electric_Powertrain'], 'autorouting', 'on');

步骤5:设置仿真参数

进入模型编辑器顶部菜单栏中的Simulation与Model Configuration Parameters区域进行操作。单击带有Simulation和Model Configuration Parameters标签的区域。调节仿真时长(例如60秒),选择合适的求解器类型(建议采用ode45),并配置其他相关设置以满足特定需求。

复制代码

matlab

深色版本

复制代码
 % 设置仿真参数

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

步骤6:运行仿真

在完成上述步骤之后,请启动位于工具栏中的'Run'按钮以进行仿真操作。随后,请监控车辆的速度、加速度以及跟车距离等关键参数,并以确保所述系统运行的稳定性和安全性达到预期设计标准

步骤7:分析仿真结果

借助仿真手段,能够获取系统的各项关键参数数据包括车辆速度 加速性能 距离参数 超调值和调整时间等作为评估系统性能的重要手段之一

车辆速度和加速度波形

通过 Scope 模块监测车辆的速度和加速度波形, 保证其稳定性和安全性符合设计要求

跟车距离波形

通过 Scope 模块持续监测跟车距离波形的变化情况,并始终维持在预定的安全距离以上

上升时间和调节时间

通过对车辆速度波形的分析可以用来确定系统的上升时间和调节时间。其中上升时间表示系统从初始速度逐步达到目标速度所需要的时间而调节时间则表示系统进入并维持在目标速度一定稳定范围内的所需时长

复制代码

matlab

深色版本

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

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

动态响应特性

采用阶跃响应和斜坡响应测试方法, 对系统的动态性能进行分析和考察, 并包括超调量和振荡次数等指标.

复制代码

matlab

深色版本

复制代码
 % 计算超调量

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

安全性分析

通过研究前后车距变化情况,在确保前后间距始终处于安全区间内。

复制代码

matlab

深色版本

复制代码
 % 获取跟车距离数据

    
 spacing = getSpacing();
    
  
    
 % 检查跟车距离是否始终大于安全距离
    
 safeSpacing = 2; % 假设安全距离为2米
    
 if min(spacing) < safeSpacing
    
     disp('Warning: Spacing is less than the safe distance.');
    
 else
    
     disp('Spacing is always greater than the safe distance.');
    
 end

步骤8:优化自适应巡航控制器

为了提高自适应巡航系统的性能表现, 我们可以采用优化PID参数设置、引入前馈控制机制或运用高级控制策略等方法来实现改进效果

调整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(predictedLeadVehicleSpeed)
    
     feedforwardSignal = calculateFeedforward(predictedLeadVehicleSpeed); % 自定义函数计算前馈控制信号
    
 end

使用更先进的控制算法

采用最新的一些现代控制算法(例如滑模控制、模糊逻辑控制系统或模型预测控制系统)以提升系统性能为目标

复制代码

matlab

深色版本

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

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

四、总结

在本教程中, 我们讲解了如何运用Simulink进行电动汽车自适应巡航控制系统模拟。主要涵盖的内容包括:

  • 背景介绍 :掌握自适应巡航控制原理及其在电动汽车领域的实际应用。
    • 所需工具和环境 :明确用于实现自适应巡航控制系统仿真的所需工具与工作环境。
    • 步骤详解 :从零开始构建完整的电动汽车模型,并完成自适应巡航控制器的设计与仿真过程。
    • 分析仿真结果 :通过车辆速度、加速度、跟车距离等关键指标的详细分析评估系统性能。
    • 优化自适 cruise 控制器 :通过微调 PID 参数、引入前馈控制策略或采用更为先进的控制算法来提升系统性能。

全部评论 (0)

还没有任何评论哟~