狠狠色丁香久久综合婷婷亚洲成人福利在线-欧美日韩在线观看免费-国产99久久久久久免费看-国产欧美在线一区二区三区-欧美精品一区二区三区免费观看-国内精品99亚洲免费高清

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

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

            時間:2024-7-24 閱讀:699
            分享:

            在上一篇文章:,我們講述了在構(gòu)建FMU中,如何通過fmi_simple_car.cpp來實現(xiàn)FMI2.0,即如何實現(xiàn)一個簡單的車輛模型來進行車輛動力學(xué)仿真。今天康謀接著展示如何通過simple_car.cpp和simple_car.h構(gòu)建車輛模型本身。


            一、操作步驟

            首先simple_car.cpp主要構(gòu)建了車輛所需的多個動力學(xué)參數(shù),包括底盤的位姿、車輪的狀態(tài)等,而simple_car.h提供多個函數(shù)來實現(xiàn)基于FMI2.0標(biāo)準(zhǔn)將參數(shù)寫入到車輛中。



            simple_car.cpp主要分為三部分:

            • 初始化車輛動力學(xué)參數(shù)

            • 計算參數(shù)并更新車輛的運動變化

            • 根據(jù)車輛的位姿計算車輪的坐標(biāo)

            在頭文件中,除了定義相關(guān)函數(shù)外,還提供了車輛的一些靜態(tài)參數(shù),用于協(xié)助動力學(xué)參數(shù)的計算,比如給定車輛的轉(zhuǎn)向傳動比、軸距、最大附著加速度、車輪半徑等。


            圖1 (1).png


            1、實例化

            我們來看一個simple_car.cpp中實現(xiàn)車輛狀態(tài)更新的簡單示例:

            const double wheel_angle =val_refs[STEERING_ANGLE] / m_steer_transmission_ratio;

            const double curvature = wheel_angle / m_wheelbase

            const double yaw_rate = curvature * val_refs[CHASSIS_SPEED]


            這三個分別計算了轉(zhuǎn)向角、曲率和偏航率?;谶@個三個值,再結(jié)合車輛的靜態(tài)參數(shù),我們可以計算并推算出其他的車輛運動姿態(tài)參數(shù)。



            我們也會通過加速踏板和剎車踏板的狀態(tài)來計算車輛(底盤的縱向加速度),其中m_max_adh_acc為在頭文件中預(yù)先定義的最大附著加速度:


            if val_refs[BRAKE_PEDAL_POSITION] < 0.0


            {

            val_refs[CHASSIS_LONGITUDINAL_ACCELERATION] = val_refs[BRAKE_PEDAL_POSITION] * m_max_adh_acc;

            }



            可以注意到我們使用了宏定義的[STEERING_ANGLE]、[CHASSIS_LONGITUDINAL_ACCELERATION]和[BRAKE_PEDAL_POSITION]。



            使用這一方式的原因:一是為了計算不同參數(shù)時清晰明了,此外更重要的是這和FMU中的modelDescription.xml文件所對應(yīng),modelDescription.xml規(guī)定了FMU的結(jié)構(gòu),其結(jié)構(gòu)可以參考FMI系列的第二篇文章。



            2、關(guān)注參數(shù)

            在XML文件中,需要關(guān)注的參數(shù)類型為name和valuReference,STEERING_ANGLE這一name對應(yīng)的valuReference值為3,那么為了方便我們使用這些參數(shù),可以把這些定義的宏寫入到value_reference_ids.h中,當(dāng)然也可以寫入simple_car.h這一頭文件里。

            圖2 (1).png


            3、Cmake 編譯


            在完成simple_car.cpp、simple_car.h和FMU描述文件modelDescription.xml文件的構(gòu)建,最后一步就是要將其編譯成為所需FMU文件并生成我們的動態(tài)庫文件(.so/.dll)。




            我們采用Cmake來進行編譯,除了定義源文件、添加庫、特定目錄、鏈接庫(主要是glm和fmi2_interface)以外,我們還需要針對FMI平臺進行配置:


            圖3 (1).png


            以上就是基于FMI2.0構(gòu)建FMU的全部內(nèi)容,在下一期中我們將介紹在仿真軟件aiSim中通過車輛動力學(xué)API來實現(xiàn)和FMU的聯(lián)合仿真。


            會員登錄

            ×

            請輸入賬號

            請輸入密碼

            =

            請輸驗證碼

            收藏該商鋪

            X
            該信息已收藏!
            標(biāo)簽:
            保存成功

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

            常用:

            提示

            X
            您的留言已提交成功!我們將在第一時間回復(fù)您~
            撥打電話 產(chǎn)品分類
            在線留言