技术文章及通讯

在斯堪尼亚开发先进的紧急制动系统

作者:乔尼·安德森,斯堪尼亚


追尾事故是货运卡车和其他重型车辆最常见的事故类型。为了降低追尾事故的风险,2015年,欧盟要求所有新车都配备先进的紧急制动系统(AEBS)。

与其他高级驾驶辅助系统(ADAS)一样,AEBS使用来自传感器的输入来筛选环境。当即将发生碰撞时,系统会发出声音警报提醒司机。如果驾驶员没有反应,系统就会启动警告刹车。如果驾驶员仍然没有反应,系统会完全刹车以避免碰撞(图1)。AEBS还提供“制动辅助”:当驾驶员刹车时,但力不足以避免碰撞,系统会计算并施加所需的额外制动力。

图1。上图:AEBS概述。下图:典型的AEBS场景,安装了AEBS的卡车接近一辆缓慢行驶的车辆。

图1。上图:AEBS概述。下图:典型的AEBS场景,安装了AEBS的卡车接近一辆缓慢行驶的车辆。

AEBS使用安装在车辆前部的雷达和摄像头传感器来扫描前方区域的物体。该系统利用每个传感器的特定优势来获得更精确的环境模型。雷达传感器擅长确定物体的范围、相对速度和坚固度,但不太能确定物体的形状或横向位置。仅使用雷达的系统将很难区分停在路边的汽车和停在驾驶车道上的汽车。另一方面,相机可以精确定位物体的大小和横向位置,但不能很好地探测距离,也不能评估密度(稠密的云可能被视为固体物体)。

我和同事们建立了一个传感器融合系统,可以将两个传感器的数据匹配并合并到一个物体上。该系统使用四个加权属性——纵向速度和位置以及横向速度和位置——来计算两个传感器检测到同一物体的概率。一旦传感器融合系统在主机车辆的路径上识别出一个物体,它就会将物体的位置和车辆的投影路径传递给AEBS, AEBS决定何时向驾驶员发出警报或踩下刹车。

我们的团队之前使用基于模型的设计开发了一个使用雷达技术的自适应巡航控制系统,但我们之前从未开发过传感器融合系统。因为这是一个新的设计,我们知道我们需要一个可读、可理解的架构来可视化信号流。我们还预计会有很多设计迭代,所以我们想要一种简单的方法来可视化结果和调试我们的设计。此外,我们希望通过生成代码来节省时间,但代码必须是高效的,因为当我们开始传感器融合项目时,我们电子控制单元(ECU)上的CPU负载已经达到了60%左右。最后,我们需要彻底验证我们的设计——我们的计划是基于超过150万公里的传感器数据进行模拟。基于模型的设计满足了所有这些要求。

构建传感器融合系统

我们首先将系统设计划分为功能单元,例如对象匹配和投影路径放置,并构建一个单独的Simulink金宝app®块为每个单元。结果是一个清晰的软件架构,接口定义良好(图2)。我们编写了MATLAB®用于轨道关联的代码,计算方差,计算加权概率,并执行其他用脚本比用块更容易实现的任务,并将此代码与MATLAB函数块集成到我们的Simulink模型中。金宝app这些算法块使得团队成员可以很容易地合并他们的算法并将它们集成到控制系统中。

图2。金宝appSimulink模型的传感器融合系统显示独立的功能块。

图2。金宝appSimulink模型的传感器融合系统显示独立的功能块。

为了调试和完善我们的初始设计,我们使用记录的雷达传感器数据、相应的相机图像和其他车辆传感器数据进行了模拟。在调试过程中,我们发现将传感器数据与车辆前方的摄像头视图一起可视化非常有用。我们在MATLAB中构建了一个可视化工具,该工具可以显示与周围交通的网络摄像头视图同步的传感器融合数据(图3)。利用MATLAB的面向对象编程功能,该工具使用MATLAB类来表示任何传感器检测到的每个对象以及传感器融合系统感知的统一对象。这些MATLAB对象使我们能够在可视化数据时快速前进和后退。

图3。用MATLAB开发的传感器可视化工具。

图3。用MATLAB开发的传感器可视化工具。

我们在道路测试中使用了相同的工具来可视化来自车辆网络的实时数据(图4)。

