Scenario

Overview

The scenario configuration file describes all dynamic configuration of a simulation run, i.e. the position of an agent as well as conditional events that alter the behavior of the simulation during the run. It adheres to the ASAM OpenSCENARIO 1.0 standard, although we support only a subset of the features of the standard.

The different parts of the scenario configuration are described in the following chapters.

ParameterDeclarations

The tag ParameterDeclarations allow to define generic parameters, which can be referenced later the file by its name, prefixed with $.

Example declaration

<ParameterDeclarations>
  <ParameterDeclaration name="OP_OSC_SchemaVersion" parameterType="string" value="0.4.0"/>
</ParameterDeclarations>

Example usage

<SimulationTimeCondition value="30.0" rule="greaterThan"/>

Supported parameterTypes

  • string

  • integer

  • double

Note

Only string allows empty values.

Warning

The parameter OP_OSC_SchemaVersion is used to check for schema compatibility and is mandatory within openPASS.

Catalogs

The Catalogs tag defines references to various other files containing sub features of OpenSCENARIO (and written in the same format).

The following catalogs interpreted:

Example

<CatalogLocations>
  <VehicleCatalog>
    <Directory path="VehicleModelsCatalog.xosc"/>
  </VehicleCatalog>
  <PedestrianCatalog>
    <Directory path="PedestrianModelsCatalog.xosc"/>
  </PedestrianCatalog>
  <ControllerCatalog>
    <Directory path=""/>
  </ControllerCatalog>
  <ManeuverCatalog>
    <Directory path=""/>
  </ManeuverCatalog>
  <MiscObjectCatalog>
    <Directory path=""/>
  </MiscObjectCatalog>
  <EnvironmentCatalog>
    <Directory path=""/>
  </EnvironmentCatalog>
  <TrajectoryCatalog>
    <Directory path=""/>
  </TrajectoryCatalog>
  <RouteCatalog>
    <Directory path=""/>
  </RouteCatalog>
</CatalogLocations>

VehicleCatalog

This file is mandatory. It contains the available vehicle models for the simulation. For each vehicle the physical parameters are stored here.

Supported models:

  • car_bmw_i3

  • car_bmw_3

  • car_bmw_7_1

  • car_bmw_7_2

  • car_mini_cooper

  • bus

  • truck

  • bicycle

Full Example: /../../../repo/sim/contrib/examples/Common/VehicleModelsCatalog.xosc

PedestrianCatalog

This file is mandatory. It contains the available pedestrian models for the simulation. For each pedestrian the physical parameters are stored here.

Note

Currently, pedestrian models are internally handled the same way as vehicle models, i.e. they behave like simplified vehicles. For convenience, openPASS internally sets meaningless parameters, such as number of gears, to operational defaults.

Supported models:

  • pedestrian_child

  • pedestrian_adult

Full Example: /../../../repo/sim/contrib/examples/Common/PedestrianModelsCatalog.xosc

RoadNetwork

The RoadNetwork tag contains the mandatory reference to the OpenDRIVE Scenery.

Example

<RoadNetwork>
  <LogicFile filepath="SceneryConfiguration.xodr"/>
  <SceneGraphFile filepath=""/>
</RoadNetwork>

Furthermore the controllers of the traffic lights are defined in this section. Each controller defines the phases of a set of linked traffic lights (e.g. one junction). The state must be one of the following: “red”, “yellow”, “green”, “red yellow”.

Example

<TrafficSignals>
  <TrafficSignalController name="">
    <Phase duration="3" name="Phase1">
      <TrafficSignalState state="green" trafficSignalId="1" />
    </Phase>
    <Phase duration="3" name="Phase2">
      <TrafficSignalState state="yellow" trafficSignalId="1" />
    </Phase>
    <Phase duration="3" name="Phase3">
      <TrafficSignalState state="red" trafficSignalId="1" />
    </Phase>
    <Phase duration="3" name="Phase4">
      <TrafficSignalState state="red yellow" trafficSignalId="1" />
    </Phase>
  </TrafficSignalController>
