【分享】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中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应