OpenSCENARIO Support

The scenario_runner provides support for the OpenSCENARIO 1.0 standard. The current implementation covers initial support for maneuver Actions, Conditions, Stories and the Storyboard. If you would like to use evaluation criteria for a scenario to evaluate pass/fail results, these can be implemented as StopTriggers (see below). However, not all features for these elements are yet available. If in doubt, please see the module documentation in srunner/tools/openscenario_parser.py

An example for a supported scenario based on OpenSCENARIO is available here

In addition, it is recommended to take a look into the official documentation available here and here.

Migrating OpenSCENARIO 0.9.x to 1.0

The easiest way to convert old OpenSCENARIO samples to the official standard 1.0 is to use xsltproc and the migration scheme located in the openscenario folder. Example:

xsltproc -o newScenario.xosc migration0_9_1to1_0.xslt oldScenario.xosc

Level of support

In the following the OpenSCENARIO attributes are listed with their current support status.

General OpenSCENARIO setup

This covers all part that are defined outside the OpenSCENARIO Storyboard

Attribute Support Notes
FileHeader ✅ Use "CARLA:" at the beginning of the description to use the CARLA coordinate system.
CatalogLocations
ControllerCatalog
✅ While the catalog is supported, the reference/usage may not work.
CatalogLocations
EnvironmentCatalog
✅
CatalogLocations
ManeuverCatalog
✅
CatalogLocations
MiscObjectCatalog
✅
CatalogLocations
PedestrianCatalog
✅
CatalogLocations
RouteCatalog
✅ While the catalog is supported, the reference/usage may not work.
CatalogLocations
TrajectoryCatalog
✅ While the catalog is supported, the reference/usage may not work.
CatalogLocations
VehicleCatalog
✅
ParameterDeclarations ✅
RoadNetwork
LogicFile
✅ The CARLA level can be used directly (e.g. LogicFile=Town01). Also any OpenDRIVE path can be provided.
RoadNetwork
SceneGraphFile
❌ The provided information is not used.
RoadNetwork
TafficSignals
❌ The provided information is not used.
Entities
EntitySelection
❌ The provided information is not used.
Entities ScenarioObject
CatalogReference
✅ The provided information is not used.
Entities ScenarioObject
MiscObject
✅ The name should match a CARLA vehicle model, otherwise a default vehicle based on the vehicleCategory is used. BoundingBox entries are ignored.
Entities ScenarioObject
ObjectController
❌ The provided information is not used.
Entities ScenarioObject
Pedestrian
✅ The name should match a CARLA vehicle model, otherwise a default vehicle based on the vehicleCategory is used. BoundingBox entries are ignored.
Entities ScenarioObject
Vehicle
✅ The name should match a CARLA vehicle model, otherwise a default vehicle based on the vehicleCategory is used. The color can be set via properties ('Property name="color" value="0,0,255"'). Axles, Performance, BoundingBox entries are ignored.


OpenSCENARIO Storyboard

OpenSCENARIO Actions

The OpenSCENARIO Actions can be used for two different purposes. First, Actions can be used to define the initial behavior of something, e.g. a traffic participant. Therefore, Actions can be used within the OpenSCENARIO Init. In addition, Actions are also used within the OpenSCENARIO story. In the following, the support status for both application areas is listed. If an action contains of submodules, which are not listed, the support status applies to all submodules.

GlobalAction
GlobalAction Init support Story support Notes
EntityAction ✅ ✅
EnvironmentAction ✅ ❌
ParameterAction ✅ ✅
InfrastructureAction TrafficSignalAction
TrafficAction
❌ ❌
InfrastructureAction TrafficSignalAction
TrafficSignalControllerAction
❌ ✅
InfrastructureAction TrafficSignalAction
TrafficSignalStateAction
❌ ✅ As traffic signals in CARLA towns have no unique ID, they have to be set by providing their position (Example: TrafficSignalStateAction name="pos=x,y" state="green"). The id can also be used for none CARLA town (Example: TrafficSignalStateAction name="id=n" state="green")