</TrafficSignals>

Currently these states are supported

off

red

yellow

green

red yellow

yellow flashing

Entities

The Entities tag defines all agents that are present at the start of the simulation at predefined positions. There may be any number of these so called Scenario Agents (also zero). Each entity is described by a name and a reference to a vehicle profile within the ProfilesCatalog.

Note

This deviates from the OpenSCENARIO standard where the vehicle model is directly given, or a reference to a model VehicleCatalog is given, because there are no Profiles in OpenSCENARIO.

To specify an entity as the Ego Agent, it must be named “Ego”.

Entities can also be grouped into selections.

Note

EntitySelections currently have no effect in OpenPASS

Example

<Entities>
  <ScenarioObject name="Ego">
    <CatalogReference catalogName="ProfilesCatalog.xml" entryName="MiddleClassCarAgent"/>
  </ScenarioObject>
  <EntitySelection name="ScenarioAgents">
    <Members/>
  </EntitySelection>
</Entities>

Overriding Parameters

Parameters defined in the VehicleCatalog can be assigned inside the CatalogReference element. In this case the assigned parameter will overwrite the definition in the VehicleCatalog. Otherwise the value defined in the VehicleCatalog is used. The type of the parameter must match that in the VehicleCatalog.

Example

<CatalogReference catalogName="ProfilesCatalog.xml" entryName="MiddleClassCarAgent">
    <ParameterAssignments>
        <ParameterAssignment parameterRef="Length" value="4.0" />
    </ParameterAssignments>
</CatalogReference>

AgentProfile vs. VehicleModel

OpenPASS references AgentProfiles instead of a VehicleModels. Such an AgentProfile may have a stochastic distribution of different VehicleModels, each with potentially different parameters. After the random selection of the vehicle model, some parameters may not be available and are therefore not assigned (ignored).

Storyboard

The Storyboard tag contains the initial setup of the scenario and manipulator actions. These actions control the behavior of the simulation at runtime based on predefined conditions.

Init

The content of the Init tag is forwarded to the SpawnPoint and define if and where it should place the ego and scenario agents. The position can either be defined as global coordinates (x and y) with the World tag or as lane coordinates (s and t) with the Lane tag.

The schema is defined as follows:

Tag

Parent

Attributes

Occurrences

Actions

Init

none

1

Private

Actions

entityRef

1 per entity

PrivateAction

Private

none

1+

TeleportAction

PrivateAction

none

1

Position

TeleportAction

none

1

LanePosition

Position

roadId, laneId, s, offset

0 or 1

WorldPosition

Position

x, y, h

0 or 1

Orientation

LanePosition

type, h

0 or 1

LongitudinalAction

PrivateAction

none

1

SpeedAction

LongitudinalAction

none

1

SpeedActionDynamics

SpeedAction

rate, dynamicsShape

1

SpeedActionTarget

SpeedAction

none

1

AbsoluteTargetSpeed

SpeedActionTarget

value

1

RoutingAction

PrivateAction

none

0 or 1

AssignRouteAction

RoutingAction

none

1

Route

AssignRouteAction

none

1

Waypoint

Route

none

1+

Position

Waypoint

none

1

RoadPosition

Position

roadId, t

1

VisibilityAction

PrivateAction

traffic

1

All listed attributes are required. The attributes have the following meaning:

Tag

Attribute

Description

Private

entityRef

name of the entity for which the initial values are described in the sub-tags

LanePosition

roadId

Id of the road in the Scenery

LanePosition

laneId

Id of the lane in the Scenery

LanePosition

s

start position on the lane (i.e. distance from the start of the road) of the reference point

LanePosition

offset

lateral distance of the reference point to the middle of the road (i.e. t coordinate)

WorldPosition

x

x coordinate of the reference point

WorldPosition

y

y coordinate of the reference point

