康謀分享 | 自動(dòng)駕駛聯(lián)合仿真——功能模型接口FMI(四)
在上一篇文章:,我們講述了在構(gòu)建FMU中,如何通過fmi_simple_car.cpp來實(shí)現(xiàn)FMI2.0,即如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的車輛模型來進(jìn)行車輛動(dòng)力學(xué)仿真。今天康謀接著展示如何通過simple_car.cpp和simple_car.h構(gòu)建車輛模型本身。
一、操作步驟
首先simple_car.cpp主要構(gòu)建了車輛所需的多個(gè)動(dòng)力學(xué)參數(shù),包括底盤的位姿、車輪的狀態(tài)等,而simple_car.h提供多個(gè)函數(shù)來實(shí)現(xiàn)基于FMI2.0標(biāo)準(zhǔn)將參數(shù)寫入到車輛中。
simple_car.cpp主要分為三部分:
初始化車輛動(dòng)力學(xué)參數(shù)
計(jì)算參數(shù)并更新車輛的運(yùn)動(dòng)變化
根據(jù)車輛的位姿計(jì)算車輪的坐標(biāo)
在頭文件中,除了定義相關(guān)函數(shù)外,還提供了車輛的一些靜態(tài)參數(shù),用于協(xié)助動(dòng)力學(xué)參數(shù)的計(jì)算,比如給定車輛的轉(zhuǎn)向傳動(dòng)比、軸距、最大附著加速度、車輪半徑等。
1、實(shí)例化
我們來看一個(gè)simple_car.cpp中實(shí)現(xiàn)車輛狀態(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é)合車輛的靜態(tài)參數(shù),我們可以計(jì)算并推算出其他的車輛運(yùn)動(dòng)姿態(tài)參數(shù)。
我們也會(huì)通過加速踏板和剎車踏板的狀態(tài)來計(jì)算車輛(底盤的縱向加速度),其中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系列的第二篇文章。
2、關(guān)注參數(shù)
在XML文件中,需要關(guān)注的參數(shù)類型為name和valuReference,STEERING_ANGLE這一name對(duì)應(yīng)的valuReference值為3,那么為了方便我們使用這些參數(shù),可以把這些定義的宏寫入到value_reference_ids.h中,當(dāng)然也可以寫入simple_car.h這一頭文件里。
3、Cmake 編譯
在完成simple_car.cpp、simple_car.h和FMU描述文件modelDescription.xml文件的構(gòu)建,最后一步就是要將其編譯成為所需FMU文件并生成我們的動(dòng)態(tài)庫文件(.so/.dll)。
我們采用Cmake來進(jìn)行編譯,除了定義源文件、添加庫、特定目錄、鏈接庫(主要是glm和fmi2_interface)以外,我們還需要針對(duì)FMI平臺(tái)進(jìn)行配置:
以上就是基于FMI2.0構(gòu)建FMU的全部內(nèi)容,在下一期中我們將介紹在仿真軟件aiSim中通過車輛動(dòng)力學(xué)API來實(shí)現(xiàn)和FMU的聯(lián)合仿真。
相關(guān)產(chǎn)品
免責(zé)聲明
- 凡本網(wǎng)注明“來源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其他來源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。