當(dāng)前位置:廣州虹科電子科技有限公司>>技術(shù)文章>>康謀分享 | 自動(dòng)駕駛聯(lián)合仿真——功能模型接口FMI(一)
康謀分享 | 自動(dòng)駕駛聯(lián)合仿真——功能模型接口FMI(一)
功能模型接口FMI(Functional Mock-up Interface)是一個(gè)開(kāi)放且與工具解耦的標(biāo)準(zhǔn),。FMI包含了一個(gè)C-API(接口),,一個(gè)用于描述接口的XML文件以及可交換的功能模型單元FMU(Functional Mock-up Unit),,通常會(huì)是“zip"文件,。FMI實(shí)際上是提供了容器化形式的模型,,能夠在不同的目標(biāo)上輕松進(jìn)行重復(fù)使用和部署,實(shí)現(xiàn)在不同的自動(dòng)駕駛仿真工具之間動(dòng)態(tài)交換仿真模型和聯(lián)合仿真,。
一,、FMI的使用
1、導(dǎo)入和導(dǎo)出工具
通常來(lái)說(shuō)在使用FMI時(shí)會(huì)有包含導(dǎo)入和導(dǎo)出工具,。
導(dǎo)出工具通常是開(kāi)發(fā)模型的地方,,能夠?qū)⒛P桶凑誇MI標(biāo)準(zhǔn)打包為FMU;導(dǎo)入工具通常獨(dú)立于導(dǎo)出工具,,可以在外部設(shè)置由C-API定義的一個(gè)變量,、一個(gè)值或是觸發(fā)一個(gè)計(jì)算步驟,在接收FMU后在,,可以在導(dǎo)入工具中與其他模型結(jié)合并實(shí)現(xiàn)聯(lián)合仿真,。
實(shí)際上FMI標(biāo)準(zhǔn)只定義了一個(gè)FMU的接口,在多個(gè)FMU進(jìn)行耦合并實(shí)現(xiàn)聯(lián)合仿真時(shí),,F(xiàn)MI標(biāo)準(zhǔn)并不涉及到的聯(lián)合仿真算法或是FMU 的求解器,。
2、FMU文件結(jié)構(gòu)
FMU作為模型的容器能夠自由的進(jìn)行分發(fā),,通常來(lái)說(shuō)是一個(gè)以".fmu"結(jié)尾的zip文件,。
在一個(gè)FMU文件中,至少包含了一個(gè)模型描述文件,,其描述了模型變量、接口,、能力以及模型架構(gòu)擴(kuò)展限制的元數(shù)據(jù)信息,。
還至少包含了一個(gè)二進(jìn)制的模型表示,,在Linux系統(tǒng)下是.so文件,在window系統(tǒng)中是dll文件,。也可以是C源碼,,能夠讓使用者進(jìn)行重新編譯創(chuàng)建一個(gè)新的二進(jìn)制文件用于新的目標(biāo),這一部署機(jī)制可以方便的擴(kuò)展到不同的系統(tǒng)平臺(tái)上,。
除此以外,,可能還包括額外的文件,比如模型文檔和相關(guān)的頭文件,。
3,、FMI 2.0和FMI 3.0
FMI 2.0包括:
帶有事件的常微分方程(ODEs),這些方程描述了系統(tǒng)的動(dòng)態(tài)行為,,需要通過(guò)數(shù)值求解器來(lái)進(jìn)行求解,;
連續(xù)和離散變量,即FMI的模型中,,變量可能是隨時(shí)間變化,,也可以是在特定時(shí)間點(diǎn)發(fā)生變化;
時(shí)間概念,,或可以理解為更廣泛的獨(dú)立變量,,或是自變量,比如可以是一個(gè)角度,,從而表述系統(tǒng)的動(dòng)態(tài)變化,。
FMI 3.0增加:
不僅限于動(dòng)態(tài)方程,也支持純代數(shù)方程,,可以處理不隨時(shí)間變化的靜態(tài)關(guān)系,;
進(jìn)一步支持了復(fù)雜的離散行為,即通過(guò)使用始終和模型分區(qū)來(lái)管理模型的順序和同步,;
同時(shí)不僅僅是基于物理的方程還可以:
vECU模型
機(jī)器學(xué)習(xí)模型
AI模型
......
二,、FMI 3.0.1中的聯(lián)合仿真
1、多個(gè)仿真程序耦合
聯(lián)合仿真時(shí)將多個(gè)仿真程序耦合在一起,,最終實(shí)現(xiàn)由多個(gè)子系統(tǒng)組成整理自動(dòng)駕駛HiL系統(tǒng)的行為,。
2、子系統(tǒng)耦合
子系統(tǒng)之間是互相耦合的,,也就是每個(gè)子系統(tǒng)的行為依賴于其他子系統(tǒng)的行為,,所以聯(lián)合仿真必須是以逐步計(jì)算的方式進(jìn)行。
3,、示例
每個(gè)仿真程序負(fù)責(zé)計(jì)算一個(gè)子系統(tǒng)的行為,,比如在自動(dòng)駕駛HiL系統(tǒng)中,aiSim負(fù)責(zé)場(chǎng)景和傳感器仿真,,CarSim負(fù)責(zé)車輛動(dòng)力學(xué),,兩個(gè)仿真程序互相使用對(duì)方產(chǎn)生的輸出來(lái)進(jìn)行計(jì)算,。
CarSim中車輛動(dòng)力學(xué)更新的頻率時(shí)1kHz,那么需要同步aiSim中場(chǎng)景更新的頻率也為1kHz,,而且只有在收到動(dòng)力學(xué)信息后才會(huì)進(jìn)行下一步的仿真,。
4、同步和誤差管理
在聯(lián)合仿真的過(guò)程中,,可能會(huì)產(chǎn)生附加誤差,,需要通過(guò)合適的聯(lián)合仿真算法或是通信模式來(lái)將其限制在可接受的范圍內(nèi),比如設(shè)置更新步長(zhǎng)等,。