WorldPosition

h

heading

Orientation

type

has to be “relative”

Orientation

h

heading angle in radiant relative to the lane. For positive lane Ids, use a setting around PI (180°) to match the natural driving direction.

SpeedActionDynamics

rate

acceleration

SpeedActionDynamics

dynamicsShape

“linear” for constant acceleration, “step” for immediate transition

SpeedActionDynamics

dynamicsDimension

has to be “rate”

AbsoluteTargetSpeed

value

velocity

RoadPosition

roadId

Id of the road in the Scenery

RoadPosition

t

negative for driving in roadDirection (i.e on lanes with negative Id) else positive

RoadPosition

s

ignored

VisibilityAction

traffic

Flag deciding if the scenario agent will be spawned (true = spawned, false = not spawned)

Defining a Position

OpenPASS only supports LanePosition and WorldPosition from the OpenSCENARIO standard.

Controlling Visibility

VisibilityAction is an optional attribute, which allows easy parameterization of certain entities, e.g. via ParameterDeclarations.

Note

If VisibilityAction is not defined the according entity agent will be spawned.

Follow Route Action

This action is defined here in the init part of the Storyboard. See FollowRouteAction

Stochastic Values

Unlike OpenSCENARIO, openPASS allows some of the aforementioned values to be stochastic. This is achieved by using the sub-tag Stochastics within the tags LanePosition or SpeedAction:

<Stochastics value="..." stdDeviation="..." lowerBound="..." upperBound="..."/>

The stochastics tag normally defines a normal distribution, but it is up to each component to interpret its values. Here, value is a selector, which can be either s, offset (if inside LanePosition), velocity or rate (if inside SpeedAction). Depending on the selected type, the actual mean value is then taken from the attribute of the corresponding tag LanePosition, SpeedActionDynamics, or AbsoluteTargetSpeed.

Full Example

<Init>
  <Actions>
    <Private entityRef="Ego">
      <PrivateAction>
        <TeleportAction>
          <Position>
            <LanePosition roadId="1" s="20.0" laneId="-2" offset="0.0">
              <Orientation type="relative" h="0.2"/>
              <Stochastics value="s" stdDeviation="5.0" lowerBound="10.0"
                                                        upperBound="30.0"/>
            </LanePosition>
          </Position>
        </TeleportAction>
      </PrivateAction>
      <PrivateAction>
        <LongitudinalAction>
          <SpeedAction>
            <SpeedActionDynamics rate="0.0" dynamicsShape="linear"
                                            dynamicsDimension="rate"/>
            <SpeedActionTarget>
              <AbsoluteTargetSpeed value="10.0" />
            </SpeedActionTarget>
            <Stochastics value="velocity" stdDeviation="2.0" lowerBound="5.0"
                                                             upperBound="15.0"/>
          </SpeedAction>
        </LongitudinalAction>
      </PrivateAction>
      <PrivateAction>
        <RoutingAction>
          <AssignRouteAction>
            <Route>
              <Waypoint>
                <Position>
                  <RoadPosition roadId="1" t="-1.0" s="0"/>
                </Position>
              </Waypoint>
              <Waypoint>
                <Position>
                  <RoadPosition roadId="2" t="-1.0" s="0"/>
                </Position>
              </Waypoint>
            </Route>
          </AssignRouteAction>
        </RoutingAction>
      </PrivateAction>
    </Private>
    <Private entityRef="ScenarioAgent">
      <PrivateAction>
        <TeleportAction>
          <Position>
            <LanePosition roadId="1" s="50.0" laneId="-3" offset="0.0"/>
          </Position>
        </TeleportAction>
      </PrivateAction>
      <PrivateAction>
        <LongitudinalAction>
          <SpeedAction>
            <SpeedActionDynamics rate="0.0" dynamicsShape="linear"
                                            dynamicsDimension="rate"/>
            <SpeedActionTarget>
              <AbsoluteTargetSpeed value="10.0" />
            </SpeedActionTarget>
          </SpeedAction>
        </LongitudinalAction>
      </PrivateAction>
    </Private>
  </Actions>
