博客專欄

        EEPW首頁 > 博客 > 技術分享 | 使用TSMaster從零打造車輛控制器HIL實時仿真系列4

        技術分享 | 使用TSMaster從零打造車輛控制器HIL實時仿真系列4

        發布人:汽車電子工程師 時間:2022-11-22 來源:工程師 發布文章

        一、SDK融入TSMaster運行環境


        由于此視頻采用了CarSim controller自帶的CarSim engine客戶端,需要對代碼庫做一些配置,也就是需要引用CarSim controller開發包的相關sdk文件。我們打開ABS算法小程序的代碼庫。

         

        向上進入common文件夾,這個文件夾可存放多個小程序公共的頭文件和代碼文件,我們將SDK文件拖入此文件夾中。

         

        接著轉到全局定義中,第一行代碼,引用一個C++頭文件 #include "CarSimAPIUtilities.hpp"。


        圖片


        隨后點擊編譯,可以看到,SDK也融入了TSMaster的運行環境中。


        二、SDK控制動力學模型


        接下來我們就可以通過調用SDK來輕松控制動力學模型了。


        我們可以使用CarSim engine自帶的這 47 個API函數來操作CarSim,當然也可以選用基于CarSim engine開發的SDK來實現,相比起來SDK的函數更加簡潔,它將整個 CarSim的控制分為三個階段:初始化、運行、和結束運行。

         

        初始化函數名為 callback_setup,放在程序啟動事件中。


        圖片


        運行函數名為 callback_start_carsim,放在step函數中,并且讓它只執行一次;這需要再申請一個全局變量 vToStart,來實現單次操作。


        圖片


        結束運行函數名為 callback_teardown,放在程序停止事件中;寫完后我們編譯程序,運行程序。


        三、車輛加速仿真試驗


        接下來我們嘗試加速車輛,并在車速高于80kph時,緊急制動,要完成這個操作,只需要在我們的ABS小程序中,再自 定義兩個API函數即可,我們將這兩個函數分別命名為acc和brake。

         

        在acc中,我們操縱油門,此時需要到CarSim controller中拷貝輸入變量名,throttle,cs-

        >IMP_THROTTLE_ENGINE = 0.6;


        圖片


        在brake中,我們模擬駕駛員以150 bar的壓力踩下制動踏板進行緊急制動,這就需要設置主缸壓力為15MPa,我們設置一個全局變量 vPMC 來接收這個主缸壓力,同時,還需要到全局定義中聲明這個 vPMC。


        圖片


        為了對比有無ABS的制動效果,我們首先嘗試沒有ABS算法的情況,那么這個壓力將直接作用在四個輪缸上,這里還需聲明一個變量 vHasABS,默認為假。


        圖片


        接著來到step函數中,通過 vHasABS 來區分算法的執行與否,若沒有執行算法,則直接賦值輪缸壓力。

         

        完成邏輯之后,我們需要觀測輪速和壓力,這些變量都來自于整車模型,如何觀測呢?我們可以使用小程序的變量將其表達出來。


        圖片


        轉到變量組上,點擊右鍵添加變量表,依次輸入車速,行駛距離,油門,各個輪速和各個壓力值。點擊確定后,一系列變量變申明好了,與全局定義不同的是,這些變量是系統變量,可以被其他小程序,或是被graphics或者面板等等窗口獲取并自動繪制曲線。

         

        我們回到step函數,需要依次對這些系統變量進行賦值,賦值使用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);


        隨后運行程序,打開系統變量表,就可以看到我們為這個小程序添加的一系列監控變量。


        圖片


        我們打開graphics,將圖形分為三欄,上欄顯示速度,中欄顯示壓力,下欄顯示油門和行駛距離等信息,隨后添加各個系統變量進行觀測。


        圖片


        再轉到自動化模塊中,將我們現有的邏輯做一些修改,也就是啟動后等待車輛加速到80公里每小時,再進行制動,只有制動到車速為0時,才停止仿真。


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。




        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江津市| 新邵县| 永仁县| 巴林右旗| 山西省| 贵定县| 天长市| 乐至县| 杨浦区| 菏泽市| 万州区| 天水市| 山丹县| 阿图什市| 太仆寺旗| 秦安县| 和硕县| 澳门| 会泽县| 敖汉旗| 永康市| 邯郸市| 平定县| 图木舒克市| 恩平市| 衡阳县| 康平县| 沙雅县| 黄冈市| 桐乡市| 威远县| 建平县| 周口市| 历史| 和龙市| 岗巴县| 中宁县| 军事| 七台河市| 远安县| 闽侯县|