岛国av在线免费-亚洲日韩欧美视频-色五月色开心色婷婷色丁香-91蝌蚪视频在线-aaa毛片视频-中文区中文字幕免费看-97久草-黄色片一级片-婷婷丁香狼人久久大香线蕉-欧美久久久久-人妻无码不卡中文字幕系列-男人天堂你懂的-少妇xxx-九九色精品-黄色片网站在线看

Technical Articles

技術文章

當前位置:首頁  >  技術文章  >  康謀分享 | 自動駕駛聯合仿真——功能模型接口FMI(三)

康謀分享 | 自動駕駛聯合仿真——功能模型接口FMI(三)

更新時間:2024-07-10      點擊次數:1418

在之前的兩篇文章中(文末往期回顧中可查看),我們主要介紹了功能模型接口FMI的主要組成部分和一些使用場景,今天就以康謀自動駕駛仿真軟件aiSim為例,來展示一下如何建立一個FMU并實現基于UDP和FMI聯合仿真(co-simulation)數據通信。


一、相關配置

OS:Ubuntu22.05

仿真軟件:aiSim 5.2.0


首先是要構建所需要的FMU,在一些動力學仿真軟件上,如CarSim,可以直接導出動力學模型對應的FMU文件,但本次我們基于C++從零構建FMU文件。


需要編輯的6份文件分別是:


二、操作步驟

首先是fmi_simple_car.cpp文件主要包含了6個部分,最終實現為模擬控制一個簡單的車輛模型,包括了實例化、設置參數,執行仿真步驟以及獲取和設置模型參數的功能。


頭文件:


1、實例化

實例化FMU,在之前的文章中我們以C語言為例,本次采用C++來做示范。

fmi2Component fmi2Instantiate(  

fmi2String /*實例名稱*/,

fmi2Type fmuType /*實例類型(ME/CO)*/,

fmi2String /*標識符*/,

fmi2String /*資源位置*/,

const fmi2CallbackFunctions* /*回調函數*/,

fmi2Boolean /*是否可見*/,

fmi2Boolean /*是否啟用日志*/)

{/*此處可以與用判斷車輛實例是否在使用、檢查FMU的類型是ME模型交換還是CO聯合仿真、執行實例化車輛*/

car_is_used = True; //預先設置的標志變量,用于表示表示車輛是否正在使用

returen &only_one_car; //預先定義的全局SimpleCar對象only_one_car

}


2、FMU交互

實例化完成后,我們要實現一系列函數用于FMU交互的具體實現,主要包含獲取和設置變量,執行仿真步驟等。


① 獲取類型

獲取實數,通過遍歷引用數組vr,獲取對應的值并存儲。

fmi2Status fmi2GetReal(fmi2Component /*c*/, const fmi2ValueReference vr[], size_t nvr, fmi2Real value[]){

for (size_t i = 0; i<nvr; ++i)    {

value[i] = only_one_car.GetValue(vr[i]);  

}  

return fmi2OK;

}

同樣還能夠實現獲取整數、布爾值和字符串值。


② 設置類型

設置實數,同樣通過only_one_car.SetValue(vr[i], value[i])設置對應的值。

fmi2Status fmi2SetReal(fmi2Component /*c*/, const fmi2ValueReference vr[], size_t nvr, const fmi2Real value[]){

for (size_t i = 0; i<nvr; ++i)    {

only_one_car.SetValue(vr[i], value[i]);

}

return fmi2OK;

}

同樣還能夠實現獲取整數、布爾值和字符串值。


③ 執行仿真

獲取實聯合仿真函數(CO),可以是根據之前實數和證書引入導數計算,又或是引入仿真步驟的執行和取消數,通過遍歷引用數組vr,獲取對應的值并存儲。

比如執行仿真步驟,其中DoStep將會在Simple_car.cpp中實現:

fmi2Status fmi2DoStep(fmi2Component /*c*/, fmi2Real /*currentCommunicationPoint*/, fmi2Real communicationStepSize, fmi2Boolean /*newStep*/){    

log_to_file("fmi2DoStep()");    only_one_car.DoStep(communicationStepSize); 

return fmi2OK;

}

同樣還能夠實現獲取整數、布爾值和字符串值。


3、初始化和釋放

除此之外,我們還需要注意在仿真過程中FMU實例的初始化和釋放。


比如我們可以簡單的通過設置car_is_used= false實現實例的釋放,可以通過only_one_car = SimplerCar()來實現FMU的重置,其中SimplerCar類的具體實現在simple_car.cpp中。


以上就是基于FMI2.0實現車輛模型時所需的基本內容,剩余的內容我們將在后續的文章中進行分享。

400-999-3848
歡迎您的咨詢
我們將竭盡全力為您用心服務
3634354716
關注微信
版權所有 © 2025 廣州虹科電子科技有限公司  備案號:粵ICP備15080866號
主站蜘蛛池模板: 福利片网址| 可乐操在线观看| 日本国产中文字幕| 娇妻自述被调教经历1~8| 午夜影院在线看| 久色在线| 懂色av蜜臀av粉嫩av分享吧| 中文字幕av二区| 国产精九九网站漫画| 五月婷六月| 久久精品久久久久久| 91久| 好姑娘5免费观看全集| 亚洲天堂网址| 男生操女生动漫| 韩日性视频| 美女毛毛片| 亚洲AV午夜精品| 日本中文字幕网站| 国产精品丝袜高跟| 成年人网站在线观看视频| 亚洲成人精选| 黑人vid侏儒女evs| 黄色在线免费| 91麻豆免费在线观看| 国产又爽又黄的视频| 欧美日韩成人一区二区| 久久久久久9999| 欧美性猛交xxx乱大交3| 999国内精品永久免费视频 | 91福利视频免费观看| 东北大棚全肉裸体表演| 国产精品久久国产愉拍| 国产日本欧美一区二区三区| 免费拍拍拍网站| 精品成人av一区二区三区| 超碰在线影院| 国产亚洲黄色片| 小便特写合集18p| 女同互舔视频| 无码人妻一区二区三区免费| 都市激情亚洲| 193尤物| 国产热视频| 欧美黄色三级| 日韩欧美一区二区不卡| 日韩一区二区三区高清| 免费暧暧视频| 抱着老师的嫩臀猛然挺进视频| 一级久久片| 色人天堂| 老司机在线免费视频| 国产在线一| 99热精品在线| 日韩欧美无| 麻豆视频成人| 久久99久久99精品免视看婷婷| 国产熟女一区二区三区五月婷| 日本乱码一区二区| 黄色大片网站在线观看| 色悠久久久| 日本免费网站| 茄子av在线| 国产成人久久777777| 欧美激情图| 免费污片软件| 午夜少妇福利| 久操网站| 熟女高潮一区二区三区视频| 嗯啊不要了视频| 98久久| 少妇高潮zzzz2xm麻豆| 免费观看亚洲| 一起草.com| 在线播放你懂的| 四虎av网址| 欧美另类z0z变态| 日韩有码在线观看| 叶爱在线| 免费国产91| 欧洲毛片| 日韩中文字幕综合| 精品av一区二区| 欧美一区二区性久久久| 和村长玉米地疯狂做爰| 免费在线看黄视频| 国产永久精品| 91精品国产综合久久精品| 粉嫩av渣男av蜜乳av| 国产成人av一区二区三区在线观看| 欧美激情一级欧美精品| 国产成人精品免费看视频| 久久精品首页| 麻豆视频软件| 日本1区| 黄色一级带| 日韩少妇诱惑| av资源天堂| 黄色片免费|