PreScan的愿景是通過提供虛擬驗(yàn)證功能來彌補(bǔ)仿真和驗(yàn)證之間的差距。 在實(shí)際建立一個PreScan實(shí)驗(yàn)并運(yùn)行之前,我們先來看看下圖
描繪了四個重要的建模步驟。1.構(gòu)建場景;2.增加控制系統(tǒng);3.為傳感器系統(tǒng)建模;4.運(yùn)行實(shí)驗(yàn)。 這些步驟,通常是每次做實(shí)驗(yàn)時都要遵循的。
構(gòu)建場景
最理想的情況是,首先使用實(shí)際的事故數(shù)據(jù)。只有這樣,才知道這個場景足夠重要,足以導(dǎo)致事故的發(fā)生。PreScan提供了輕松重建事故發(fā)生的可能性。它有各種各樣的工具,從構(gòu)建道路和實(shí)現(xiàn)抽象的基礎(chǔ)設(shè)施元素的模糊視點(diǎn)的簡單方法,到支持近距離碰撞的工具。這些工具的一個較大的部分是在第一個開始的時候就已經(jīng)涉及到了。
增加控制系統(tǒng)
控制系統(tǒng)的理解應(yīng)該比傳統(tǒng)的汽車控制系統(tǒng)如ESP、ACC等更寬泛??刂葡到y(tǒng)還包括對象感知算法、傳感器融合算法、決策算法等。
為傳感器系統(tǒng)建模
這可能很簡單,就像實(shí)現(xiàn)一個可自由調(diào)整的理想化傳感器(在PreScan中已經(jīng)有了),也可能很復(fù)雜,就像實(shí)現(xiàn)一個詳細(xì)的基于物理學(xué)的雷達(dá)模型,輸出原始感知信號,由自己的數(shù)據(jù)處理算法進(jìn)行后處理,處理后的數(shù)據(jù)被送入自己的DSP模型,負(fù)責(zé)跟蹤和追蹤目標(biāo)。由于系統(tǒng)的邊界是靈活的,所以我們在這里更愿意談?wù)?quot;為傳感器系統(tǒng)建模"。
進(jìn)行實(shí)驗(yàn)
有幾種選擇:只需在Simulink環(huán)境中運(yùn)行一個實(shí)驗(yàn),同時在范圍內(nèi)觀察結(jié)果,同時使用基于MATLAB的繪圖腳本對獲得的結(jié)果進(jìn)行后期處理。另一種選擇是讓基于MATLAB的批處理腳本配置、運(yùn)行和后期處理方案。如果這還不夠的話,作為用戶可以把自己的制動和油門和及方向盤鏈接上,在自己做的實(shí)驗(yàn)場景中進(jìn)行駕駛。
3.1 例子:快速開始搭建第一個自動駕駛場景仿真模型
本教程將向第一次使用PreScan的用戶解釋如何在PreScan中設(shè)置和運(yùn)行實(shí)驗(yàn)。它提供了使用PreScan的工作指南。
請不要在實(shí)驗(yàn)名稱和實(shí)驗(yàn)地點(diǎn)中使用非西方文字(如日語、韓語、中文等)。
概念
PreScan的基本思路是在圖形用戶界面(GUI)中構(gòu)建一個實(shí)驗(yàn),并使用Simulink仿真實(shí)驗(yàn)。在GUI中,可以將庫中的組件拖放到構(gòu)建區(qū)域中,得到實(shí)驗(yàn)的大致布局??梢酝ㄟ^改變這些組件的屬性來設(shè)置細(xì)節(jié),使用適當(dāng)?shù)呐渲么翱诨驅(qū)傩跃庉嬈鳎檬髽?biāo)右鍵到達(dá)的屬性編輯器。
在GUI中建立好實(shí)驗(yàn)后,就會準(zhǔn)備一個實(shí)驗(yàn)的Simulink模型,稱為:編譯表。用戶可以將自己的算法添加到這個Simulink模型中,并正常播放模型。
Simulink模型只需要準(zhǔn)備一次;在Simulink中,有一個按鈕可以更新GUI中的更改。
創(chuàng)建一個實(shí)驗(yàn)場景
單擊 Windows 桌面或開始菜單上的 PreScan GUI 圖標(biāo),啟動 PreScan GUI (參見圖形用戶界面Graphical User Interface(GUI) (GUI) 一節(jié))。PreScan 啟動時,會出現(xiàn)以下界面。
要開始建立一個場景,應(yīng)該有一個實(shí)驗(yàn)。從文件菜單中選擇 "新實(shí)驗(yàn)New Experiment"。
出現(xiàn) "新建實(shí)驗(yàn)"對話框,在該對話框中可以命名實(shí)驗(yàn),描述作者,并給出實(shí)驗(yàn)的簡短描述。
實(shí)驗(yàn)位置是實(shí)驗(yàn)的保存目錄。上次打開、保存或創(chuàng)建實(shí)驗(yàn)的實(shí)驗(yàn)位置將保存在窗口注冊表中。當(dāng)啟動MATLAB®時,它將在這個位置打開。
需要進(jìn)一步設(shè)置實(shí)驗(yàn)類型和實(shí)驗(yàn)采樣率。
實(shí)驗(yàn)完成后,左側(cè)的預(yù)掃描積木庫就會變成可用的,圖標(biāo)會變成正常的顏色,表示現(xiàn)在可以使用。
底層
從為實(shí)驗(yàn)創(chuàng)建一個底層開始。從 "環(huán)境 "選項(xiàng)卡 "環(huán)境"(底層(2-D))中選擇 "草",然后將其拖放到 "建立區(qū)域 "中。可以在屬性編輯器區(qū)域中設(shè)置底層的位置和方向。
道路
第二步是建立道路網(wǎng)。從基礎(chǔ)設(shè)施庫中選擇環(huán)形路,然后將其拖到構(gòu)建區(qū)域。注意在屬性編輯區(qū)中可以設(shè)置以下屬性:方向、車道寬度、半徑等。
軌跡
第三步是創(chuàng)建軌跡。從中間的任務(wù)欄中選擇繼承路徑圖標(biāo)(下圖中的中間圖標(biāo))。
當(dāng)用鼠標(biāo)懸停在環(huán)形路上時,會出現(xiàn)黃色的圓圈。這些是該路段的入口點(diǎn)和出口點(diǎn)。選擇左邊入口的下圓圈,選擇右邊出口的上圓圈。鼠標(biāo)左擊兩下,路徑就會自動生成。
路徑考慮到了實(shí)驗(yàn)的默認(rèn)設(shè)置:例如,在道路右側(cè)行駛,在環(huán)島上逆時針行駛。用戶的首選項(xiàng)可以在 "設(shè)置/首選項(xiàng)Settings / Preferences "中進(jìn)行設(shè)置。
執(zhí)行器
現(xiàn)在我們將在創(chuàng)建的路徑上附加一個執(zhí)行器。從執(zhí)行器庫中選擇馬自達(dá)RX8,然后將其拖到Build區(qū)域。
當(dāng)角色被拖動到路徑上時,路徑將被高亮顯示。在這種情況下,如果你松開鼠標(biāo)按鈕,就會自動創(chuàng)建一個軌跡,并將執(zhí)行器連接到軌跡上。請注意,一系列的點(diǎn)是如何提供軌跡的可視化表示的,現(xiàn)在汽車被連接到它的軌跡。
通過在Build區(qū)域或?qū)嶒?yàn)樹中右擊所需的actor,并從出現(xiàn)的下拉菜單中選擇對象配置,打開actor的對象配置對話框??匆幌逻@個角色是否連接到了PathObject_1和SpeedProfile_1。
在執(zhí)行器庫中選擇第二輛車,將其拖到環(huán)島的右側(cè)出口處。將方向(偏航)設(shè)置為150度,讓它面向左邊。單擊 "方向 "旁邊的"+"-圖標(biāo),單獨(dú)顯示偏航方向。
縮放
使用工具欄中的縮放按鈕,將場景縮放到所需視圖。
傳感器
通過以下顯示圖標(biāo),可以切換傳感器光束、攝像頭光束、重心、GPS坐標(biāo)和車道定義的可見度。通過使用標(biāo)記的按鈕,設(shè)置傳感器光束和攝像頭光束的可見性。這些設(shè)置不作為實(shí)驗(yàn)的一部分保存。
從傳感器庫中選擇AIR,并將其拖到Build區(qū)的Mazda上。
出現(xiàn)AIR對象配置對話框,在該對話框中可以對AIR傳感器進(jìn)行配置。AIR配置參數(shù)有:位置、方向、光束范圍和光束掃射角度。
單擊 "確定 "后,AIR傳感器出現(xiàn)在實(shí)驗(yàn)樹中。
攝像機(jī)
在仿真過程中,可以添加視覺輔助攝像機(jī)(Visu Aids)。選擇 "人眼視圖",選擇具有人眼等屬性的攝像機(jī)。
當(dāng)攝像機(jī)被拖到車輛上時,可以通過選擇駕駛員或副駕駛的眼睛位置,用左、右標(biāo)示的方式將攝像機(jī)固定在車輛上。
現(xiàn)在的實(shí)驗(yàn)應(yīng)該和下面這個圖類似。
保存
保存實(shí)驗(yàn)
匯編表
所有在PreScan GUI中創(chuàng)建的信息都被收集到Simulink模型中進(jìn)行仿真。這個Simulink模型也被稱為 "匯編表",因?yàn)樵赑reScan中運(yùn)行實(shí)驗(yàn)所必需的信息都被有效地收集在這個Simulink匯編表中。用戶在這個編譯表中可以找到的元素包括在GUI中選擇的Simulink模型,如動力學(xué)模型,使用GUI定義的軌跡信息,以及到PreScan標(biāo)準(zhǔn)傳感器模型和PreScan仿真引擎的端口。
PreScan有一個名為Parse& Build的序列,用于制作編譯表。Parse是用來檢查仿真的不同組件的配置,如執(zhí)行器、軌跡和傳感器。在Build階段,編譯表被實(shí)際建立。只有在Parse階段成功完成后,才能建立一個編譯表。
如果Parse結(jié)果沒有失敗,可以編譯實(shí)驗(yàn)。
3D動畫
仿真是以3D可視化的。要做到這一點(diǎn),需要通過選擇顯示3D世界來啟動VisViewer。
或使用工具欄中的藍(lán)色3D圖標(biāo),從"文件 "菜單或使用 "工具條 "中的藍(lán)色3D圖標(biāo)。2021版的動畫圖標(biāo)主要是顯示在創(chuàng)建場景的時候的3D預(yù)覽圖,其可以在創(chuàng)建過程中實(shí)時更新,但是仿真運(yùn)行需要通過SIMULINK聯(lián)合仿真才能將實(shí)時動畫調(diào)出,并跟隨時間實(shí)時變化。
VisViewer出現(xiàn),放大到場景的外部邊界。
如果在打開VisViewer并生成編譯表后,將執(zhí)行器添加到實(shí)驗(yàn)中,則需要重新生成VisViewer和編譯表。
現(xiàn)在,實(shí)驗(yàn)已經(jīng)全部完成?,F(xiàn)在是時候開始仿真了。實(shí)驗(yàn)樹現(xiàn)在看起來應(yīng)該是這樣的
仿真
在GUI中創(chuàng)建了實(shí)驗(yàn)后,就進(jìn)入了最重要的階段:仿真階段,在這個階段中,實(shí)驗(yàn)要進(jìn)行仿真。仿真環(huán)境可以通過文件菜單中的Invoke Simulink運(yùn)行模式,通過控制欄中的圖標(biāo),或者直接通過開始菜單中的快捷方式或桌面上的快捷方式(兩者都有相同的圖標(biāo))來達(dá)到仿真環(huán)境。
MATLAB啟動了。
等到MATLAB中的命令窗口中出現(xiàn)以下幾行。這表明MATLAB已經(jīng)正確配置了PreScan。
=================================================
MATLAB has been configured for PreScan R2021.0
=================================================
轉(zhuǎn)到GUI保存實(shí)驗(yàn)的目錄下。注意,MATLAB已經(jīng)在 "實(shí)驗(yàn)位置 "目錄下啟動了。
打開實(shí)驗(yàn)的編譯表。編譯表的名稱總是在實(shí)驗(yàn)名稱后面加上_cs.mdl或_cs.slx。在本例中是Experiment_FirstStart_cs.slx。實(shí)驗(yàn)的Simulink模型打開
雙擊馬自達(dá)_RX8_1車型。就會出現(xiàn)以下(子)系統(tǒng)。在這個系統(tǒng)中,所有在GUI中定義的元素都存在:空氣傳感器和軌跡。還有一個額外的元素出現(xiàn)了。車輛狀態(tài)。這個元素與PreScan仿真引擎進(jìn)行通信。
寶馬的模型看起來有點(diǎn)不同,因?yàn)闆]有給這輛車分配傳感器或軌跡。為了幫助你構(gòu)造你的實(shí)驗(yàn),我們創(chuàng)建了一個空的動力學(xué)塊。
通過按下Simulink中的Play按鈕()開始仿真。在VisViewer中,可以在仿真時間內(nèi)跟蹤仿真進(jìn)度。
現(xiàn)在來看一下VisViewer。從VisViewer的工具欄中選擇有兩個窗口的視圖。在底部窗口中點(diǎn)擊,從工具欄的下拉菜單中選擇HumanView_1。重新運(yùn)行仿真(Simulink®中的播放按鈕),并查看VisViewer的兩個窗口。最多可以設(shè)置四個攝像頭來跟蹤場景。
現(xiàn)在我們通過添加Simulink模型中的SELF-port和AIR-sensor信號,來看看Simulink模型中的顯示塊。打開Simulink庫瀏覽器(按你習(xí)慣的方法),將一個Mux和一個顯示塊拖到實(shí)驗(yàn)的Simulink模型中。這些塊可以分別在信號路由和Sinks下找到。
下圖中,可以看到傳感器的SELF端口和AIR傳感器的信號。
SELF端口顯示的是行為體本身的信息。輸出的是實(shí)驗(yàn)的全局軸系統(tǒng)中的位置,以及GPS坐標(biāo)。
AIR傳感器檢測到一個物體,產(chǎn)生6個信號的輸出。在沒有檢測到物體的情況下,輸出為0。輸出分別是范圍、方位角、仰角、ID、速度和航向。下圖顯示了這些輸出。
關(guān)于AIR傳感器的詳細(xì)說明,后期小明師兄會和大家一起學(xué)習(xí),歡迎關(guān)注,點(diǎn)贊,轉(zhuǎn)發(fā)三連。
結(jié)論
實(shí)驗(yàn)已經(jīng)準(zhǔn)備好了。它可以使用常規(guī)的Simulink方法插入自己的塊(控制邏輯、車輛動力學(xué))。Prescan仿真可以在連續(xù)模式和離散模式下運(yùn)行。
當(dāng)添加自己的塊時,在離散模式下運(yùn)行仿真時,編譯表不應(yīng)該包含任何連續(xù)狀態(tài),這一點(diǎn)很重要。