紧急制动AEB 模型Carsim与Simulink联合仿真。车辆行驶过程中利用主动制动的方式躲避前方障碍物。主要利用制动安全距离进行判断并利用车辆逆动力学模型进行制动主缸压力计算。TTC算法计算安全距离模型版本simulink有多个版本carsim2019该方案包含以下核心模块TTC碰撞时间计算与安全距离模型判断是否需要触发制动。车辆逆动力学模型根据期望减速度计算所需的制动主缸压力。CarSim 接口设置定义输入输出变量。 1. 理论基础与数学模型TTC 与安全距离模型AEB 的触发逻辑基于碰撞时间 (TTC) 和最小安全距离 (d_{safe})。TTC 计算公式TTC frac{d_{rel}}{v_{rel}}其中d_{rel}自车与障碍物的相对距离。v_{rel}自车与障碍物的相对速度 (v_{ego} - v_{target})。安全距离模型为了误触发通常设定一个动态安全阈值。如果实际距离 d_{rel} le d_{safe}则触发制动。d_{safe} d_{0} v_{ego} cdot t_{react} frac{v_{ego}^2}{2 cdot a_{max}} - frac{v_{target}^2}{2 cdot a_{target}}简化版假设前车静止或匀速且关注自车完全停止d_{safe} v_{ego} cdot t_{delay} frac{v_{ego}^2}{2 cdot a_{comfort}}其中 t_{delay} 为系统响应延迟a_{comfort} 为舒适减速度。车辆逆动力学模型 (制动压力计算)利用纵向动力学方程反推制动主缸压力 (P_{mc})。纵向运动方程F_{total} m cdot a_{req} F_{brake} F_{drag} F_{roll}忽略风阻和滚动阻力或作为扰动处理主要制动力由制动器提供F_{brake} approx m cdot a_{req}制动器力矩与压力的关系T_{brake} F_{brake} cdot r_{eff} 2 cdot mu cdot A_{piston} cdot P_{mc} cdot r_{eff} cdot eta(注这里假设四轮制动且前后轴分配比例简化处理或者仅计算总需求)反解主缸压力 P_{mc}P_{mc} frac{m cdot a_{req}}{K_{brake_gain}}其中 K_{brake_gain} 是制动系统的总增益系数包含卡钳摩擦系数、活塞面积、轮胎半径等。 2. Simulink 模型搭建与代码逻辑在 Simulink 中你需要搭建一个包含 S-Function 或 MATLAB Function 的模块来实现上述逻辑。步骤 A: CarSim 设置打开 CarSim选择 Full Vehicle 模型。设置路面为平直路面。设置前方有一个固定障碍物或者使用 CarSim 的 “Target Vehicle” 功能将其速度设为 0。进入 Simulink 菜单 - Export to Simulink。关键设置Input to Vehicle (从 Simulink 到 CarSim): 选择 BRAKE_PRESSURE (主缸压力单位 bar 或 Pa)。Output from Vehicle (从 CarSim 到 Simulink): 选择 V_X (车速), X_POS (纵向位置)。注意你需要定义障碍物的位置。如果 CarSim 内部没有直接输出障碍物距离你可以在 Simulink 中定义一个常数作为障碍物位置或者使用 CarSim 的 “3D Graphics” 中的目标车辆位置输出。步骤 B: Simulink 控制策略代码 (MATLAB Function Block)在 Simulink 中拖入一个 “MATLAB Function” 模块并填入以下代码。这段代码实现了 TTC 判断和逆动力学压力计算。function brake_pressure AEB_Controller(V_ego, X_ego, V_target, X_target)%#codegen% 输入参数:% V_ego: 自车速度 (m/s)% X_ego: 自车纵向位置 (m)% V_target: 目标障碍物速度 (m/s)% X_target: 目标障碍物纵向位置 (m)% 输出参数:% brake_pressure: 制动主缸压力 (bar)%% 1. 参数定义m 1500; % 车辆质量 (kg)g 9.81; % 重力加速度a_max 8; % 最大减速度 (m/s^2)a_comfort 4; % 舒适减速度/请求减速度 (m/s^2)t_delay 0.2; % 系统延迟时间 (s)d_min 5; % 最小停车距离 (m)% 制动系统增益系数 (经验值需根据具体车型标定) % 物理含义1 bar 压力产生的纵向减速度 (m/s^2/bar) K_brake 0.8;%% 2. 计算相对状态d_rel X_target - X_ego; % 相对距离v_rel V_ego - V_target; % 相对速度% 防止除零和负距离 if d_rel 0.1 TTC d_rel / v_rel; else TTC 999; % 相对速度为0或负无碰撞风险 end%% 3. 安全距离模型判断% 计算动态安全距离% 假设前车静止或速度较慢主要考虑自车制动距离d_safe d_min V_ego * t_delay (V_ego^2) / (2 * a_comfort);% 简单的 TTC 阈值判断 (例如 TTC 1.0 % 车速过低不触发 trigger_flag true; end end%% 4. 逆动力学计算制动压力if trigger_flag% 请求减速度 (这里简单设为舒适减速度也可以根据距离误差做PID控制)a_req a_comfort;% 逆模型P F / K % F m * a_req % P (bar) (m * a_req) / (100000 * K_factor) - 简化为经验公式 % 使用增益 K_brake 直接计算 brake_pressure (m * a_req) / (m * K_brake) * 10; %10 是为了模拟压力上升特性纯理论应为 ma/K % 限制最大压力 (例如 120 bar) if brake_pressure 120 brake_pressure 120; end else brake_pressure 0; endend️ 3. 联合仿真连接图解在 Simulink 的模型视图中连接关系如下CarSim S-Function 模块:Output Ports: 连接到信号总线解出 V_ego (m/s), X_ego (m)。Input Ports: 接收 Brake_Pressure。障碍物模型 (Simulink Constant):设置一个 Constant 模块代表障碍物位置 X_target (例如 100m)。设置一个 Constant 模块代表障碍物速度 V_target (例如 0 m/s)。AEB_Controller (MATLAB Function):输入来自 CarSim 的 V_ego, X_ego 以及上述的障碍物常数。输出计算出的 brake_pressure。反馈回路:将 brake_pressure 连接回 CarSim S-Function 的输入端口。 4. 结果分析与调试建议运行仿真后观察以下 Scope 曲线相对距离 (d_{rel}): 应逐渐减小但在接触障碍物前停止减小。车速 (V_{ego}): 在触发 AEB 后速度应呈现线性或平滑下降直至为 0。制动压力 (P_{mc}): 触发瞬间应有一个阶跃上升随后保持稳定或根据控制策略调整。TTC: 应看到 TTC 数值随时间下降当触碰到阈值如 2.5s时制动压力生效。调试提示:如果车辆停不下来增大 K_brake 系数或增大 a_req。如果制动太晚导致碰撞减小 t_delay 或增大 t_delay 在安全距离公式中的权重或者减小 ttc_threshold。CarSim 版本兼容性CarSim 2019 与较新版本的 Simulink 兼容良好但需确保 CarSim 安装目录下的 carsim_sfun.mexw64 (Windows) 文件在 MATLAB 路径中。 总结该模型利用 TTC 和 安全距离 双重校验来触发 AEB并通过简化的 逆动力学公式 (P frac{m cdot a}{K}) 将期望减速度转化为 CarSim 可识别的制动压力。这种方法计算量小实时性强非常适合早期的控制策略验证。AEB 决策逻辑代码 (TTC与安全距离)这部分代码用于判断是否触发制动。请在 Simulink 中添加一个 MATLAB Function 模块命名为 AEB_Controller并粘贴以下代码function [brake_enable, target_decel] AEB_Controller(rel_dist, rel_vel, v_ego)% 输入:% rel_dist: 相对距离 (m)% rel_vel: 相对速度 (m/s), v_ego - v_target% v_ego: 自车速度 (m/s)% 输出:% brake_enable: 制动触发标志 (0/1)% target_decel: 目标减速度 (m/s^2)% — 参数定义 —TTC_Threshold 2.5; % TTC 触发阈值 (秒)D_Safety_Min 10.0; % 最小安全距离硬阈值 (米)Comfort_Decel 6.0; % 舒适减速度/目标减速度 (m/s^2)% 初始化输出brake_enable 0;target_decel 0;% — 保护逻辑防止除以0或负距离 —if rel_dist 0 rel_vel 0.1 % 只有在接近前车时才计算% 1. 计算 TTC TTC rel_dist / rel_vel; % 2. 计算理论安全距离 (简化模型) % 假设反应时间 0.5s加上基于当前减速度的制动距离 D_Safety_Calc (v_ego * 0.5) (v_ego^2 / (2 * Comfort_Decel)); % 3. 综合判断逻辑 % 条件1: TTC 小于阈值 % 条件2: 实际距离 小于 理论安全距离 % 条件3: 实际距离 小于 最小硬阈值 (最后一道防线) if (TTC P_mc 逻辑。根据牛顿第二定律反推压力。请在 Simulink 中添加 MATLAB Function 模块命名为 Inv_Dynamicsfunction P_mc Inv_Dynamics(a_req, v_ego)% 输入:% a_req: 请求的减速度 (正值, m/s^2)% v_ego: 当前车速 (用于查表或修正此处简化为常数参数)% 输出:% P_mc: 制动主缸压力 (bar)% — 车辆参数 (需与CarSim一致) —m 1500; % 整车质量 kgg 9.81; % 重力加速度f_r 0.015; % 滚动阻力系数r_wheel 0.3; % 轮胎半径 mK_brake 2000; % 制动增益系数 (N/bar)这是一个标定值需根据CarSim车型调整% — 1. 计算所需总制动力 —% F_total m * a F_brake F_rolling_resistance (忽略风阻简化)% F_brake m * a - m * g * f_rF_brake_needed m * a_req - m * g * f_r;% — 2. 考虑制动系统延迟 (一阶惯性环节近似) —% 此处仅为静态映射动态延迟建议在Simulink使用 Transfer Function 模块实现% s - P_mc 关系% P_mc F_brake / K_brakeif F_brake_needed 150P_mc 150;endendSimulink 搭建与 CarSim 联合仿真设置输入信号 (From CarSim)你需要从 CarSim 导入Vx (车速), X (位置), Target_Dist (相对距离如果CarSim里有障碍物模型), Target_Vel。在 Simulink 中使用 Inport 模块接收这些信号。AEB 逻辑模块使用上述代码 1。输入连接rel_dist, rel_vel, v_ego。输出brake_enable (布尔值), target_decel。逆动力学模块使用上述代码 2。输入连接target_decel (来自 AEB 模块), v_ego。输出P_mc (主缸压力)。输出信号 (To CarSim)将最终计算出的压力信号连接到 Outport 模块。在 CarSim 的 Simulink Interface 设置中确保该信号被映射到 Braking Main Cylinder Pressure。