AEB-自动紧急制动系统 AEB 主动制动 紧急制动 避障系统 CCRS CCRM CCRB 包含三种工况-前方静止 前方匀速 前方减速 车辆行驶过程中,利用主动制动的方式躲避前方障碍物。 主要利用制动安全距离进行判断,并利用车辆逆动力学模型进行制动主缸压力计算。 安全距离模型 Mazda模型 Honda模型 SeungwukMoon模型 Berkeley模型 所有资料包括: 1、相关问题的文档分析 2、simulink模型和carsim模型(simulink为2021b carsim为2019) 3、可代转simulink版本(文件中有转好2018a版本)
当刹车比脚快:扒一扒AEB系统背后的代码逻辑
路上突然窜出个电瓶车,你还没反应过来,车自己先刹停了——这就是AEB(自动紧急制动)在干活。这玩意儿现在基本成了新车标配,但你知道它的代码里到底藏了多少“心机”吗?今天咱们直接掀开Simulink模型,看看工程师是怎么让钢铁猛兽学会“怂”的。
一、前方有障碍?先算安全距离
AEB的核心逻辑就一句话:刹不刹得住?但怎么判断这个“刹得住”呢?业界老油条们搞出了各种安全距离模型,比如Berkeley模型这种硬核派。它的数学公式长这样:
% Berkeley安全距离模型 function S = Berkeley_Safe_Distance(v_ego, a_max, T_driver) S = v_ego * T_driver + (v_ego^2) / (2 * a_max); end别看这代码只有两行,暗藏玄机:
T_driver是司机反应时间(默认1.2秒,别问我为啥是这个数,问就是人类平均手速)a_max是最大制动减速度(一般取0.8g,相当于急刹时安全带勒死你的力度)
这公式的意思直白得很:刹停距离 = 人类发呆时车溜的距离 + 刹车踩死后滑行的距离。要是雷达检测到障碍物距离小于这个值,系统直接抢过方向盘...哦不,是抢过刹车踏板。
二、压力山大:制动主缸压力怎么算?
知道要刹车了,但踩多少力度呢?这里要用逆动力学模型倒推——说白了就是根据想要的减速度,反推刹车泵该打多少压力。
AEB-自动紧急制动系统 AEB 主动制动 紧急制动 避障系统 CCRS CCRM CCRB 包含三种工况-前方静止 前方匀速 前方减速 车辆行驶过程中,利用主动制动的方式躲避前方障碍物。 主要利用制动安全距离进行判断,并利用车辆逆动力学模型进行制动主缸压力计算。 安全距离模型 Mazda模型 Honda模型 SeungwukMoon模型 Berkeley模型 所有资料包括: 1、相关问题的文档分析 2、simulink模型和carsim模型(simulink为2021b carsim为2019) 3、可代转simulink版本(文件中有转好2018a版本)
在Simulink模型里通常会看到这样的逻辑:
% 制动压力计算模块 function P = Brake_Pressure_Calc(a_desired, mass) mu = 0.85; % 轮胎路面摩擦系数 r = 0.3; % 轮胎半径 P = (a_desired * mass * r) / (4 * mu); % 四轮均摊压力 end重点来了:
- 摩擦系数
mu是个玄学参数,雨天直接砍半 - 轮胎半径
r别傻乎乎用标称值,胎压不足时可能缩水 - 实际工程中这里还要叠加上ESP系统的压力补偿,代码能复杂三倍
三、三大工况:代码里的if-else地狱
前方障碍物可不是只会站桩输出,AEB得应付三种老六行为:
- 静止目标(CCRs)——比如抛锚的货车
- 匀速移动(CCRm)——比如慢悠悠的三轮车
- 减速移动(CCRb)——比如突然抽风的网约车
在CarSim联合仿真时,状态机代码大概是这个画风:
% 工况判断逻辑 if target_speed == 0 mode = 'CCRs'; safe_dist = Berkeley_Safe_Distance(ego_speed, 8, 1.2); // 8m/s²减速度 elseif target_accel == 0 mode = 'CCRm'; safe_dist += 0.5 * target_speed * reaction_time; // 追加移动补偿 else mode = 'CCRb'; safe_dist *= 1.2; // 老司机の秘技:保守系数 end看出门道没?对付减速的前车,系统会偷偷把安全距离加20%——宁可误刹也不能撞上,毕竟保险公司可不认代码bug。
四、模型实战:Simulink的骚操作
在2021b的Simulink模型里(别拿2018a的模型硬套,版本不兼容能让你哭),AEB控制器一般长这样:
!Simulink模块示意图
重点模块解析:
- TTC计算器:用相对速度除以距离,小于2.6秒就触发预警(别纠结这个数,主机厂做了2000次测试得出的玄学阈值)
- 压力渐变器:不是直接怼最大压力,而是用斜坡函数防止乘客磕掉门牙
- 抑制模块:监测油门踩踏,司机在跺油门时暂不触发(避免和人类对杠)
资源彩蛋:
- 文档里藏着某大厂的AEB测试用例——原来他们用《头文字D》片段当测试场景?
- CarSim模型里的神秘参数"Road_DB",打开发现居然有秋名山五连发卡弯数据...
- 转版本时注意:2018a的Lookup Table模块会抽风,得手动改插值算法
下次开车触发AEB别慌,说不定是代码里的if(mode=='CCRb')正在为你负重前行呢(手动狗头)。