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.

AgentComponents

All components are listed here. An agent consists of a subset of this components.

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.

<component>
    <id>SenderCar2X</id>
    <schedule>
        <priority>399</priority>
        <offset>0</offset>
        <cycle>100</cycle>
        <response>0</response>
    </schedule>
    <library>AlgorithmCar2XSender</library>
    <parameters/>
</component>

Priorities

Please refer to the Components and channel communication diagram 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.

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.

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

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 Components and channels communication diagram).

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:

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:

Module

Group

Id

AgentUpdater

Dynamics

1

Dynamics_TrajectoryFollower

Dynamics

2

Dynamics_RegularDriving

Dynamics

3

Dynamics_Collision

Dynamics

4

PrioritizerDynamics

Dynamics

5

Dynamics_Scenario

Dynamics

6

ControllerSwitch

Dynamics

7

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:

Group

Id

Dynamics

1…10

Algorithm

11…30

OpenScenarioActions

61…70

Special

71…80

Sensor

81…90

Parameters

91…99

With corresponding defined indices:

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

Parameters

For more information on the type of parameters (especially stochastic distributions), please refer to the ProfilesGroup section.

Important Note: The syntax for defining parameters in the SystemConfigBlueprint file differs from the ProfilesCatalog syntax. See the following example:

<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>