blob: 2e4ca06220f0ffdce4311c654cc4c5e60c592ff6 [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
*******************************************************************************
.. _systemconfigblueprint:
SystemConfigBlueprint
=====================
This file contains the possible agent modules and channels of a dynamically generated agent. The content of this file should only be adjusted by experienced users with knowledge of the simulation architecture. The SystemConfigBlueprint is a special SystemConfig and has the same schema. Only the system with id 0 is used for generating dynamic agents.
If the simulation uses only statically configured agents (AgentProfile Type attribute is "Static"), this file isn't required.
.. _systemconfigblueprint_agentComponents:
AgentComponents
---------------
All components are listed here. An agent consists of a subset of this components.
.. table::
:class: tight-table
=========== ===============================================================================
Attribute Description
=========== ===============================================================================
Id Used as key by the simulation to find the component
Priority The module with the highest priority value gets executed first by the scheduler
Offset Delay for the trigger method of each component in ms
Cycle Interval in which the component gets triggered by the scheduler in ms
Response Delay for the UpdateOutput method of each component in ms
Library Library name of this component
Parameters Parameters used by the component
=========== ===============================================================================
Example:
This example describes the Sensor_Driver module.
.. literalinclude:: /../../../tuev/sim/contrib/examples/Common/systemConfigBlueprint.xml
:language: xml
:dedent: 12
:lines: 28-38
.. _systemconfigblueprint_priorities:
Priorities
----------
Please refer to the :ref:`Components and channel communication diagram <component_channel_communication>` for assignment of a proper priority.
Based on the signal flow, input relevant components like sensors need to be executed first. They provide data for consuming components (algorithms) like ADAS and drivers.
Data is then handled by algorithms like Algorithm_Lateral.
Output-relevant modules like dynamics and actions are executed last.
Prioritizer can be applied on different levels depending on the modules/data they need to handle levels as following can be defined:
- Level 1 describes data produced by ADAS and drivers
- Level 2 describes data output by vehicle dynamic controllers
- Level 3 describes data delivered by dynamics
Priorities can be grouped (coarse) as following:
Highest number indicates highest priority.
.. table::
:class: tight-table
=========================== ===========
Scope Range
=========================== ===========
Parameters 500
OpenScenarioActions 400
Sensor 350...399
Event 330
DriverMode 310
ADAS 250...299
ComponentController 200
Prioritizer (Lvl. 1) 150...199
VehicleDynamicsControllers 100...149
Prioritizer (Lvl. 2) 75...99
Dynamics 50...74
Prioritizer (Lvl. 3) 25...49
Updater 0...24
=========================== ===========
The table below can be used as orientation when a new module is introduced.
.. table::
:class: tight-table
========================================= ======================================= ========= =========================== =======================================================================================================================
Name Library Priority Scope Note
========================================= ======================================= ========= =========================== =======================================================================================================================
ParametersAgentModules ParametersAgent 500 Parameters Sets all init-data and is updated cyclically
OpenScenarioActions OpenScenarioActions 400 ADAS Reads events from OpenScenario Actions and forwards them to other components
SensorObjectDetector Sensor_OSI 398 Sensor Gets instantiated multiple times (one time per sensor)
SensorAggregation SensorAggregation_OSI 351 Sensor
SensorFusionErrorless SensorFusionErrorless_OSI 350 Sensor
AlgorithmAgentFollowingDriverModel AlgorithmAgentFollowingDriverModel 310 DriverModels
AEB AlgorithmAutonomousEmergencyBraking 250 ADAS
FMU1 AlgorithmFmuWrapper 250 ADAS
FMU2 AlgorithmFmuWrapper 250 ADAS
FMU3 AlgorithmFmuWrapper 250 ADAS
ComponentController ComponentController 200 ADAS Manages vehicle component states with regard to other vehicle component states and conditions and in response to events.
PrioritizerLaterDriver SignalPrioritizer 150 Prioritizer
PrioritizerAccelerationDriver SignalPrioritizer 150 Prioritizer
PrioritizerTurningIndicator SignalPrioritizer 150 Prioritizer
PrioritizerSteeringVehicleComponents SignalPrioritizer 150 Prioritizer
PrioritizerAccelerationVehicleComponents SignalPrioritizer 150 Prioritizer
LimiterAccelerationVehicleComponents LimiterAccelerationVehicleComponents 120 VehicleDynamicsControllers
AlgorithmLateralDriver AlgorithmLateralDriver 100 VehicleDynamicsControllers
AlgorithmLongitudinalVehicleComponents AlgorithmLongitudinalVehicleComponents 100 VehicleDynamicsControllers
AlgorithmLongitudinalDriver AlgorithmLongitudinalDriver 100 VehicleDynamicsControllers
PrioritizerSteering SignalPrioritizer 75 Prioritizer
PrioritizerLongitudinal SignalPrioritizer 75 Prioritizer
DynamicsCollision DynamicsCollision 50 Dynamics
DynamicsRegularDriving DynamicsRegularDriving 50 Dynamics
DynamicsTrajectoryFollower DynamicsTrajectoryFollower 50 Dynamics
PrioritizerDynamics SignalPrioritizer 25 Prioritizer
SensorRecordStateModule SensorRecordState 2 Updater Since values are "frozen" for current time step, logging can be placed anywhere
ActionLongitudinalDriverModules ActionLongitudinalDriver 3 Updater Will be expanded to ActionPrimary DriverTasks
ActionSecondaryDriverTasksModules ActionSecondaryDriverTasks 3 Updater
AgentUpdater AgentUpdater 1 Updater
========================================= ======================================= ========= =========================== =======================================================================================================================
.. _systemconfigblueprint_channelids:
Channel-Ids
-----------
Channels allow components to communicate with each other.
The signal flow is set explicitly via a channel-Id of 4 digits (see also :ref:`Components and channels communication diagram <component_channel_communication>`).
The first two numbers define the sending module (XX 00).
The other two digits define the type of signal that is sent (00 XX).
Signals as well as modules can be grouped to allow explicit numbering (see tables below).
Channel-Ids between Sensor and SensorFusion are an exception to this rule. For sensor/sensor fusion communication channel-ids are 9900 + x (incremented for every new sensor)
Example:
PrioritizerAccelerationDriver -> AlgorithmLongitudinalDriver with signal of type AccelerationSignal: 1813.
**Ids for Modules (first two digits)**
Index range for module groups:
.. table::
:class: tight-table
================= ==========
Group Id
================= ==========
Dynamics 1...10
Algorithm 11...30
DriverTasks 31...40
Driver 41...50
VehicleComponent 51...70
Special 81...89
Sensor 91...99
================= ==========
With corresponding defined indices:
.. table::
:class: tight-table
========================================= ================= =====
Module Group Id
========================================= ================= =====
AgentUpdater Dynamics 1
Dynamics_TrajectoryFollower Dynamics 2
Dynamics_RegularDriving Dynamics 3
Dynamics_Collision Dynamics 4
PrioritizerDynamics Dynamics 5
Algorithm_LongitudinalVehicleComponent Algorithm 11
Algorithm_LongitudinalAfdm Algorithm 12
Algorithm_SteeringVehicleComponent Algorithm 14
Algorithm_LateralVehicleAfdm Algorithm 15
LimiterAccelerationVehicleComponents Algorithm 17
PrioritizerLongitudinal Algorithm 21
PrioritizerSteering Algorithm 22
PrioritizerAccelerationVehicleComponents Algorithm 23
PrioritizerSteeringVehicleComponents Algorithm 24
Action_LongitudinalDriver DriverTasks 31
Action_SecondaryDriverTasks DriverTasks 32
PrioritizerTurningIndicator DriverTasks 33
AlgorithmAgentFollowingDriverModel Driver 41
AEB VehicleComponent 52
FMU1 VehicleComponent 71
FMU2 VehicleComponent 72
FMU3 VehicleComponent 73
ComponentController Special 83
OpenScenarioActions Special 84
Parameter_Vehicle Sensor 92
SensorAggregation Sensor 93
SensorFusionErrorless Sensor 94
Sensor_Driver Sensor 95
SensorObjectDetector Sensor 98
========================================= ================= =====
**Ids for Signals (last two digits)**
Index range for signal groups:
.. table::
:class: tight-table
==================== ==========
Group Id
==================== ==========
Dynamics 1...10
Algorithm 11...30
OpenScenarioActions 61...70
Special 71...80
Sensor 81...90
Parameters 91...99
==================== ==========
With corresponding defined indices:
.. table::
:class: tight-table
======================================= ==================== =====
Signal Group Id
======================================= ==================== =====
Dynamics Dynamics 01
Longitudinal Algorithm 11
Steering Algorithm 12
Acceleration Algorithm 13
Lateral Algorithm 14
SecondaryDriverTasks Algorithm 19
Trajectory OpenScenarioActions 71
AcquireGlobalPosition OpenScenarioActions 62
CustomParameters (CustomCommandAction) OpenScenarioActions 63
SensorDriver Sensor 81
SensorData Sensor 90
ParametersVehicle Parameters 92
======================================= ==================== =====
.. _systemconfigblueprint_parameters:
Parameters
----------
For more information on the type of parameters (especially stochastic distributions), please refer to the :ref:`ProfilesGroup section <profilescatalog_profilegroups>`.
**Important Note:** The syntax for defining parameters in the SystemConfigBlueprint file differs from the ProfilesCatalog syntax.
See the following example:
.. code-block:: xml
<parameters>
<parameter>
<id>StringParameter</id>
<type>string</type>
<unit/>
<value>Lorem ipsum</value>
</parameter>
<parameter>
<id>RandomParameter</id>
<type>normalDistribution</type>
<unit/>
<value>
<mean>15.0</mean>
<sd>2.5</sd>
<min>10.0</min>
<max>20.0</max>
</value>
</parameter>
</parameters>