</Init>

Story

The tag Story is optional and defines all conditional interventions during runtime. The story consists of multiple acts, which itself can consist of multiple ManeuverGroup tags. A maneuver groups must consist of exactly one Actors tag and one Maneuver tag. The maximumExecutionCount attribute states the maximum number of times that each maneuver will by triggered. To trigger an maneuver for an unlimited number of times, set the value to -1,.

Note

While multiple stories can be added, grouping of maneuver groups into acts currently has no effect in the simulator.

Example

<Story name="MyStory">
  <Act name="Act1">
    <ManeuverGroup name="MySequence" maximumExecutionCount="-1">
      <Actors>
        ...
      </Actors>
      <Maneuver name="MyManeuver">
        ...
      </Maneuver>
    </ManeuverGroup>
  </Act>
</Story>

Actors

The Actors tag defines the agents that are mainly affected by this sequence. These agents can either be defined directly by stating their name within a sub-tag <EntityRef entityRef="entityName"/> or as the agent that triggered the event itself via <Actors selectTriggeringEntities="true"/>.

Maneuver

The Maneuver tag defines the conditions, when an action shall take place. It contains one or more events, each consisting of one action and one or more start conditions.

Note

Only a single action is currently supported, although the standard allows several.

Warning

Due to internal handling, event names must be unique.

Example

<Maneuver name="MyManeuver">
  <Event name="MyEvent" priority="overwrite">
    <Action name="MyManipulator">
      ...
    </Action>
    <StartTrigger>
      <ConditionGroup>
        <Condition name="Conditional">
          ...
        </Condition>
      </ConditionGroup>
    </StartTrigger>
  </Event>
</Maneuver>
Conditions

OpenPASS support different kind of conditions, belonging either to ByValueCondition or ByEntityCondition. While a by value condition trigger based on a specified value and is unrelated to any specific agent, a by entity condition is bound to an triggering agent, defined by a mandatory section TriggeringEntities. Entities can be either ego or scenario agents, or all agents if the section is left blank.

Note

OpenSCENARIO specifies that a rule should be applied to the TriggeringEntities element. Currently, only the rule any is supported, so any of the listed entities may satisfy the condition independent of the others.

Condition

Triggered By

SimulationTime

Value

RelativeLanePosition

Entity

RoadPosition

Entity

RelativeLanePosition

Entity

RelativeSpeed

Entity

TimeToCollision

Entity

TimeHeadway

Entity

SimulationTime

Defines, when the simulation ends. Triggers at a specified time value, given in seconds. The rule is required and only greaterThan is currently supported.

Example

<Condition name="EndTime" delay="0" conditionEdge="rising">
  <ByValueCondition>
    <SimulationTimeCondition value="30.0" rule="greaterThan"/>
  </ByValueCondition>
</Condition>
RelativeLanePosition

Triggers if an entity is within a relative lane position with respect to the specified object. Here, ds (s-delta) and dLane (lane-delta) are applied to a reference object, e.g. referenceEntity.s + ds. The tolerance is then added and subtracted from the resulting s-coordinate to form a triggering zone. The condition is satisfied, if a TriggeringEntity touches this zone.

Example

<Condition name="RelativeLanePosition">
  <ByEntityCondition>
    <TriggeringEntities triggeringEntitiesRule="any">
      <EntityRef entityRef="Ego"/>
    </TriggeringEntities>
    <EntityCondition>
      <ReachPositionCondition tolerance="15.0">
        <Position>
          <RelativeLanePosition entityRef="StandingAgent" dLane="-1" ds="20.0"/>
        </Position>
      </ReachPositionCondition>
    </EntityCondition>
  </ByEntityCondition>
</Condition>
RoadPosition

