【分享】MathWorks中国汽车年会:“软件定义汽车”

2024-01-19 13:28

本文主要是介绍【分享】MathWorks中国汽车年会:“软件定义汽车”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从软件赋能到软件定义,汽车行业不仅需要解决诸如错误发现滞后带来的高昂代价、功能融合所需的跨学科知识、功能安全与实施成本之间的权衡等老问题,也面临着新的挑战:软件复杂度的不断提升、利用数据驱动创造价值、人工智能的引入和实现、数字技术和工程能力的结合。这些问题和挑战同样也给予了行业审视和重塑软件开发体系的机会,让软件能成为未来价值的真正驱动力。

图片

在上个世纪七八十年代,电控系统开始逐步应用到车辆。在这个阶段软件大大提升了硬件的能力,这可以看作是行业的第一次数字化转型。在这次转型过程中面临了许多挑战。比如:

在设计方面,利益相关方无法有效进行评审。

在实现方面,错误发现过晚导致修复成本高。

在人员方面,汽车工程师不熟悉软件开发。

基于模型设计的方法,在这个背景下应运而生。它通过建模和仿真实现了设计的可执行和易理解。通过系统化的测试提前发现问题,通过自动代码生成技术,把汽车工程师从代码编写中解放了出来。

图片

随着社会对清洁和交通安全期望的进一步提升,以及互联网和移动数字体验的深入人心,公众希望在出行方式上保持这种体验的连续性。在这个背景下,行业迎来了以电动化、智能化和网联化为标志的第二次数字化转型,软件承担了前所未有的技术创新的角色,以至于产生了软件定义汽车这个概念。

软件可以作为独立的产品,以应用商店的形式,按需为用户提供功能,以软件服务订阅的方式来收费。这样的一个商业模式,满足了用户个性化和新体验的一个期望。

图片

这次转型对于组织架构和开发体系有着颠覆式的影响,他要求企业组织提高虚拟化的一个开发比重,重新构建供应链的体系,以及加大对员工的知识技能培训。对于软件开发体系,算力集中化以后该如何优化系统和软件架构,如何建立人工智能算法开发和集成能力?如何将素质能力和工程能力结合起来,构建一个虚拟化的开发流程?

对于如何解决这些问题,MathWorks认为系统工程、软件工厂、数据驱动和虚拟车辆是比较重要的能力。

图片

系统工程能力可以帮助软件创新至系统级优化。

软件工厂的能力可以帮助持续快速交付高质量的软件产品。

数据驱动的能力将人工智能算法集成到软件中来。虚拟车辆的能力是将以上三者进行一个整合,帮助在流程中引入虚拟原型,虚拟集成和虚拟验证的概念。

图片

具体来说,系统工程是用于解决复杂多学科系统设计的一个流程,复杂系统的开发通常面临着多重约束,比如相关方对于功能和性能的期望,成本预算和进度等等项目要求,以及工程上的可实现性。在软件定义汽车时代,车辆系统除了涉及机械电子控制等领域以外,还引入了计算机视觉信号处理,传感器融合、路径规划等等新的学科。这些功能的出现让车辆的结构和形态有了更多的可能性。

如何在开发的早期有限的信息下,找到一个既满足约束又相对优化的方案,将合理的功能需求分配到软件,需要依赖于系统工程的能力,将不同形态的模型贯穿到你的整个系统的需求、分析、设计、实施和验证的生命周期中,就是所谓的基于模型的系统工程。

图片

前面提到在第一次数字转型过程中,基于模型的设计方法起到了重要作用,那么基于模型的设计和基于模型的系统工程有什么联系?基于模型的设计侧重在软件,而基于模型的系统工程重心之一在进入软件开发之前的阶段,以市场需求、客户需求、法律法规需求作为输入,通过场景分析推导出系统应该具备的功能开展架构设计和功能分配,得到软件的设计需求和硬件的接口规范,再进入基于模型的设计阶段。

另外一个重心是系统的集成和验证,以模型为载体,系统过程扩展了基于模型设计的范畴,构建起从系统需求、系统架构到软件设计、软件实现、系统集成以至于系统运营的整个系统生命周期的一个数字化线索。

图片

软件工厂的首要目标是持续交付高质量的软件产品。除软件本身还应包括文档、报告、工件等产出。对于回归测试、度量统计、报告生成等高频任务也应该实现自动化。同时应该利用尚未自动化的流程探索阶段尽量查找并填补标准规范中的空白。因此关键问题在于:什么时候在软件工厂引入高频任务并自动化运行这些任务?

