技术文章和通讯

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

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


后端碰撞是货运卡车和其他重型车辆的最常见的事故类型。为降低后端碰撞的风险,2015年,欧盟为所有新车提供了先进的紧急制动系统(AEB)。

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

图1.顶部:AEBS概述。底部:典型的AEBS场景,其中安装带有AEB的卡车接近慢速移动的车辆。

AEBS使用安装在车辆正面的雷达和相机传感器,以扫描前方区域的物体。该系统利用每个传感器的特定优点来获得更精确的环境模型。雷达传感器在确定物体的范围,相对速度和稳定度时excel,但不太能够确定其形状或横向位置。仅使用雷达的系统会发现很难将停放在路边的汽车从驾驶员的车道中的一行区分开。另一方面,相机可以定位物体的尺寸和横向位置,但不透射且无法评估密度(可以被感知为固体物体的密度)。

我的同事和我建立了一个传感器融合系统,它与两个传感器的数据匹配并将数据合并到一个对象中。该系统使用四个加权属性 - 纵向速度和位置和横向速度和位置 - 计算两个传感器检测到相同对象的概率。一旦传感器融合系统识别到主车辆路径中的对象,它将对象的位置和车辆的投影路径传递给AEB,这决定了何时提醒驾驶员或接合制动器。

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

构建传感器融合系统

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

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

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

图3. Matlab中开发的传感器可视化工具。

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

图4. AEBS软件的受控道路测试。两个车辆之间的梯形物体是“软目标”,其旨在类似于用于“愚弄”雷达和相机的车辆。

实现系统和优化性能

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

为了从生成的代码中获得最大的性能,我们与Mathworks Pilot团队合作,帮助我们优化从Matlab编码器生成的代码。为了进一步减少处理负荷,我们将模型划分为在交替周期上执行的单独部分。例如,我们在每个循环上运行静止和移动对象的计算,而不是在交替周期上运行它们。我们意识到,处理器被我们的系统呼叫的三角函数陷入困境。为了缓解这个问题,我们在C中写了三角近似函数并从MATLAB功能块调用它们。这些修改不仅提高了传感器融合码的效率,它们还使AEBS软件能够更快地反应,当车辆在公路速度和每毫秒计数中行驶时至关重要。

验证和改进设计

我们在关闭课程上测试了车载设计内容,但我们需要了解系统如何在现实世界驾驶场景中的反应,例如不同的天气条件,交通模式和驾驶员行为。在这些条件下直接测试Aebs是不切实际的,并且不安全。相反,我们使用了基于模拟的工作流程。我们开始通过从卡车队列的数据收集数据。我们决定收集ECU上可用的所有数据 - 而不仅仅是来自用于传感器融合的雷达和相机的数据以及来自单独参考相机的图像。

使用此舰队测试数据,我们运行模拟,以确定有趣的驾驶场景 - 其中介入的AEBS介入驾驶员或接合制动器,以及系统可以进行干预但没有 - 例如,当驾驶员按下时喇叭并同时烘烤,急剧繁体,或急剧烘烤。重点关注这些场景,我们分析了AEBS的表现,以确定我们可以改善设计的领域。

我们需要每次更新AEBS软件时重新调整。然而,超过80多字节的真正的交通数据记录超过150万公里的驾驶,花了几天的时间来运行单一的仿真。

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

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

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

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

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

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

发布于2016 - 93016v00