This Condition evaluates if a TriggeringEntity touches a given s-coordinate, s, on a specified road, given by roadId. Note that the tolerance is added and subtracted from the s-coordinate to form a triggering zone. The condition is satisfied, if a TriggeringEntity touches this zone.

Example

<Condition name="RoadPosition">
  <ByEntityCondition>
    <TriggeringEntities triggeringEntitiesRule="any">
      <EntityRef entityRef="Ego"/>
    </TriggeringEntities>
    <EntityCondition>
      <ReachPositionCondition tolerance="3.0">
        <Position>
          <RoadPosition roadId="0" s="110.0" t="0.0"/>
        </Position>
      </ReachPositionCondition>
    </EntityCondition>
  </ByEntityCondition>
</Condition>
RelativeSpeed

This condition evaluates if the relative velocity (v_{rel}) between a TriggeringEntity and a reference entity, is lessThan, equalTo, or greaterThan, a specified value, where v_{rel} = v_{trig} - v_{ref}.

Example

<Condition name="RelativeSpeed">
  <ByEntityCondition>
    <TriggeringEntities triggeringEntitiesRule="any">
      <EntityRef entityRef="Ego"/>
    </TriggeringEntities>
    <EntityCondition>
      <RelativeSpeedCondition entityRef="StandingAgent" value="10.0" rule="greaterThan"/>
    </EntityCondition>
  </ByEntityCondition>
</Condition>
TimeToCollision

This condition evaluates if the Time To Collision (TTC) between a TriggeringEntity and a reference entity is lessThan, equalTo, or greaterThan a specified value. The TTC is determined by projecting the movement of the entities using steps of 0.1 seconds and returning the first time step, at which their bounding boxes intersect.

Example

<Condition name="TimeToCollision">
  <ByEntityCondition>
    <TriggeringEntities triggeringEntitiesRule="any">
      <EntityRef entityRef="Ego"/>
    </TriggeringEntities>
    <EntityCondition>
      <TimeToCollisionCondition value="3.0" rule="lessThan">
        <TimeToCollisionConditionTarget>
          <EntityRef entityRef="StandingAgent"/>
        </TimeToCollisionConditionTarget>
      </TimeToCollisionCondition>
    </EntityCondition>
  </ByEntityCondition>
</Condition>
TimeHeadway

This condition evaluates if the Time Headway (THW) between a TriggeringEntity and a reference entity is lessThan, equalTo, or greaterThan a specified value. If freespace="true" the net distance of the bounding boxes is considered, otherwise the distance of the reference points. The alongRoute attribute must be true.

Example

<Condition name="TimeHeadway">
  <ByEntityCondition>
    <TriggeringEntities triggeringEntitiesRule="any">
      <EntityRef entityRef="Ego"/>
    </TriggeringEntities>
    <EntityCondition>
      <TimeHeadwayCondition value="3.0"
        rule="lessThan"
        entityRef="StandingAgent"
        freespace="true"
        alongRoute="true"/>
    </EntityCondition>
  </ByEntityCondition>
</Condition>
Actions

Actions define what happens if all conditions of the maneuver are fulfilled and are applied on the actors defined for this maneuver.

The following openSCENARIO actions are supported:

In addition, the following user defined actions are interpreted:

FollowRouteAction

The FollowRouteAction is a private Action which is added to the Init part of the Storyboard. It defines Waypoints, which are located by road_id and further with s and t coordinates. The Agent will try to follow the specified points.

Example Right turn, by specifying three waypoints

	  <RoutingAction>
		  <AssignRouteAction>
			<Route>
			  <Waypoint>
				<Position>
				  <RoadPosition roadId="1472558076" t="-1.0" s="230"/>
				</Position>
			  </Waypoint>
			  <Waypoint>
				<Position>
				  <RoadPosition roadId="3083973" t="0" s="8.5"/>
				</Position>
			  </Waypoint>
			  <Waypoint>
				<Position>
				  <RoadPosition roadId="2015840166" t="-0.2" s="100"/>
				</Position>
			  </Waypoint>
			</Route>
		  </AssignRouteAction>
	</RoutingAction>
