中国少妇a片bbbbbb洗澡,岳打开双腿开始配合交换,中文字幕无码乱人伦,国产乱人对白A片

廣州虹科電子科技有限公司

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

時間:2024-7-10 閱讀:923
分享:

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


一、相關配置

OS:Ubuntu22.05

仿真軟件:aiSim 5.2.0


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


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

  • fmi_simple_car.cpp:根據(jù)FMI2.0標準實現(xiàn)一個車輛模型

  • simple_car.h:車輛模型的頭文件

  • simple_car.cpp:車輛模型的實現(xiàn)文件

  • value_reference_ids.h:定義值應用ID的頭文件

  • modelDescription.xml:定義FMU結構的根文件

  • simple_car_fmu.json文件:用于將構建的FMU文件映射到aiSim的車輛動力學中(非構建FMU所必須)


二、操作步驟

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


頭文件:

  • include "fmi2Functions.h" (是FMI2.0標準的頭文件,請參考FMI)

  • include

  • include

  • include "simple_car.h"


1、實例化

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

fmi2Component fmi2Instantiate(  

fmi2String /*實例名稱*/,

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

fmi2String /*標識符*/,

fmi2String /*資源位置*/,

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

fmi2Boolean /*是否可見*/,

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

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

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

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

}


2、FMU交互

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


① 獲取類型

獲取實數(shù),通過遍歷引用數(shù)組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;

}

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


② 設置類型

設置實數(shù),同樣通過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;

}

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


③ 執(zhí)行仿真

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

比如執(zhí)行仿真步驟,其中DoStep將會在Simple_car.cpp中實現(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實例的初始化和釋放。


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


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

會員登錄

×

請輸入賬號

請輸入密碼

=

請輸驗證碼

收藏該商鋪

X
該信息已收藏!
標簽:
保存成功

(空格分隔,最多3個,單個標簽最多10個字符)

常用:

提示

X
您的留言已提交成功!我們將在第一時間回復您~
撥打電話 產(chǎn)品分類
在線留言
久久久久亚洲精品男人的天堂| 天下第一社区视频www国语| 14又嫩又紧水又多| 成人欧美一区二区三区在线视频| 无码熟妇av人妻又粗又大| 3d全彩无码啪啪本子全彩| 又爽又高潮日本少妇a片| 日本特黄特色aaaaa大片免费| 宝宝好涨水快流出来免费视频| 中国大陆高清aⅴ毛片| 真人高清实拍女处被破的视频| 国产96在线 | 亚洲| 777奇米四色成人影视色区| 各种各色bb小便| 国产精品日本一区二区不卡视频| 女明星裸体看个够(无遮挡)| 善良的小峓子hd完整视频中文| 中国gay片男同志免费网站| 双乳被一左一右吃着动态图| 邻居人妻与教练HD三级| 丫鬟露出双乳让老爷玩弄| 暗卫受被肉到失禁各种play| 男男潮喷翻白眼漏尿高h漫画| 国产av无码成人黄网站免费| 久久久久久伊人高潮影院| 将军猛烈顶弄h太子肉肉| 国产98色在线 | 国| 又湿又紧又大又爽又A视频| 最近免费观看在线中文2019| 粗大挺进朋友人妻身体里国产电影| 波多野结衣作品| 蜜桃久久精品成人无码AV| 护士夏子的热情夏天| 班长撕开乳罩揉我胸好爽| 巨胸喷奶水视频WWW| 玩弄丰满人妻大bbwbbw| 末满18禁止看的色视频| 久久99国产精品成人| 女人脱了内衣让男人揉摸吻亲| 破了亲妺妺的处免费视频国产| 99久久国产综合精品成人影院|