Skip to content

Commit 1b6fa8c

Browse files
author
Stefan Cyliax
authored
Merge branch 'master' into feature/align-custom-traffic-action-with-osc
2 parents 6aaadca + 9c7dfe9 commit 1b6fa8c

File tree

88 files changed

+8664
-1645
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+8664
-1645
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "asciidoc-resources"]
2+
path = asciidoc-resources
3+
url = https://code.asam.net/simulation/asciidoc-resources.git

asciidoc-resources

Submodule asciidoc-resources added at e0bd505
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
= Overview of OSI architecture
2+
3+
OSI contains an object-based environment description that uses the message format of the https://github.com/protocolbuffers/protobuf/wiki[Protocol Buffer] library.
4+
The Protocol Buffer library was developed and is maintained by Google.
5+
OSI defines top-level messages that are used to exchange data between separate models.
6+
Top-level messages define the `GroundTruth` interface, the `SensorData` interface, and – since OSI version 3.0.0 – the interfaces `SensorView`, `SensorViewConfiguration`, and `FeatureData`.
7+
8+
The following figure shows the interfaces and models involved in modeling a sensor.
9+
10+
.Open Simulation Interface overview
11+
image::{images_open_simulation_interface}/osi-context.png[1100]
12+
13+
14+
OSI also defines interfaces for traffic participant models.
15+
The `TrafficCommand` interface makes it possible to send commands to traffic participant models.
16+
The `TrafficUpdate` interface makes it possible to receive the updated state from traffic participant models.
17+
The following figure shows the interfaces of a generic traffic participant.
18+
19+
.Interface of a traffic participant
20+
image::{images_open_simulation_interface}/osi-traffic-participant-principle.png[1100]
21+
22+
Traffic participant models may use other OSI interfaces internally, for example, to model autonomous vehicles.
23+
The following figure shows a more advanced use case for traffic participants.
24+
25+
.Traffic participant with sensor models, AD function, and dynamic model
26+
image::{images_open_simulation_interface}/osi-traffic-participant-advanced.png[1100]
27+
28+
The `HostVehicleData` interface describes the measured internal states of a traffic participant.
29+
OSI currently provides only limited support for data structures that describe measured internal states of traffic participants.
30+
Actuator intentions are currently not covered by OSI and must be handled with a different data description format.
31+
32+
All fields in an interface are set to `optional`.
33+
`required` is not used.
34+
This has been done to allow backward-compatible changes in the field.
35+
Additionally, this is the default behavior in Protocol Buffer version 3 that does no longer have the `required` type.
36+
Setting all fields to `optional` thus ensures update compatibility.
37+
However, this does not mean that filling the field is optional.
38+
For the purpose of providing a complete interface, all existing fields should be set, unless not setting a field carries a specific meaning as indicated in the accompanying comment.
39+
40+
All field numbers equal to or greater than 10000 are available for user-specific extensions via custom fields.
41+
Therefore, no future evolution of OSI will use field numbers equal to or greater than 10000.

doc/architecture/data_layer.adoc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
= Data layer
2+
3+
The data layer of OSI is defined in the message specifications using the ProtoBuf IDL.
4+
It defines the data that can be transmitted using OSI, including the structure and the semantics of the data.
5+
6+
Additionally, it specifies the encoding to be used when OSI data is transmitted.
7+
Currently, ProtoBuf encoding is used, but other encodings are possible with the ProtoBuf IDL.
8+
FlatBuffer encoding has been implemented as an experimental feature.
9+
10+
The data layer does not directly define components and transmission routes.
11+
These are defined in the packaging layer of OSI.
12+
There may be different packaging layer implementations using the shared data layer definitions.
13+
The data that is exchanged remains compatible regardless of the packaging layer implementation.
14+
The use of a shared data layer ensures easy bridging between different packaging layer implementations.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
= Environmental effect model
2+
3+
Environmental effect models consume sensor-view messages and produce sensor-view messages.
4+
Environmental effect models may, for example, alter sensor-view messages to include effects and phenomena caused by:
5+
6+
* Shadows and occlusions
7+
* Weather effects
8+
* Physics of a sensor
9+
* Pre-processing of raw sensor data