LaneChange

If this action trigger, the actor is forced to perform a trajectory, calculated at the time of triggering. The target lane be given either absolute or with respect to another entity. The trajectory can either have a fixed length (in s) or a fixed time.

Currently, “sinusoidal” is the only supported type.

Example with absolute target and fixed length

<Action name="LaneChange">
  <PrivateAction>
    <LateralAction>
      <LaneChangeAction>
        <LaneChangeActionDynamics value="2.0" dynamicsShape="sinusoidal" dynamicsDimension="time"/>
        <LaneChangeTarget>
          <AbsoluteTargetLane value="-4"/>
        </LaneChangeTarget>
      </LaneChangeAction>
    </LateralAction>
  </PrivateAction>
</Action>

Example with relative target and fixed time

<Action name="LaneChange">
  <PrivateAction>
    <LateralAction>
      <LaneChangeAction>
        <LaneChangeActionDynamics value="2.0" dynamicsShape="sinusoidal" dynamicsDimension="time"/>
        <LaneChangeTarget>
          <RelativeTargetLane entityRef="Ego" value="+1"/>
        </LaneChangeTarget>
      </LaneChangeAction>
    </LateralAction>
  </PrivateAction>
</Action>
Follow Trajectory

If triggered, the defined trajectory is relayed as signal to listening components. The trajectory can be defined either directly in the story or as separate TrajectoryCatalog. For the points (vertices) of the trajectory only world coordinates, given as openScenario::WorldPosition, are supported. Right now, the mandatory attributes z, pitch and roll are ignored.

Example

<Action name="Trajectory">
  <PrivateAction>
    <RoutingAction>
      <FollowTrajectoryAction>
        <Trajectory name="LaneChange" closed="false">
          <Shape>
            <Polyline>
              <Vertex time="0">
                <Position>
                  <WorldPosition x="100" y="3" z="0" h="1.570796326" p="0" r="0"/>
                </Position>
              </Vertex>
              <Vertex time="5">
                <Position>
                  <WorldPosition x="100" y="8" z="0" h="1.570796326" p="0" r="0"/>
                </Position>
              </Vertex>
            </Polyline>
          </Shape>
        </Trajectory>
        <TimeReference>
          <None/>
        </TimeReference>
        <TrajectoryFollowingMode followingMode="position"/>
      </FollowTrajectoryAction>
    </RoutingAction>
  </PrivateAction>
</Action>

Example using a TrajectoryCatalog

<Action name="FollowTrajectory">
  <Private>
    <Routing>
      <FollowTrajectoryAction>
        <CatalogReference catalogName="TrajectoryCatalog.xosc" entryName="TrajectoryA">
      </FollowTrajectoryAction>
    </Routing>
   </Private>
</Action>
Acquire Position

If triggered, the defined position is relayed as signal to listening components. Currently only “WorldPosition” and “RelativeObjectPosition” are supported.

Warning

Currently, this is only supported by the component FMU_Wrapper and for OSMP messages.

Warning

An FMU might contain routing logic not visible to the OpenPASS simulation core. For that reason, an equivalent RoutingAction should be set when using AcquirePosition. Otherwise the simulation output might contain missing data for fields depending on the localization along the route (PositionRoute, TCoordinate, AgentInFront, …).

Example (WorldPosition)

<Action name="AcquirePosition">
  <PrivateAction>
    <RoutingAction>
      <AcquirePositionAction>
        <Position>
          <WorldPosition x="1.0" y="2.0" z="0.0" h="3.1415" p="0.0" r="0.0" />
        </Position>
      </AcquirePositionAction>
    </RoutingAction>
  </PrivateAction>
</Action>

Example (RelativeObjectPosition)

