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

斯堪尼亚(Scania)的约翰尼·安德森(Jonny Andersson)著


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

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

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

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

我和我的同事建立了一个传感器融合系统,将来自两个传感器的数据匹配并合并到一个单一的对象中。该系统使用四种加权性质——纵向速度和位置以及横向速度和位置——来计算两个传感器探测到同一物体的概率。传感器融合系统一旦识别出主车辆路径上的物体,就会将物体的位置和车辆的投影路径传递给AEBS,由AEBS决定何时报警或刹车。

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

构建传感器融合系统

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

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

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

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

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

图4。AEBS软件的控制路况测试。两辆车之间的梯形物体是一个“软目标”,旨在模仿一辆用来“欺骗”雷达和摄像机的车辆。

实现系统和优化性能

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

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

验证和优化设计

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

使用这个舰队测试数据我们跑模拟来确定有趣的驾驶scenarios-scenarios AEBS干预提醒司机或刹车,和场景的系统干预但暂时,例如,当司机按喇叭,同时制动,转向,或大幅度的下滑。针对这些情况,我们分析了AEBS的性能,以确定我们可以改进设计的领域。

每次更新AEBS软件我们都需要重新模拟。然而,在超过150万公里的驾驶里程中,记录了超过80兆兆字节的真实交通数据,因此运行一次模拟需要花费数天时间。

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

识别和分类潜在的有趣的场景tb的数据是一个繁琐和耗时的任务,所以我们开发情况分类助理模块,基于MATLAB工具,自动化,过程的一部分(图5)。该工具生成一个列表从模拟的事件,如碰撞警告,报警刹车、系统启动的全刹车,以及驾驶员启动的硬刹车和急转弯。然后我们可以将这些列表与我们的软件的任意两个版本进行比较。

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

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

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

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

文章刊登在MathWorks新闻和笔记

发布于2016 - 93016v00

查看相关行业的文章