日本高清在线播放一区二区三区,久久WWW成人免费观看,综合网中文字幕,视频国产91

Technical Articles

技術文章

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

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

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

在之前的兩篇文章中(文末往期回顧中可查看),我們主要介紹了功能模型接口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號
4月一起加油| 河南一枯井发现近百名烈士遗骸| 找工作不要限制于招聘app| 中国咖啡98%来自云南河南一枯井发现近百名烈士遗骸 | 站姐愚人节团建预告| 房琪 彭小苒| 乡村行看振兴山西黎城投资近4亿元打造浊漳河生态走廊助力乡村振兴 | 甲亢哥被喷火表演吓到尖叫| 智能见真章安全有底线| 两项便利港澳台居民新举措20日起实施| 陶喆成都抢票| 在单位上班一定要沉得住气| 日本特大地震若发生或致近30万人死亡 | 山姆客服称水果中吃出虫是正常情况| 为什么每年都会怀念张国荣| newjeans是高层内斗的牺牲品吗| 好房子的新标准来了| 甲亢哥成都行直播| 沉浸式感受广西三月三| 男子肝癌晚期只打一针获新生| 向往S7一车双模智驾SUV| 金秀贤拍的金赛纶睡觉照片| 林孝埈每天主打一个快乐| 提高墙体楼板隔声性能| 50万竟然买了4辆宝马| 张家界回应因台词又在韩国爆火| 中国光大银行推出专项工作方案全面助力提振消费扩大内需 | 男子肝癌晚期只打一针获新生| 沉浸式感受广西三月三| 山姆客服称水果中吃出虫是正常情况河南一枯井发现近百名烈士遗骸 | 赵雅芝儿子金秀贤记者会直播 | 白敬亭 宋轶| 乌尔善发文| 慎买带有QS标志产品| 日本对中国人民负有严重历史罪责| 4层及以上住宅设电梯| BLACKPINK未公开的物料| 好房子的新标准来了| 檀健次 帕拉丁| 申请过国家助学贷款的同学注意了| 黄子韬徐艺洋睡觉前要对暗号|