doc/architecture/feature_data.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
= Feature data
2+
3+
Feature-data messages contain detected features in the reference frame of a sensor.
4+
Feature-data messages are generated from ground-truth messages.
5+
They serve, for example, as input to sensor models simulating object detection or feature fusion models.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
= Trace-file formatting scripts
2+
3+
The OSI repository contains Python scripts for converting trace files from one format to the other.
4+
The formatting scripts are stored in `open-simulation-interface/format/`
5+
6+
**txt2osi.py**
7+
8+
`txt2osi.py` converts plain-text trace files to binary `.osi` trace files.
9+
This script takes the following parameters:
10+
11+
`--data`, `-d`::
12+
String containing the path to the file with serialized data.
13+
14+
`--type`, `-t`::
15+
Optional string describing the message type used to serialize data.
16+
Allowed values are `'SensorView'`, `'GroundTruth'`, or `'SensorData'`.
17+
The default value is `'SensorView'`.
18+
19+
`--output`, `-o`::
20+
Optional string containing the name of the output file.
21+
The default value is `'converted.osi'`.
22+
23+
`--compress`, `-c`::
24+
Optional boolean controlling whether to compress the output to a lzma file.
25+
Allowed values are `True`, or `False`.
26+
The default value is `False`.
27+
28+
**osi2read.py**
29+
30+
`osi2read.py` converts trace files to human-readable `.txth` trace files.
31+
This script takes the following parameters:
32+
33+
`--data`, `-d`::
34+
String containing the path to the file with serialized data.
35+
36+
`--type`, `-t`::
37+
Optional string describing the message type used to serialize data.
38+
Allowed values are `'SensorView'`, `'GroundTruth'`, or `'SensorData'`.
39+
The default value is `'SensorView'`.
40+
41+
`--output`, `-o`::
42+
Optional string containing the name of the output file.
43+
The default value is `'converted.txth'`.
44+
45+
`--format`, `-f`::
46+
Optional string containing the format type of the trace file.
47+
Allowed values are `'separated'`, or `None`.
48+
The default value is `None`.
49+
50+
**Related topics**
51+
52+
* <<#top-1a2f4b0c-195c-4f18-89ad-d48a123bd8c1>>[OSI trace file formats]

doc/architecture/ground_truth.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
= Ground truth
2+
3+
Ground-truth messages describe the simulated environment containing all simulated objects in the global coordinate system at consecutive time instances.
4+
It is based on data available to the simulation environment.
5+
Typically, ground-truth messages are contained in sensor view messages.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
= Logical model
2+
3+
Logical models consume sensor-data messages and produce sensor-data messages.
4+
5+
An example of a logical model is a sensor-fusion model, which combines the output of multiple sensor models to produce data with less uncertainty.
6+
Another use case is the fault-injection model which, contrary to a sensor-fusion model, may be used to increase uncertainties.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
= Packaging layer
2+
3+
The packaging layer of OSI specifies how components that use the OSI data layer, for example, sensor models, are packaged for exchange.
4+
5+
It specifies model types and their mandatory and optional OSI inputs, OSI outputs, and parameter interfaces.
6+
A model type may be, for example, a sensor model or a traffic participant model.
7+
The packaging layer also specifies component technology standards.
8+
This makes it possible to encapsulate model types in easily exchangeable component packages that can be used across platforms and implementations.
9+
10+
Multiple packaging layer implementations are possible within the OSI framework.
11+
The shared data layer ensures easy bridging between the different implementations.
12+
The currently defined central packaging layer is the OSI Sensor Model Packaging (OSMP) specification.
13+
It is based on FMI 2.0 and uses certain additional conventions to allow packaging of OSI using models as FMUs.

0 commit comments

Comments
 (0)