图片

应用基于模型设计的典型流程是首先导入设计需求,创建软件架构,以图形化建模的方式替代传统的文档设计规范,这种规范更易理解,也可以仿真。随着越来越多的设计细节加入到可执行规范中,我们可以得到用于产品及代码生成的模型。

图片

经过仿真测试后,这样的模型可以生成代码并编译下载到目标硬件中进行执行。在流程中仿真是关键,我们用它来填补需求验证的一个空白,但是仅仅如此还是不够的。对于安全关键应用的高质量软件要求,我们要采取更为严格的方法进行补充,并开展一些其他的验证活动。这些活动包括建立需求与软件架构,软件模块之间的追溯关系,对作为可执行规范的模型进行评审和静态分析,对生成的代码进行背靠背测试,最后在单元级的验证完成后,需要进行软件的集成测试。

图片

数据驱动的首要任务是是集成人工智能算法,并进一步赋能原有的系统。这中间有一些挑战:

如何将AI与已有技术进行集成?

原始数据的复杂度和质量问题怎么解决?

现有人员缺乏人工智能算法开发的相关技能怎么解决?

对于具体的组织来说,数据驱动成功的标志就是能够交付给市场基于AI技术的产品和服务。因此数据驱动要面对的问题是企业如何将真实系统和AI进行连接?如何让数据科学家和工程师进行一个有效的协同工作?

图片

对此MathWorks建议让工程师和数据科学家将AI整合到整个系统设计的一个工作流程中,可以分成4个主要阶段:数据准备、算法建模、仿真测试以及算法部署。

在数据准备期间,清洗和预处理非常重要。如果我们没有足够的数据,那么可以使用仿真来生成。在这个阶段具有专业领域知识的工程师是处理这些数据的最佳人选。

在模型的设计和调试阶段,自动化的训练步骤可以提供可视化的方法来理解和编辑深度的学习网络。也可以借助特定的平台来加速训练,并与主流的AI网络保持一个互联互通。算法开发完成以后,需要将它整合到更大的一个系统中进行仿真测试,让基于AI的感知算法与定位路径规划,还有控制算法进行协同。

在最后的算法部署阶段,对于AI算法要采用自动代码生成技术,消除手动编码的错误,同时采用灵活配置的方法,实现面向从嵌入式到企业系统或者云端的不同平台的一个灵活部署。这样的一个端到端的工作流是实现数据驱动落地的根基。

图片

虚拟车辆可以让功能设计者在几分钟内以适当的详细程度集成系统、软件和数据创建出一辆虚拟车辆,用于对功能进行仿真,从而开展原型设计、虚拟标定和虚拟验证。

虚拟车辆实现的一个核心是仿真集成平台,这个平台应该具备丰富的开箱即用功能,同时要保持一个接口开放性,以便进行定制扩展,再利用集成仿真来实现最大程度的一个流程前置。

目前在汽车行业最大的趋势是软件架构的变化。以前的软件是面向信号的软件架构,一个车上有很多个控制器,现在这个可能要发生变化。从软件架构来讲,要通过面向信号变成面向服务这样一个架构。也就是我们经常提到SOA架构,从我们汽车嵌入式软件开发来讲,这是一个最大的趋势,我看到的情况是这样。

SOA的优势可以这么说,以前面向信号的软件架构已经是没法应对目前这种软件的复杂度了。SOA它把软件模块应用化了,我们可以大概理解成以后的软件模块不像以前,以前我们会把很多模块放在一起,最后编译成一个文件下载到控制器上去。以后我们会把一些软件模块应用化,变成一个个应用APP,就像我们手机APP一样。对于开发每个APP来讲,它的复杂度和开发难度会大大降低。APP之间实现一个服务接口,他们可以做到模块之间的松耦合。

这篇关于【分享】MathWorks中国汽车年会:“软件定义汽车”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/622564

相关文章

Python中常用的四种取整方式分享

《Python中常用的四种取整方式分享》在数据处理和数值计算中,取整操作是非常常见的需求,Python提供了多种取整方式,本文为大家整理了四种常用的方法,希望对大家有所帮助... 目录引言向零取整(Truncate)向下取整(Floor)向上取整(Ceil)四舍五入(Round)四种取整方式的对比综合示例应

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法