Rivian使用MATLAB和MATLAB Parallel Server扩展整

发布时间:2024-01-02  

整个汽车行业的工程师越来越依赖仿真来评估操控性能、加速性能、续航里程和其他关键性能指标。与物理测试相比,通过仿真来评估车辆性能速度更快,成本也更低。还有助于设计工作在原型硬件可用之前在开发过程中尽早进行。然而,随着车辆仿真的成本和效率优势在组织内日趋明显,仿真需求的增加使得车辆仿真面临一系列挑战。

本文引用地址:

 

考虑到与商业仿真软件对接和运行所带来的复杂性,需要拥有一支专门的仿真工程师团队,他们具备必要的专业知识。然而,该团队可能很快会因各利益相关者的要求而不堪重负,这些利益相关者包括属性工程师、性能工程师、动力学工程师、续航里程和效率工程师以及高级管理人员。简单地执行这些团队要求的多个仿真也可能成为瓶颈,特别是当这些仿真连续地在商业软件上运行时更是如此。最后,由于缺乏标准化的车辆数据,加上对仿真结果的临时后处理,这使得工程师争相获取黄金源数据和采用获准的方法来报告结果,从而加剧了这些困难。

 

 ,我们的团队开发了可扩展、易于使用的平台,用于配置、运行和后处理大量。此车辆仿真界面VSI平台是使用 ®  Simulink® 开发的,有助于减少冗余,提高复用性,并通过并行处理提高仿真吞吐量。借助使用 App 设计工具构建的直观用户界面,该平台还让整个公司的工程团队都能轻松实现仿真,从而消除了仿真请求瓶颈(图 1)。 

image.png 

 1VSI 用户界面。


本文介绍我们如何使用面向对象的原则设计 VSI,如何利用它来使仿真更平等普及,以及如何使用并行处理来扩展仿真工作量。

 

VSI 的面向对象的设计

 

当我们开始设计 VSI 平台时,面向对象的方法显然是实现灵活性、可扩展性和复用性等目标的最直接方法。我们首先明确定义了几个基本对象:VehicleLoad Case Simulation。在这种情形下,Vehicle 对象用于表示 车辆,例如 R1TRivian R1S Rivian EDV(我们的电动货车)。此对象还表示车辆的配置,用于定义特定的电池组、动力总成系统、轮胎、前后驱动装置和其他组件。Load Case 对象用于定义仿真场景,包括速度曲线、环境条件和驾驶工况。而 VSI Simulation 对象只是 Vehicle 实例与特定 Load Case 的组合(图 2)。 

image.png 

2VSI 仿真包括特定车辆配置和预定义的测试场景。

 

从编程的角度来看,可将 Simulation 的概念视为构成 VSI 平台基础框架的超类。此超类的属性包括可以通过用户界面选择的车辆配置和测试场景属性,以及一组用于创建模型、运行仿真、执行后处理、提取度量和共享结果的方法(图 3)。借助 的面向对象的编程功能,我们可以轻松地针对 VSI 平台创建这种类结构体的实现。 句柄对象尤其适用于封装仿真中包含的所有信息(不仅包括车辆和测试场景,还包括用户设置、结果和度量),并在 VSI 内高效传输这些信息,而无需复制数据。这些对象随后可以转换为元数据文本文件并进行存档,使我们能够通过从元数据重新构造对象来重新创建任何历史仿真。

 

image.png 

 3VSISim 超类,包括仿真输入和执行方法。

 

使仿真更平等普及和最大化复用

 

我们已将 VSI 部署为 MATLAB 工具箱和独立可执行文件(用 MATLAB Compiler™ 编译),可供未安装 MATLAB 的同事使用。由于可以轻松访问 VSI,团队不再需要等待 Simulink 工程师来运行仿真并获得结果。

 

VSI 界面的左侧(如图 1 所示)用于选择车辆配置和测试场景,而界面的右侧显示用不同颜色表示的仿真列表。红色表示尚未运行的仿真,绿色表示已完成的仿真,琥珀色表示已完成的仿真以及过期结果(例如,当新组件数据可用或模型修订时,可能会发生这种情况)。值得注意的是,VSI 的仿真结果是共享的;工程师可能会发现他们要运行的仿真已由本团队或完全不同的团队中的某个人完成。工程师可以利用已有的仿真结果,避免运行相同且不必要的仿真,从而节省时间和计算资源。

 

在定义并选择了要运行的仿真后,工程师可点击标有 Run&Post-Process 的按钮(如图 1 所示)。仿真是结合使用 Simulink 和商业仿真软件在后台通过 MATLAB API 启动的(图 4)。

 

image.png 

 4集群仿真的工作流程图,以及显示五个调度仿真的 VSI 界面(以蓝色突出显示)。紫色状态表示仿真正在进行中;红色状态则表示仿真已完成。

 

在单个仿真完成后,记录的数据会发送回 MATLAB 工作区进行处理,然后转换为 Apache® Parquet 数据文件格式,并最终存档在共享目录中。我们还开发了一套 MATLAB 脚本,用于汇总结果以生成关键度量,根据我们的需求管理系统中设置的目标报告仿真状态,并生成自动报告来概括关键性能指标,以供 Rivian 高级管理层参考。

 

通过并行处理实现扩展

 

 VSI 用户界面中,工程师可以选择使用本地计算机上的多个内核来并行运行仿真,也可以选择使用远程 Amazon® Web ServicesAWS®集群来执行此操作(图 5)。本地方法利用了 Parallel Computing Toolbox™,它是工程师在测试模型更新和更改时最常选用的方法。远程方法基于运行 AWS EC2 实例,适用于具有已经过测试和验证的模型的生产环境。

 

image.png 

 5用于并行处理的 VSI 选项。

 

在远程并行工作流中, MATLAB 作业调度器发挥着重要作用。VSI 先从 调用 parcluster 函数,以根据我们所定义的 AWS EC2 配置文件创建一个集群对象。在为要并行运行的每个仿真创建了一个仿真对象后,VSI 将在集群上创建一个作业,并为每个仿真创建一个单独的任务。该作业及其任务通过 MATLAB 作业调度器提交到 AWS EC2 实例。该调度器可协调作业的执行,并将任务分配给各个集群工作进程。当仿真完成时,MATLAB 后处理函数会在集群上运行,然后结果再进行存档和共享。对于大型作业,例如涉及 14 个冗长仿真的作业,远程并行方法要快得多,在 68 分钟内即可完成作业,而依序方法需要 9 个多小时(图 6)。

 

image.png 

 6依序(黄色)、本地并行(蓝色)和远程并行(红色)方法的基准仿真时间。

 

在过去的六个月里,我们在 Rivian 的同事已使用 VSI 进行了 9,000 多次整车仿真,总共模拟行驶了大约 200 万英里。

 

计划的改进

 

使用 MATLAB Simulink 设计和构建 VSI 平台帮助我们实现了关键目标。我们为工程师和非工程师创建了统一平台,用于运行整车仿真、后处理结果和创建报告。我们消除了仿真请求瓶颈,减少了仿真任务中的冗余,并提高了仿真复用性。此外,我们还通过支持在 AWS 集群或本地工作站的多个内核上并行运行仿真,最大程度地提高了吞吐量。

 

我们计划对 VSI 做出大量改进,包括将该平台部署为 Web 应用,为关键性能指标添加仪表板,以及简化从用户界面使用试验设计DOE的过程。与此同时,我们还在继续开发和扩展 Rivian MATLAB Minimart,这是内部构建的 MATLAB 工具箱集合,用于数据转换和查看、启动和制动分析,以及各种其他经常需要的功能。

文章来源于:电子产品世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    确定模块对象代码所在的文件在系统目录树中的位置,即first_drv.ko文件所在的位置 4、insmod进程从文件系统所在的存储区读入存有模块目标代码的文件 5、insmod调用init_module系统调用。函数将进入内核到达内核函数......
    EXIT_SUCCESS;} 研究 这个函数,我们发现删除模块的 核心函数 是 bb_delete_module,追踪这个函数,在 /modutils/modutils.c,我们得到如下函数 int......
    频率换算为角速度。 对角速度求积分得到电角度。 将电角度减去pi/2,使给定的虚拟同步dvqv坐标系初始位置滞后实际的基准dq坐标系90°。 通过mod函数将电角度换算到0~2*pi之间。 2.1.2 FOC......
    频率换算为角速度。 对角速度求积分得到电角度。 将电角度减去pi/2,使给定的虚拟同步dvqv坐标系初始位置滞后实际的基准dq坐标系90°。 通过mod函数将电角度换算到0~2*pi之间。 2.1.2......
    /system.h:extern void (*arch_reset)(char, const char *);注意,这是一个变量声明,类型为函数指针。并不是函数的声明!它的实现在mach-rk30......
    是这里的关键,这里也是最常见的运用库函数的方式之一(调用库函数和结构体是最常见的用法)。 【3】标准库怎么使用 (1)整体看一遍STM32F103固件函数用户手册,了解具体内容,整理......
    本文用到的PID等。 在传统的倒立摆实验中,常用的仿真工具组合Matlab+Adams、或者构建一个传递函数在Simulink仿真等,或者直接用单片机搭建一套实物系统,在网......
    分别是: HAL_TIM_DMABurst_WriteStart() ----(1) HAL_TIM_DMABurst_ReadStart() ----(2) 第一个函数用于将内存数据以DMA 分组模式写入寄存器的功能函数; 第二......
    对ARM系统采集到的数据进行离线分析处理,得到所需的滤波器参数。 为了方便将ARM采集到的数据导入到MATLAB,首先编写了MATLAB和ARM系统的串行通信程序。要确定MATLAB环境......
    永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析(一);前言 本章节采用恒压频比的开环控制方法驱动永磁同步电机的转动,首先分析恒压频比的控制原理,然后在Matlab......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>