Advertisement

MATLAB 开发项目实例 1000 例专栏之第102例--使用 Simulink 开发一个自动驾驶汽车的自动紧急制动系统(Automatic Emergency Braking, AEB)

阅读量:

目录

项目背景

项目目标

使用工具和技术

项目流程

1. 需求分析

2. 系统建模

2.1 车辆动力学模型

2.2 传感器数据处理模块

2.3 碰撞检测模块

2.4 制动控制模块

3. 仿真测试

3.1 构建不同交通场景

3.2 测试系统性能

3.3 分析结果

4. 优化与迭代

5. 硬件在环测试(HIL)

关键技术点

结论


本研究基于Simulink平台实现了新型自动驾驶汽车自动紧急制动系统的开发方案(AEB)。该系统能够实时监测车辆周围环境数据,并在预判潜在碰撞风险时迅速触发制动装置施加制动力量以有效预防或减小可能发生的碰撞后果。

项目背景

在现代汽车技术中,自动紧急制动系统(AEB)被视为一项关键的安全辅助功能。该系统利用多种传感器设备(包括雷达和摄像头),实时监测前方环境并感知潜在碰撞威胁。当危机情况即将出现时,在毫秒时间内启动制动装置以减缓车速或完全停止车辆运行。这样做的目的是最大限度地降低事故发生的可能性,并尽量减轻事故造成的伤害程度。

项目目标

  • 设计并实现自动紧急制动系统的核心算法。
    • 构建碰撞检测与制动控制模块的硬件-软件协同架构。
    • 通过多场景仿真测试验证系统的稳定性和适应性。
    • 提升计算效率的同时,在实际应用中展现出良好的实时性。

使用工具和技术

  • MATLAB 和 Simulink 是支持算法开发、建模、仿真以及实时验证的软件平台。
  • Sensor Fusion and Tracking Toolbox 整合了来自雷达与摄像头数据的融合与分析功能。
  • Vehicle Dynamics Blockset 提供了对车辆动力学行为建模与仿真的专用模块集。
  • Simulink Real-Time 支持基于实时硬件环境对系统模型进行在线测试与系统验证。

项目流程

1. 需求分析

明确系统的功能要求,包括但不限于:

  • 精确感知并计算前方物体的运动参数。
  • 评估潜在碰撞事件的时间间隔(Time to Collision, TTC)。
  • 通过智能控制机制自动调节制动力度以规避或减缓碰撞事件的发生。
  • 系统在动态交通条件下表现出的高度适应性和稳定性。

2. 系统建模

2.1 车辆动力学模型

基于 Vehicle Dynamics Blockset 建立车辆动力学模型,并涵盖其动力学行为及其运动特性分析。

复制代码

Matlab

深色版本

复制代码
 % 创建车辆动力学模型

    
 add_block('vehicleDynamics/3DOF Vehicle Body', 'AEB_Model/Vehicle_Dynamics', [100 100]);
    
    
    
    
    代码解释

2.2 传感器数据处理模块

集成 Sensor Fusion and Tracking Toolbox 来自雷达与摄像头的数据采集,并评估前方物体的间距与移动速率。

复制代码

Matlab

深色版本

复制代码
 % 加载雷达数据

    
 load('radar_data.mat'); % 假设 radar_data.mat 包含雷达数据
    
  
    
 % 加载摄像头数据
    
 load('camera_data.mat'); % 假设 camera_data.mat 包含摄像头数据
    
  
    
 % 创建雷达数据处理模块
    
 add_block('sensorFusionAndTracking/Radar Sensor', 'AEB_Model/Radar_Sensor', [100 100]);
    
 set_param('AEB_Model/Radar_Sensor', 'FieldOfView', '60', 'UpdateRate', '10');
    
  
    
 % 创建摄像头数据处理模块
    
 add_block('vision/Object Detector', 'AEB_Model/Camera_Sensor', [100 100]);
    
 set_param('AEB_Model/Camera_Sensor', 'DetectorType', 'YOLO v3');
    
  
    
 % 连接模块
    
 add_line('AEB_Model', 'Radar_Sensor/1', 'Sensor_Fusion/1');
    
 add_line('AEB_Model', 'Camera_Sensor/1', 'Sensor_Fusion/2');
    
    
    
    
    代码解释

2.3 碰撞检测模块

设计碰撞检测逻辑,计算碰撞时间(TTC)。

复制代码

Matlab

深色版本

