.. | |
******************************************************************************* | |
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:: /../../../repo/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 | |
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...80 | |
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 | |
LimiterVehicleLongitudinal 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 | |
AlgorithmAgentFollowingDriver Driver 41 | |
AEB VehicleComponent 52 | |
ComponentController Special 83 | |
OpenScenarioActions Special 84 | |
Parameter_Vehicle Sensor 92 | |
SensorAggregation Sensor 93 | |
SensorFusion Sensor 94 | |
Sensor_Driver Sensor 95 | |
========================================= ================= ===== | |
**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> |