特大黑人巨大XXXXXXX,麻豆产国品一二三产品区别,7777色情网黄A片,国产精品99久久久久久宅男,五十路六十路熟女,多人做爱视频,国产久草av,欧美高清操逼,波多野结衣AV二区,无码人妻AV导航,国产成人免费在线视频

Technical Articles

技術(shù)文章

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

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

更新時(shí)間:2024-07-10      點(diǎn)擊次數(shù):1374

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


一、相關(guān)配置

OS:Ubuntu22.05

仿真軟件:aiSim 5.2.0


首先是要構(gòu)建所需要的FMU,在一些動力學(xué)仿真軟件上,如CarSim,可以直接導(dǎo)出動力學(xué)模型對應(yīng)的FMU文件,但本次我們基于C++從零構(gòu)建FMU文件。


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


二、操作步驟

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


頭文件:


1、實(shí)例化

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

fmi2Component fmi2Instantiate(  

fmi2String /*實(shí)例名稱*/,

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

fmi2String /*標(biāo)識符*/,

fmi2String /*資源位置*/,

const fmi2CallbackFunctions* /*回調(diào)函數(shù)*/,

fmi2Boolean /*是否可見*/,

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

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

car_is_used = True; //預(yù)先設(shè)置的標(biāo)志變量,用于表示表示車輛是否正在使用

returen &only_one_car; //預(yù)先定義的全局SimpleCar對象only_one_car

}


2、FMU交互

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


① 獲取類型

獲取實(shí)數(shù),通過遍歷引用數(shù)組vr,獲取對應(yīng)的值并存儲。

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;

}

同樣還能夠?qū)崿F(xiàn)獲取整數(shù)、布爾值和字符串值。


② 設(shè)置類型

設(shè)置實(shí)數(shù),同樣通過only_one_car.SetValue(vr[i], value[i])設(shè)置對應(yīng)的值。

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;

}

同樣還能夠?qū)崿F(xiàn)獲取整數(shù)、布爾值和字符串值。


③ 執(zhí)行仿真

獲取實(shí)聯(lián)合仿真函數(shù)(CO),可以是根據(jù)之前實(shí)數(shù)和證書引入導(dǎo)數(shù)計(jì)算,又或是引入仿真步驟的執(zhí)行和取消數(shù),通過遍歷引用數(shù)組vr,獲取對應(yīng)的值并存儲。

比如執(zhí)行仿真步驟,其中DoStep將會在Simple_car.cpp中實(shí)現(xiàn):

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

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

return fmi2OK;

}

同樣還能夠?qū)崿F(xiàn)獲取整數(shù)、布爾值和字符串值。


3、初始化和釋放

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


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


以上就是基于FMI2.0實(shí)現(xiàn)車輛模型時(shí)所需的基本內(nèi)容,剩余的內(nèi)容我們將在后續(xù)的文章中進(jìn)行分享。

400-999-3848
歡迎您的咨詢
我們將竭盡全力為您用心服務(wù)
3634354716
關(guān)注微信
版權(quán)所有 © 2025 廣州虹科電子科技有限公司  備案號:粵ICP備15080866號
欧美操B视频看看去去| 日本久久网| 亚洲自拍偷拍第一页不卡视频| 人妻lspav| 国产日韩欧美亚洲天堂| 四虎影厍在线观看地址| 五月婷婷xxx| 老湿福利影院| 大香蕉性交欧美| 成人网站网站A片| 亚洲男人的天堂色偷九九| 牛牛老司机a'v| 日韩欧美在线中文字幕网| 十八禁三级片| 天天色天天色| 美丽的小蜜桃2| 制服爆操视频| 日韩A片免费观看| 精品与欧美交牲久久久久| 青青操原91| A毛片人妻| 一区二区中文字幕| 色www亚洲国产阿娇yao| 亚洲老女熟肥| 先锋影音一区二区| 999激情五月天婷婷| 亚欧日韩毛片在线观看| 欧美精品中文在线| 人人人操人人操| 福利淫地| 无码65p| 91成人亚洲| 人妻日日夜夜爽| 国产黄色超碰| 久操作爱手机在线| 春风又绿江南岸| 亚洲无码10p| 东京色综合网| 美女黄色在线观看网站大全| 大香蕉大鸡吧| 蜜桃成熟电影|