.. | |
******************************************************************************* | |
Copyright (c) 2021 in-tech GmbH | |
This program and the accompanying materials are made available under the | |
terms of the Eclipse Public License 2.0 which is available at | |
http://www.eclipse.org/legal/epl-2.0. | |
SPDX-License-Identifier: EPL-2.0 | |
******************************************************************************* | |
.. _scenario: | |
Scenario | |
======== | |
.. _scenario_overview: | |
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. | |
.. _scenario_parameterdeclaration: | |
ParameterDeclarations | |
--------------------- | |
The tag ``ParameterDeclarations`` allow to define generic parameters, which can be referenced later the file by its name, prefixed with ``$``. | |
**Example declaration** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Common/Scenario.xosc | |
:language: xml | |
:dedent: 2 | |
:start-at: <ParameterDeclarations> | |
:end-at: </ParameterDeclarations> | |
**Example usage** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Common/Scenario.xosc | |
:language: xml | |
:dedent: 12 | |
:start-at: <SimulationTime | |
:lines: 1 | |
**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 |op|. | |
.. _scenario_catalogs: | |
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: | |
- Mandatory: :ref:`scenario_vehiclemodels` | |
- Mandatory: :ref:`scenario_pedestrianmodels` | |
- Optional: TrajectoryCatalog for the case that a *FollowTrajectory action* is defined | |
**Example** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Common/Scenario.xosc | |
:language: xml | |
:dedent: 2 | |
:start-at: <CatalogLocations> | |
:end-at: </CatalogLocations> | |
.. _scenario_vehiclemodels: | |
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:** :download:`/../../../repo/sim/contrib/examples/Common/VehicleModelsCatalog.xosc` | |
.. _scenario_pedestrianmodels: | |
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, |op| internally sets *meaningless* parameters, such as *number of gears*, to operational defaults. | |
**Supported models:** | |
- pedestrian_child | |
- pedestrian_adult | |
**Full Example:** :download:`/../../../repo/sim/contrib/examples/Common/PedestrianModelsCatalog.xosc` | |
.. _scenario_roadnetwork: | |
RoadNetwork | |
----------- | |
The ``RoadNetwork`` tag contains the mandatory reference to the OpenDRIVE :ref:`scenery`. | |
**Example** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Common/Scenario.xosc | |
:language: xml | |
:dedent: 2 | |
:start-at: <RoadNetwork> | |
:end-at: </RoadNetwork> | |
.. _scenario_entities: | |
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 :ref:`profilescatalog`. | |
.. note:: This deviates from the OpenSCENARIO standard. | |
.. todo:: In what way do scenario agents deviate from the standard? | |
To specify an entity as the **Ego Agent**, the it must be named "Ego". | |
Entities can also be grouped into selections. | |
.. todo:: What is an EntitySelection? | |
**Example** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Common/Scenario.xosc | |
:language: xml | |
:dedent: 2 | |
:start-at: <Entities> | |
:end-at: </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** | |
.. code-block:: xml | |
<CatalogReference catalogName="ProfilesCatalog.xml" entryName="MiddleClassCarAgent"> | |
<ParameterAssignments> | |
<ParameterAssignment parameterRef="Length" value="4.0" /> | |
</ParameterAssignments> | |
</CatalogReference> | |
.. admonition:: AgentProfile vs. VehicleModel | |
|Op| 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). | |
.. _scenario_storyboard: | |
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. | |
.. _scenario_init: | |
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: | |
.. table:: | |
:class: tight-table | |
==================== =================== ========================= ============== | |
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: | |
.. table:: | |
:class: tight-table | |
==================== ================== ============================================================================================ | |
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 | |
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** | |
|Op| 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 :ref:`scenario_parameterdeclaration`. | |
.. note:: If VisibilityAction **is not defined** the according entity agent **will be spawned**. | |
**Stochastic Values** | |
Unlike OpenSCENARIO, |op| allows some of the aforementioned values to be stochastic. | |
This is achieved by using the sub-tag ``Stochastics`` within the tags ``LanePosition`` or ``SpeedAction``: | |
.. code-block:: xml | |
<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** | |
.. code-block:: xml | |
<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> | |
.. _scenario_story: | |
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** | |
.. code-block:: xml | |
<Story name="MyStory"> | |
<Act name="Act1"> | |
<ManeuverGroup name="MySequence" maximumExecutionCount="-1"> | |
<Actors> | |
... | |
</Actors> | |
<Maneuver name="MyManeuver"> | |
... | |
</Maneuver> | |
</ManeuverGroup> | |
</Act> | |
</Story> | |
.. _scenario_actors: | |
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"/>``. | |
.. _scenario_maneuver: | |
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** | |
.. code-block:: xml | |
<Maneuver name="MyManeuver"> | |
<Event name="MyEvent" priority="overwrite"> | |
<Action name="MyManipulator"> | |
... | |
</Action> | |
<StartTrigger> | |
<ConditionGroup> | |
<Condition name="Conditional"> | |
... | |
</Condition> | |
</ConditionGroup> | |
</StartTrigger> | |
</Event> | |
</Maneuver> | |
.. _scenario_conditions: | |
Conditions | |
"""""""""" | |
|Op| 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. | |
.. table:: | |
==================================== ============== | |
Condition Triggered By | |
==================================== ============== | |
:ref:`scenario_simulationtime` Value | |
:ref:`scenario_relativelaneposition` Entity | |
:ref:`scenario_roadposition` Entity | |
:ref:`scenario_relativelaneposition` Entity | |
:ref:`scenario_relativespeed` Entity | |
:ref:`scenario_timetocollision` Entity | |
:ref:`scenario_timeheadway` Entity | |
==================================== ============== | |
.. _scenario_simulationtime: | |
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** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Common/Scenario.xosc | |
:language: xml | |
:dedent: 8 | |
:start-at: <Condition name="EndTime" | |
:end-at: </Condition> | |
.. _scenario_relativelaneposition: | |
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** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/ByEntityCondition_RelativeLane/Scenario.xosc | |
:language: xml | |
:dedent: 18 | |
:start-at: <Condition name="RelativeLanePosition"> | |
:end-at: </Condition> | |
.. _scenario_roadposition: | |
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** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/ByEntityCondition_RoadPosition/Scenario.xosc | |
:language: xml | |
:dedent: 18 | |
:start-at: <Condition name="RoadPosition"> | |
:end-at: </Condition> | |
.. _scenario_relativespeed: | |
RelativeSpeed | |
+++++++++++++ | |
This condition evaluates if the relative velocity (:math:`v_{rel}`) between a TriggeringEntity and a reference entity, is *lessThan*, *equalTo*, or *greaterThan*, a specified value, where :math:`v_{rel} = v_{trig} - v_{ref}`. | |
**Example** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/ByEntityCondition_RelativeSpeed/Scenario.xosc | |
:language: xml | |
:dedent: 18 | |
:start-at: <Condition name="RelativeSpeed"> | |
:end-at: </Condition> | |
.. _scenario_timetocollision: | |
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** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/ByEntityCondition_TimeToCollision/Scenario.xosc | |
:language: xml | |
:dedent: 18 | |
:start-at: <Condition name="TimeToCollision"> | |
:end-at: </Condition> | |
.. _scenario_timeheadway: | |
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** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/ByEntityCondition_TimeHeadway/Scenario.xosc | |
:language: xml | |
:dedent: 18 | |
:start-at: <Condition name="TimeHeadway"> | |
:end-at: </Condition> | |
.. _scenario_actions: | |
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: | |
- :ref:`scenario_lanechange` | |
- :ref:`scenario_followtrajectory` | |
- :ref:`scenario_acquireposition` | |
- :ref:`scenario_removeagent` | |
- :ref:`scenario_speedaction` | |
In addition, the following user defined actions are interpreted: | |
- :ref:`scenario_componentstatechange` | |
- :ref:`scenario_defaultCustomCommandAction` | |
.. todo:: Write a paragraph about the concept "Trajectories, OSC Actions, and so" in the developer zone. | |
.. _scenario_lanechange: | |
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* | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/OSCAction_SinusoidalLaneChangeLeft_Absolute/Scenario.xosc | |
:language: xml | |
:dedent: 14 | |
:start-at: <Action name="LaneChange"> | |
:end-at: </Action> | |
**Example** *with relative target and fixed time* | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/OSCAction_SinusoidalLaneChangeLeft_Relative/Scenario.xosc | |
:language: xml | |
:dedent: 14 | |
:start-at: <Action name="LaneChange"> | |
:end-at: </Action> | |
.. _scenario_followtrajectory: | |
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** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/Pedestrian_Trajectory/Scenario.xosc | |
:language: xml | |
:dedent: 14 | |
:start-at: <Action name="Trajectory"> | |
:end-at: </Action> | |
**Example** *using a TrajectoryCatalog* | |
.. code-block:: xml | |
<Action name="FollowTrajectory"> | |
<Private> | |
<Routing> | |
<FollowTrajectoryAction> | |
<CatalogReference catalogName="TrajectoryCatalog.xosc" entryName="TrajectoryA"> | |
</FollowTrajectoryAction> | |
</Routing> | |
</Private> | |
</Action> | |
.. _scenario_acquireposition: | |
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 the supported by the component *FMU_Wrapper* and for OSMP messages. | |
**Example** *(WorldPosition)* | |
.. code-block:: xml | |
<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)* | |
.. code-block:: xml | |
<Action name="AcquirePosition"> | |
<PrivateAction> | |
<RoutingAction> | |
<AcquirePositionAction> | |
<Position> | |
<RelativeObjectPosition dx="1.0" dy="1.0" entityRef="S1"/> | |
</Position> | |
</AcquirePositionAction> | |
</RoutingAction> | |
</PrivateAction> | |
</Action> | |
.. _scenario_removeagent: | |
Remove Agent | |
++++++++++++ | |
The RemoveAgentsManipulator removes the specified entity at the time of triggering. | |
**Example** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Configurations/OSCAction_RemoveAgent/Scenario.xosc | |
:language: xml | |
:dedent: 14 | |
:start-at: <Action name="RemoveAgents"> | |
:end-at: </Action> | |
.. _scenario_speedaction: | |
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* | |
.. code-block:: xml | |
<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* | |
.. code-block:: xml | |
<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> | |
.. _scenario_defaultCustomCommandAction: | |
UsedDefinedAction: DefaultCustomCommandAction | |
+++++++++++++++++++++++++++++++++++++++++++++ | |
.. todo:: Write a paragraph in the developer zone about the concept "wrapping FMUs" and the "OSMP FMU" | |
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``. | |
.. admonition:: FMU_Wrapper component for OSMP messages only | |
The linked string signal is set as custom action of the TrafficCommand. | |
**Example** | |
.. code-block:: xml | |
<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 :ref:`scenario_componentstatechange`. | |
.. _scenario_componentstatechange: | |
UserDefinedAction: Component State Change | |
+++++++++++++++++++++++++++++++++++++++++ | |
Command Keyword: SetComponentState | |
.. todo:: Write a paragraph in the developer zone about the concept "Component State Change" | |
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. | |
**Example** | |
.. code-block:: xml | |
<Action name="ComponentStateChange"> | |
<UserDefinedAction> | |
<CustomCommandAction>SetComponentState Dynamics_TrajectoryFollower Acting</CustomCommandAction> | |
</UserDefinedAction> | |
</Action> | |
.. _scenario_stoptrigger: | |
StopTrigger | |
~~~~~~~~~~~ | |
Here, end conditions for the simulation are defined. | |
Right now, only SimulationTime is supported, given in seconds, with the fixed ``rule="greaterThan"``. | |
**Example** | |
.. literalinclude:: /../../../repo/sim/contrib/examples/Common/Scenario.xosc | |
:language: xml | |
:dedent: 2 | |
:start-at: <StopTrigger> | |
:end-at: </StopTrigger> |