--- tags: asrlab --- # Openscenario Document ## How to install scenario runner [Scenario runner install tutorial](https://github.com/carla-simulator/scenario_runner/blob/master/Docs/getting_scenariorunner.md) ## How to run scenario runner 1. 開啟 carla $ `cd ~/carla` -> $ `make launch` -> click play 2. 利用 scenario_runner 執行 openScenario file ```c python3 scenario_runner.py --openscenario "path/to/openScenario_file" ``` :::warning openScenario file 的副檔名必須為 .xosc ::: ## OpenScenario file 要素 & 如何改動 openScenario file ### OpenScenario file 要素 #### File Overview ```xml <?xml version="1.0" encoding="UTF-8"?> <OpenSCENARIO> ... <RoadNetwork> ... </RoadNetwork> <Entities> ... </Entities> <Storyboard> <Init> ... </Init> <Story name="MyStory"> <Act name="Behavior"> ... <StartTrigger> ... </StartTrigger> <StopTrigger> ... </StopTrigger> </Act> </Story> <StopTrigger/> </Storyboard> </OpenSCENARIO> ``` #### 1. RoadNetwork 地圖檔 #### 2. Entity 車輛, 行人 ... #### 3. Storyboard 描述場景中發生的一連串事件 1. init 初使化場景 * 設定天氣, 車輛產生位置等 2. story 事件發生場景 * Actor 事件的參與者 * Event 事件 * Action: 事件參與者做什麼動作 * Condition: 觸發 Action 的條件 * startTrigger: action 開始條件 * stopTrigger: action 結束條件  ### 如何改動 openScenario file #### 修改地圖 第 2 行的 `artc_scene_0727` 代表**已經匯入 carla**(透過 make import) 的地圖名稱,若要切換地圖,修改地圖名稱即可。 ```xml= <RoadNetwork> <LogicFile filepath="artc_scene_0727"/> </RoadNetwork> ``` #### 新增車輛 以下一整個 xml 結構體為一台車輛,若要新增車輛就是再新增一個如下的 xml 結構體於 `<Entities>`...`</Entities>` 中,其中包含許多車輛設定參數,參數部份可參考[連結](https://releases.asam.net/OpenSCENARIO/1.0.0/Model-Documentation/content/ScenarioObject.html),其中第 1 行中的 `hero2` 為這台車輛的名稱,若新增多台車輛請避免名稱重複,而第 2 行中的 `vehicle.nissan.micra` 為車輛模型名稱。 ```xml= <ScenarioObject name="hero2"> <Vehicle name="vehicle.nissan.micra" vehicleCategory="car"> <ParameterDeclarations/> <Performance maxSpeed="20" maxAcceleration="20" maxDeceleration="10.0"/> <BoundingBox> <Center x="1.5" y="0.0" z="0.9"/> <Dimensions width="2.1" length="4.5" height="1.8"/> </BoundingBox> <Axles> <FrontAxle maxSteering="0.5" wheelDiameter="0.6" trackWidth="1.8" positionX="3.1" positionZ="0.3"/> <RearAxle maxSteering="0.0" wheelDiameter="0.6" trackWidth="1.8" positionX="0.0" positionZ="0.3"/> </Axles> <Properties> <Property name="type" value="simulation"/> <Property name="color" value="0,255,0"/> </Properties> </Vehicle> </ScenarioObject> ``` #### 設定天氣 此 xml 結構為設定天氣,其中包含許多天氣設定參數,參數部份可參考[連結](https://releases.asam.net/OpenSCENARIO/1.0.0/Model-Documentation/content/EnvironmentAction.html),主要調整部份為第 5 行至第 9 行的 `<Weather>` ... `</Weather>` 中的標籤,標籤 `<Sun>` 代表陽光, 標籤 `<Fog>` 代表霧氣,而標籤 `<Precipitation>` 代表降雨。 ```xml= <GlobalAction> <EnvironmentAction> <Environment name="Environment1"> <TimeOfDay animation="false" dateTime="2020-03-20T12:00:00"/> <Weather cloudState="free"> <Sun intensity="0.85" azimuth="0" elevation="1.31"/> <Fog visualRange="100000.0"/> <Precipitation precipitationType="dry" intensity="0.0"/> </Weather> <RoadCondition frictionScaleFactor="1.0"/> </Environment> </EnvironmentAction> </GlobalAction> ``` #### 設定車輛初始位置 第 1 行的 `hero2` 表示設定的車輛名稱,用來識別設定的車輛是哪一台,這個名稱與在新增車輛部份所設定的名稱一致。第 5 行是設定車子初始位置於哪一個 `laneId` 與 `roadId`,`offset` 和 `s` 參數則代表偏移量。 ```xml= <Private entityRef="hero2"> <PrivateAction> <TeleportAction> <Position> <LanePosition roadId="5" laneId="-3" offset="0" s="0"/> </Position> </TeleportAction> </PrivateAction> </Private> ``` #### 設定車輛速度 第 3 行的 `hero2` 代表車輛名稱,用來識別設定的車輛是哪一台,第 11 行表示加速函數,可參考[連結](https://releases.asam.net/OpenSCENARIO/1.0.0/Model-Documentation/content/TransitionDynamics.html),第 13 行中的 `5` 表示車輛速度,範例中設定為 5 km/s。第 21 行為設定事件觸發條件,下方有相關介紹。 這邊主要介紹的是車輛加速事件,其他事件可參考[連結](https://releases.asam.net/OpenSCENARIO/1.0.0/Model-Documentation/content/PrivateAction.html)。 ```xml= <ManeuverGroup maximumExecutionCount="1" name="ManeuverSequence"> <Actors selectTriggeringEntities="false"> <EntityRef entityRef="hero2"/> </Actors> <Maneuver name="LaneChangeSimpleManeuver"> <Event name="AdversaryAccelerates" priority="overwrite"> <Action name="AdversaryAccelerates"> <PrivateAction> <LongitudinalAction> <SpeedAction> <SpeedActionDynamics dynamicsShape="step" value="1000" dynamicsDimension="distance"/> <SpeedActionTarget> <AbsoluteTargetSpeed value="5"/> </SpeedActionTarget> </SpeedAction> </LongitudinalAction> </PrivateAction> </Action> <StartTrigger> <ConditionGroup> <Condition name="StartCondition" delay="0" conditionEdge="rising"> <ByValueCondition> <SimulationTimeCondition value="0" rule="greaterThan"/> </ByValueCondition> </Condition> </ConditionGroup> </StartTrigger> </Event> </Maneuver> </ManeuverGroup> ``` #### 設定事件開始條件 第 5 行的 `SimulationTimeCondition` 表示根據模擬器時間去觸發,還有其他條件觸發方式可選擇,請參考[連結](https://releases.asam.net/OpenSCENARIO/1.0.0/Model-Documentation/content/Condition.html)。 ```xml= <StartTrigger> <ConditionGroup> <Condition name="StartCondition" delay="0" conditionEdge="rising"> <ByValueCondition> <SimulationTimeCondition value="0" rule="greaterThan"/> </ByValueCondition> </Condition> </ConditionGroup> </StartTrigger> ``` #### 設定事件結束條件 同上 ```xml= <StopTrigger> <ConditionGroup> <Condition name="EndCondition" delay="0" conditionEdge="rising"> <ByValueCondition> <SimulationTimeCondition value="25" rule="greaterThan"/> </ByValueCondition> </Condition> </ConditionGroup> </StopTrigger> ``` ## Reference * [Carla 支援與不支援 Openscenario 細項](https://carla-scenariorunner.readthedocs.io/en/latest/openscenario_support/#migrating-openscenario-09x-to-10) * [Openscenario XML 標籤](https://releases.asam.net/OpenSCENARIO/1.0.0/Model-Documentation/index.html) * [OpenSCENARIO: User Guide](https://www.asam.net/index.php?eID=dumpFile&t=f&f=4092&token=d3b6a55e911b22179e3c0895fe2caae8f5492467)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up