本文属于ADAS控制器开发系列。以智能前视摄像头模块为基础。
前言
General模块还剩PowerModel、Manufacturing、Packaging、Mounting、SPI等,暂时不想写这些了,毕竟哪个ECU基本都包含这些BuildingBlocks,准备往后放放。既然是在搞ADAS/AD开发,先讲讲一些与ADAS/AD相关的算法和功能吧!
本文先讲讲一个常见的ADAS功能:LDW/LKA。这个功能实际上就是ADAS层面的车辆基本横向控制功能,输出转向扭矩,通过与EPS通信,让EPS控制转向执行器(转向电机)来进行车辆的横向控制。
在ADAS/AD控制器模块开发06-高精地图与自动驾驶中大致讲过LDW/LKA功能的基本实现方式。车道线检测算法会用专门一篇文章来介绍,本文主要介绍下基于MATLAB/Simulink开发的LDW/LKAmodel。
正文
一、输入信号
LDW/LKA功能有两种输入信号类型,一个来自整车CAN网络的车辆信号(Vehiclesignals),一个来自底层检测算法的视觉信号(Visionsignals)。
车辆信号一般需要经过转换,才能传入Feature中。原因在于,ADAS领域被Tier1霸占,相关Feature一般也是在国外开发完成的。因此,模型中的信号都是某个具体项目、具体车型的信号。拿到国内后,为了提高开发效率,并不会修改模型中的具体信号,而是创建一个TranslatorIn模块和一个Translatorout模块,将国内项目中不同的车型的CAN信号,转化为模型内对应的(信号名不完全相同)信号。举个例子,国内某个车型上的Yawrate信号来自于安全气囊控制器的ACU1CAN消息中,名字叫做DynYawRate;但是模型中的对应Yawrate信号名字来自与国外某车型的IMU的imu_msg2CAN消息中,且信号名字为imu_yawrate。那么在,translatorIn中,就将这两个信号相等就OK了。这里的难点在于,会存在模型里有的信号,在国内某个具体车型中不存在,这个时候需要分析该信号在feature中所起的作用,是否可以通过赋值一个常量或者直接terminator掉。
视觉信号,一般在底层算法中,封装成结构化数据发送到上层feature中。在LKAfeature中,视觉信号通常以三阶车道线模型(公式)存在,如图2
图2三阶车道线模型
两种不同来源的信号进入到feature中,就会进入数据处理模块。
二、数据处理模块
1处理车辆相关信号
数据处理一般就是滤波、积分、增益、根据原始信号计算一些用于做判断的Flag逻辑信号等处理方式。
a.滤波:对YawRate、DriverAppliedTorque进行滤波;
b.增益:对车速信号进行增益,计算出仪表盘显示车速;(一般为了安全起见,仪表显示的车速会故意在原始车速的基础上,乘以一个系数,例如1.1/1.08等,使车速看起来更快,来引导驾驶员开车速度稍慢于真实车速,避免车辆超速)
c.计算Flag信号:
1.计算显著转向FLag信号(显著转向,就是指LKA作用过程中,探测驾驶员主动转向的场景,一般的标定值为60度,即当驾驶员强行扭转方向盘,且幅度超过60度时,系统认为驾驶员有意进行转向,那么系统会自动退出,让出控制权,且保持10秒钟;这10秒钟之内不再探测新的驾驶员主动转向场景;这里的10秒钟,也是一个标定值);
2.计算SteerAngleChangeRateInhibitFlag信号(即方向盘转角变化率抑制信号,如果方向盘转角变化率过快,就判定是驾驶员在主动快速介入转向,那么系统应该赶快退出。这里的转角变化率阈值,是一个二维表,随车速的增加、变化率阈值的标定会越来越小)
3.计算AccelerationPedalInhibitFlag信号(同上逻辑类似,也是通过加速踏板位置、加速踏板位置变化率、车速信号、档位信号、纵向加速度信号等,通过一定判断,得出是否驾驶员主动踩油门踏板)
4.计算BrakePedalInhibitFlag信号(同上逻辑)
该模块的常见输入信号如图2/3/4:
图2数据处理模块输入信号1
图3数据处理模块输入信号2
图4数据处理模块输入信号3
三、决策模块和主状态机
决策模块(SystemCore)一般是将处理好的各种原始信号+可直接被决策使用的二次计算得出来的控制信号。决策模块中有大量标定相关的参数。
例如决策模块中的信号流,在进入状态机之前,会进入几个计算模块。包括:
四、前馈PIDController扭矩控制器
(完)
全部评论 (0)