blob: 72a07bb853d5b1a842b47934b16aa1080c60d08f [file] [log] [blame]
..
*******************************************************************************
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
*******************************************************************************
.. _simulationconfig:
SimulationConfig
================
.. todo: Write a nicer introduction for the simulationconfig, similar to "Overview" section in scenery
This file describes the user configurable parameters of an experiment.
Several parameters depend on probabilities.
Each invocation then rolls for said probabilities.
All probabilities need to add up to 1.0.
The simulationConfig.xml consists of the following sections:
* :ref:`simulationconfig_profilescatalog`
* :ref:`simulationconfig_experiment`
* :ref:`simulationconfig_scenario`
* :ref:`simulationconfig_environment`
* :ref:`simulationconfig_observations`
* :ref:`simulationconfig_spawners`
.. _simulationconfig_profilescatalog:
ProfilesCatalog
---------------
Specifies the :ref:`profilescatalog` for the experiment.
.. literalinclude:: /../../../tuev/sim/contrib/examples/Common/simulationConfig.xml
:language: xml
:start-at: <ProfilesCatalog>
:end-at: </ProfilesCatalog>
.. _simulationconfig_experiment:
Experiment
----------
Specifies the general experiment setup, not specific to a single invocation.
.. table::
:class: tight-table
===================== ================================================== =========
Tag Description Mandatory
===================== ================================================== =========
ExperimentId Id of the experiment yes
NumberOfInvocations Number of invocation in the experiment.
For each invocation probabilities are rerolled. yes
RandomSeed Random seed for the entire experiment.
Must be within the bounds of an unsigned integer. yes
Libraries Name of the core module Libraries to use.
If not specified the default name is assumed. yes
===================== ================================================== =========
.. literalinclude:: /../../../tuev/sim/contrib/examples/Common/simulationConfig.xml
:language: xml
:start-at: <Experiment>
:end-at: </Experiment>
.. _simulationconfig_scenario:
Scenario
--------
This section contains information about the scenario setup for the experiment. This information does not change between invocations.
.. table::
:class: tight-table
================ ========================= =========
Tag Description Mandatory
================ ========================= =========
OpenScenarioFile Name of the scenario file yes
================ ========================= =========
**Example**
This experiment uses the "HighwayScenario.xosc" scenario file.
.. literalinclude:: /../../../tuev/sim/contrib/examples/Common/simulationConfig.xml
:language: xml
:start-at: <Scenario>
:end-at: </Scenario>
.. _simulationconfig_environment:
Environment
-----------
This section contains information about the world and the general environment inside the simulation. Every invocation re-rolls the environment probabilities.
All probabilities need to add up to 1.0.
.. table::
:class: tight-table
=================== ============================================================================================== =========
Tag Description Mandatory
=================== ============================================================================================== =========
TimeOfDay **Currently unused.** Time of day ranging from 1-24 [h]. 1+ entry
VisibilityDistance Defines how far a human driver can see [m]. 1+ entry
Friction Friction on the road. Used by DynamicsRegularDriving and LimiterAccelerationVehicleComponents. 1+ entry
Weather **Currently unused.** Weather as string 1+ entry
TrafficRules Defines which set of TrafficRules to use from the ProfilesCatalog yes
=================== ============================================================================================== =========
**Example**
Every invocation has the time set to 15:00.
In 70% of all invocation drivers can see 125 meter and for the other 30% of invocations the drivers can see 250 meter.
Every invocation has a friction of 0.3.
Every invocation has sunny weather.
.. literalinclude:: /../../../tuev/sim/contrib/examples/Common/simulationConfig.xml
:language: xml
:start-at: <Environment>
:end-at: </Environment>
.. _simulationconfig_observations:
Observations
------------
In this section all observation libraries are defined with their parameters.
A specific library is loaded by adding an entry to the `Observations` tag:
.. code-block:: xml
<Observations>
<!-- first observer -->
<Observation>
<Library>THE_OBSERVATION_LIBRARY</Library>
<!-- observer specific parameter -->
<Parameters>
<String Key="THE_KEY" Value="THE_VALUE"/>
<Bool Key="ANOTHER_KEY" Value="false"/>
...
</Parameters>
</Observation>
<!-- second observer -->
<Observation>
...
</Observation>
</Observations>
Here, the ``Library`` tag contains the name of the library, and ``Parameters`` contain an optional list of key/value pairs, specific for each observer.
Please refer to the documentation of the individual observers for available parameters:
.. toctree::
:glob:
:maxdepth: 1
../outputs/*
.. _simulationconfig_spawners:
Spawners
--------
In this section the spawners are defined with their Profile (defined in the ProfilesCatalog).
The same library can be loaded multiple times with different profiles.
A spawner is either of type "PreRun", meaning it is triggered only once at the start of the simulation, or "Runtime", meaning it is triggered in every timestep.
If different spawners are to be triggered at the same time the spawner with the highest priority is triggered first.
.. literalinclude:: /../../../tuev/sim/contrib/examples/Common/simulationConfig.xml
:language: xml
:start-at: <Spawners>
:end-at: </Spawners>
Full Example
------------
.. literalinclude:: /../../../tuev/sim/contrib/examples/Common/simulationConfig.xml
:language: xml
:caption: simulationConfig.xml
:linenos: