天天看點

Rivian 使用 MATLAB 和 MATLAB Parallel Server 擴充整車仿真

作者:電子工程世界

使用 MATLAB 和 Simulink 設計和建構 Rivian 車輛仿真界面平台幫助我們實作了關鍵目标。我們為工程師和非工程師建立了統一平台,用于運作整車仿真、後處理結果和建立報告。

整個汽車行業的工程師越來越依賴仿真來評估操控性能、加速性能、續航裡程和其他關鍵性能名額。與實體測試相比,通過仿真來評估車輛性能速度更快,成本也更低。整車仿真還有助于設計工作在原型硬體可用之前在開發過程中盡早進行。然而,随着車輛仿真的成本和效率優勢在組織内日趨明顯,仿真需求的增加使得車輛仿真面臨一系列挑戰。

考慮到與商業仿真軟體對接和運作整車仿真所帶來的複雜性,需要擁有一支專門的仿真工程師團隊,他們具備必要的專業知識。然而,該團隊可能很快會因各利益相關者的要求而不堪重負,這些利益相關者包括屬性工程師、性能工程師、動力學工程師、續航裡程和效率工程師以及進階管理人員。簡單地執行這些團隊要求的多個仿真也可能成為瓶頸,特别是當這些仿真連續地在商業軟體上運作時更是如此。最後,由于缺乏标準化的車輛資料,加上對仿真結果的臨時後處理,這使得工程師争相擷取黃金源資料和采用獲準的方法來報告結果,進而加劇了這些困難。

在 Rivian,我們的團隊開發了可擴充、易于使用的平台,用于配置、運作和後處理大量整車仿真。此車輛仿真界面(VSI)平台是使用 MATLAB® 和 Simulink® 開發的,有助于減少備援,提高複用性,并通過并行處理提高仿真吞吐量。借助使用 App 設計工具建構的直覺使用者界面,該平台還讓整個公司的工程團隊都能輕松實作仿真,進而消除了仿真請求瓶頸(圖 1)。

Rivian 使用 MATLAB 和 MATLAB Parallel Server 擴充整車仿真

圖 1.VSI 使用者界面。

本文介紹我們如何使用面向對象的原則設計 VSI,如何利用它來使仿真更平等普及,以及如何使用并行處理來擴充仿真工作量。

VSI 的面向對象的設計

當我們開始設計 VSI 平台時,面向對象的方法顯然是實作靈活性、可擴充性和複用性等目标的最直接方法。我們首先明确定義了幾個基本對象:Vehicle、Load Case 和 Simulation。在這種情形下,Vehicle 對象用于表示 Rivian 車輛,例如 Rivian R1T、Rivian R1S 或 Rivian EDV(我們的電動貨車)。此對象還表示車輛的配置,用于定義特定的電池組、動力總成系統、輪胎、前後驅動裝置和其他元件。Load Case 對象用于定義仿真場景,包括速度曲線、環境條件和駕駛工況。而 VSI Simulation 對象隻是 Vehicle 執行個體與特定 Load Case 的組合(圖 2)。

Rivian 使用 MATLAB 和 MATLAB Parallel Server 擴充整車仿真

圖 2.VSI 仿真包括特定車輛配置和預定義的測試場景。

從程式設計的角度來看,可将 Simulation 的概念視為構成 VSI 平台基礎架構的超類。此超類的屬性包括可以通過使用者界面選擇的車輛配置和測試場景屬性,以及一組用于建立模型、運作仿真、執行後處理、提取度量和共享結果的方法(圖 3)。借助 MATLAB 的面向對象的程式設計功能,我們可以輕松地針對 VSI 平台建立這種類結構體的實作。MATLAB 句柄對象尤其适用于封裝仿真中包含的所有資訊(不僅包括車輛和測試場景,還包括使用者設定、結果和度量),并在 VSI 内高效傳輸這些資訊,而無需複制資料。這些對象随後可以轉換為中繼資料文本檔案并進行存檔,使我們能夠通過從中繼資料重新構造對象來重新建立任何曆史仿真。

Rivian 使用 MATLAB 和 MATLAB Parallel Server 擴充整車仿真

圖 3.VSISim 超類,包括仿真輸入和執行方法。

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

我們已将 VSI 部署為 MATLAB 工具箱和獨立可執行檔案(用 MATLAB Compiler™ 編譯),可供未安裝 MATLAB 的同僚使用。由于可以輕松通路 VSI,團隊不再需要等待 Simulink 工程師來運作仿真并獲得結果。

