在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

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

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

            發(fā)布人:汽車電子工程師 時(shí)間:2022-11-22 來源:工程師 發(fā)布文章

            一、SDK融入TSMaster運(yùn)行環(huán)境


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

             

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

             

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


            圖片


            隨后點(diǎn)擊編譯,可以看到,SDK也融入了TSMaster的運(yùn)行環(huán)境中。


            二、SDK控制動(dòng)力學(xué)模型


            接下來我們就可以通過調(diào)用SDK來輕松控制動(dòng)力學(xué)模型了。


            我們可以使用CarSim engine自帶的這 47 個(gè)API函數(shù)來操作CarSim,當(dāng)然也可以選用基于CarSim engine開發(fā)的SDK來實(shí)現(xiàn),相比起來SDK的函數(shù)更加簡(jiǎn)潔,它將整個(gè) CarSim的控制分為三個(gè)階段:初始化、運(yùn)行、和結(jié)束運(yùn)行。

             

            初始化函數(shù)名為 callback_setup,放在程序啟動(dòng)事件中。


            圖片


            運(yùn)行函數(shù)名為 callback_start_carsim,放在step函數(shù)中,并且讓它只執(zhí)行一次;這需要再申請(qǐng)一個(gè)全局變量 vToStart,來實(shí)現(xiàn)單次操作。


            圖片


            結(jié)束運(yùn)行函數(shù)名為 callback_teardown,放在程序停止事件中;寫完后我們編譯程序,運(yùn)行程序。


            三、車輛加速仿真試驗(yàn)


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

             

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

            >IMP_THROTTLE_ENGINE = 0.6;


            圖片


            在brake中,我們模擬駕駛員以150 bar的壓力踩下制動(dòng)踏板進(jìn)行緊急制動(dòng),這就需要設(shè)置主缸壓力為15MPa,我們?cè)O(shè)置一個(gè)全局變量 vPMC 來接收這個(gè)主缸壓力,同時(shí),還需要到全局定義中聲明這個(gè) vPMC。


            圖片


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


            圖片


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

             

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


            圖片


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

             

            我們回到step函數(shù),需要依次對(duì)這些系統(tǒng)變量進(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);


            隨后運(yùn)行程序,打開系統(tǒng)變量表,就可以看到我們?yōu)檫@個(gè)小程序添加的一系列監(jiān)控變量。


            圖片


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


            圖片


            再轉(zhuǎn)到自動(dòng)化模塊中,將我們現(xiàn)有的邏輯做一些修改,也就是啟動(dòng)后等待車輛加速到80公里每小時(shí),再進(jìn)行制動(dòng),只有制動(dòng)到車速為0時(shí),才停止仿真。


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。




            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