diff --git a/doc/architecture/coordinate_systems.adoc b/doc/architecture/coordinate_systems.adoc
deleted file mode 100644
index 2034e3cd7..000000000
--- a/doc/architecture/coordinate_systems.adoc
+++ /dev/null
@@ -1,11 +0,0 @@
-= Coordinate systems
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu.
-Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a.
-Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
diff --git a/doc/architecture/feature_data.adoc b/doc/architecture/feature_data.adoc
index c1bd3ec51..f739be7d8 100644
--- a/doc/architecture/feature_data.adoc
+++ b/doc/architecture/feature_data.adoc
@@ -1,10 +1,5 @@
= Feature data
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu. Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a.
-Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
+Feature data contains detected features in the reference frame of a sensor.
+Feature data is generated from ground-truth data.
+It serves, for example, as input for sensor models simulating object detection or feature fusion models.
diff --git a/doc/architecture/ground_truth.adoc b/doc/architecture/ground_truth.adoc
index b15de8ab6..7ae617f47 100644
--- a/doc/architecture/ground_truth.adoc
+++ b/doc/architecture/ground_truth.adoc
@@ -1,10 +1,5 @@
= Ground truth
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu. Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a.
-Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
+Ground truth describes the simulated environment around all simulated objects in the global coordinate system.
+It is based on data available to the simulation environment and published to external subscribers.
+Depending on the external subscriber, ground-truth data may be individually restricted to reduce the data to be exchanged.
diff --git a/doc/architecture/reference_points.adoc b/doc/architecture/reference_points.adoc
deleted file mode 100644
index 39ebf5240..000000000
--- a/doc/architecture/reference_points.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-= Reference points
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu. Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a.
-Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
diff --git a/doc/architecture/reference_points_coordinate_systems.adoc b/doc/architecture/reference_points_coordinate_systems.adoc
new file mode 100644
index 000000000..bea9a1314
--- /dev/null
+++ b/doc/architecture/reference_points_coordinate_systems.adoc
@@ -0,0 +1,17 @@
+= Coordinate systems and reference points
+
+OSI uses DIN ISO 8855:2013-11 for coordinate systems and transformations between coordinate systems.
+OSI uses three coordinate systems:
+
+World coordinate system::
+Coordinate system for all quantities which are part of ground truth.
+The world coordinate system is an inertial x/y/z-coordinate system.
+
+Sensor coordinate system::
+Coordinate system for all quantities which are part of sensor data.
+The origin is the mounting position of the physical sensor or a virtual mounting position, depending on the technology.
+
+Object coordinate system::
+Coordinate system for local object coordinates.
+The origin of the corresponding coordinate systems is not necessarily identical to the center of the object's bounding box.
+For example with vehicles, the origin is the middle of the rear axle projected onto the ground.
diff --git a/doc/architecture/sensor_data.adoc b/doc/architecture/sensor_data.adoc
index ef5164e41..1db02ddc1 100644
--- a/doc/architecture/sensor_data.adoc
+++ b/doc/architecture/sensor_data.adoc
@@ -1,9 +1,7 @@
= Sensor data
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu. Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a. Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
+Sensor data imitates the output of real sensors.
+It can be generated from ground-truth data, sensor-view data, feature data or from sensor data.
+Except feature data, all information regarding the environment is given with respect to the virtual sensor coordinate system.
+Feature data is given with respect to the physical sensor coordinate system.
+Sensor data can be used as input for an automated driving function, a sensor model simulating limited perception, or a sensor fusion model.
diff --git a/doc/architecture/sensor_view.adoc b/doc/architecture/sensor_view.adoc
index 1bdec6fc7..54f8fdd85 100644
--- a/doc/architecture/sensor_view.adoc
+++ b/doc/architecture/sensor_view.adoc
@@ -1,9 +1,8 @@
= Sensor view
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu. Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a. Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
+Sensor view imitates the input of sensors.
+Sensor-view data is derived from ground-truth data.
+All information regarding the environment is given with respect to the virtual sensor coordinate system, with two exceptions:
+
+* Physical technology-specific data, given with respect to the physical sensor coordinate system specified in the corresponding physical sensor’s mounting position.
+* Ground-truth data, given in the global coordinate system.
\ No newline at end of file
diff --git a/doc/architecture/sensor_view_configuration.adoc b/doc/architecture/sensor_view_configuration.adoc
index c7e9f3f02..a7ceca4ef 100644
--- a/doc/architecture/sensor_view_configuration.adoc
+++ b/doc/architecture/sensor_view_configuration.adoc
@@ -1,9 +1,15 @@
= Sensor view configuration
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu. Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a. Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
+The sensor view configuration configures the sensor view.
+There are two sources for sensor-view-configuration data.
+
+Sensor-view-configuration data can be provided by the environment simulation.
+In this case, the data is intended for the automatic configuration of an environment simulation in order to supply the necessary input to a sensor model.
+Sensor-view-configuration data is not intended to provide parameters to a generic sensor model.
+
+Sensor-view-configuration data can also be provided by the sensor model to the environment simulation.
+In this case, the data describes the input configuration that is desired by the sensor model.
+In response, the environment simulation will configure the input and provide a new message which describes the actual configuration.
+The configuration requested by the sensor model may differ from the actual configuration.
+This happens when the environment simulation does not support a given requested configuration or when the requested configuration allowed is ambiguous.
+The message describing the requested configuration differs from the message describing the actual configuration.
diff --git a/doc/architecture/traffic_command.adoc b/doc/architecture/traffic_command.adoc
new file mode 100644
index 000000000..6e70b6bd4
--- /dev/null
+++ b/doc/architecture/traffic_command.adoc
@@ -0,0 +1,3 @@
+= Traffic command
+
+Traffic commands contain control commands from the scenario engine to traffic participant models.
\ No newline at end of file
diff --git a/doc/architecture/traffic_update.adoc b/doc/architecture/traffic_update.adoc
new file mode 100644
index 000000000..b8795e645
--- /dev/null
+++ b/doc/architecture/traffic_update.adoc
@@ -0,0 +1,4 @@
+= Traffic update
+
+Traffic updates are provided by traffic participants.
+They provide updates of the position, state and future trajectory of a traffic participant back to the simulation environment.
\ No newline at end of file
diff --git a/doc/images/osi_example_coordinate_systems.png b/doc/images/osi_example_coordinate_systems.png
new file mode 100644
index 000000000..902cfb21c
Binary files /dev/null and b/doc/images/osi_example_coordinate_systems.png differ
diff --git a/doc/images/osi_example_coordinate_systems.svg b/doc/images/osi_example_coordinate_systems.svg
new file mode 100644
index 000000000..169a7df33
--- /dev/null
+++ b/doc/images/osi_example_coordinate_systems.svg
@@ -0,0 +1,6754 @@
+
+
diff --git a/doc/open-simulation-interface_user_guide.adoc b/doc/open-simulation-interface_user_guide.adoc
index 287f8cbdf..62aae3ccf 100644
--- a/doc/open-simulation-interface_user_guide.adoc
+++ b/doc/open-simulation-interface_user_guide.adoc
@@ -1,12 +1,13 @@
= Open simulation interface
-:revnumber: v.v.v
+:revnumber: v.v.v
:revdate: dd.mm.yyyy
-:toc: left
+:toc: left
:toclevels: 2
:sectnums:
:topicdir: topics
:reusedir: reuse
+:imagedir: images
// header & footer for html
// html themes
@@ -14,11 +15,11 @@
// source highlighting
:source-highlighter: rouge
:rouge-style: base16.solarized.light
-//
+//
// :nofooter:
:last-update-label!:
//embed images into html
-:data-uri:
+:data-uri:
:mathematical-format: svg
:imagesoutdir: ../images/generated_images
@@ -40,6 +41,10 @@ include::./architecture/sensor_view_configuration.adoc[leveloffset=+3]
include::./architecture/sensor_data.adoc[leveloffset=+3]
+include::./architecture/traffic_command.adoc[leveloffset=+3]
+
+include::./architecture/traffic_update.adoc[leveloffset=+3]
+
=== Model types
include::./architecture/environmental_effect_model.adoc[leveloffset=+3]
@@ -54,15 +59,15 @@ include::./architecture/vehicle_dynamics.adoc[leveloffset=+3]
=== Coordinate systems and reference points
-include::./architecture/coordinate_systems.adoc[leveloffset=+3]
+include::./architecture/reference_points_coordinate_systems.adoc[leveloffset=+3]
-include::./architecture/reference_points.adoc[leveloffset=+3]
+include::./usecases/transforming_coordinate_systems.adoc[leveloffset=+3]
-=== Layering
+//=== Layering
-include::./architecture/data_layer.adoc[leveloffset=+3]
+//include::./architecture/data_layer.adoc[leveloffset=+3]
-include::./architecture/packaging_layer.adoc[leveloffset=+3]
+//include::./architecture/packaging_layer.adoc[leveloffset=+3]
=== OSI trace files
@@ -70,45 +75,49 @@ include::./architecture/trace_file_formats.adoc[leveloffset=+3]
include::./architecture/trace_file_naming.adoc[leveloffset=+3]
-=== Files and scripts
+// === Files and scripts
-include::./architecture/proto-files.adoc[leveloffset=+3]
+// include::./architecture/proto-files.adoc[leveloffset=+3]
-include::./architecture/test_scripts.adoc[leveloffset=+3]
+// include::./architecture/test_scripts.adoc[leveloffset=+3]
include::./architecture/formatting_scripts.adoc[leveloffset=+3]
== Setting up OSI
-include::./setup/installing_linux.adoc[leveloffset=+2]
+include::./setup/installing_linux_cpp.adoc[leveloffset=+2]
-include::./setup/installing_macos.adoc[leveloffset=+2]
+include::./setup/installing_linux_python.adoc[leveloffset=+2]
-include::./setup/installing_windows.adoc[leveloffset=+2]
+include::./setup/installing_windows_cpp.adoc[leveloffset=+2]
+
+include::./setup/installing_windows_python.adoc[leveloffset=+2]
+
+include::./setup/installing_macos.adoc[leveloffset=+2]
-include::./setup/using_osi_support_tools.adoc[leveloffset=+2]
+//include::./setup/using_osi_support_tools.adoc[leveloffset=+2]
-include::./setup/including_osi_dev_projects.adoc[leveloffset=+2]
+//include::./setup/including_osi_dev_projects.adoc[leveloffset=+2]
-== Example use cases for OSI
+//== Example use cases for OSI
-include::./usecases/modeling_lidar_sensor.adoc[leveloffset=+2]
+//include::./usecases/modeling_lidar_sensor.adoc[leveloffset=+2]
-include::./usecases/modeling_camera_electronics.adoc[leveloffset=+2]
+//include::./usecases/modeling_camera_electronics.adoc[leveloffset=+2]
-include::./usecases/injecting_faults.adoc[leveloffset=+2]
+//include::./usecases/injecting_faults.adoc[leveloffset=+2]
-include::./usecases/fusing_sensor_outputs.adoc[leveloffset=+2]
+//include::./usecases/fusing_sensor_outputs.adoc[leveloffset=+2]
-include::./usecases/modeling_traffic_participant.adoc[leveloffset=+2]
+//include::./usecases/modeling_traffic_participant.adoc[leveloffset=+2]
-include::./usecases/benchmark_integration_gpu_radar.adoc[leveloffset=+2]
+//include::./usecases/benchmark_integration_gpu_radar.adoc[leveloffset=+2]
-include::./usecases/generating_osi_traces.adoc[leveloffset=+2]
+//include::./usecases/generating_osi_traces.adoc[leveloffset=+2]
-== Improving performance
+//== Improving performance
-TODO: Define topics and issues regarding performance.
+//TODO: Define topics and issues regarding performance.
include::./misc/osi_reference.adoc[leveloffset=+1]
diff --git a/doc/setup/installing_linux.adoc b/doc/setup/installing_linux.adoc
deleted file mode 100644
index dafb8c50a..000000000
--- a/doc/setup/installing_linux.adoc
+++ /dev/null
@@ -1,11 +0,0 @@
-= Installing OSI on Linux
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu.
-Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a.
-Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
diff --git a/doc/setup/installing_linux_cpp.adoc b/doc/setup/installing_linux_cpp.adoc
new file mode 100644
index 000000000..590d1667d
--- /dev/null
+++ b/doc/setup/installing_linux_cpp.adoc
@@ -0,0 +1,61 @@
+= Installing OSI for C++ on Linux
+
+**Prerequisites**
+
+* You have _cmake_ installed.
+* You have installed _protobuf_.
+* You must have super user privileges.
+
+**Steps**
+
+. Open a terminal.
+. Clone the Open Simulation repository.
++
+[source]
+----
+git clone https://github.com/OpenSimulationInterface/open-simulation-interface.git
+----
++
+. Change into the repository directory.
++
+[source]
+----
+cd open-simulation-interface
+----
++
+. Create a new directory for the build.
++
+[source]
+----
+mkdir build
+----
++
+. Change into the new directory.
++
+[source]
+----
+cd build
+----
++
+. Run cmake.
+ To build a 32-bit target under 64-bit linux, add `-DCMAKE_CXX_FLAGS="-m32"` to the cmake command.
+ In this case, protobuf must be in 32-bit mode too.
++
+[source]
+----
+cmake ..
+----
++
+. Run make.
++
+[source]
+----
+make
+----
++
+. Install Open Simulation Interface.
++
+[source]
+----
+sudo make install
+----
diff --git a/doc/setup/installing_linux_python.adoc b/doc/setup/installing_linux_python.adoc
new file mode 100644
index 000000000..8b753aba8
--- /dev/null
+++ b/doc/setup/installing_linux_python.adoc
@@ -0,0 +1,43 @@
+= Installing OSI for Python on Linux
+
+**Prerequisites**
+
+* You have installed _pip3_.
+* You have installed _python-setuptools_.
+* You have installed _protobuf_.
+* For local installation, you have installed _virtualenv_.
+
+**Steps**
+
+. Open a terminal.
+. Clone the Open Simulation repository.
++
+[source]
+----
+git clone https://github.com/OpenSimulationInterface/open-simulation-interface.git
+----
++
+. Change into the repository directory.
++
+[source]
+----
+cd open-simulation-interface
+----
++
+. Create a new virtual environment.
++
+[source]
+----
+virtualenv -p python3 venv
+----
++
+. Activate the virtual environment.
++
+[source]
+----
+source venv/bin/activate
+----
++
+. Install Open Simulation Interface.
+Local installation:: `pip3 install .`
+Global installation:: `sudo pip3 install .`
diff --git a/doc/setup/installing_windows.adoc b/doc/setup/installing_windows.adoc
deleted file mode 100644
index 156c4984c..000000000
--- a/doc/setup/installing_windows.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-= Installing OSI on Windows
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-Et malesuada fames ac turpis egestas.
-Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi.
-Nulla facilisi morbi tempus iaculis urna id. Justo eget magna fermentum iaculis.
-Sed augue lacus viverra vitae congue eu. Velit ut tortor pretium viverra suspendisse.
-Amet commodo nulla facilisi nullam vehicula ipsum a.
-Nibh nisl condimentum id venenatis a.
-Diam vel quam elementum pulvinar etiam non quam lacus suspendisse.
\ No newline at end of file
diff --git a/doc/setup/installing_windows_cpp.adoc b/doc/setup/installing_windows_cpp.adoc
new file mode 100644
index 000000000..93ad4c9d3
--- /dev/null
+++ b/doc/setup/installing_windows_cpp.adoc
@@ -0,0 +1,54 @@
+= Installing OSI for C++ on Windows
+
+**Prerequisites**
+
+* You have installed _cmake_ as administrator.
+* You have installed _protobuf_ as administrator.
+
+**Steps**
+
+. Open a terminal as administrator.
+. Clone the Open Simulation repository.
++
+[source]
+----
+git clone https://github.com/OpenSimulationInterface/open-simulation-interface.git
+----
++
+. Change into the repository directory.
++
+[source]
+----
+cd open-simulation-interface
+----
++
+. Create a new directory for the build.
++
+[source]
+----
+mkdir build
+----
++
+. Change into the new directory.
++
+[source]
+----
+cd build
+----
++
+. Run cmake.
+ To build a 64-bit target, add `Win64` to the generator name.
+ In this case, protobuf and protoc.exe must be in 64-bit mode too.
++
+[source]
+----
+cmake .. [-G ] [-DCMAKE_INSTALL_PREFIX=]
+----
++
+. Build and install OSI.
++
+[source]
+----
+cmake --build . [--config Release]
+cmake --build . --target install
+----
diff --git a/doc/setup/installing_windows_python.adoc b/doc/setup/installing_windows_python.adoc
new file mode 100644
index 000000000..f1b0640e3
--- /dev/null
+++ b/doc/setup/installing_windows_python.adoc
@@ -0,0 +1,30 @@
+= Installing OSI for Python on Windows
+
+**Prerequisites**
+
+* You have installed _Python_ with administrator rights.
+* Make sure _Python_ is added to `PATH`.
+
+**Steps**
+
+. Open a terminal.
+. Clone the Open Simulation repository.
++
+[source]
+----
+git clone https://github.com/OpenSimulationInterface/open-simulation-interface.git
+----
++
+. Change into the repository directory.
++
+[source]
+----
+cd open-simulation-interface
+----
++
+. Run the setup script.
++
+[source]
+----
+python setup.py install
+----
diff --git a/doc/usecases/transforming_coordinate_systems.adoc b/doc/usecases/transforming_coordinate_systems.adoc
new file mode 100644
index 000000000..c3be8b3d7
--- /dev/null
+++ b/doc/usecases/transforming_coordinate_systems.adoc
@@ -0,0 +1,31 @@
+= Transforming coordinate systems
+
+Transforming coordinates for a specific vehicle or sensor is a common task when running simulations.
+OSI uses DIN ISO 8855:2013-11 for coordinate systems and transformations between coordinate systems.
+
+//TODO: Should we add one or more sentences about the mathematical operations involved?
+
+**Corresponding messages**
+
+``GroundTruth::moving_object::base::position``::
+Defines the position of the vehicle’s reference point in world coordinates.
+In Open Simulation Interface, the position of an object is defined by the coordinates of the center of the object's bounding box.
+
+``GroundTruth::moving_object::base::orientation``::
+Defines the orientation of the vehicle’s reference point in world coordinates.
+
+``GroundTruth::moving_object::vehicle_attributes::bbcenter_to_rear``::
+The vector pointing from the vehicle’s reference point to the middle of the rear axle under neutral load conditions in vehicle coordinates.
+
+``SensorData::mounting_position``::
+Defines the sensor’s position and orientation and thereby the origin of the sensor coordinate system.
+The mounting position is given in the vehicle coordinate system.
+
+**Example**
+
+The following image shows the relationship between the coordinate systems.
+The reference point of the vehicle is given by a vector in the world coordinate system.
+A vector pointing from the reference position of the vehicle to the center of the rear axle then yields the origin of the vehicle coordinate system.
+The mounting positions of the sensors and therefore the origins of the corresponding sensor coordinate systems are then given with respect to the vehicle coordinate system.
+
+image::{imagedir}/osi_example_coordinate_systems.png[]
\ No newline at end of file