技术文章及通讯

基于模型设计的驾驶员监控系统AUTOSAR自适应软件开发

作者:Thomas Kleinhenz, Seyed Nourbakhsh, Stefan Zürbes, Elektrobit


全球超过1亿辆汽车中超过10亿台设备运行着Elektrobit开发的嵌入式软件。该软件的大部分是使用标准v模型和ASPICE流程开发和验证的。虽然这些设备运行良好,但由于手工编码和其他劳动密集型的手工任务,应用软件开发速度减慢了。

我们的团队开始展示基于模型的设计可以加速端到端AUTOSAR自适应软件系统的开发。我们选择的项目是一个原型司机监控系统,如果司机的眼睛闭上,但没有立即重新睁开,就会发出警报,表明司机睡着了(图1)。为了说明我们可以如何有效地使用基于模型的设计开发嵌入式软件,我们给自己设定了一个雄心勃勃的截止日期:在短短三个月内设计、实现、测试和验证整个系统。如果使用传统方法,同样的项目至少需要一年的时间。

图1所示。驾驶员监控系统的仿真,显示视频流中人脸和眼睛的检测。

图1所示。驾驶员监控系统的仿真,显示视频流中人脸和眼睛的检测。

定义需求和划分设计

我们通过定义需求开始项目。高级需求包括即使司机戴着眼镜也能检测到闭眼,将误报率保持在3%以下,并通过Adaptive AUTOSAR向EB人机界面(HMI)发送警报。

在这个早期阶段,我们与MathWorks工程师一起开发系统体系结构,并将我们的需求映射到体系结构中的功能块(图2)。在顶层,我们的设计有两个主要块。第一个是计算机视觉组件,它处理来自摄像头的输入并根据视频流生成信号——例如,“检测到面部”、“检测到眼睛”和“闭上眼睛”。第二个是AUTOSAR Adaptive功能块,用于过滤这些信号并确定是否触发警报。该块包括到EB corbos AdaptiveCore软件框架的接口,该框架用于将该块与HMI集成。

图2。驾驶员监控系统的顶级Simulink模型。

图2。驾驶员监控系统的顶级Simulink模型。

建模和验证设计

通过将设计划分为具有明确定义的接口的组件(图3),我们能够独立地处理每个组件。我们在Simulink中对计算机视觉组件建模®,使用预先训练好的深度学习网络和计算机视觉工具箱™来检测面部和眼睛。为了验证这个模型,我们进行了模拟,在模拟中,模型处理了预先录制的司机面部视频。这些视频是从不同的角度和不同的环境光线条件下录制的。它包括戴眼镜和不戴眼镜的司机,以确保系统能够在一系列操作场景下检测到闭着眼。

图3。Simulink模型的计算机视觉组件和滤波组件。

图3。计算机视觉组件(上)和滤波组件(下)的Simulink模型。

过滤组件将计算机视觉组件的输出作为输入。它跟踪“眼睛检测到”和“眼睛闭合”信号的值,过滤掉短眨眼,当这些信号表明驾驶员的眼睛闭合时间过长时,通过AUTOSAR自适应通信向EB AdaptiveCore软件框架发起警报。我们从顶层的Simulink模型中生成了一个单元测试模型,这样我们就可以按照ISO 26262执行系统验证和设计评估。

代码生成和硬件部署

在通过仿真验证设计之后,我们在原型硬件设置上部署并测试它。安装由两块树莓派™3 B+板组成,一块用于DMS系统,另一块用于测试设置,包括HMI、驱动程序输入和环境。两块板子通过以太网连接(图4)。

图4。硬件测试设置。

图4。硬件测试设置。

我们产生了MISRA®兼容计算机视觉组件和过滤组件的C/ c++代码。在编译完计算机视觉组件代码后,我们直接将其部署到第一块树莓派板上。对于过滤组件,我们将生成的代码(包括ARXML文件)导入到EB corbos Studio中。我们在corbos Studio中编译了该组件,并将其作为AUTOSAR软件组件部署到同一个树莓派上。计算机视觉和过滤组件通过进程间通信(IPC)接口连接。第二个树莓派板用于运行EB corbos AdaptiveCore软件基础和EB GUIDE HMI来代表车辆仪表集群。

随着代码在两块板上运行,我们用实时摄像机视频流测试了系统,并验证了HMI在视频中的人闭上眼睛时正确地发出“闭上眼睛”警报。

从概念验证到实际应用

由于驱动程序管理系统是概念验证原型,因此在开发过程中不需要严格遵循ISO指南。然而,在为需要符合ISO标准的项目做准备时,我们使用Model Advisor来检查我们的模型的需求覆盖范围以及符合ISO 26262、ISO 61508和MISRA C:2012标准。

在EB演示了基于模型的设计加速自适应AUTOSAR软件开发的能力后,我们现在正在努力扩大其使用范围,并向汽车一级供应商和原始设备制造商演示。我们的团队计划将安全特性和处理器在循环测试整合到工作流程中,并且我们正在帮助其他EB位置的同事开始使用基于模型的设计。

2021年出版的

Baidu
map