Observation_Log¶
This section describes the parameters and outputs of the Observation_Log
observer.
Paramerization¶
Following parameters are supported:
Parameter |
Type |
Description |
---|---|---|
OutputFilename |
String |
Name of the output file (normally |
LoggingCyclicsToCsv |
Bool |
If |
LoggingGroup_<NAME> |
StringVector |
Defines which columns belong to the logging group named NAME |
LoggingGroups |
StringVector |
Defines active logging groups |
The columns, defined by the LoggingGroup_<NAME>
correspond to cyclic data entries written by the world and other components.
Cyclics are named data values of a single agent during a specific timestep.
Simulation components including agent components can write this values into the DataBuffer component using the PublisherInterface.
The Observation_Log can then read this values and write them into the output.
The world publishes the following cyclics (see source of AgentNetwork.cpp
):
XPosition
YPosition
VelocityEgo
AccelerationEgo
YawAngle
YawRate
SteeringAngle
TotalDistanceTraveled
PositionRoute
TCoordinate
Lane
Road
SecondaryLanes
AgentInFront
Please refer to the individual components, for information about their published cyclics.
Todo
We also need a way to better communicate, who is publishing what. This should directly come out of the source code, to keep the documentation up to date. See https://gitlab.eclipse.org/eclipse/simopenpass/simopenpass/-/issues/148
Wildcards in LoggingGroup definitions
*
in a LoggingGroup_<NAME>
entry.Example
<Library>Observation_Log</Library>
<Parameters>
<String Key="OutputFilename" Value="simulationOutput.xml"/>
<Bool Key="LoggingCyclicsToCsv" Value="false"/>
<StringVector Key="LoggingGroup_Trace" Value="XPosition,YPosition,YawAngle"/>
<StringVector Key="LoggingGroup_RoadPosition" Value="AgentInFront,Lane,PositionRoute,Road,TCoordinate"/>
<StringVector Key="LoggingGroup_RoadPositionExtended" Value="SecondaryLanes"/>
<StringVector Key="LoggingGroup_Sensor" Value="Sensor*_DetectedAgents,Sensor*_VisibleAgents"/>
<StringVector Key="LoggingGroup_Vehicle" Value="AccelerationPedalPosition,BrakePedalPosition,EngineMoment,Gear,SteeringAngle,TotalDistanceTraveled,YawRate"/>
<StringVector Key="LoggingGroup_Visualization" Value="AccelerationEgo,BrakeLight,IndicatorState,LightStatus,VelocityEgo"/>
<StringVector Key="LoggingGroups" Value="Trace,Visualization,RoadPosition,Sensor"/>
</Parameters>
Output Files¶
SimulationOutput¶
Every successful run (single experiment) generates a single file, normally called simulationOutput.xml
(see :ref:’observationlog_paramerization’).
The output can contain multiple invocations of the same configuration with different random seeds.
For each invocation a RunResult is stored, which contains information about the agents and their parameters.
As well as run specific events and parameters.
<SimulationOutput>
<RunResults>
<RunResult RunId="0">
...
</RunResult>
<RunResult RunId="1">
...
</RunResult>
</RunResults>
</SimulationOutput>
The RunResult consist out of the following parts:
RunStatistics¶
This section contains the RandomSeed and general statistics of the invocation.
Tag |
Description |
---|---|
RandomSeed |
Random seed used for this invocation |
VisibilityDistance |
Visibility distance of the world |
StopReason |
Displays the reason why the simulation stopped. Currently only due to time out. |
StopTime |
Currently not used and set to -1 |
EgoAccident |
Flag which shows whether the ego agent was involved in an accident |
TotalDistanceTraveled |
Total traveled distance of all agents |
EgoDistanceTraveled |
Total traveled distance of ego vehicle only |
Events¶
This section contains all events that occurred during the invocation. Event can either be triggered by an EventDetector, Manipulator or by certain vehicle components. They are used to track special behavior in the simulation.
Attribute |
Description |
---|---|
Time |
Time in ms when the event occurred. |
Source |
Name of the component which created the event.
|
Name |
In case of an OpenSCENARIO event, a path expression Story/Act/Sequence/Maneuver/Event using the names of the corresponding tags as described in the OpenSCENARIO file. Otherwise determined by the triggering component. |
TriggeringEntities |
List of entity IDs triggering this event. |
AffectedEntities |
List of entity IDs affected by this event. |
Parameters |
List of generic key/value string pairs. |
Important Events¶
Some of the Events are logged for other applications to use, for instance the openPASS Visualizer. These Events can be identified by their Name and are listed below:
Attribute |
Description |
---|---|
TrafficLight |
TrafficLight Events are triggered once a TrafficLightController changes the state of it’s Trafficlight bulbs. Parameters include the traffic_light_state and the opendrive_id which links to a dynamic signal in the scenery configuration. traffic_light_state is going to be used by the openPASS Visualizer. The initial state of the ThreeSignalsTrafficLight is posted too. |
Agents¶
This section contains some information on how each agent is configured.
Attribute |
Description |
---|---|
Id |
Identification number |
AgentTypeGroupName |
The agent category. This can either be Ego, Scenario or Common |
AgentTypeName |
Name of the agent profile |
VehicleModelType |
Name of the vehicle model |
DriverProfileName |
Name of the driver profile |
<Agent Id="0"
AgentTypeGroupName="Ego"
AgentTypeName="MiddleClassCarAgent"
VehicleModelType="car_bmw_7"
DriverProfileName="Regular">
The VehicleAttributes tag lists basic information of the vehicle parameters.
Attribute |
Description |
---|---|
Width |
Width of the vehicles bounding box |
Length |
Length of the vehicles bounding box |
Height |
Height of the vehicles bounding box |
LongitudinalPivotOffset |
Distance between center of the bounding box and reference point of the agent. Positive distances are closer to the front of the vehicle. Negative distances are closer to the rear of the vehicle. |
The Sensors tag lists all sensors of the agent and their parameters.
Attribute |
Description |
---|---|
Name |
Name of the component |
Model |
Type of the sensor |
MountingPosLongitudinal |
Relative longitudinal position of the sensor in relation to the agent |
MountingPosLateral |
Relative lateral position of the sensor in relation to the agent |
MountingPosHeight |
Relative height of the sensor in relation to the agent |
OrientationPitch |
Pitch rotation of the sensor in relation to the agent |
OrientationYaw |
Yaw rotation of the sensor in relation to the agent |
OpeningAngleH |
Horizontal opening angle of the sensor |
OpeningAngleV |
Vertical opening angle of the sensor |
DetectionRange |
Range how far the sensor reaches in m |
Note
Calculation of visual obstruction is currently supported only by the Geometric2D sensor. See SystemConfigBlueprint for configuration.
<Sensor Name="Geometric2DFront"
Model="Geometric2D"
MountingPosLongitudinal="0"
MountingPosLateral="0"
MountingPosHeight="0.5"
OrientationPitch="0"
OrientationYaw="0"
OpeningAngleH="20"
OpeningAngleV="-999"
DetectionRange="300" />
Cyclics¶
If the parameter LoggingCyclicsToCsv
is set to false
, this section contains all logged parameters of the agents per time step.
The tag header
defines the layout of all samples.
Each entry of the header consists of the agent id and the name of the logged value, in the form ID:SAMPLE_NAME
.
A sample contains all information for one specific time step.
If an agent does not exist at the current time step, the value is ‘ ‘.
Example
In this example exist two agents with the ids 0 and 1. Two time steps were being tracked, one at 0 seconds and one at 100 ms. Agent 0 has a constant velocity of 30 m/s and starts at the position X: 100 and Y: 50. Agent 1 has a initial velocity of 40 m/s and starts at the position X: 200 and Y: 50.
<Cyclics>
<Header>00:VelocityEgo, 00:XPosition, 00:YPosition, 00:YawAngle, 01:VelocityEgo, 01:XPosition, 01:YPosition, 01:YawAngle</Header>
<Samples>
<Sample Time="0">30, 100, 50, 0, 40, 200, 50, 0</Sample>
<Sample Time="100">30, 103, 50, 0, 40, 204, 50, 0</Sample>
</Samples>
</Cyclics>
If the parameter LoggingCyclicsToCsv
is set to true
, this section only contains a reference to the corresponding CSV file, e.g.
<Cyclics>
<CyclicsFile>Cyclics_Run_000.csv</CyclicsFile>
</Cyclics>
For each invocation, the file number of the filename is incremented, starting with Cyclics_Run_000.csv
.
Cyclics_Run_###¶
This file contains the samples as described in :ref:’observationlog_cyclics’, but with the time step as leading column.
Example
Timestep |
00:VelocityEgo |
00:XPosition |
00:YPosition |
00:YawAngle |
01:VelocityEgo |
01:XPosition |
01:YPosition |
01:YawAngle |
---|---|---|---|---|---|---|---|---|
0 |
30 |
100 |
50 |
0 |
40 |
200 |
50 |
0 |
100 |
30 |
103 |
50 |
0 |
40 |
204 |
50 |
0 |