| .. |
| ******************************************************************************* |
| 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 |
| ******************************************************************************* |
| |
| .. _profilescatalog: |
| |
| ProfilesCatalog |
| =============== |
| |
| The ProfilesCatalog contains all AgentProfiles, VehicleProfiles and generic ProfileGroups and Profiles. |
| Depending on the configuration the simulator could require a "Driver"-ProfileGroup, a "Spawner"- and "TrafficGroup"-ProfileGroup, a "TrafficRules"-ProfileGroup or sensor and vehiclecomponent specific ProfileGroups. |
| |
| * :ref:`profilescatalog_agentprofiles` |
| * :ref:`profilescatalog_vehicleprofiles` |
| * :ref:`profilescatalog_profilegroups` |
| * :ref:`profilescatalog_driverprofiles` |
| * :ref:`profilescatalog_vehiclecomponentprofiles` |
| * :ref:`profilescatalog_spawnerprofiles` |
| * :ref:`profilescatalog_trafficrulesprofiles` |
| |
| .. _profilescatalog_agentprofiles: |
| |
| AgentProfiles |
| ------------- |
| |
| In this section all AgentProfiles are defined. |
| An AgentProfile is either static or dynamic. |
| A static AgentProfile consists of a SystemConfig and a VehicleModel. |
| A dynamic AgentProfile specifies the composition of the agent according to certain probabilities. |
| Here the initial driver and the vehicle profile of an agent get specified. |
| At least one AgentProfile is required. |
| But every AgentProfile referenced in the used :ref:`scenario` file or :ref:`components_trafficgroups` must exist. |
| All probabilities must add up to 1.0. |
| |
| Composition of a static AgentProfile: |
| |
| +-----------------+-----------------------------------------------------------------------+-----------+ |
| | Tag | Description | Required | |
| +=================+=======================================================================+===========+ |
| | System | Reference to a system defined in a SystemConfig | Yes | |
| +-----------------+-----------------------------------------------------------------------+-----------+ |
| | VehicleModel | Name of the VehicleModel in the :ref:`scenario_vehiclemodels` | Yes | |
| +-----------------+-----------------------------------------------------------------------+-----------+ |
| |
| Composition of a dynamic AgentProfile: |
| |
| +-----------------+---------------------------------------------------------------------------------+--------------------+ |
| | Tag | Description | Required | |
| +=================+=================================================================================+====================+ |
| | DriverProfiles | List of :ref:`profilescatalog_driverprofiles` for random selection | At least one entry | |
| +-----------------+---------------------------------------------------------------------------------+--------------------+ |
| | VehicleProfiles | List of :ref:`profilescatalog_vehicleprofiles` for random selection | At least one entry | |
| +-----------------+---------------------------------------------------------------------------------+--------------------+ |
| |
| Example |
| ~~~~~~~ |
| |
| In this experiment the ego agent is defined by the system with Id 0 in systemConfig.xml and the VehicleModel car_bmw_7. |
| Every LuxuryClassCarAgent has the driver profile "AgentFollowingDriver". |
| Regarding the vehicle profile 50% have a MINI Cooper and the other 50% drive a BMW 7. |
| |
| .. code-block:: xml |
| |
| <AgentProfiles> |
| <AgentProfile Name="EgoAgent" Type="Static"> |
| <System> |
| <File>systemConfig.xml</File> |
| <Id>0</Id> |
| </System> |
| <VehicleModel>car_bmw_7</VehicleModel> |
| </AgentProfile> |
| <AgentProfile Name="LuxuryClassCarAgent" Type="Dynamic"> |
| <DriverProfiles> |
| <DriverProfile Name="AgentFollowingDriver" Probability="1.0"/> |
| </DriverProfiles> |
| <VehicleProfiles> |
| <VehicleProfile Name="MINI Cooper" Probability="0.5"/> |
| <VehicleProfile Name="BMW 7" Probability="0.5"/> |
| </VehicleProfiles> |
| </AgentProfile> |
| </AgentProfiles> |
| |
| .. _profilescatalog_vehicleprofiles: |
| |
| VehicleProfiles |
| --------------- |
| |
| This sections contains all vehicle profiles. |
| Every VehicleProfile used by :ref:`profilescatalog_agentprofiles` must be listed here. |
| |
| .. code-block:: xml |
| |
| <VehicleProfiles> |
| <VehicleProfile Name="BMW 7"> |
| <Model Name="car_bmw_7"/> |
| <Components> |
| <Component Type="AEB"> |
| <Profiles> |
| <Profile Name="AebProfile" Probability="0.5"/> |
| </Profiles> |
| <SensorLinks> |
| <SensorLink SensorId="0" InputId="Camera"/> |
| </SensorLinks> |
| </Component> |
| </Components> |
| <Sensors> |
| <Sensor Id="0"> |
| <Position Name="Default" Longitudinal="0.0" Lateral="0.0" Height="0.5" Pitch="0.0" Yaw="0.0" Roll="0.0"/> |
| <Profile Type="Geometric2D" Name="Standard"/> |
| </Sensor> |
| </Sensors> |
| </VehicleProfile> |
| ... |
| </VehicleProfiles> |
| |
| +-------------+--------------------------------------------------------+ |
| | Attribute | Description | |
| +=============+========================================================+ |
| | Name | Name of the vehicle profile | |
| +-------------+--------------------------------------------------------+ |
| | Components | Lists all ADAS and other components in the vehicle | |
| +-------------+--------------------------------------------------------+ |
| | Sensors | Lists all sensors in the vehicle | |
| +-------------+--------------------------------------------------------+ |
| |
| .. _profilescatalog_components: |
| |
| Components |
| ~~~~~~~~~~ |
| |
| +-------------+-------------------------------------------------------------------------------------------------+ |
| | Attribute | Description | |
| +=============+=================================================================================================+ |
| | Type | Type of the component. | |
| | | | |
| | | Must match component name in SystemConfigBlueprint | |
| +-------------+-------------------------------------------------------------------------------------------------+ |
| | Profile | Possible profiles of the component with probabilities. | |
| | | | |
| | | The profiles are defined in the :ref:`profilescatalog_vehiclecomponentprofiles` section | |
| | | | |
| | | Probabilities do not need to add up to 1. | |
| +-------------+-------------------------------------------------------------------------------------------------+ |
| | SensorLinks | Defines which sensor this component uses as input | |
| +-------------+-------------------------------------------------------------------------------------------------+ |
| |
| .. note:: The possibility of "not having that component" can be achieved if the probabilities of the profiles do not add up to 1. |
| |
| .. _profilescatalog_sensors: |
| |
| Sensors |
| ~~~~~~~ |
| |
| +-------------+-------------------------------------------------------------------------------------------------+ |
| | Attribute | Description | |
| +=============+=================================================================================================+ |
| | Id | Identifier for the sensor used by the SensorLink definition of the components | |
| +-------------+-------------------------------------------------------------------------------------------------+ |
| | Position | Position of the sensor in the vehicle in relative coordinates | |
| +-------------+-------------------------------------------------------------------------------------------------+ |
| | Profile | All possible profiles of the sensor with probabilities. | |
| | | | |
| | | The profiles are defined in the :ref:`profilescatalog_vehiclecomponentprofiles` section | |
| +-------------+-------------------------------------------------------------------------------------------------+ |
| |
| .. _profilescatalog_profilegroups: |
| |
| ProfileGroups |
| ------------- |
| |
| A ProfileGroup defines all the possible profiles of a component. |
| A single profile is a set of parameters that are passed to the component in the same way as the parameters in the SystemConfig. |
| Note: For components that have their parameters defined in the ProfilesCatalog the parameters in the SystemConfigBlueprint are ignored. |
| Parameters can either be simple or stochastic. |
| Simple parameters only have one value, while stochastic parameters have a minimum and maximum value as well as distribution specific parameters. |
| Which parameters are needed/supported depends on the component. |
| |
| .. code-block:: xml |
| |
| <ProfileGroup Type="ComponentName"> |
| <Profile Name="ExampleProfile"> |
| <String Key="StringParameter" Value="Lorem ipsum"/> |
| <DoubleVector Key="DoubleParameter" Value="12.3,4.56,78.9"/> |
| <NormalDistribution Key="RandomParameter" Mean="4.5" SD="0.5" Min="3.5" Max="10.0"/> |
| </Profile> |
| <Profile Name="AnotherProfile"> |
| ... |
| </Profile> |
| </ProfileGroup> |
| |
| There are the following types of simple parameters: |
| |
| * Bool |
| * Int |
| * Double |
| * String |
| * IntVector |
| * DoubleVector |
| * StringVector |
| |
| If a parameter is stochastic it can be defined as any to be drawn from any of the following distributions: |
| |
| +-------------------------+--------------------------------------------------+ |
| | Distribution | Additional Attributes | |
| +=========================+==================================================+ |
| | NormalDistribution | (Mean and SD) or (Mu and Sigma) - equivalent | |
| +-------------------------+--------------------------------------------------+ |
| | LogNormalDistribution | (Mean and SD) or (Mu and Sigma) - not equivalent | |
| +-------------------------+--------------------------------------------------+ |
| | UniformDistribution | None | |
| +-------------------------+--------------------------------------------------+ |
| | ExponentialDistribution | Lambda or Mean (Mean = 1 / Lambda) | |
| +-------------------------+--------------------------------------------------+ |
| | GammaDistribution | (Mean and SD) or (Shape and Scale) | |
| +-------------------------+--------------------------------------------------+ |
| |
| Additionally there is the list type. |
| The list contains any number of list items which itself contain a list of parameters. |
| Lists can be nested at most two times. |
| |
| .. code-block:: xml |
| |
| <List Name="ExampleList"> |
| <ListItem> |
| <String Key="FirstParameter" Value="Lorem"/> |
| <Double Key="SecondParameter" Value="0.4"/> |
| </ListItem> |
| <ListItem> |
| <String Key="FirstParameter" Value="ipsum"/> |
| <Double Key="SecondParameter" Value="0.6"/> |
| </ListItem> |
| </List> |
| |
| |
| A Profile can also reference another Profile in another ProfileGroup. |
| In these case the importer handles the reference as if it was substituted by all subelements of the referenced Profile. |
| References may not be nested. |
| |
| .. code-block:: xml |
| |
| <Reference Type="GroupType" Name="ProfileName"/> |
| |
| |
| .. _profilescatalog_driverprofiles: |
| |
| Driver ProfileGroup |
| ------------------- |
| |
| This section contains all driver profiles used by the simulation. |
| At least one driver profile is required. |
| The special parameter "Type" defines the name of the component (i.e. library name). |
| For details on the indivual parameters see the :ref:`components reference <components_driver>`. |
| |
| .. code-block:: xml |
| |
| <ProfileGroup Type="Driver"> |
| <Profile Name="Name"> |
| <String Key="Type" Value="DriverLibrary"/> |
| ... |
| </Profile> |
| ... |
| </ProfileGroup> |
| |
| |
| .. _profilescatalog_vehiclecomponentprofiles: |
| |
| VehicleComponent ProfileGroups |
| ------------------------------ |
| |
| This sections contains all driver assistance systems and other vehicle components and their parameter sets. |
| For every used VehicleComponent type there must be a ProfileGroup with this type and every profile of this type used by :ref:`profilescatalog_vehicleprofiles` must be listed here. |
| For details on the indivual parameters see the :ref:`components reference <components_vehiclecomponents>`. |
| |
| .. code-block:: xml |
| |
| <ProfileGroup Type="LibraryName"> |
| <Profile Name="Name"> |
| ... |
| </Profile> |
| ... |
| </ProfileGroup> |
| |
| |
| .. _profilescatalog_spawnerprofiles: |
| |
| SpawnerProfile ProfileGroup |
| --------------------------- |
| |
| This sections contains all parameters of the spawners referenced in the :ref:`simulationconfig`. |
| For details on the indivual parameters see the :ref:`components reference <components_spawner>`. |
| |
| .. code-block:: xml |
| |
| <ProfileGroup Type="Spawner"> |
| <Profile Name="Name"> |
| ... |
| </Profile> |
| ... |
| </ProfileGroup> |
| |
| |
| .. _profilescatalog_trafficrulesprofiles: |
| |
| TrafficRules ProfileGroup |
| ------------------------- |
| |
| This sections contains the global traffic rules, that may vary depending on the country. |
| The :ref:`simulationconfig_environment` section in the SimulationConfig defines which set is used. |
| Currently there are only rules regulating highway traffic. These are the following: |
| |
| +---------------------------+---------+---------------------------------------------------------------------------------------------------------------------+ |
| | Name | Type | Description | |
| +===========================+=========+=====================================================================================================================+ |
| | OpenSpeedLimit | Double | maximum allowed speed if not restricted by signs | |
| +---------------------------+---------+---------------------------------------------------------------------------------------------------------------------+ |
| | KeepToOuterLanes | Bool | if true, vehicles must use the outermost free lane for driving | |
| +---------------------------+---------+---------------------------------------------------------------------------------------------------------------------+ |
| | DontOvertakeOnOuterLanes | Bool | if true, it is prohibited to overtake another vehicle, that is driving further left (or right for lefthand traffic) | |
| +---------------------------+---------+---------------------------------------------------------------------------------------------------------------------+ |
| | FormRescueLane | Bool | if true, vehicles driving in a traffic jam must form a corridor for emergency vehicles | |
| +---------------------------+---------+---------------------------------------------------------------------------------------------------------------------+ |
| | ZipperMerge | Bool | if true all merging shall be performed using zipper merge | |
| +---------------------------+---------+---------------------------------------------------------------------------------------------------------------------+ |
| |
| .. literalinclude:: /../../../tuev/sim/contrib/examples/Common/ProfilesCatalog.xml |
| :language: xml |
| :start-at: <ProfileGroup Type="TrafficRules"> |
| :end-at: </ProfileGroup> |
| |