在之前的文章中,我們介紹了如何構建簡單的車輛模型,并基于FMI2.0構建了其FMU,其最終結構為:
今天將會和大家分享如何在aiSim中,通過UDP和aiSim車輛動力學API(Vehicle Dynamics Interface, VDI)來實現和外部的FMU車輛動力學模型的聯合仿真。
一、操作步驟
車輛動力學仿真是aiSim的核心組件,能夠根據駕駛指令來確定車輛的運動變化。基于準確可靠的車輛動力學模型,可以確保車輛模擬更加真實。在aiSim可以將FMU單獨視作動態庫來實現車輛動力學,也可以基于VDI和UDP來實現和FMU的聯合仿真。
1、實例化VDI
VDI中提供了5種不同的車輛動力學模型,包括:
(1)2d:橫向自行車模型
(2)23d:底盤俯仰和側傾分離的橫向自行車模型
(3)3d:具有3D剛性車身和獨立車輪懸掛的橫向輪胎模型(計算量很大)
(4)拖車模型:用于牽引車輛
(5)FMU:基于FMI對于車輛動力學的不同描述
整個聯合仿真的進程可以分四個部分:
(1)根據車輛名稱匹配對應的ego
(2)在VehicleDB.json或是ego自己的asset包中確認所定義的車輛動力學模型
(3)實例化專屬的VDI來處理FMU,定義必須的輸入/輸出數據
(4)通過socket和pyfmi處理FMU
在實例化VDI時,我們將會遵循以下四個部分來獲取車輛動力學的相關數據
2、通過UDP實現FMU的讀取
在實例化VDI的同時,初始化一個UDP接口來處理收到的數據。
如果我們通過UDP來實現FMU的讀取(為了分布式系統),那么我們還需要pyfmi和socket來協助我們讀取和寫入FMU的數據,整個腳本主要實現功能為:
(1)創建UDP的socket,用于監測和讀取來自VDI的數據
(2)解析來自VDI的數據,獲取動力學數據和標志信號,后者主要用于步進操作
(3)基于標志信號步進式執行仿真
(4)基于fmipy讀取FMU中定義的各種動力學數據,并將其打包成UDP,在讀取時,同樣遵循modelDescription.xml中的定義。
3、效果展示
在完成以上工作后,可以啟動整個進程,看一下分布式聯合仿真的效果。FMU和對應的腳本運行在PC1上,aiSim運行在PC2上。
以上就是關于功能模型接口FMI的聯合仿真的全部內容,通過FMU我們可以快速的在不同工具之間進行集成,而不需要進行大規模的模型移植或是繁瑣的聯調。
如果涉及到聯合仿真,每個子系統都需要對應的仿真器進行求解,在通信時數據的交換頻率和吞吐量都會對延時造成影響,從而造成仿真的偏差,可以優化不同的通信機制或是采用案例中主動觸發的方式來減少負面影響。
相關產品
免責聲明
- 凡本網注明“來源:化工儀器網”的所有作品,均為浙江興旺寶明通網絡有限公司-化工儀器網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:化工儀器網”。違反上述聲明者,本網將追究其相關法律責任。
- 本網轉載并注明自其他來源(非化工儀器網)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。