您當前的位置:首頁 > 舞蹈

自動駕駛場景模擬標準(二)- OpenSCENARIO

作者:由 若木 發表于 舞蹈時間:2022-01-07

1. OpenSCENARIO概況

OpenSCENARIO定義了模擬場景中的動態內容,如車輛和行人的行為與行為產生的原因。同時,在模擬場景中的靜態內容,可以引用OpenDRIVE和OpenCRG對其進行補充。

OpenSCENARIO跟OpenDRIVE一樣都是基於UML資料模型,也可以匯出XML格式的拓展檔案。OpenSCENARIO透過使用XML定義分層元素的方式提供場景的描述方法,從這些分層的元素中構建場景、交通參與者的屬性和相互關係。

2. OpenSCENARIO主要元素

OpenSCENARIO透過描述動作主題Entities發生的車輛操作Manervers來展現場景。其使用的分層元素包括:

1。 通用道路網的靜態描述。

2。 實體Entities,如在道路上和道路外活動的車輛或行人。

3。 故事板Storyborad,其中包括故事Story,動作Act,車輛操作組ManeuverGroup和操作Maneuvers

4。 觸發器Trigger觸發的事件Event和其條件Condition

5。 利用重用機制(即目錄Catalog和引數宣告ParameterDeclaration)

其中對於OpenSCENARIO最關鍵的三個元素是靜態道路網,實體Entities(交通參與者)和場景中的故事板Storyboard。RoadNetWork相當於Where,Entities相當於Who,Storyboard相當於When和What。這幾種元素共同構成了一個場景。

自動駕駛場景模擬標準(二)- OpenSCENARIO

所以對於一個完整的OpenSCENARIO檔案,其主要包含:

自動駕駛場景模擬標準(二)- OpenSCENARIO

3. OpenSCENARIO檔案內的引用目錄

在上圖元素中包含了各種目錄,其可以被直接呼叫作為OpenSCENARIO的資料庫。如:VehicleCatalog,DriverCatalog,PedestrianCatalog,PedestrianControllerCatalog,MiscObjectCatalog,EnvironmentCatalog,ManeuverCatalog,TrajectoryCatalog,RouteCatalog等目錄。其中包括了交通參與者,環境,操作,軌跡路線等目錄。

4. 道路網引用

目錄中:

自動駕駛場景模擬標準(二)- OpenSCENARIO

引用了。xodr格式得OpenDRIVE檔案和。osgb格式的OpenCRG檔案共同構成了該場景下靜態的道路網。

5. 實體(交通參與者)

交通參與者主要包括小汽車和各種車輛(包括貨車和客車)以及行人。

例如,在如下的實體定義的例子中,包含了三個:

自動駕駛場景模擬標準(二)- OpenSCENARIO

第一個實體是名為Ego的Audi A4的Car。在其Controller下,定義其操控者:

自動駕駛場景模擬標準(二)- OpenSCENARIO

意為此輛車的駕駛者是一個預設的駕駛者,其其他生理特徵也在此被定義。

6. 故事板StoryBoard

故事板是在有了道路網等靜態資訊和定了交通參與者後描述完整的情景。

故事板為場景中的“誰 ”在做 “什麼”和“何時 ”等問題提供了答案。

“什麼時候”:一個Action的startTriggers和stopTriggers,描述某一個動作從何時開始到何時結束。

“誰”:ManeuverGroup是動作的一部分,該將實體作為動作發生者Entities分配給各操作Maneuver。

“什麼”。Maneuvers定義了發生的事情,它們是事件Event的容器。事件控制著模擬中的世界或Entity的相應例項。

其相互關係如下圖所示:

自動駕駛場景模擬標準(二)- OpenSCENARIO

(1)Start/Stop Trigger描述了行為變化什麼時候/在什麼情況下開始/結束(when)。首先設定一個條件,比如兩車距離為50米;然後設定條件觸發的方式(上升沿、下降沿等),比如兩車距離逐漸縮短為50米或逐漸增加為50米時條件觸發。

(2)Actors描述了哪個參與者的行為發生變化(who)。

(3)Maneuver描述了參與者的行為發生的怎樣的變化(what)。Maneuver由一系列Event構成,每個Event描述了一個相對完整的行為,如向左換道、加速等。

Event由具體的Action和該Action發生的條件StartTrigger構成。Action的型別包括PrivateAction、GlobalAction和UserDefinedAction。

其中PrivateAction為參與者可能的動作,包括縱向動作(如速度變化、距離變化)、橫向動作(如換道、橫向偏移)和沿路徑行駛等多種型別;GlobalAction包括環境變化(如天氣、時間和道路附著率)、增減交通參與者、交通流等型別。

7. 故事板的例子:

Overtake的例子(OpenSCENARIO官方例子)

自動駕駛場景模擬標準(二)- OpenSCENARIO

在這個場景中,藍色的前車Ego car以130km/h的速度向前行駛,紫色的後車C2 car以150km/h的速度在同一車道向ego car駛來,在距離ego car30m處c2車進行向左變道然後在超過ego car 5m處向右變道回到了ego car所在的車道。

7。1 初始化

在Storyboard故事板中,首先要進行場景參與者的初始化:

自動駕駛場景模擬標準(二)- OpenSCENARIO

元素下的元素中,包含了兩個被初始化的實體,Ego和A1,此處只展開Ego。對於實體Ego,初始化了其兩個動作:縱向動作和位置。在第一個Action中初始化了Ego從場景開始時,速度的變化是階躍式的也就是說一開場就是以3。6111m/s的速度進行行駛。第二個Action中初始化了也就是一開場時Ego的位置。在初始化位置時xyz初始化了Ego在慣性座標系中的位置,rph表示車頭車頭朝向。

7。2 故事及發生條件

初始化之後是定義故事板中的故事及發生條件。

自動駕駛場景模擬標準(二)- OpenSCENARIO

首先定義故事的名字Mystory,這個故事的所有者是A1這輛車,隨後定義故事中的動作的名字MyAct。在MyAct中定義了動作MySequence。其中Actor為這個操作的發生者,此處用了個指標指回了實體owner也就是A1。

自動駕駛場景模擬標準(二)- OpenSCENARIO

在接下來的中,

自動駕駛場景模擬標準(二)- OpenSCENARIO

定義了兩個動作,一個是向左換道,另一個是向右換道。這樣便完成了整個超車動作。

在第一個Event中,

自動駕駛場景模擬標準(二)- OpenSCENARIO

先描述了超車的動作然後再定義了超車動作發生的條件。

中,發生了Lateral橫向的動作,其變道形式為”sinusoidal”即為以正弦函式的形狀來進行變道。隨後表明了動作的主題是指標指回的實體owner。

中,定義了動作發生的條件MyStartCondition1,其沿上升沿變化(edge = “rising”)。隨後定義了條件的實體為owner並具體化了條件。當相對於Ego小於(”less-than”)30m時,發生了這個動作。至此,向左變道的動作的操作和動作的開始條件已經定義完成。向右變道的動作類似,只需改變其中的發生條件和動作就能完成向右換道的動作。

本文一一個換道超車的例子說明了OpenSCENARIO格式在場景描述中的方式。

贊同分享加關注,Next One is coming soon.

標簽: 動作  OpenSCENARIO  定義  EGO  場景