UserDefinedAction
UserDefinedAction Init support Story support Notes
CustomCommandAction ❌ ✅ This action is currently used to trigger the execution of an additional script. Example: type="python /path/to/script args".


PrivateAction
PrivateAction Init support Story support Notes
ActivateControllerAction ❌ ✅ Can be used to activate/deactive the CARLA autopilot.
ControllerAction ✅ ✅ AssignControllerAction is supported, but a Python module has to be provided for the controller implementation, and in OverrideControllerValueAction all values need to be False.
LateralAction
LaneChangeAction
❌ ✅ Currently all lane changes have a linear dynamicShape, the dynamicDimension is defined as the distance and are relative to the actor itself (RelativeTargetLane).
LateralAction
LaneOffsetAction
❌ ✅ Currently all type of dynamicShapes are ignored and depend on the controller. This action might not work as intended if the offset is high enough to make the vehicle exit its lane
LateralAction
LateralDistanceAction
✅ ✅
LongitudinalAction
LongitudinalDistanceAction
❌ ✅ timeGap attribute is not supported
LongitudinalAction
SpeedAction
✅ ✅
SynchronizeAction ❌ ❌
TeleportAction ✅ ✅
VisibilityAction ❌ ❌
RoutingAction
AcquirePositionAction
❌ ✅
RoutingAction
AssignRouteAction
❌ ✅ Route Options (shortest/fastest/etc) are supported. Shortests means direct path between A and B, all other will use the shortest path along the road network between A and B
RoutingAction
FollowTrajectoryAction
❌ ✅ Currently only Polylines without temporal constraints are supported and the trajectoryFollowingMode is up to the controller


OpenSCENARIO Conditions

Conditions in OpenSCENARIO can be defined either as ByEntityCondition or as ByValueCondition. Both can be used for StartTrigger and StopTrigger conditions. The following two tables list the support status for each.

ByEntityCondition
EntityCondition Support Notes
AccelerationCondition ✅
CollisionCondition ✅
DistanceCondition ✅ *freespace* attribute is still not supported
EndOfRoadCondition ✅
OffroadCondition ✅
ReachPositionCondition ✅
RelativeDistanceCondition ✅
RelativeSpeedCondition ✅
SpeedCondition ✅
StandStillCondition ✅
TimeHeadwayCondition ✅
TimeToCollisionCondition ✅
TraveledDistanceCondition ✅


ByValueCondition
ValueCondition Support Notes
ParameterCondition ✅ The level of support depends on the parameter. It is recommended to use other conditions if possible. Please also consider the note below.
SimulationTimeCondition ✅
StoryboardElementStateCondition ✅ startTransition, stopTransition, endTransition and completeState are currently supported.
TimeOfDayCondition ✅
TrafficSignalCondition ✅ As traffic signals in CARLA towns have no unique ID, they have to be set by providing their position (Example: TrafficSignalCondition name="pos=x,y" state="green"). The id can also be used for none CARLA town (Example: TrafficSignalCondition name="id=n" state="green")
TrafficSignalControllerCondition ✅
UserDefinedValueCondition ❌


Note

In the OpenSCENARIO 1.0 standard, a definition of test / evaluation criteria is not defined. For this purpose, you can re-use StopTrigger conditions with CARLA. The following StopTrigger conditions for evaluation criteria are supported through ParameterConditions by providing the criteria name for the condition:

  • criteria_RunningStopTest
  • criteria_RunningRedLightTest
  • criteria_WrongLaneTest
  • criteria_OnSideWalkTest
  • criteria_KeepLaneTest
  • criteria_CollisionTest
  • criteria_DrivenDistanceTest
OpenSCENARIO Positions

There are several ways of defining positions in OpenSCENARIO. In the following we list the current support status for each definition format.

Position Support Notes
LanePosition ✅
RelativeLanePosition ✅
RelativeObjectPosition ✅
RelativeRoadPosition ✅
RelativeWorldPosition ✅
RoadPosition ✅
RoutePosition ❌
WorldPosition ✅