龙8手机游戏官网:Rivian使用MATLAB和MATLAB Par
来源:龙8手机版网页登录官网 作者:龙8官方网手机2024-09-08 08:08:26整个汽车行业的工程师越来越依赖仿真来评估操控性能、加速性能、续航里程和其他关键性能指标。与物理测试相比,通过仿真来评估车辆性能速度更快,成本也更低。还有助于设计工作在原型硬件可用之前在开发过程中尽早进行。然而,随着车辆仿真的成本和效率优势在组织内日趋明显,仿真需求的增加使得车辆仿真面临一系列挑战。
考虑到与商业仿真软件对接和运行整车仿真所带来的复杂性,需要拥有一支专门的仿真工程师团队,他们具备必要的专业知识。然而,该团队可能很快会因各利益相关者的要求而不堪重负,这些利益相关者包括属性工程师、性能工程师、动力学工程师、续航里程和效率工程师以及高级管理人员。简单地执行这些团队要求的多个仿真也可能成为瓶颈,特别是当这些仿真连续地在商业软件上运行时更是如此。最后,由于缺乏标准化的车辆数据,加上对仿真结果的临时后处理,这使得工程师争相获取黄金源数据和采用获准的方法来报告结果,从而加剧了这些困难。
在Rivian,我们的团队开发了可扩展、易于使用的平台,用于配置、运行和后处理大量整车仿真。此车辆仿真界面(VSI)平台是使用MATLAB®和Simulink®开发的,有助于减少冗余,提高复用性,并通过并行处理提高仿真吞吐量。借助使用App设计工具构建的直观用户界面,该平台还让整个公司的工程团队都能轻松实现仿真,从而消除了仿线)。
本文介绍我们如何使用面向对象的原则设计VSI,如何利用它来使仿真更平等普及,以及如何使用并行处理来扩展仿真工作量。
VSI平台时,面向对象的方法显然是实现灵活性、可扩展性和复用性等目标的最直接方法。我们首先明确定义了几个基本对象:Vehicle、Load Case和Simulation。在这种情形下,Vehicle对象用于表示Rivian车辆,例如RivianR1T、Rivian R1S或Rivian EDV(我们的电动货车)。此对象还表示车辆的配置,用于定义特定的电池组、动力总成系统、轮胎、前后驱动装置和其他组件。Load Case对象用于定义仿真场景,包括速度曲线、环境条件和驾驶工况。而VSI Simulation对象只是Vehicle实例与特定Load Case的组合(图2)。
Simulation的概念视为构成VSI平台基础框架的超类。此超类的属性包括可以通过用户界面选择的车辆配置和测试场景属性,以及一组用于创建模型、运行仿真、执行后处理、提取度量和共享结果的方法(图3)。借助MATLAB的面向对象的编程功能,我们可以轻松地针对VSI平台创建这种类结构体的实现。MATLAB句柄对象尤其适用于封装仿真中包含的所有信息(不仅包括车辆和测试场景,还包括用户设置、结果和度量),并在VSI内高效传输这些信息,而无需复制数据。这些对象随后可以转换为元数据文本文件并进行存档,使我们能够通过从元数据重新构造对象来重新创建任何历史仿真。
VSI部署为MATLAB工具箱和独立可执行文件(用MATLAB Compiler™编译),可供未安装MATLAB的同事使用。由于可以轻松访问VSI,团队不再需要等待Simulink工程师来运行仿真并获得结果。
界面的左侧(如图1所示)用于选择车辆配置和测试场景,而界面的右侧显示用不同颜色表示的仿真列表。红色表示尚未运行的仿真,绿色表示已完成的仿真,琥珀色表示已完成的仿真以及过期结果(例如,当新组件数据可用或模型修订时,可能会发生这种情况)。值得注意的是,VSI的仿真结果是共享的;工程师可能会发现他们要运行的仿真已由本团队或完全不同的团队中的某个人完成。工程师可以利用已有的仿真结果,避免运行相同且不必要的仿真,从而节省时间和计算资源。
4.集群仿真的工作流程图,以及显示五个调度仿真的VSI界面(以蓝色突出显示)。紫色状态表示仿真正在进行中;红色状态则表示仿真已完成。
MATLAB工作区进行处理,然后转换为Apache®Parquet数据文件格式,并最终存档在共享目录中。我们还开发了一套MATLAB脚本,用于汇总结果以生成关键度量,根据我们的需求管理系统中设置的目标报告仿真状态,并生成自动报告来概括关键性能指标,以供Rivian高级管理层参考。
VSI用户界面中,工程师可以选择使用本地计算机上的多个内核来并行运行仿真,也可以选择使用远程Amazon®Web Services(AWS®)集群来执行此操作(图5)。本地方法利用了Parallel Computing Toolbox™,它是工程师在测试模型更新和更改时最常选用的方法。远程方法基于运行MATLAB Parallel Server™的AWS EC2实例,适用于具有已经过测试和验证的模型的生产环境。
MATLAB Parallel Server和MATLAB作业调度器发挥着重要作用。VSI先从MATLAB Parallel Server调用parcluster函数,以根据我们所定义的AWS EC2配置文件创建一个集群对象。在为要并行运行的每个仿真创建了一个仿真对象后,VSI将在集群上创建一个作业,并为每个仿真创建一个单独的任务。该作业及其任务通过MATLAB作业调度器提交到AWS EC2实例。该调度器可协调作业的执行,并将任务分配给各个集群工作进程。当仿真完成时,MATLAB后处理函数会在集群上运行,然后结果再进行存档和共享。对于大型作业,例如涉及14个冗长仿真的作业,远程并行方法要快得多,在68分钟内即可完成作业,而依序方法需要9个多小时(图6)。
Rivian的同事已使用VSI进行了9,000多次整车仿真,总共模拟行驶了大约200万英里。
MATLAB和Simulink设计和构建VSI平台帮助我们实现了关键目标。我们为工程师和非工程师创建了统一平台,用于运行整车仿真、后处理结果和创建报告。我们消除了仿真请求瓶颈,减少了仿真任务中的冗余,并提高了仿真复用性。此外,我们还通过支持在AWS集群或本地工作站的多个内核上并行运行仿真,最大程度地提高了吞吐量。
VSI做出大量改进,包括将该平台部署为Web应用,为关键性能指标添加仪表板,以及简化从用户界面使用试验设计(DOE)的过程。与此同时,我们还在继续开发和扩展Rivian的MATLAB Minimart,这是内部构建的MATLAB工具箱集合,用于数据转换和查看、启动和制动分析,以及各种其他经常需要的功能。