由於連接商用模擬軟體和執行整車模擬所涉及的複雜性,設置可擴展、容易使用的平台,用來建構、執行大量的整車模擬及處理模擬結果是必要的。本文說明如何使用物件導向原則來設計車輛模擬介面(VSI),以及如何使用VSI讓模擬在公司內部大眾化,並且運用平行處理來擴展模擬工作量。
車輛產業的工程師逐漸加深對模擬的仰賴來評估車輛操控性、加速度、續航力及其他關鍵指標。相較於實體測試,透過模擬進行車輛性能評估不但速度更快,費用也顯著降低。此外,整車模擬可以讓設計工作提早在取得原型硬體之前的開發流程初期開始進行。然而隨著體認到車輛模擬在成本和效率上為企業組織內帶來的好處,對於模擬的需求增加,卻也導致相應的一連串挑戰。
由於連接商用模擬軟體和執行整車模擬所涉及的複雜性,設置一組由具備必要專業能力的模擬工程師組成的專門團隊非常合理。但該團隊卻很快地被來自各利害關係人的要求所淹沒—包含屬性工程師、性能工程師、動態工程師、續航力和效率工程師,以及高階管理團隊。僅僅是執行這些團隊所要求的大量模擬也有可能成為瓶頸,特別是在這些模擬是在商用軟體以序列執行的時候。最後,缺乏標準化的車輛資料,再加上對模擬結果的特殊後處理,讓工程師們只能拼命尋求黃金來源資料及經過證實的方法來報告成果,又加重了困難程度。
Rivian團隊開發了一個可擴展、容易使用的平台,用來建構、執行大量的整車模擬及對模擬結果進行後處理。這個車輛模擬介面(Vehicle Simulation Interface;VSI)是透過MATLAB和Simulink開發,可以減少冗餘、增加重複利用,並且透過平行處理改善模擬吞吐量。平台還包含使用App Designer建立的直覺化使用者介面,讓整間公司的工程團隊能夠大眾化地存取模擬,消除模擬要求的瓶頸(圖一)。
本文說明如何使用物件導向原則來設計VSI,以及使用VSI讓模擬在公司內部大眾化,並如何運用平行處理來擴展模擬工作量。
VSI的物件導向設計
當我們開始設計VSI平台,物件導向途徑顯然會是達成在靈活性、可擴展性和重複利用等目標最直接的方法。一開始先清楚地定義幾個基礎物件:車輛、負載狀況、以及模擬。在這個情境車輛物件被用來代表一輛Rivian車,例如R1T、Rivian R1S,或Rivian EDV(此為電動送貨車)。這個物件也代表車輛的架構,其中定義了特定的電池組、電力總成、輪胎、前後驅動元件,以及其他組件。負載狀況物件使用來定義一個模擬情境,其中包含一個速度輪廓、周圍情況、以及駕駛輪廓。VSI的模擬物件在這裡只是一個車輛物件案例與特定負載狀況物件的配對(圖二)。
圖二 : VSI模擬包含一個特定車輛架構以及預定義的負載狀況 |
|
站在編程的角度,模擬的概念可以被視作一個組成VSI平台基本架構的上層級別。該上層級別裡面的屬性包含可以藉由使用者介面來選擇的車輛架構與負載狀況屬性,以及一組建立模型、執行模擬、進行後處理、挑出指標、以及分享結果的方法(圖三)。
MATLAB的物件導向編程能力,幫助VSI平台將這些級別架構建立成一個簡單明瞭的施行流程。MATLAB處理物件(MATLAB handle objects)在封裝模擬之中所有內含的資訊時(不僅是車輛和負載狀況,還包含使用者設定、結果、與指標)特別有用,還可以有效率地在VSI內運送資訊,無須至資料。這些物件可以接著被轉換為後設資料(metadata)文本檔案並封存,協助我們從後設資料重新建構物件來重製任何的歷史模擬。
圖三 : VSISim上層級別,包含模擬輸入和執行方法 |
|
模擬大眾化與重複使用最大化
我們將VSI部署為MATLAB工具箱和一個以MATLAB Compiler建立的獨立執行檔,讓沒有安裝MATLAB的同事也有辦法使用。透過簡易的方式使用VSI,團隊執行模擬或取得結果不再需要等待模擬工程師的協助。
VSI介面的左側(如圖一所示),可選擇車輛架構及負載狀況,介面右側呈現一個模擬的色彩編碼清單。紅色代表模擬尚未執行,綠色代表模擬完成,琥珀色代表模擬是以過時的資料完成,例如在有新的元件資料出現,或者模型被更新時會發生這種情況。
值得注意的是,VSI的模擬結果是共享的;工程師可能會發現團隊中的其他成員或者另一個完全不同的團隊已經完成其想要執行的模擬。像這樣站在巨人肩膀地利用既有模擬的優點,工程師可以立即存取結果,不需要浪費時間,也不需要計算執行完全相同且沒有必要的模擬需要的資源。
當工程師定義並選擇了要執行的模擬,便按下標示著「Run & Post-Process」的按鈕(如圖一所示)。該模擬會透過一個MATLAB API,使用Simulink和商用模擬的組合在後台被開啟(圖四)。
圖四 : 叢集模擬的工作流程圖,以及VSI介面顯示5個在排程上的模擬(藍色標示)。紫色狀態代表模擬執行中;紅色代表待完成的模擬。 |
|
當個別模擬完成,記錄的資料會送回MATLAB工作區域,資料會在這裡處理並轉換成Apache Parquet資料檔案格式,最後封存在共用的目錄。我們也開發了一組MATLAB程式腳本,該程式腳本匯集資料來產生關鍵指標、對照在需求管理系統設定的目標回報模擬狀態、產生自動化報告,來為Rivian的高階管理層總結關鍵性能指標。
以平行處理擴展
在VSI使用者介面之中,工程師可以選擇要以自家本地機台的多核心平行地執行模擬,或者是在遠端的Amazon Web Service (AWS)叢集執行(圖五)。本地機台的選項會使用到Parallel Computing Toolbox(平行處理工具箱),通常在工程師希望測試模型更新和變更時使用。遠端的選項是基於運行MATLAB Parallel Server的AWE EC2 Instances,用在模型經過測試和驗證的生產階段。
在遠端的平行處理工作流程,由MATLAB Parallel Server和MATLAB Job Scheduler扮演儀器的角色。VSI首先從MATLAB Parallel Server呼叫parcluster 函式,建立一個基於事先已經定義的AWS EC2輪廓的叢集物件。在幫每一個要被平行執行的模擬建立好模擬物件之後,VSI接著在叢集建立一個工作,並且為每一個模擬各建立獨立的任務。
這項工作和其任務都會使用MATLAB Job Scheduler來提交至AWS EC2 Instance,MATLAB Job Scheduler是負責協調執行工作和將任務分配給個別叢集工作者的工具。模擬完成時,在結果之前於叢集上執行的MATLAB後處理函式會被封存並分享。對於大型工作,遠端平行處理的選項速度快非常多,例如那些可能包含14個冗長模擬的工作,可以在68分鐘內完成任務,而若採用序列的方式可能會需要超過9個小時(圖六)。
圖六 : 依序列(黃色)、本地平行處理(藍色)、和遠端平行處理(紅色)等方式的模擬時間基準評價。 |
|
過去六個月,Rivian已經使用VSI來執行超過9,000次整車模擬,總共模擬駕駛了大約2百萬英哩。
改善規劃
透過MATLAB和Simulink來設計並建立VSI平台促使達成關鍵目標。我們為工程師和非工程師建立一個相同的單一平台來執行整車模擬、後處理結果、並且產生報告。除了消除模擬要求上的瓶頸、降低模擬任務冗餘,以及增加模擬的再利用;也透過在AWS叢集或本地工作站上的多個核心來平行地執行模擬以極大化吞吐量。
我們已經為VSI規劃了幾項改善,包含將平台部署為網路應用程式,增加一個儀表板來呈現關鍵性能指標,以及提升在使用者介面使用實驗設計(design of experiments;DOE)的流暢性。同時持續開發並擴大Rivian的MATLAB Minimart,這裡收集了自行建立的MATLAB工具箱,各具備了資料轉換與檢視、啟動和停止分析,以及其他各種經常需要的能力。
(本文由鈦思科技提供;作者Adithya Vignesh Jayaraman任職於Rivian公司)