技術(shù)分享 | 使用TSMaster從零打造車(chē)輛控制器HIL實(shí)時(shí)仿真系列4
一、SDK融入TSMaster運行環(huán)境
由于此視頻采用了CarSim controller自帶的CarSim engine客戶(hù)端,需要對代碼庫做一些配置,也就是需要引用CarSim controller開(kāi)發(fā)包的相關(guān)sdk文件。我們打開(kāi)ABS算法小程序的代碼庫。
向上進(jìn)入common文件夾,這個(gè)文件夾可存放多個(gè)小程序公共的頭文件和代碼文件,我們將SDK文件拖入此文件夾中。
接著(zhù)轉到全局定義中,第一行代碼,引用一個(gè)C++頭文件 #include "CarSimAPIUtilities.hpp"。
隨后點(diǎn)擊編譯,可以看到,SDK也融入了TSMaster的運行環(huán)境中。
二、SDK控制動(dòng)力學(xué)模型
接下來(lái)我們就可以通過(guò)調用SDK來(lái)輕松控制動(dòng)力學(xué)模型了。
我們可以使用CarSim engine自帶的這 47 個(gè)API函數來(lái)操作CarSim,當然也可以選用基于CarSim engine開(kāi)發(fā)的SDK來(lái)實(shí)現,相比起來(lái)SDK的函數更加簡(jiǎn)潔,它將整個(gè) CarSim的控制分為三個(gè)階段:初始化、運行、和結束運行。
初始化函數名為 callback_setup,放在程序啟動(dòng)事件中。
運行函數名為 callback_start_carsim,放在step函數中,并且讓它只執行一次;這需要再申請一個(gè)全局變量 vToStart,來(lái)實(shí)現單次操作。
結束運行函數名為 callback_teardown,放在程序停止事件中;寫(xiě)完后我們編譯程序,運行程序。
三、車(chē)輛加速仿真試驗
接下來(lái)我們嘗試加速車(chē)輛,并在車(chē)速高于80kph時(shí),緊急制動(dòng),要完成這個(gè)操作,只需要在我們的ABS小程序中,再自 定義兩個(gè)API函數即可,我們將這兩個(gè)函數分別命名為acc和brake。
在acc中,我們操縱油門(mén),此時(shí)需要到CarSim controller中拷貝輸入變量名,throttle,cs-
>IMP_THROTTLE_ENGINE = 0.6;
在brake中,我們模擬駕駛員以150 bar的壓力踩下制動(dòng)踏板進(jìn)行緊急制動(dòng),這就需要設置主缸壓力為15MPa,我們設置一個(gè)全局變量 vPMC 來(lái)接收這個(gè)主缸壓力,同時(shí),還需要到全局定義中聲明這個(gè) vPMC。
為了對比有無(wú)ABS的制動(dòng)效果,我們首先嘗試沒(méi)有ABS算法的情況,那么這個(gè)壓力將直接作用在四個(gè)輪缸上,這里還需聲明一個(gè)變量 vHasABS,默認為假。
接著(zhù)來(lái)到step函數中,通過(guò) vHasABS 來(lái)區分算法的執行與否,若沒(méi)有執行算法,則直接賦值輪缸壓力。
完成邏輯之后,我們需要觀(guān)測輪速和壓力,這些變量都來(lái)自于整車(chē)模型,如何觀(guān)測呢?我們可以使用小程序的變量將其表達出來(lái)。
轉到變量組上,點(diǎn)擊右鍵添加變量表,依次輸入車(chē)速,行駛距離,油門(mén),各個(gè)輪速和各個(gè)壓力值。點(diǎn)擊確定后,一系列變量變申明好了,與全局定義不同的是,這些變量是系統變量,可以被其他小程序,或是被graphics或者面板等等窗口獲取并自動(dòng)繪制曲線(xiàn)。
我們回到step函數,需要依次對這些系統變量進(jìn)行賦值,賦值使用set操作
v.set(cs->VX);
station.set(cs->STATION);
throttle.set(cs->IMP_THROTTLE_ENGINE);
vFL.set(cs->VX_L1);
vFR.set(cs->VX_R1);
vRL.set(cs->VX_L2);
vRR.set(cs->VX_R2);
pFL.set(cs->IMP_PBK_L1);
pFR.set(cs->IMP_PBK_R1);
pRL.set(cs->IMP_PBK_L2);
pRR.set(cs->IMP_PBK_R2);
隨后運行程序,打開(kāi)系統變量表,就可以看到我們?yōu)檫@個(gè)小程序添加的一系列監控變量。
我們打開(kāi)graphics,將圖形分為三欄,上欄顯示速度,中欄顯示壓力,下欄顯示油門(mén)和行駛距離等信息,隨后添加各個(gè)系統變量進(jìn)行觀(guān)測。
再轉到自動(dòng)化模塊中,將我們現有的邏輯做一些修改,也就是啟動(dòng)后等待車(chē)輛加速到80公里每小時(shí),再進(jìn)行制動(dòng),只有制動(dòng)到車(chē)速為0時(shí),才停止仿真。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。