<thead id="wtvt8"></thead>

      <label id="wtvt8"></label>
        1. <li id="wtvt8"><big id="wtvt8"></big></li><span id="wtvt8"><optgroup id="wtvt8"></optgroup></span>
            国产黑色丝袜在线播放,97视频精品全国免费观看,日韩精品中文字幕有码,在线播放深夜精品三级,免费AV片在线观看网址,福利一区二区在线观看,亚洲深夜精品在线观看,2019亚洲午夜无码天堂

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

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

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

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


            一、相關配置

            OS:Ubuntu22.05

            仿真軟件:aiSim 5.2.0


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


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

            • fmi_simple_car.cpp:根據FMI2.0標準實現一個車輛模型

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

            • simple_car.cpp:車輛模型的實現文件

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

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

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


            二、操作步驟

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


            頭文件:

            • 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* /*回調函數*/,

            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實現車輛模型時所需的基本內容,剩余的內容我們將在后續的文章中進行分享。

            會員登錄

            ×

            請輸入賬號

            請輸入密碼

            =

            請輸驗證碼

            收藏該商鋪

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

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

            常用:

            提示

            X
            您的留言已提交成功!我們將在第一時間回復您~
            撥打電話 產品分類
            在線留言
            主站蜘蛛池模板: 日韩av日韩av在线| 在线涩涩免费观看国产精品| 日韩国产成人精品视频| 亚洲最大日韩精品一区| 亚洲成色精品一二三区| 久久人与动人物a级毛片| 国产小受被做到哭咬床单GV| 一区二区福利在线视频| 依依成人精品视频在线观看 | 欧美极品色午夜在线视频| 亚洲色拍拍噜噜噜最新网站| 国产精品普通话国语对白露脸 | 亚洲一区中文字幕人妻| 福利视频在线一区二区| 国产成人精品视频不卡| 亚洲人妻一区二区精品| 成人啪精品视频网站午夜 | 精品人妻中文字幕av| 人妻中文字幕不卡精品| 国产午夜福利免费入口| 四虎在线播放亚洲成人| 精品国产中文字幕av| 国偷自产一区二区三区在线视频 | 欧美性群另类交| 国产中文字幕在线一区| 国产成人一区二区三区免费 | 91精品国产午夜福利| 国产成人毛片无码视频软件 | 亚洲高清WWW色好看美女| 东京热人妻无码一区二区av| 亚洲一区成人av在线| 国产国拍亚洲精品永久软件| 国产片AV国语在线观看手机版| 国产精品中文字幕免费| 精品人妻日韩中文字幕| 国产在线中文字幕精品| 日韩乱码人妻无码中文字幕视频 | 丰满少妇被猛烈进出69影院| 99久久婷婷国产综合精品青草漫画 | 亚洲一区成人在线视频| 一卡二卡三卡四卡视频区|