VSI 界面的左側(如圖 1 所示)用于選擇車輛配置和測試場景,而界面的右側顯示用不同顔色表示的仿真清單。紅色表示尚未運作的仿真,綠色表示已完成的仿真,琥珀色表示已完成的仿真以及過期結果(例如,當新元件資料可用或模型修訂時,可能會發生這種情況)。值得注意的是,VSI 的仿真結果是共享的;工程師可能會發現他們要運作的仿真已由本團隊或完全不同的團隊中的某個人完成。工程師可以利用已有的仿真結果,避免運作相同且不必要的仿真,進而節省時間和計算資源。

在定義并選擇了要運作的仿真後,工程師可點選标有 Run&Post-Process 的按鈕(如圖 1 所示)。仿真是結合使用 Simulink 和商業仿真軟體在背景通過 MATLAB API 啟動的(圖 4)。

Rivian 使用 MATLAB 和 MATLAB Parallel Server 擴充整車仿真

圖 4.叢集仿真的工作流程圖,以及顯示五個排程仿真的 VSI 界面(以藍色突出顯示)。紫色狀态表示仿真正在進行中;紅色狀态則表示仿真已完成。

在單個仿真完成後,記錄的資料會發送回 MATLAB 工作區進行處理,然後轉換為 Apache® Parquet 資料檔案格式,并最終存檔在共享目錄中。我們還開發了一套 MATLAB 腳本,用于彙總結果以生成關鍵度量,根據我們的需求管理系統中設定的目标報告仿真狀态,并生成自動報告來概括關鍵性能名額,以供 Rivian 進階管理層參考。

通過并行處理實作擴充

在 VSI 使用者界面中,工程師可以選擇使用本地計算機上的多個核心來并行運作仿真,也可以選擇使用遠端 Amazon® Web Services(AWS®)叢集來執行此操作(圖 5)。本地方法利用了 Parallel Computing Toolbox™,它是工程師在測試模型更新和更改時最常選用的方法。遠端方法基于運作 MATLAB Parallel Server™ 的 AWS EC2 執行個體,适用于具有已經過測試和驗證的模型的生産環境。

Rivian 使用 MATLAB 和 MATLAB Parallel Server 擴充整車仿真

圖 5.用于并行處理的 VSI 選項。

在遠端并行工作流中,MATLAB Parallel Server 和 MATLAB 作業排程器發揮着重要作用。VSI 先從 MATLAB Parallel Server 調用 parcluster 函數,以根據我們所定義的 AWS EC2 配置檔案建立一個叢集對象。在為要并行運作的每個仿真建立了一個仿真對象後,VSI 将在叢集上建立一個作業,并為每個仿真建立一個單獨的任務。該作業及其任務通過 MATLAB 作業排程器送出到 AWS EC2 執行個體。該排程器可協調作業的執行,并将任務配置設定給各個叢集工作程序。當仿真完成時,MATLAB 後處理函數會在叢集上運作,然後結果再進行存檔和共享。對于大型作業,例如涉及 14 個冗長仿真的作業,遠端并行方法要快得多,在 68 分鐘内即可完成作業,而依序方法需要 9 個多小時(圖 6)。

Rivian 使用 MATLAB 和 MATLAB Parallel Server 擴充整車仿真

圖 6.依序(黃色)、本地并行(藍色)和遠端并行(紅色)方法的基準仿真時間。

在過去的六個月裡,我們在 Rivian 的同僚已使用 VSI 進行了 9,000 多次整車仿真,總共模拟行駛了大約 200 萬英裡。

計劃的改進

使用 MATLAB 和 Simulink 設計和建構 VSI 平台幫助我們實作了關鍵目标。我們為工程師和非工程師建立了統一平台,用于運作整車仿真、後處理結果和建立報告。我們消除了仿真請求瓶頸,減少了仿真任務中的備援,并提高了仿真複用性。此外,我們還通過支援在 AWS 叢集或本地工作站的多個核心上并行運作仿真,最大程度地提高了吞吐量。

我們計劃對 VSI 做出大量改進,包括将該平台部署為 Web 應用,為關鍵性能名額添加儀表闆,以及簡化從使用者界面使用試驗設計(DOE)的過程。與此同時,我們還在繼續開發和擴充 Rivian 的 MATLAB Minimart,這是内部建構的 MATLAB 工具箱集合,用于資料轉換和檢視、啟動和制動分析,以及各種其他經常需要的功能。

繼續閱讀