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