陸一弘
(同濟大學(xué)汽車學(xué)院,上海 201804)
日前,得益于高速發(fā)展的經(jīng)濟,我國的汽車工業(yè)也迅速發(fā)展,已成為重要的支柱產(chǎn)業(yè)。在汽車工業(yè)的發(fā)展過程中,計算機仿真技術(shù)得到了廣泛的應(yīng)用。使用仿真技術(shù),可以大大縮短產(chǎn)品的開發(fā)周期,降低開發(fā)成本,提高產(chǎn)品的可靠性[1]。目前,PreScan、CarSim與Simulink都是汽車工程中被廣泛使用的仿真軟件。然而,這些軟件都有其各自的功能與側(cè)重點:PreScan適合行車場景的搭建;CarSim適合動力學(xué)模型的建立;Simulink適合控制算法的設(shè)計及信號通訊。在整車動力學(xué)控制相關(guān)研究中,已有人使用CarSim與Simulink聯(lián)合仿真的方法[2];在智能汽車環(huán)境感知的相關(guān)研究中,已有人使用PreScan與Simulink聯(lián)合仿真的方法[3-4]。隨著汽車智能化的大力發(fā)展,綜合應(yīng)用環(huán)境感知以及控制決策的研究勢必越來越受到重視,聯(lián)合上述三種軟件進行仿真研究是一個可行的方法。然而,已有文獻很少有相關(guān)的研究內(nèi)容,因此對于三者聯(lián)合仿真方法的研究顯得十分必要。
PreScan是一款汽車駕駛仿真軟件產(chǎn)品,是一個可以快速搭建無人車測試場景的平臺。該軟件具有良好的圖形交互界面,能提供多種傳感器模型,支持攝像頭、雷達、GPS、車聯(lián)網(wǎng)等多種應(yīng)用功能的開發(fā)運用。軟件不僅提供多種可視化模型,還可以設(shè)置天氣狀況,場景的逼真程度良好。然而,軟件提供的車輛動力學(xué)模型非常簡單,無法全面真實地反映車輛實際的動力學(xué)特性。
CarSim是一款系統(tǒng)動力學(xué)的仿真軟件。由于該軟件保留了實際汽車動力學(xué)特性,軟件中提供的車輛動力學(xué)模型能夠較真實地反映汽車橫向、縱向與垂向的動力學(xué)特性,故利用CarSim可以很好的對汽車的動力學(xué)、制動性、操縱穩(wěn)定性、平順性等進行研究。然而,CarSim提供的只是較為真實的車輛動力學(xué)被控對象,若要利用該被控對象進行深入地研究分析,往往需要結(jié)合其他仿真軟件聯(lián)合仿真。
Simulink是MATLAB軟件中的一種可視化仿真工具,為模型的設(shè)計、測試、計算和仿真提供了圖形化的運行環(huán)境,可以滿足時變系統(tǒng)與多種動態(tài)系統(tǒng)的建模仿真。Simulink的應(yīng)用領(lǐng)域非常廣,例如控制算法設(shè)計、信號處理與通訊、圖像與視頻處理等諸多領(lǐng)域,遠不局限于汽車領(lǐng)域。此外,Simulink往往可以作為與其余軟件聯(lián)合仿真的平臺,Simulink與上述的PreScan、CarSim等軟件均可以實現(xiàn)聯(lián)合仿真。
為了順利實現(xiàn)三種軟件之間的聯(lián)合仿真,首先需要分別實現(xiàn)PreScan/Simulink與CarSim/Simulink的聯(lián)合仿真。在此基礎(chǔ)上,打通三種軟件之間的壁壘,實現(xiàn)聯(lián)合仿真。仿真所用的典型軟件版本為:Matlab:R2018a;PreScan:8.4.0;Carsim:8.0.2。
首先在PreScan的GUI界面中完成車輛環(huán)境場景的搭建,例如車輛、道路、樓房等,如圖1(a)所示。搭建完成后,在工具欄中點擊Build進行編譯。若編譯通過,繼續(xù)點擊Invoke Simulink Run Mode按鈕,PreScan將自動生成可執(zhí)行的Simulink文件。(兩按鈕在圖1(b)中分別用數(shù)字1和2標(biāo)出)
圖1 PreScan的GUI界面及工具欄放大圖
生成的Simulink模型包含封裝完成的執(zhí)行器(例如車輛、攝像頭等)。運行程序,即可獲取執(zhí)行器輸出的物理量。
首先在CarSim的Test Specifications部分設(shè)置車輛的參數(shù)(例如車身參數(shù)、動力總成參數(shù)、輪胎參數(shù)等)以及行駛工況參數(shù)(例如車輛初速度、路面類型等)。設(shè)置完成后,在Run Control with Simulink部分配置與Simulink聯(lián)合仿真有關(guān)的參數(shù),內(nèi)部界面如圖2所示。
圖2中,1部分設(shè)置Simulink的工作空間以及對應(yīng)的Simulink模型目錄,同時選擇操作系統(tǒng)的位數(shù);2部分設(shè)置仿真步長(包括數(shù)學(xué)模型步長以及輸出文件步長),需注意與Simulink的步長匹配;3部分設(shè)置CarSim與Simulink的交互變量,包括輸入變量(例如車輪轉(zhuǎn)角、車輪轉(zhuǎn)矩等)和輸出變量(例如質(zhì)心速度、車輪轉(zhuǎn)速等)。設(shè)計交互變量的目的,一方面可以用Simulink編寫的模塊來替代或完善CarSim自帶的動力學(xué)模型,另一方面可以輸出車輛的參數(shù),在Simulink中實現(xiàn)動力學(xué)控制。
圖2 CarSim中的Simulink模型設(shè)置界面
參數(shù)配置完畢后,在CarSim的主界面點擊Send to Simulink按鈕,編譯完成后,Simulink模型中CarSim S-Function模塊即是先前所設(shè)計的動力學(xué)模型。該模塊的輸入、輸出均為向量類型,維數(shù)與CarSim中的輸入、輸出變量個數(shù)需分別保持一致。
2.1節(jié)與2.2節(jié)分別介紹了PreScan/Simulink與CarSim/Simulink的聯(lián)合仿真方法。在智能汽車的研究領(lǐng)域,為了通過環(huán)境感知得到的信息來進行車輛的動力學(xué)控制,通常需要同時運用以上三種軟件。圖3是聯(lián)合仿真研究時典型的閉環(huán)流程圖。
圖3 聯(lián)合仿真閉環(huán)流程圖
由圖3可以看出,研究時在PreScan中建立車輛的環(huán)境場景,搭載在車輛上的虛擬傳感器(例如攝像頭、雷達、GPS等)實時地將信號發(fā)送給Simulink;Simulink對接收到的感知信息通過一定的算法進行處理,獲取對動力學(xué)控制有效的信息;控制算法利用該有效信息,計算出執(zhí)行器的期望輸入,發(fā)送給CarSim的動力學(xué)系統(tǒng);動力學(xué)系統(tǒng)將運動狀態(tài)實時地輸出至PreScan虛擬場景中,形成一個閉環(huán)。
然而在聯(lián)合仿真實驗時,若直接按照2.1與2.2節(jié)論述的方法來進行聯(lián)合仿真,并不能直接貫通三種軟件。這是因為,PreScan與Simulink聯(lián)合仿真時,Simulink需要由PreScan觸發(fā),可生成的Simulink文件必須為slx類型,CarSim與Simulink聯(lián)合仿真時,Simulink需要由CarSim觸發(fā),可生成的Simulink文件必須為mdl類型,兩種類型不統(tǒng)一。此外,由PreScan觸發(fā)的Simulink模型,不能通過其他方式打開,否則無法運行。為了解決上述問題,聯(lián)合仿真的步驟如下:
(1)在PreScan的GUI中設(shè)置完場景及仿真條件后,發(fā)送給Simulink生成可執(zhí)行的slx文件;
(2)在該Simulink模型下搭建感知信息處理算法與動力學(xué)控制算法;
(3)新建一mdl類型的Simulink空白文件,添加CarSim S-Function模塊,在CarSim中設(shè)置完整車參數(shù)及接口后,發(fā)送至此Simulink,搭建動力學(xué)系統(tǒng)(可輔助用Simulink模塊來替代或完善該動力學(xué)模型);
(4)將動力學(xué)系統(tǒng)模型拷貝至步驟(1)中的Simulink文件中,進行聯(lián)合仿真;
(5)若改變整車參數(shù)及車輛初始條件,則重新執(zhí)行步驟(3)與步驟(4);若改變PreScan仿真場景,則只需在上述Simulink里點擊封裝完成的regenerate按鈕,無需重新關(guān)聯(lián)CarSim。
此外,需注意PreScan、CarSim與Simulink的仿真步長。PreScan與CarSim的仿真步長必須均為Simulink步長的整數(shù)倍。例如,若PreScan的步長為0.05s,CarSim的步長為0.001s,則可設(shè)置Simulink的步長為0.001s。
本節(jié)按照2.3節(jié)提出的聯(lián)合仿真方法,以基于攝像頭的電動汽車避撞控制算法為例,進行說明。
PreScan的場景如圖1(a)所示。電動汽車在直線道路上行駛,前方有一障礙物,同時在車身前部安裝了攝像頭。算法要實現(xiàn)的功能是:在行駛過程中,若攝像頭檢測到汽車與障礙物的距離較近時,汽車將采取制動,停在障礙物前方,否則保持勻速行駛。
本案例研究的思路與圖3的聯(lián)合仿真閉環(huán)流程圖一致:汽車在行駛時,PreScan中的攝像頭實時地發(fā)送圖像信息給Simulink(環(huán)境場景);Simulink里的圖像測距算法實時計算汽車與障礙物之間的距離(感知信息處理);根據(jù)計算得到的距離,結(jié)合一些虛擬傳感器的信息,控制器計算得到輪轂電機的期望輸入轉(zhuǎn)矩(控制算法);CarSim動力學(xué)系統(tǒng)根據(jù)物理規(guī)律輸出車輛的運動狀態(tài)至PreScan(動力學(xué)系統(tǒng))。
按照2.3節(jié)的方法在Simulink平臺下搭建模型。模型中的車輛模塊由PreScan生成,其內(nèi)部模塊如圖4所示。
圖4 PreScan生成的車輛內(nèi)部模塊
圖4中,1部分是車輛的軌跡計算模塊,用于輸入車輛在場景中的運動狀態(tài);2部分是車輛運動狀態(tài)的輸出模塊;3部分是攝像頭采集模塊,以矩陣形式實時輸出采集得到的圖像。其中,1部分中車輛運動狀態(tài)的設(shè)定是關(guān)聯(lián)PreScan、Simulink與CarSim的關(guān)鍵。
圖5是搭建完成后的軌跡計算模塊內(nèi)部結(jié)構(gòu)。其中,1部分是PreScan自帶的部分,需要將速度變量選擇為從外部輸入;2部分是圖像的測距算法;3部分是汽車速度控制算法;4部分是汽車的動力學(xué)系統(tǒng)??梢钥吹?,攝像頭輸出的圖像矩陣與測距算法產(chǎn)生關(guān)聯(lián);測距算法輸出的距離與速度控制算法產(chǎn)生關(guān)聯(lián);控制算法輸出的期望轉(zhuǎn)矩與動力學(xué)系統(tǒng)產(chǎn)生關(guān)聯(lián);動力學(xué)系統(tǒng)輸出的速度與PreScan模塊產(chǎn)生關(guān)聯(lián)。由此形成了一個仿真閉環(huán)。
圖5 軌跡計算模塊內(nèi)部結(jié)構(gòu)
圖6是聯(lián)合仿真過程中的PreScan場景,展示了汽車逐漸靠近障礙物行駛的過程。
圖6 仿真過程中的PreScan場景
圖7是聯(lián)合仿真過程中,汽車速度的變化曲線??梢钥吹剑囋诰嚯x障礙物較遠時保持勻速行駛,當(dāng)攝像頭檢測到障礙物后開始制動,隨后減速度逐漸減小直至停在障礙物前側(cè)。
圖7 汽車速度變化曲線
綜上所述,通過PreScan/CarSim/Simulink三者的聯(lián)合仿真,基于攝像頭的電動汽車避撞控制算法實現(xiàn)了預(yù)期的功能,說明了聯(lián)合仿真的方法是可行的。
以基于攝像頭的電動汽車避撞控制算法為例,實現(xiàn)了PreScan/CarSim/Simulink三者的聯(lián)合仿真,為綜合研究智能汽車的環(huán)境感知以及控制決策提供了一種可行的方法。應(yīng)用該研究方法,還可以研究自適應(yīng)巡航、自動泊車、彎道避撞控制、車道保持算法等汽車高級駕駛輔助系統(tǒng)的功能,具有重要的意義。