<Action name="AcquirePosition">
  <PrivateAction>
    <RoutingAction>
      <AcquirePositionAction>
        <Position>
          <RelativeObjectPosition dx="1.0" dy="1.0" entityRef="S1"/>
        </Position>
      </AcquirePositionAction>
    </RoutingAction>
  </PrivateAction>
</Action>
Remove Agent

The RemoveAgentsManipulator removes the specified entity at the time of triggering.

Example

<Action name="RemoveAgents">
  <GlobalAction>
    <EntityAction entityRef="">
      <DeleteEntityAction/>
    </EntityAction>
  </GlobalAction>
</Action>
SpeedAction

The SpeedAction adjusts the velocity of an entity based on parameters of the SpeedAction. Both variants, “RelativeTargetSpeed” and “AbsoluteTargetSpeed”, are supported, but with restrictions:

  • The SpeedActionDynamics attribute “dynamicsShape” only supports “linear” and “step”.

  • The SpeedActionDynamics attribute “dynamicsDimension” only supports “rate”.

  • The RelativeTargetSpeed attribute “continuous” is ignored.

Note

Values defined in the SpeedAction might not reflect actual values used by the simulator due to physical boundaries of the simulator.

Example AbsoulteTargetSpeed

<Action name="SpeedAction">
  <PrivateAction>
    <LongitudinalAction>
      <SpeedAction>
        <SpeedActionDynamics dynamicsShape="step" value="0.0" dynamicsDimension="rate"/>
        <SpeedActionTarget>
          <AbsoluteTargetSpeed value="20"/>
        </SpeedActionTarget>
      </SpeedAction>
    </LongitudinalAction>
  </PrivateAction>
</Action>

Example RelativeTargetSpeed

<Action name="SpeedAction">
  <PrivateAction>
    <LongitudinalAction>
      <SpeedAction>
        <SpeedActionDynamics dynamicsShape="step" value="0.0" dynamicsDimension="rate"/>
        <SpeedActionTarget>
          <RelativeTargetSpeed entityRef="ScenarioAgent" value="10"
                               speedTargetValueType="delta" continuous="false"/>
        </SpeedActionTarget>
        </SpeedAction>
    </LongitudinalAction>
  </PrivateAction>
</Action>
UsedDefinedAction: DefaultCustomCommandAction

This is the default custom command, and is always selected, if the first WORD (Keyword) in the command string is not registered as a special custom command.

The DefaultCustomCommandAction adds an event to the EventNetwork, which is relayed as a string (StringSignal) by the component``OSCActions``.

FMU_Wrapper component for OSMP messages only

The linked string signal is set as custom action of the TrafficCommand. For more information on OSMP FMUs see the FMU Wrapper documentation.

Example

<Action name="CustomParameters">
    <UserDefinedAction>
        <CustomCommandAction>Arbitrary String, e.g. { "hello": "world"}</CustomCommandAction>
    </UserDefinedAction>
</Action>

Note

Here, “Arbitrary” is first checked, if it matches any other available Keyword for used defined actions, such as UserDefinedAction: Component State Change.

UserDefinedAction: Component State Change

Command Keyword: SetComponentState

The ComponentStateChangeManipulator influences the maximum reachable state of an agent component that is handled by the ComponentController, i.e. it can either activate or deactivate a component. For more details see the description of the ComponentController.

Example

<Action name="ComponentStateChange">
    <UserDefinedAction>
        <CustomCommandAction>SetComponentState Dynamics_TrajectoryFollower Acting</CustomCommandAction>
    </UserDefinedAction>
</Action>

StopTrigger

Here, end conditions for the simulation are defined.

Right now, only SimulationTime is supported, given in seconds, with the fixed rule="greaterThan".

Example

  <StopTrigger>
    <ConditionGroup>
      <Condition name="EndTime" delay="0" conditionEdge="rising">
        <ByValueCondition>
          <SimulationTimeCondition value="30.0" rule="greaterThan"/>
        </ByValueCondition>
      </Condition>
    </ConditionGroup>
  </StopTrigger>