?在上一篇文章 “康謀分享 | 自動(dòng)駕駛聯(lián)合仿真——功能模型接口FMI(三)http://www.socialnewsupdate.com/d/3875615.html”,我們講述了在構(gòu)建FMU中,如何通過(guò)fmi_simple_car.cpp來(lái)實(shí)現(xiàn)FMI2.0,即如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的車(chē)輛模型來(lái)進(jìn)行車(chē)輛動(dòng)力學(xué)仿真。今天康謀接著展示如何通過(guò)simple_car.cpp和simple_car.h構(gòu)建車(chē)輛模型本身。
一、操作步驟
首先simple_car.cpp主要構(gòu)建了車(chē)輛所需的多個(gè)動(dòng)力學(xué)參數(shù),包括底盤(pán)的位姿、車(chē)輪的狀態(tài)等,而simple_car.h提供多個(gè)函數(shù)來(lái)實(shí)現(xiàn)基于FMI2.0標(biāo)準(zhǔn)將參數(shù)寫(xiě)入到車(chē)輛中。
simple_car.cpp主要分為三部分:
- 初始化車(chē)輛動(dòng)力學(xué)參數(shù)
- 計(jì)算參數(shù)并更新車(chē)輛的運(yùn)動(dòng)變化
- 根據(jù)車(chē)輛的位姿計(jì)算車(chē)輪的坐標(biāo)
在頭文件中,除了定義相關(guān)函數(shù)外,還提供了車(chē)輛的一些靜態(tài)參數(shù),用于協(xié)助動(dòng)力學(xué)參數(shù)的計(jì)算,比如給定車(chē)輛的轉(zhuǎn)向傳動(dòng)比、軸距、最大附著加速度、車(chē)輪半徑等。

1、實(shí)例化
我們來(lái)看一個(gè)simple_car.cpp中實(shí)現(xiàn)車(chē)輛狀態(tài)更新的簡(jiǎn)單示例:
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]
這三個(gè)分別計(jì)算了轉(zhuǎn)向角、曲率和偏航率?;谶@個(gè)三個(gè)值,再結(jié)合車(chē)輛的靜態(tài)參數(shù),我們可以計(jì)算并推算出其他的車(chē)輛運(yùn)動(dòng)姿態(tài)參數(shù)。
我們也會(huì)通過(guò)加速踏板和剎車(chē)踏板的狀態(tài)來(lái)計(jì)算車(chē)輛(底盤(pán)的縱向加速度),其中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]。
使用這一方式的原因:一是為了計(jì)算不同參數(shù)時(shí)清晰明了,此外更重要的是這和FMU中的modelDescription.xml文件所對(duì)應(yīng),modelDescription.xml規(guī)定了FMU的結(jié)構(gòu),其結(jié)構(gòu)可以參考FMI系列的第二篇文章:“康謀分享 | 自動(dòng)駕駛聯(lián)合仿真——功能模型接口FMI(二)http://www.socialnewsupdate.com/d/3535805.html”。
2、關(guān)注參數(shù)
在XML文件中,需要關(guān)注的參數(shù)類(lèi)型為name和valuReference,STEERING_ANGLE這一name對(duì)應(yīng)的valuReference值為3,那么為了方便我們使用這些參數(shù),可以把這些定義的宏寫(xiě)入到value_reference_ids.h中,當(dāng)然也可以寫(xiě)入simple_car.h這一頭文件里。

3、Cmake 編譯
在完成simple_car.cpp、simple_car.h和FMU描述文件modelDescription.xml文件的構(gòu)建,最后一步就是要將其編譯成為所需FMU文件并生成我們的動(dòng)態(tài)庫(kù)文件(.so/.dll)。
我們采用Cmake來(lái)進(jìn)行編譯,除了定義源文件、添加庫(kù)、指定目錄、鏈接庫(kù)(主要是glm和fmi2_interface)以外,我們還需要針對(duì)FMI平臺(tái)進(jìn)行配置:

以上就是基于FMI2.0構(gòu)建FMU的全部?jī)?nèi)容,在下一期中我們將介紹在仿真軟件aiSim中通過(guò)車(chē)輛動(dòng)力學(xué)API來(lái)實(shí)現(xiàn)和FMU的聯(lián)合仿真。
-
汽車(chē)行業(yè)
+關(guān)注
關(guān)注
0文章
347瀏覽量
15890 -
聯(lián)合仿真
+關(guān)注
關(guān)注
0文章
5瀏覽量
8392 -
自動(dòng)駕駛
+關(guān)注
關(guān)注
788文章
14308瀏覽量
170541 -
功能模塊
+關(guān)注
關(guān)注
0文章
19瀏覽量
2857
發(fā)布評(píng)論請(qǐng)先 登錄
康謀分享 | 自動(dòng)駕駛聯(lián)合仿真——功能模型接口FMI(二)

自動(dòng)駕駛聯(lián)合仿真——功能模型接口FMI(終)

康謀分享 | 3DGS:革新自動(dòng)駕駛仿真場(chǎng)景重建的關(guān)鍵技術(shù)

康謀分享 | 自動(dòng)駕駛仿真進(jìn)入“標(biāo)準(zhǔn)時(shí)代”:aiSim全面對(duì)接ASAM OpenX

自動(dòng)駕駛真的會(huì)來(lái)嗎?
AI/自動(dòng)駕駛領(lǐng)域的巔峰會(huì)議—國(guó)際AI自動(dòng)駕駛高峰論壇
如何讓自動(dòng)駕駛更加安全?
自動(dòng)駕駛汽車(chē)的處理能力怎么樣?
自動(dòng)駕駛車(chē)的人車(chē)交互接口設(shè)計(jì)方案
自動(dòng)駕駛線控底盤(pán)VCU功能介紹
康謀新聞丨走進(jìn)康謀科技——您的自動(dòng)駕駛解決方案合作伙伴

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

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

康謀分享 | 汽車(chē)仿真與AI的結(jié)合應(yīng)用

康謀分享 | 直面AD/ADAS快速開(kāi)發(fā)挑戰(zhàn):IVEX自動(dòng)駕駛場(chǎng)景管理及分析平臺(tái)!

評(píng)論