图4。AEBS软件的受控道路测试。两辆车之间的梯形物体是一个“软目标”,被设计成类似于用来“欺骗”雷达和摄像机的车辆。

图4。AEBS软件的受控道路测试。两辆车之间的梯形物体是一个“软目标”,被设计成类似于用来“欺骗”雷达和摄像机的车辆。

实施制度,优化绩效

为了将传感器融合系统部署到ECU,我们使用嵌入式编码器从我们的Simulink模型生成C代码金宝app®.通过代码生成,我们能够快速实现,并避免编码错误。ECU处理器的大部分资源分配给维护功能——监控仪表板警报、物理估计、数据网关、自适应巡航控制等等。因此,我们需要优化我们的初始设计以提高其效率。

为了从生成的代码中获得最大的性能,我们与MathWorks试点团队合作,他们帮助我们优化从MATLAB Coder生成的代码。为了进一步减少处理负载,我们将模型划分为交替循环执行的独立部分。例如,我们不是在每个循环中运行静止和移动物体的计算,而是在交替循环中运行它们。我们意识到处理器被系统调用的三角函数卡住了。为了缓解这个问题,我们用C语言编写了三角逼近函数,并在MATLAB函数块中调用它们。这些改进不仅提高了传感器融合代码的效率,还使AEBS软件能够更快地做出反应,这在车辆以高速公路速度行驶时至关重要,每一毫秒都很重要。

验证和改进设计

我们在一个封闭的赛道上测试了设计,但我们需要知道系统在真实的驾驶场景中会如何反应,比如不同的天气条件、交通模式和司机行为。在这种条件下直接测试AEBS是不现实的,也是不安全的。相反,我们使用了一个基于模拟的工作流。我们开始从一队卡车上收集数据。我们决定收集ecu上的所有可用数据,而不仅仅是用于传感器融合的雷达和摄像机的数据,以及来自单独参考摄像机的图像。

使用这些车队测试数据,我们进行了模拟,以确定有趣的驾驶场景——AEBS干预警告驾驶员或踩下刹车的场景,以及系统本可以干预但没有干预的场景——例如,当驾驶员按下喇叭并同时刹车、转向或急刹车时。针对这些场景,我们分析了AEBS的性能,以确定可以改进设计的领域。

每次更新AEBS软件时,我们都需要重新模拟。然而,超过80tb的真实交通数据记录了超过150万公里的驾驶,运行一次模拟需要几天时间。

为了加速模拟,我们使用嵌入式Coder从Simulink模型生成的代码构建了一个模拟器。金宝app模拟器读取和写入与我们的Simulink模型相同的mat文件,但运行模拟的速度快150倍。金宝app为了进一步加快模拟速度,我们编写了MATLAB脚本,在我们部门的多台计算机以及专用的多处理器服务器上运行模拟,在那里我们并行运行了多达300个模拟。通过这种设置,我们将模拟150万公里所需的时间缩短至12小时。当我们在仿真器中发现一个新的有趣的场景时,我们在Simulink中重新运行仿真以深入分析它。金宝app

在tb级的数据中识别和分类可能有趣的场景是一项繁琐而耗时的任务,因此我们开发了情景分类助手模块,这是一个基于MATLAB的工具,可以自动完成这部分过程(图5)。该工具从模拟中生成了一系列事件,例如碰撞警告、警告刹车和系统启动的完全刹车,以及司机启动的急转弯和急刹车。然后,我们可以比较我们软件的任何两个版本的这些列表。

图5。情况分类助手模块,一个基于MATLAB的工具,用于处理记录的ECU数据,并自动识别与紧急制动相关的情况。

图5。情况分类助手模块,一个基于MATLAB的工具,用于处理记录的ECU数据,并自动识别与紧急制动相关的情况。

执行大量模拟的能力增强了AEBS功能和ECU生产代码实现的鲁棒性和安全性。它还使我们能够更快地进行更改。我们对这些变化有信心,因为我们在模拟中使用了所有可用的数据来测试数千个场景。

在生产ADAS中部署生成的代码

大多数斯堪尼亚卡车和巴士现在都配备了AEBS,运行由Simulink模型生成的生产代码,并通过大量仿真验证。金宝app我们在斯堪尼亚的自适应巡航控制系统中重新使用了我们的传感器融合系统设计,目前在路上的车辆超过10万辆。

发布2016 - 93016v00