# Observation_EntityRepository

This observer logs all entities generated for an experiment, split by run and/or persistence. In the following, the parametrization and generated outputs of the `Observation_EntityRepository` observer are described.

## Parametrization

Following parameters are supported:

Parameter | Type | Description
--- | --- | ---
FilenamePrefix | String | (Optional) Prefix for the output files. Defaults to `Repository` resulting e.g. in `Repository_Run_00.csv`.
WritePersistentEntities | String | Defines how persistent, ie cross-run entities such as stationary objects, are logged Options: Consolidated (default): Logged together with non persistent entities and hence duplicated for each run. Separate: Written once into `{FilenamePrefix}_Persistent.csv` Skip: No output.

Warning

The visualization is searching for files with the default `Repository` prefix, so don’t change it unless you have a reason to.

Example

          <Library>Observation_EntityRepository</Library>
          <Parameters>
            <!-- If "FilenamePrefix" is skipped, defaults to Value="Repository" -->
            <String Key="FilenamePrefix" Value="Repository"/>
            <!-- If "WritePersistentEntities" is skipped, defaults to Value="Consolidated"
                 Options:
                 - Consolidated: Concatenate with {FilenamePrefix}_Run_###.csv for each run
                 - Separate: Write to {FilenamePrefix}_Persistent.csv
                 - Skip: No output for persistent entities
            -->
            <String Key="WritePersistentEntities" Value="Consolidated"/>
          </Parameters>

## Output Files

### Repository_Run_###.csv

This file contains information about entities, which exist only within the given run. In other words, `Repository_Run_000.csv` will contain all moving objects, spawned within the first run (zero-based index).

Example

id | group | source | version | name | secondary id | type | subtype |
--- | --- | --- | --- | --- | --- | --- | --- | ---
0 | MovingObject | OpenSCENARIO |  | Ego |  | Ego |  |
1 | MovingObject | OpenSCENARIO |  | TF |  | Scenaro |  |
2 | MovingObject | OpenSCENARIO |  | S1 |  | Scenaro |  |
3 | MovingObject | OpenSCENARIO |  | S2 |  | Scenaro |  |
4 | MovingObject | OpenSCENARIO |  | S3 |  | Scenaro |  |
5 | MovingObject | OpenSCENARIO |  |  |  | Common |  |
6 | MovingObject | OpenSCENARIO |  |  |  | Common |  |
7 | MovingObject | OpenSCENARIO |  |  |  | Common |  |

Note

By convention, moving objects start with id 0.

If `WritePersistentEntities` is set to `Consolidated`, each file will also contain information about stationary objects, described below.

### Repository_Persistent.csv

This file contains information about entities, which exist in every single run. This includes mainly both objects (starting at 100000) and road elements (starting at 200000), defined by the Scenery.

Example

id | group | source | version | name | secondary id | type | subtype
--- | --- | --- | --- | --- | --- | --- | ---
100000 | StationaryObject | OpenDRIVE | 1.6 | Barrier | barrier_01 | obstacle |
100001 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_01 | railing |
100002 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_01 | railing |
100003 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_01 | railing |
100004 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_01 | railing |
100005 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_01 | railing |
100006 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_02 | railing |
100007 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_02 | railing |
100008 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_02 | railing |
100009 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_02 | railing |
100010 | StationaryObject | OpenDRIVE | 1.6 | GuardRail | guardrail_02 | railing |
200000 | Others | OpenDRIVE | 1.6 | LaneRoadMark |  | Solid |
200001 | Others | OpenDRIVE | 1.6 | LaneRoadMark |  | Solid |
200002 | Others | OpenDRIVE | 1.6 | Lane | -3 | Driving |
200003 | Others | OpenDRIVE | 1.6 | LaneRoadMark |  | Broken |
200004 | Others | OpenDRIVE | 1.6 | Lane | -2 | Driving |
200005 | Others | OpenDRIVE | 1.6 | LaneRoadMark |  | Broken |
200006 | Others | OpenDRIVE | 1.6 | Lane | -1 | Driving |

Information coming from the source OpenDRIVE are mapped in the following manner:

Attribute | Column
--- | ---
name | name
id | secondary id
type | type
subtype | subtype

Note

Repeated OpenDRIVE objects are internally split into individual objects. E.g. a single guard rail object in OpenDRIVE, is split into individual openPASS objects having consecutive ids. In the example above, the OpenDRIVE object with (secondary) id `guardrail_01` is split into 5 individual openPASS objects with the closed id range from 100001 to 100005.