复制代码
 % 创建碰撞检测模块

    
 add_block('simulink/Math Operations/Subtract', 'AEB_Model/Relative_Velocity', [100 100]);
    
 add_block('simulink/Math Operations/Divide', 'AEB_Model/TTC_Calculation', [100 100]);
    
 add_block('simulink/Logic and Bit Operations/Relational Operator', 'AEB_Model/Collision_Detection', [100 100]);
    
 set_param('AEB_Model/Collision_Detection', 'Operator', '<', 'Inputs', '2');
    
  
    
 % 连接模块
    
 add_line('AEB_Model', 'Sensor_Fusion/1', 'Relative_Velocity/1');
    
 add_line('AEB_Model', 'Vehicle_Speed/1', 'Relative_Velocity/2');
    
 add_line('AEB_Model', 'Relative_Velocity/1', 'TTC_Calculation/1');
    
 add_line('AEB_Model', 'Sensor_Fusion/2', 'TTC_Calculation/2');
    
 add_line('AEB_Model', 'TTC_Calculation/1', 'Collision_Detection/1');
    
 add_line('AEB_Model', 'Threshold/1', 'Collision_Detection/2');
    
    
    
    
    代码解释

2.4 制动控制模块

设计制动控制逻辑,根据碰撞检测结果施加制动力。

复制代码

Matlab

深色版本

复制代码
 % 创建 PID 控制器

    
 add_block('simulink/Continuous/PID Controller', 'AEB_Model/PID_Controller', [100 100]);
    
 set_param('AEB_Model/PID_Controller', 'P', '1.0', 'I', '0.1', 'D', '0.01');
    
  
    
 % 创建制动执行器模型
    
 add_block('simulink/Continuous/Transfer Fcn', 'AEB_Model/Brake_Actuator', [100 100]);
    
 set_param('AEB_Model/Brake_Actuator', 'Numerator', '[1]', 'Denominator', '[1 0.1]');
    
  
    
 % 连接模块
    
 add_line('AEB_Model', 'Collision_Detection/1', 'PID_Controller/1');
    
 add_line('AEB_Model', 'PID_Controller/1', 'Brake_Actuator/1');
    
 add_line('AEB_Model', 'Brake_Actuator/1', 'Vehicle_Dynamics/1');
    
    
    
    
    代码解释

3. 仿真测试

3.1 构建不同交通场景

通过 Simulink 的 Scenario Reader 模块导入不同的交通场景,并具体包括但不限于以下几种情况:前方完全静止的车辆、前方有车辆快速移动的情况、以及行人突然横穿道路的情形。

复制代码

Matlab

深色版本

复制代码
 % 加载交通场景

    
 load('traffic_scenarios.mat'); % 假设 traffic_scenarios.mat 包含不同的交通场景
    
  
    
 % 创建 Scenario Reader 模块
    
 add_block('drivingScenario/Scenario Reader', 'AEB_Model/Scenario_Reader', [100 100]);
    
 set_param('AEB_Model/Scenario_Reader', 'ScenarioFile', 'traffic_scenarios.mat');
    
  
    
 % 连接模块
    
 add_line('AEB_Model', 'Scenario_Reader/1', 'Radar_Sensor/1');
    
 add_line('AEB_Model', 'Scenario_Reader/2', 'Camera_Sensor/1');
    
    
    
    
    代码解释

3.2 测试系统性能

运行仿真,评估系统在不同场景下的表现。

复制代码

Matlab

深色版本

复制代码
 % 设置仿真时间

    
 set_param('AEB_Model', 'SimulationMode', 'normal', 'StopTime', '30');
    
  
    
 % 运行仿真
    
 sim('AEB_Model');
    
    
    
    
    代码解释

3.3 分析结果

使用 Scope 模块和 To Workspace 模块记录和分析仿真结果。

复制代码

Matlab

深色版本

复制代码
 % 查看输出数据

    
 disp(output_data);
    
    
    
    
    代码解释

4. 优化与迭代

根据测试结果调整算法参数,优化系统性能。

  • 数据融合技术 :提升雷达与摄像头数据融合的技术性能,以增强障碍物探测能力。
    • 碰撞检测敏感度 :优化相关参数设置以提高碰撞检测敏感度,并增强系统在各种环境下的稳定性和可靠性。
    • 制动过程的平滑性 :通过精确调节 PID 控制器参数,保证制动反应既柔和又迅速。

5. 硬件在环测试(HIL)

将模型安装到设备平台上,在真实的道路上进行测试,并以确保系统的可靠性和安全性

关键技术点

  • 数据处理流程 :通过雷达与摄像头协同作用获取前车距离信息及速度参数。
    • 动态行为建模 :分析车辆的动力学行为特征。
    • 自动控制原理 :研发基于PID算法的控制系统方案,并确保系统具备精准的制动性能指标。
    • 实时响应能力 :优化算法以实现对动态环境的有效响应与快速反应。

结论

借助Simulink及其功能模块集合进行设计与验证工作,在实现自动驾驶汽车自动紧急制动系统(AEB)的关键环节上展现出显著的技术优势。基于这一系统建模与仿真的完整流程体系,在真实环境下的硬件在环测试环节中均能获得理想的实验结果。该创新性项目重点介绍了利用Simulink完成智能驾驶系统的核心构建过程,并详细阐述了相关的软件实现方案以及仿真验证的具体步骤设置,在实际工程应用中具有重要的参考价值

全部评论 (0)

还没有任何评论哟~