From 3908fe3b51f09d0e1cac7d15b841591b869910a6 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Fri, 4 Nov 2022 16:33:13 +0100
Subject: [PATCH] Migrate wiki to docs/

---
 docs/README.md                                |   3 +
 docs/armem/README.md                          |   3 +
 .../README.md                                 |  96 +++
 .../RobotState/Localization/README.md         |  36 +
 .../RobotState/Localization/res/frames.png    | Bin 0 -> 14079 bytes
 .../Localization/res/localization-armem.png   | Bin 0 -> 63207 bytes
 .../RobotState/Mapping/README.md              |   9 +
 .../res/transformations_frames-Page-2.png     | Bin 0 -> 26335 bytes
 .../README.md                                 | 393 ++++++++++
 docs/armem/introduction/README.md             |  42 +
 docs/aron/README.md                           |   4 +
 docs/aron/code_generation/README.md           | 733 ++++++++++++++++++
 docs/aron/conversion/README.md                |  35 +
 docs/aron/introduction/README.md              | 213 +++++
 docs/aron/visitors/README.md                  | 101 +++
 15 files changed, 1668 insertions(+)
 create mode 100644 docs/README.md
 create mode 100644 docs/armem/README.md
 create mode 100644 docs/armem/existing_memory_servers_and_segments/README.md
 create mode 100644 docs/armem/existing_memory_servers_and_segments/RobotState/Localization/README.md
 create mode 100644 docs/armem/existing_memory_servers_and_segments/RobotState/Localization/res/frames.png
 create mode 100644 docs/armem/existing_memory_servers_and_segments/RobotState/Localization/res/localization-armem.png
 create mode 100644 docs/armem/existing_memory_servers_and_segments/RobotState/Mapping/README.md
 create mode 100644 docs/armem/existing_memory_servers_and_segments/RobotState/Mapping/res/transformations_frames-Page-2.png
 create mode 100644 docs/armem/how_to_create_a_new_core_segment_or_memory_server/README.md
 create mode 100644 docs/armem/introduction/README.md
 create mode 100644 docs/aron/README.md
 create mode 100644 docs/aron/code_generation/README.md
 create mode 100644 docs/aron/conversion/README.md
 create mode 100644 docs/aron/introduction/README.md
 create mode 100644 docs/aron/visitors/README.md

diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 000000000..090ef176f
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,3 @@
+[Aron](aron)
+
+[ArMem](armem)
diff --git a/docs/armem/README.md b/docs/armem/README.md
new file mode 100644
index 000000000..1742eec0a
--- /dev/null
+++ b/docs/armem/README.md
@@ -0,0 +1,3 @@
+* [Introduction](introduction)
+* [Existing Memories (Memory Servers)](existing_memory_servers_and_segments)
+* [How to create a new Core Segment or Memory Server](how_to_create_a_new_core_segment_or_memory_server)
diff --git a/docs/armem/existing_memory_servers_and_segments/README.md b/docs/armem/existing_memory_servers_and_segments/README.md
new file mode 100644
index 000000000..edc04ab4a
--- /dev/null
+++ b/docs/armem/existing_memory_servers_and_segments/README.md
@@ -0,0 +1,96 @@
+This is a list of existing memory servers, their core segments and their ARON data types.
+
+# `RobotState`
+
+* Memory Server: [`RobotStateMemory` (RobotAPI)](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/tree/master/source/RobotAPI/components/armem/server/RobotStateMemory)
+* Core Segments:
+
+| Core Segment Name                         | Type                                                                                                                                              | Description                                                                     | Example Entities        |
+|-------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|-------------------------|
+| `Description`                             | [RobotDescription](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem_robot/aron/RobotDescription.xml) | Robot description (e.g. link to XML or URDF file)                               |                         |
+| `Proprioception`                          | ToDo                                                                                                                                              | Robot configuration and internal sensor values.                                 | tbd                     |
+| [`Localization`](RobotState/Localization) | [Transform](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem_robot_localization/aron/Transform.xml)  | Transformations between frames {world,map,robot} to retrieve global robot pose. | armarx::aron::Transform |
+
+Missing:
+- Robot calibration: should be part of `Description` core segment
+
+# `Object`
+
+* Memory Server: [`ObjectMemory` (RobotAPI)](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/components/armem/server/ObjectMemory)
+* Core Segments:
+
+| Core Segment Name           | Type                                                                                                                                                                          | Description                                                                              | Example Entities                                    |
+|-----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|-----------------------------------------------------|
+| `Class`                     | [ObjectClass](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem_objects/aron/ObjectClass.xml)                                     | Static description of a known object class. Entity names are (ArmarXObjects) object IDs. | `KIT/CoffeeFilters`, `YCB/001_chips_can`            |
+| `Instance`                  | [ObjectInstance](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem_objects/aron/ObjectInstance.xml)                               | Localized object instance. Entity names are (ArmarXObjects) object IDs.                  | `KIT/CoffeeFilters`, `YCB/001_chips_can/instance_1` |
+| `ArticulatedObjectClass`    | [RobotDescription](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem_robot/aron/RobotDescription.xml)                             | Static description of a known object class. Entity names are (ArmarXObjects) object IDs. |                                                     |
+| `ArticulatedObjectInstance` | [Robot](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem_robot/aron/Robot.xml)                                                   | Localized object instance. Entity names are (ArmarXObjects) object IDs.                  |                                                     |
+| `Attachments`               | [ObjectAttachment and ArticulatedObjectAttachment](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem_objects/aron/Attachment.xml) |                                                                                          |                                                     |
+
+
+# `Vision`
+
+* Memory Server: [`ArMemVisionMemory` (VisionX)](https://git.h2t.iar.kit.edu/sw/armarx/visionx/-/tree/master/source/VisionX/components/armem/ArMemVisionMemory)
+* Core Segments:
+
+| Core Segment Name | Type                                                                                                                           | Description                               | Example Entities |
+|-------------------|--------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|------------------|
+| `ImageRGB`        | [`ImageRGB`](https://git.h2t.iar.kit.edu/sw/armarx/visionx/-/blob/master/source/VisionX/libraries/ArMem/aron/ImageRGB.xml)     | RGB images (mono and stereo) of a camera  | image            |
+| `ImageDepth`      | [`ImageDepth`](https://git.h2t.iar.kit.edu/sw/armarx/visionx/-/blob/master/source/VisionX/libraries/ArMem/aron/ImageDepth.xml) | Depth images of an RGB-D or stereo camera | image            |
+
+
+
+# `Speech`
+
+* Memory Server: [`SpeechMemory` (SpeechX)](https://git.h2t.iar.kit.edu/sw/armarx/speechx/-/tree/master/source/SpeechX/components/SpeechMemory)
+* Core Segments:
+
+| Core Segment Name       | Type            | Description                                                               | Example Entities |
+|-------------------------|-----------------|---------------------------------------------------------------------------|------------------|
+| `Command`               | `SpeechCommand` | Language commands from speech (topic `Speech_Commands`).                  | `command`        | 
+| `TextListenerInterface` | `Text`          | Data from `TextListenerInterface` topics. (`TextToSpeech`, `RobotAction`) | `text`           | 
+
+... 
+
+
+# `Skills`
+
+* Memory Server: [`SkillsMemory` (RobotAPI)](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/tree/master/source/RobotAPI/components/armem/server/SkillsMemory)
+* Core Segments:
+
+| Core Segment Name | Type         | Description                         | Example Entities |
+|-------------------|--------------|-------------------------------------|------------------|
+| `Statechart`      | `Transition` | Transitions in ArmarX state charts. | tbd              | 
+
+
+# `GeneralPurpose`
+
+This memory is meant to allow for a quick-and-dirty integration of your data type in the memory framework. When your development finishes a stable state, consider creating moving the core segment(s) to an existing memory server or creating a new dedicated memory server.
+
+* Memory Server: [`GeneralPurposeMemory` (RobotAPI)](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/tree/master/source/RobotAPI/components/armem/server/GeneralPurposeMemory)
+* Core Segments:
+
+| Core Segment Name                      | Type | Description | Example Entities |
+|----------------------------------------|------|-------------|------------------|
+| None. You can add segments on the fly. |      |             |                  |
+
+# `Mapping`
+
+* Memory Server: `ToDo`
+* Core Segments:
+
+| Core Segment Name               | <br/>Type | Description                                      | Example Entities |
+|---------------------------------|-----------|--------------------------------------------------|------------------|
+| [`Mapping`](RobotState/Mapping) | `ToDo`    | Mapping related sensor data (e.g. point clouds). | tbd              |
+
+
+# `Example`
+
+An example memory server (alongside a matching client) showing how to implement a standard memory server and test the framework during development.
+
+* Memory Server: [`ExampleMemory` (RobotAPI)](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/tree/master/source/RobotAPI/components/armem/server/ExampleMemory)
+* Core Segments:
+
+| Core Segment Name | Type                                                                                                                                                    | Description        | Example Entities |
+|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------|------------------|
+| `ExampleData`     | [ExampleData](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/components/armem/server/ExampleMemory/aron/ExampleData.xml) | Some example data. | example          |
\ No newline at end of file
diff --git a/docs/armem/existing_memory_servers_and_segments/RobotState/Localization/README.md b/docs/armem/existing_memory_servers_and_segments/RobotState/Localization/README.md
new file mode 100644
index 000000000..fe8ac7af1
--- /dev/null
+++ b/docs/armem/existing_memory_servers_and_segments/RobotState/Localization/README.md
@@ -0,0 +1,36 @@
+# The localization segment within the RobotState memory
+
+## Concept
+
+There exist various frames that are needed to obtain the robot's global pose (pose within in the global frame):
+
+* [global] the "world" frame.
+* [map] During mapping, the robot does not have knowledge about the world but creates a local map (with "map" as root frame). All map features (e.g. point clouds, occupancy grids, ...) are linked to this frame.
+* [odom] The odometry as an integration of the robot's velocity.
+* [robot] The robot's root frame
+
+![frames](res/frames.png)
+
+For each transformation between frames, there exist individual components:
+
+* [global->map] **Map registration:** given a scene (objects with known poses, e.g. walls, ...), this component obtains a static transformation between a the scene and the map.
+* [map->odom] **Localization** The localization component computes the transformation [map->robot] and performs map corrections by updating [map->odom]. 
+* [odom->robot] **Odometry**
+
+
+### Memory design
+
+Within the core segment, each robot has its own provider segment (here: Armar6). Within the provider segment, entities describe the transformations between the frames ("Global,Map" -> [global->map]).
+
+![Localization](res/localization-armem.png)
+
+### Using the localization memory
+
+See **RobotAPI/libraries/armem_robot_localization**
+
+There exist two classes:
+
+* TransformWriter to send transformations to memory
+* TransformReader to obtain transformations between any of the frames; can also be used to obtain the "robot's global pose"
+
+For an example, see RobotComponents/components/carographer_mapping_and_localization (currently branch feature/cartographer_integration)
diff --git a/docs/armem/existing_memory_servers_and_segments/RobotState/Localization/res/frames.png b/docs/armem/existing_memory_servers_and_segments/RobotState/Localization/res/frames.png
new file mode 100644
index 0000000000000000000000000000000000000000..35125768524bef2ae285af2bbfedf1b15cfebbb7
GIT binary patch
literal 14079
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
aVhS;8m7Riw_256Y5ooLHt2L?E$Nw)WjQYy}

literal 0
HcmV?d00001

diff --git a/docs/armem/existing_memory_servers_and_segments/RobotState/Localization/res/localization-armem.png b/docs/armem/existing_memory_servers_and_segments/RobotState/Localization/res/localization-armem.png
new file mode 100644
index 0000000000000000000000000000000000000000..14240f9f9c78b34a65f70b85f6ae7e38e98bf992
GIT binary patch
literal 63207
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
Z*Lev+-f=2{K_CD?R#Hi#O6+sc{{s4wz-s^i

literal 0
HcmV?d00001

diff --git a/docs/armem/existing_memory_servers_and_segments/RobotState/Mapping/README.md b/docs/armem/existing_memory_servers_and_segments/RobotState/Mapping/README.md
new file mode 100644
index 000000000..167e058d4
--- /dev/null
+++ b/docs/armem/existing_memory_servers_and_segments/RobotState/Mapping/README.md
@@ -0,0 +1,9 @@
+# The mapping segment within the RobotState memory
+
+## Concept
+
+Within the memory segment, sensor data is stored that is relevant for 
+* mapping
+* map registration
+
+![transformations_frames-Page-2](res/transformations_frames-Page-2.png)
diff --git a/docs/armem/existing_memory_servers_and_segments/RobotState/Mapping/res/transformations_frames-Page-2.png b/docs/armem/existing_memory_servers_and_segments/RobotState/Mapping/res/transformations_frames-Page-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..65e856849ff9fc62016d27b1631f8d456b5a22b1
GIT binary patch
literal 26335
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
G)Bgpbev**@

literal 0
HcmV?d00001

diff --git a/docs/armem/how_to_create_a_new_core_segment_or_memory_server/README.md b/docs/armem/how_to_create_a_new_core_segment_or_memory_server/README.md
new file mode 100644
index 000000000..9aaf1d979
--- /dev/null
+++ b/docs/armem/how_to_create_a_new_core_segment_or_memory_server/README.md
@@ -0,0 +1,393 @@
+In order to make a new type of data available in the memory system, you first need to create an ARON XML file. Please refer to [Aron/CodeGeneration](Aron/CodeGeneration) if you want to know how to do so.
+
+[[_TOC_]]
+
+<!--
+# Define your data type in ARON
+
+Consider you want to use a data type called `MyData` (in the namespace `armarx::mydata`) in the memory system. First, you need to describe it in ARON.
+
+- Choose a library in an ArmarX package where your data type will be defined (or create a new one). Here, we will call it `MyDataLib`.
+- In the directory `MyDataLib/`, create a directory `aron/` (if necessary). Inside, add a file `MyData.xml`. The directory structure should now look like this:
+
+```plaintext
+.../libraries/
+- MyDataLib/
+  - CMakeLists.txt
+  - ...
+  - aron/
+    - MyData.xml
+```
+
+- In the `CMakeLists.txt`, add or extend after the definition of the target (e.g. through add_library or add_component):
+
+```cmake
+armarx_enable_aron_file_generation_for_target(
+    TARGET_NAME
+        ${LIB_NAME}
+    ARON_FILES
+        aron/MyData.xml
+)
+```
+
+- Define your data in ARON. A hello world example could look like this:
+
+```xml
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <CodeIncludes>
+    </CodeIncludes>
+    <AronIncludes>
+    </AronIncludes>
+    <GenerateTypes>
+
+        <Object name="armarx::mydata::arondto::MyData">
+
+            <ObjectChild key="helloWorld">
+                <String />
+            </ObjectChild>
+
+        </Object>
+
+    </GenerateTypes>
+</AronTypeDefinition>
+```
+
+Note:
+
+- `<Object>` defines a new ARON object type (generating a C++ class) containing a number of children.
+- `<ObjectChild>` defines a child (generating a public member variable of the generated C++ class, with `key` specifying the member's name).
+- `<String />` inside a `<ObjectChild>` defines the type of the child. It can be a number of primitive types, or fully qualified names of other ARON objects.
+
+Conventions:
+
+- Put your ARON object type into a `arondto::` namespace inside your usual namespace (e.g., `armarx::mydata::arondto::MyData`), where "DTO" stands for "Data Transfer Object". This way, you can define or use a custom or existing C++ type with more methods/intelligence in the usual namespace in your business logic code (e.g. `armarx::mydata::MyData`).
+
+Here is an example of an ARON object representing the business object (BO) type `simox::OrientedBox`:
+
+```xml
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <CodeIncludes>
+        <Include include="<Eigen/Core>" />
+        <Include include="<Eigen/Geometry>" />
+    </CodeIncludes>
+    <GenerateTypes>
+
+         <Object name="simox::arondto::OrientedBox">
+            <ObjectChild key='center'>
+                <Position />
+            </ObjectChild>
+            <ObjectChild key='orientation'>
+                <Orientation />
+            </ObjectChild>
+            <ObjectChild key='extents'>
+                <Position />
+            </ObjectChild>
+
+        </Object>
+
+    </GenerateTypes>
+</AronTypeDefinition>
+```
+
+Note:
+
+- (At the moment), you need to specify `<CodeIncludes>` to Eigen to use `Pose`, `Position` and `Orientation` (which are translated to `Eigen::Matrix4f`, `Eigen::Vector3f`, and `Eigen::Quaternionf` in C++).
+
+If you want to use an ARON object type defined in another file, this could look like this:
+
+```xml
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <CodeIncludes>
+        <Include include="<RobotAPI/libraries/aron/common/aron/AxisAlignedBoundingBox.aron.generated.h>" />
+        <Include include="<RobotAPI/libraries/aron/common/aron/OrientedBox.aron.generated.h>" />
+        <Include include="<RobotAPI/libraries/aron/common/aron/PackagePath.aron.generated.h>" />
+        <Include include="<RobotAPI/libraries/ArmarXObjects/aron/ObjectID.aron.generated.h>" />
+        <Include include="<RobotAPI/libraries/ArmarXObjects/aron/ObjectNames.aron.generated.h>" />
+        <Include include="<RobotAPI/libraries/armem/aron/MemoryID.aron.generated.h>" />
+    </CodeIncludes>
+    <AronIncludes>
+        <Include include="<RobotAPI/libraries/aron/common/aron/AxisAlignedBoundingBox.xml>" />
+        <Include include="<RobotAPI/libraries/aron/common/aron/OrientedBox.xml>" />
+        <Include include="<RobotAPI/libraries/aron/common/aron/PackagePath.xml>" />
+        <Include include="<RobotAPI/libraries/ArmarXObjects/aron/ObjectID.xml>" />
+        <Include include="<RobotAPI/libraries/ArmarXObjects/aron/ObjectNames.xml>" />
+        <Include include="<RobotAPI/libraries/armem/aron/MemoryID.xml>" />
+    </AronIncludes>
+    <GenerateTypes>
+
+        <Object name="armarx::armem::arondto::ObjectClass">
+
+            <ObjectChild key="id">
+                <armarx::arondto::ObjectID />
+            </ObjectChild>
+
+            <ObjectChild key="simoxXmlPath">
+                <armarx::arondto::PackagePath />
+            </ObjectChild>
+
+            <ObjectChild key="meshWrlPath">
+                <armarx::arondto::PackagePath />
+            </ObjectChild>
+
+            <ObjectChild key="meshObjPath">
+                <armarx::arondto::PackagePath />
+            </ObjectChild>
+
+            <ObjectChild key="aabb">
+                <simox::arondto::AxisAlignedBoundingBox />
+            </ObjectChild>
+            <ObjectChild key="oobb">
+                <simox::arondto::OrientedBox />
+            </ObjectChild>
+
+            <ObjectChild key="names">
+                <armarx::arondto::ObjectNames />
+            </ObjectChild>
+
+        </Object>
+
+    </GenerateTypes>
+</AronTypeDefinition>
+```
+
+Note:
+
+- You need to include other ARON files in `<AronIncludes>`. The paths have the same form as usual C++ includes and point to the ARON XML files.
+- At the moment, you also have to `<CodeInclude>` the respective generated headers (`.../MyData.aron.generated.h`). These should be generated automatically in the future.
+
+# (Optional) Add conversions to existing (potentially more intelligent) C++ types
+
+Consider the case of `simox::OrientedBoxf` and `simox::arondto::OrientedBox`. The former is the business object (BO), used in daily business logic code (as it offers useful methods to construct and manipulate it). The latter is a mere data storage used to transfer the data, which is called a data transfer object (DTO).
+
+Therefore, you usually want to convert a `simox::arondto::OrientedBox` to a `simox::OrientedBoxf` as soon as you want to do things other than passing it around over network (e.g., at the beginning of a component method or after reading it from the working memory). Likewise, you want to convert a `simox::OrientedBoxf` to a `simox::arondto::OrientedBox` when you send the information over network or store it in the memory.
+
+To allow this conversion, follow these steps:
+
+- In your library, add a file pair `aron_conversions.{h, cpp}` next to your `aron/` directory and add them to the `CMakeLists.txt`
+- In the header, declare functions following this form:
+
+```cpp
+#pragma once
+
+#include <SimoxUtility/shapes/OrientedBox.h>
+#include <RobotAPI/libraries/aron/common/aron/OrientedBox.aron.generated.h>
+
+
+namespace simox
+{
+    void fromAron(const arondto::OrientedBox& dto, OrientedBoxf& bo);
+    void toAron(arondto::OrientedBox& dto, const OrientedBoxf& bo);
+}
+```
+
+Note:
+
+- Both functions take the DTO first and the BO second.
+- `fromAron()` takes a `const` DTO and a `non-const` BO.
+- `toAron()` takes a `non-const` DTO and a `const` BO.
+- All arguments are passed as reference (especially the `non-const` arguments).
+- The functions are defined in the BO's namespace (`simox` in this example, `armarx::mydata` in the running example).
+
+
+* In the cpp file, define the functions like this:
+
+```cpp
+#include "aron_conversions.h"
+
+// Include this and use armarx::aron::to/fromAron() for std::vector, std::map.
+#include <RobotAPI/libraries/aron/common/aron_conversions.h>
+
+// Include other aron_conversions.h files for other ARON types
+
+
+void simox::fromAron(const arondto::OrientedBox& dto, OrientedBoxf& bo)
+{
+    bo = OrientedBoxf(dto.center, dto.orientation, dto.extents);
+}
+
+void simox::toAron(arondto::OrientedBox& dto, const OrientedBoxf& bo)
+{
+    dto.center = bo.center();
+    dto.orientation = bo.rotation();
+    dto.extents = bo.dimensions();
+}
+```
+
+Note:
+
+- The implementation depends on your data. It might be as simple as copying all members, or require more complex conversions. Especially, you might use `fromAron()` for `toAron()` for other ARON object types.
+
+-->
+
+# Create a new memory server
+
+> **Note:** If you plan to extend an existing memory server, you can skip this step.
+
+If your data should be stored in a new memory server, follow these steps:
+
+Create a new component, let's say `MyMemory`:
+
+```plaintext
+# In the root directory of your ArmarX package:
+armarx-package add component MyMemory
+```
+
+Then, extend the new component by the respective component plugin.
+
+Add the include:
+
+```cpp
+#include <RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h>
+
+// Or:
+#include <RobotAPI/libraries/armem/server/plugins/ReadOnlyPluginUser.h>
+```
+
+Make the component derive from the component plugin user:
+
+```cpp
+    class MyMemory :
+        virtual public armarx::Component
+        // v Add this line ... v
+        , virtual public armarx::armem::server::ReadWritePluginUser
+        // v ... or this line ... v
+        , virtual public armem::server::ReadOnlyPluginUser
+```
+
+Don't forget to add the respective library to your `CMakeLists.txt`:
+
+```cmake
+set(COMPONENT_LIBS
+    ...
+    # Add this:
+    armem 
+    ...
+)
+```
+
+**If the component already implements an ice interface,** you have to add the memory server into face to it (otherwise, you will receive `no unique final overrider for 'virtual function ...'` errors by the compiler):
+```cpp
+// memory_tutorial/source/memory_tutorial/components/object_memory/ComponentInterface.ice
+
+#pragma once
+
+// v  either include this one (read-write)  v
+#include <RobotAPI/interface/armem/server/MemoryInterface.ice>
+// v  or this one (read-only)  v
+// #include <RobotAPI/interface/armem/server/ReadingMemoryInterface.ice>
+
+
+module memory_tutorial {  module components {  module object_memory 
+{
+
+    interface ComponentInterface 
+        // v  either extend from this one (read-write)  v
+        extends armarx::armem::server::MemoryInterface
+        // v  or this one (read-only)  v
+        // extends armarx::armem::server::ReadingMemoryInterface
+    {
+        ...
+    };
+
+};};};
+```
+
+In this case, make sure `RobotAPIInterfaces` is in the Ice dependencies of your ice library:
+```cmake
+armarx_add_component(object_memory
+    ICE_FILES
+        ComponentInterface.ice
+    ICE_DEPENDENCIES
+        ...
+        RobotAPIInterfaces
+    ...
+```
+
+
+You can set the memory name of the memory server in the `createPropertyDefinitions()`:
+
+```cpp
+#include <RobotAPI/libraries/armem/server/wm/memory_definitions.h>
+
+...
+
+    armarx::PropertyDefinitionsPtr MyMemory::createPropertyDefinitions()
+    {
+        armarx::PropertyDefinitionsPtr defs = new ComponentPropertyDefinitions(getConfigIdentifier());
+        ...
+
+        // Set the memory name:
+        workingMemory().name() = "My";
+
+        ...
+        return defs;
+    }
+```
+
+**Note:**
+
+* The `ReadWritePluginUser` implements the ice interface `MemoryInterface`, which combines, among others, the `ReadingMemoryInterface` and the `WritingMemoryInterface`.
+* The `ReadOnlyPluginUser` only implements the `ReadingMemoryInterface`.
+* Both provide a working memory data storage `workingMemory()` (of type `armem::server::wm::Memory`) and an `iceAdapter()` (`armem::server::MemoryToIceAdapter`).
+
+That's it: Your component is now a memory server.
+
+# Add a core segment with your new data type in a memory server
+
+> Wait, how does the new memory server know of my specially written ARON type?
+
+Oh right, it doesn't. At least not yet. But this is easy to fix: We just have to add a core segment.
+
+> What on earth is a core segment?
+
+A _segment_ is a section of a memory (server) containing data of a specific type, i.e. they are homogeneous data containers (in contrast to heterogeneous, which would mean they contain different kinds of data) (see the [Introduction](ArMem/Introduction)).
+
+There are two kinds of segments: _core_ segments, and _provider_ segments:
+
+* **Core segments** are usually added by the memory server itself with a name and the ARON data type the core segment is going to keep.
+* **Provider segments** are usually added by clients committing data to the memory. You can think of them as "sub-segments" of a (core) segment, providing a namespace for the provider's entities and some additional features.
+
+> ... what?
+
+Just stick with me, you'll get used to it.
+
+> Okay ... but how does the memory add the ... core segment?
+
+A fine question! Luckily, that's very simple. All we need is your ARON type, a name and the working memory data structure.
+
+> ...
+
+Okay, okay, I'll come to the code. Adding a core segment merely alters a local data structure (it is not an ice/network operation). Thus, we can do it in `onInitComponent()`:
+
+```cpp
+    void MyMemory::onInitComponent()
+    {
+        workingMemory().addCoreSegment("Data", armarx::mydata::arondto::MyData::toAronType());
+    }
+```
+
+* `workingMemory()` is a function provided by the component plugin user (`ReadWritePluginUser` or `ReadOnlyPluginUser`) returning a reference to the working memory data of the type `armem::server::wm::Memory`.
+* `addCoreSegment()` adds a core segment. It takes a name and (optionally) an ARON type.
+* `"Data"` is the name of the core segment.
+  * It should refer to a modality or concept, not to its elements (i.e. prefer "Instance" over "Instances" and "Location" over "Locations").
+  * Also, try to avoid repeating the memory name, as the core segment's ID is prepended by the memory name anyway (e.g. "Object/Instance" over "Object/ObjectInstance" and "Navigation/Location" over "Navigation/NavigationLocation").
+* `armarx::mydata::arondto::MyData` is the C++ class generated from your `MyData.xml` ARON XML description file.
+  * `::toAronType()` creates a runtime type object describing the ARON type. This allows, e.g., the `MemoryViewer` GUI to show the data in a suitable manner (e.g. a pose as an affine transformation instead of a 4x4 matrix).
+  * Of course, you need to include the respective header: It's located at the same path where your XML is. For example, for the `ObjectInstance.xml` located at `RobotAPI/libraries/armem_objects/aron/ObjectInstance.xml`, the include would be:
+
+```cpp
+#include <RobotAPI/libraries/armem_objects/aron/ObjectInstance.h>
+```
+
+Note that you need to include the `.h` file, not the `.xml`. As the generated class is header-only, you do not need to link any libraries in your `CMakeLists.txt`.
+
+When you now start your new memory server and the MemoryNameSystem (MNS) (e.g. using the scenario _ArMemCore_ in RobotAPI), and open the _MemoryViewer_ gui plugin, you should see an entry for your memory (`My`) and the core segment (`Data` under `My`).
+
+# Conclusion
+
+That's it! You now have a memory server providing a place where your nice and interesting data can feel welcome, and where interested listeners would look to find it.
+
+[Next, we learn how to commit data to the memory, and query data from the memory.](ArMem/How-to-read-from-and-write-to-a-Memory-Server)
\ No newline at end of file
diff --git a/docs/armem/introduction/README.md b/docs/armem/introduction/README.md
new file mode 100644
index 000000000..43f2e3ac5
--- /dev/null
+++ b/docs/armem/introduction/README.md
@@ -0,0 +1,42 @@
+# Distributed Memory 
+
+The ArMem memory system is distributed: It is comprised of several **memory servers** storing data in a hierarchical structure. 
+A memory server can be defined in any ArmarX package and defines which kind of data it stores (e.g. robot state, object classes and instances, visual data, speech, ...). 
+As a memory server knows which data it stores, it can provide special behaviour, such as custom visualization, aggregation, interpolation or prediction.
+As each server is a separate component describing its own structure, it is simple to add new memory servers containing special data types, which are defined in ArmarX packages further down in the dependency chain.
+
+All memory servers follow the same hierarchical data structure and self-describing data format. 
+The data structure consists of several levels, storing histories/timelines of different entities stored in different segments (see "Memory Levels" below). 
+The common data format is ARON (ArmarX Object Notation), which is a self-describing, hierarchical data format, allowing extensive introspection as well as general storage. 
+Each item in the memory (i.e. entries in all levels) can be identified with a **Memory ID**, which contains the keys of each (specified) level. For example, a core segment ID specifies the memory name and core segment name, while an entity instance ID specifies the whole path to the leaf of the data structure.
+
+
+Technically, each memory server is one ArmarX component implementing the `armem::server::MemoryInterface` (comprising a `ReadingMemoryInterface` and a `WritingMemoryInterface`). 
+Memory servers register themselves in the **Memory Name System (MNS)**, where they can be found by their (semantic) memory name (which is usually a short, human-readable name such as "Robot", "Object" or "Vision"). 
+Memory servers receive data via **commits** (via the `WritingMemoryInterface`), and return data according to **queries** (via the `ReadingMemoryInterface`). 
+
+
+# Memory Levels
+
+A memory server stores data in a hierarchical structure consisting of several levels:
+```
+- Grasping (Memory)
+  - Grasps (Core Segment)
+    - KnownObjectGraspPlanner (Provider Segment)
+      - my_object (Entity)
+        - t = 2021-03-09 14:24:20.064524 (Entity Snapshot)
+          - 00 (Entity Instance)
+          - 01 (Entity Instance)
+          - 02 (Entity Instance)
+```
+
+| Level | Key | Description | Examples | Implementation |
+| ----- | --- | ----------- | -------- | -------------- |
+| Memory           | Name (String) | Semantic grouping of one or more core segments. Corresponds to one memory server. | Robot, Object, Vision | [Memory](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem/core/Memory.h) |
+| Core Segment     | Name (String) | Building block of a memory containing homogeneous data of a specific (ARON) type. Specifies a _Core Segment Type_ which all provided data must comply to. | (Robot) Configuration, (Object) Classes, Known (Object) Instances, ImageRGB | [CoreSegment](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem/core/CoreSegment.h) |
+| Provider Segment | Name (String)  | Sub-segment of a core segment which contains the data from a single source (e.g. a camera, a method, a component). Can define a _Provider Segment Type_ which extends the _Core Segment Type_. | Primsense, SimTrack, MyGraspPlanner | [ProviderSegment](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem/core/ProviderSegment.h) |
+| Entity           | Name (String) | A single thing or concept whose properties change over time. An entity has a history / timeline, i.e. a sequence of snapshots storing the entity's properties at a specific point in time. | `image`, `some_object`, `some_object_grasps` | [Entity](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem/core/Entity.h) |
+| Entity Snapshot | Timestamp (`armem::Time` aka `IceUtil::Time`) | An entry of an entity's history, i.e. the state of an entity at a specific point in time. Can contain multiple (entitiy) instances. | Image, object instance, grasp hypotheses at a time *t* | [EntitySnapshot](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem/core/EntitySnapshot.h) |
+| Entity Instance | Index (int) | One instance of the segment's ARON type. | left/right stereo image (at time t), object (at time t), grasp hypothesis (one of many at time t) | [EntityInstance](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem/core/EntityInstance.h) | 
+| Entity Instance Metadata  | -- | Metadata stored alongside the instance's data. | Further timesteps, confidence | [EntityInstanceMetadata](https://git.h2t.iar.kit.edu/sw/armarx/robot-api/-/blob/master/source/RobotAPI/libraries/armem/core/EntityInstance.h) |
+
diff --git a/docs/aron/README.md b/docs/aron/README.md
new file mode 100644
index 000000000..daff059aa
--- /dev/null
+++ b/docs/aron/README.md
@@ -0,0 +1,4 @@
+* [Introduction](introduction)
+* [Code Generation](code_generation)
+* [Visitors](visitors)
+* [Readers, Writers and Conversion](conversion)
diff --git a/docs/aron/code_generation/README.md b/docs/aron/code_generation/README.md
new file mode 100644
index 000000000..a48594a45
--- /dev/null
+++ b/docs/aron/code_generation/README.md
@@ -0,0 +1,733 @@
+[[_TOC_]]
+
+# Aron Type Reading
+
+As already mention in the introduction, aron supports code generation in order to create a c++ (other languages also possible) class with plain c++ members which you can use for convenience. Further, the generated class offers methods to convert itself to a Aron object and to set the members from a Aron object. Code generation only makes sense for Aron data, however we need an Aron type specification in order to generate the class.
+ 
+In the following we will describe how to specify Aron types in XML and how the generated code looks like.
+
+
+## XML type description and creation
+
+In order to make Aron generate a c++ class for you, you first have to tell the program how the object should look like. Second you need to add the file to cmake in order to create the code generation target. 
+
+### XML type description
+
+Consider you want to use a data type called `MyData` (in the namespace `armarx::mydata`).
+* Choose a library in an ArmarX package where your data type will be defined (or create a new one). Here, we will call it `MyDataLib`.
+* In the directory `MyDataLib/`, create a directory `aron/` (if necessary). Inside, add a file `MyData.xml`. The directory structure should now look like this:
+
+```
+.../libraries/
+- MyDataLib/
+  - CMakeLists.txt
+  - ...
+  - aron/
+    - MyData.xml
+```
+
+Then start defining your data in ARON. A hello world example could look like this:
+```xml
+<!-- MyData containing a helloWorld member -->
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>    
+    <CodeIncludes>
+    </CodeIncludes>
+    <AronIncludes>
+    </AronIncludes>
+    <GenerateTypes>
+        <Object name="armarx::mydata::arondto::MyData">
+            <ObjectChild key="helloWorld">
+                <String />
+            </ObjectChild>
+        </Object>
+    </GenerateTypes>
+</AronTypeDefinition>
+```
+
+Every type specification must have the top-level-tag `AronTypeDefinition` and must at least define one type in `GenerateTypes`. In the `GenerateTypes`-tag you can add as many `Object` or `IntEnum` definitions as you want. `<Object>` defines a new ARON object type (generating a C++ class) containing a number of children. Inside the `Object`-tag you can add as many members as you want through the `ObjectChild`-tag (generating a public member variable of the generated C++ class, with `key` specifying the member's name). If a member should be e.g. optional you have to add the attribute `optional="true"` to the member:
+```xml
+    <ObjectChild key="helloWorld">
+        <String optional="true" />
+    </ObjectChild>
+```
+The same way you can define `raw_ptr`, `shared_ptr` or `unique_ptr` members.
+
+Conventions:
+- Put your ARON object type into a `arondto::` namespace inside your usual namespace (e.g., `armarx::mydata::arondto::MyData`), where "DTO" stands for "Data Transfer Object". This way, you can define or use a custom or existing C++ type with more methods/intelligence in the usual namespace in your business logic code (e.g. `armarx::mydata::MyData`).
+
+If you want to use a definition of another Aron file, you can include the file using the `AronIncludes`-section. Simply add the files you want to include using a `include`-tag:
+```xml
+    <AronIncludes>
+        <Include include="<RobotAPI/libraries/aron/common/aron/PackagePath.xml>" autoinclude="true" />
+        ... 
+    </AronIncludes>
+```
+The option `autoinclude` automatically adds the generated class of the Aron xml file to the c++ class.
+
+After that, you can use the type definitions in your current xml file (you must specify the full namespace):
+```xml
+    <ObjectChild key="referenceToMemoryID">
+        <armarx::arondto::PackagePath />
+    </ObjectChild>
+```
+
+(At the moment), you need to specify `<CodeIncludes>` to Eigen to use `Pose`, `Position` and `Orientation` (which are translated to `Eigen::Matrix4f`, `Eigen::Vector3f`, and `Eigen::Quaternionf` in C++). In that section, you can add includes in your target language (right now only C++), e.g.:
+```xml
+    <CodeIncludes>
+        <Include include="<Eigen/Core>" />
+    </CodeIncludes>
+```
+
+If you do not need the `CodeIncludes` and `AronIncludes` you can remove these tags.
+
+### Examples
+
+In the following we define a class that uses all more complex types once:
+```xml
+<!-- MyData containing all accepted members once -->
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <CodeIncludes>
+        <Include include="<Eigen/Core>" />
+        <Include include="<Eigen/Geometry>" />
+        <Include include="<pcl/point_cloud.h>" />
+        <Include include="<pcl/point_types.h>" />
+        <Include include="<opencv2/core/core.hpp>" />
+    </CodeIncludes>
+    <GenerateTypes>
+        <IntEnum name="TheIntEnum">
+            <EnumValue key="INT_ENUM_VALUE_0" value="0" />
+            <EnumValue key="INT_ENUM_VALUE_1" value="1" />
+            <EnumValue key="INT_ENUM_VALUE_2" value="2" />
+            <EnumValue key="INT_ENUM_VALUE_3" value="3" />
+            <EnumValue key="INT_ENUM_VALUE_4" value="4" />
+            <EnumValue key="INT_ENUM_VALUE_5" value="5" />
+            <EnumValue key="INT_ENUM_VALUE_6" value="6" />
+            <EnumValue key="INT_ENUM_VALUE_7" value="7" />
+            <EnumValue key="INT_ENUM_VALUE_8" value="8" />
+        </IntEnum>
+
+        <Object name="armarx::mydata::arondto::MyData">
+            <objectchild key="the_int_enum">
+                <TheIntEnum />
+            </objectchild>
+
+            <ObjectChild key="the_dict">
+                <Dict>
+                    <Float />
+                </Dict>
+            </ObjectChild>
+
+            <ObjectChild key='the_list'>
+                <List>
+                    <Float />
+                </List>
+            </ObjectChild>
+
+             <ObjectChild key='the_short_matrix'>
+                <Matrix rows="5" cols="7" type="int16" />
+            </ObjectChild>
+
+            <ObjectChild key='the_double_quaternion'>
+                <Quaternion type="float64" />
+            </ObjectChild>
+
+            <ObjectChild key='the_position'>
+                <Position />
+            </ObjectChild>
+
+            <ObjectChild key='the_orientation'>
+                <Orientation />
+            </ObjectChild>
+
+            <ObjectChild key='the_pose'>
+                <Pose />
+            </ObjectChild>
+
+            <ObjectChild key='the_rgb24_image'>
+                <Image type="rgb24" />
+            </ObjectChild>
+
+            <ObjectChild key='the_xyzrgb_pointcloud'>
+                <PointCloud type="PointXYZRGB" />
+            </ObjectChild>
+
+        </Object>
+    </GenerateTypes>
+</AronTypeDefinition>
+```
+
+### CMake specification
+
+In the `CMakeLists.txt`, add or extend after the definition of the target (e.g. through add_library or add_component):
+
+```cmake
+armarx_enable_aron_file_generation_for_target(
+    TARGET_NAME
+        ${LIB_NAME}
+    ARON_FILES
+        aron/MyData.xml
+)
+```
+
+### Important changes
+
+- I changed the xml type reader so that embedded classes are not allowed anymore! Before that you were able to define a new class inside an existing one, e.g.:
+```xml
+<!-- MyData containing a helloWorld member -->
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <GenerateTypes>
+        <Object name="armarx::mydata::arondto::MyData">
+            <ObjectChild key="helloWorld">
+                <Object name="armarx::mydata::arondto::MyOtherData">
+                    ...
+                </Object>
+            </ObjectChild>
+        </Object>
+    </GenerateTypes>
+</AronTypeDefinition>
+```
+This is not supported anymore!
+
+## Full example
+
+Say you have the following Aron XML type description:
+```xml
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <GenerateTypes>
+        <IntEnum name="armarx::NaturalIKControlMode">
+            <EnumValue key="CONTROL_MODE_0" value="0" />
+            <EnumValue key="CONTROL_MODE_1" value="1" />
+            <EnumValue key="CONTROL_MODE_2" value="2" />
+        </IntEnum>
+
+        <Object name='armarx::NaturalIKResult'>
+            <ObjectChild key='control_mode'>
+                <armarx::NaturalIKControlMode />
+            </ObjectChild>
+
+            <ObjectChild key='reached'>
+                <Bool />
+            </ObjectChild>
+
+            <ObjectChild key='jointValues'>
+                <List>
+                    <Float />
+                </List>
+            </ObjectChild>
+        </Object>
+    </GenerateTypes>
+</AronTypeDefinition>
+```
+
+The generated c++ file looks like:
+```cpp
+#pragma once
+
+#include <memory>
+#include <string>
+#include <vector>
+#include <map>
+#include <RobotAPI/interface/aron.h>
+#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/AronCppClass.h>
+#include <RobotAPI/libraries/aron/core/data/rw/writer/variant/VariantWriter.h>
+#include <RobotAPI/libraries/aron/core/data/rw/reader/variant/VariantReader.h>
+#include <RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.h>
+namespace armarx
+{
+    /**
+    ******************************************
+    * AUTOGENERATED CLASS. Please do NOT edit.
+    ******************************************
+    */
+    class NaturalIKControlMode
+        : public armarx::aron::codegenerator::cpp::AronCppClass
+    {
+    public:
+        /**
+        * The internal enum definition of the enum of this autogenerated class.
+        */
+        enum class ImplEnum
+        {
+            CONTROL_MODE_0,
+            CONTROL_MODE_1,
+            CONTROL_MODE_2,
+        }; // enum class ImplEnum
+        
+    public:
+        using This = armarx::NaturalIKControlMode;
+        static constexpr ImplEnum CONTROL_MODE_0 = ImplEnum::CONTROL_MODE_0;
+        static constexpr ImplEnum CONTROL_MODE_1 = ImplEnum::CONTROL_MODE_1;
+        static constexpr ImplEnum CONTROL_MODE_2 = ImplEnum::CONTROL_MODE_2;
+        /// Mapping enum values to readable strings
+        const std::map<ImplEnum, std::string> EnumToStringMap = {
+        {ImplEnum::CONTROL_MODE_0, "CONTROL_MODE_0"},
+        {ImplEnum::CONTROL_MODE_1, "CONTROL_MODE_1"},
+        {ImplEnum::CONTROL_MODE_2, "CONTROL_MODE_2"},
+        };
+        /// Mapping readable strings to enum values
+        const std::map<std::string, ImplEnum> StringToEnumMap = {
+        {"CONTROL_MODE_0", ImplEnum::CONTROL_MODE_0},
+        {"CONTROL_MODE_1", ImplEnum::CONTROL_MODE_1},
+        {"CONTROL_MODE_2", ImplEnum::CONTROL_MODE_2},
+        };
+        /// Mapping enum values to a int value
+        const std::map<ImplEnum, int> EnumToValueMap = {
+        {ImplEnum::CONTROL_MODE_0, 0},
+        {ImplEnum::CONTROL_MODE_1, 1},
+        {ImplEnum::CONTROL_MODE_2, 2},
+        };
+        /// Mapping int values to a enum
+        const std::map<int, ImplEnum> ValueToEnumMap = {
+        {0, ImplEnum::CONTROL_MODE_0},
+        {1, ImplEnum::CONTROL_MODE_1},
+        {2, ImplEnum::CONTROL_MODE_2},
+        };
+        /// The current value of the enum object
+        ImplEnum value;
+        
+    public:
+        NaturalIKControlMode()
+        {
+            resetHard();
+        }
+        NaturalIKControlMode(const armarx::NaturalIKControlMode& i)
+            : value(i.value)
+        {
+        }
+        NaturalIKControlMode(const ImplEnum e)
+            : value(e)
+        {
+        }
+        
+    public:
+        /**
+        * @brief operator==() - This method checks whether all values equal another instance.
+        * @param i - The other instance
+        * @return - true, if all members are the same, false otherwise
+        */
+        bool operator==(const armarx::NaturalIKControlMode& i) const
+        {
+            if (not (value == i.value))
+            {
+                return false;
+            }
+            return true;
+        }
+        
+        /**
+        * @brief resetHard() - This method resets member variables according to the XML type description.
+        * @return - nothing
+        */
+        virtual void resetHard() override
+        {
+            value = {};
+        }
+        
+        /**
+        * @brief resetSoft() - This method resets all member variables with respect to the current parameterization.
+        * @return - nothing
+        */
+        virtual void resetSoft() override
+        {
+            value = {};
+        }
+        
+        /**
+        * @brief writeType() - This method returns a new type from the class structure using a type writer implementation. This function is static.
+        * @return - the result of the writer implementation
+        */
+        template<class T>
+        static T writeType(armarx::aron::type::WriterInterface<T>& aron_w, armarx::aron::type::Maybe aron_maybeType = armarx::aron::type::Maybe::eNone, const armarx::aron::Path& aron_p = armarx::aron::Path())
+        {
+            //TODO:
+            std::map<std::string, int> aron_str2ValueMap;
+            return aron_w.writeIntEnum("armarx::NaturalIKControlMode", aron_str2ValueMap, aron_maybeType, aron_p);
+        }
+        
+        /**
+        * @brief write() - This method returns a new type from the member data types using a data writer implementation.
+        * @param w - The writer implementation
+        * @return - the result of the writer implementation
+        */
+        template<class T>
+        T write(armarx::aron::data::WriterInterface<T>& aron_w, const armarx::aron::Path& aron_p = armarx::aron::Path()) const
+        {
+            return aron_w.writePrimitive(EnumToValueMap.at(value), aron_p); // of top level enum armarx::NaturalIKControlMode
+        }
+        
+        /**
+        * @brief read() - This method sets the struct members to new values given in a data reader implementation.
+        * @param r - The reader implementation
+        * @return - nothing
+        */
+        template<class T>
+        void read(armarx::aron::data::ReaderInterface<T>& aron_r, T& input)
+        {
+            using TNonConst = typename std::remove_const<T>::type;
+            {
+                const TNonConst* _suppressUnusedWarning;
+                (void) _suppressUnusedWarning;
+            }
+            this->resetSoft();
+            if (aron_r.readNull(input))
+            {
+                throw armarx::aron::error::AronException(__PRETTY_FUNCTION__, "The input to the read method must not be null.");
+            }
+            int aron_tmpValue;
+            aron_r.readPrimitive(input, aron_tmpValue); // of top level enum armarx::NaturalIKControlMode
+            value = ValueToEnumMap.at(aron_tmpValue);
+        }
+        
+        /**
+        * @brief toString() - Converts the internally stored value to string
+        * @return - the name of the enum
+        */
+        std::string toString() const
+        {
+            return EnumToStringMap.at(value);
+        }
+        
+        /**
+        * @brief fromString() - sets the internally stored value to the corrsponding enum of the input str
+        * @return - nothing
+        */
+        void fromString(const std::string& str)
+        {
+            if (auto it = StringToEnumMap.find(str); it == StringToEnumMap.end())
+            {
+                throw armarx::LocalException("The input name is not valid. Could net set the enum to value '" + str + "'");
+            }
+            else
+            {
+                value = it->second;
+            }
+        }
+        
+        /**
+        * @brief int() - Converts the internally stored value to int representation
+        * @return - the int representation
+        */
+        operator int() const
+        {
+            return EnumToValueMap.at(value);
+        }
+        
+        /**
+        * @brief operator=() -  Assignment operator for the internally defined enum
+        * @return - nothing
+        */
+        armarx::NaturalIKControlMode& operator=(ImplEnum v)
+        {
+            value = v;
+            return *this;
+        }
+        
+        /**
+        * @brief operator=() -  Assignment operator for copy
+        * @return - nothing
+        */
+        armarx::NaturalIKControlMode& operator=(const armarx::NaturalIKControlMode& c)
+        {
+            value = c.value;
+            return *this;
+        }
+        
+        /**
+        * @brief operator=() -  Assignment operator for the internally defined enum
+        * @return - nothing
+        */
+        armarx::NaturalIKControlMode& operator=(int v)
+        {
+            if (auto it = ValueToEnumMap.find(v); it == ValueToEnumMap.end())
+            {
+                throw armarx::LocalException("The input int is not valid. Could net set the enum to value '" + std::to_string(v) + "'");
+            }
+            else
+            {
+                value = it->second;
+            }
+            return *this;
+        }
+        
+    }; // class NaturalIKControlMode
+} // namespace armarx
+
+namespace armarx
+{
+    /**
+    ******************************************
+    * AUTOGENERATED CLASS. Please do NOT edit.
+    ******************************************
+    */
+    class NaturalIKResult
+        : public armarx::aron::codegenerator::cpp::AronCppClass
+    {
+    public:
+        using This = armarx::NaturalIKResult;
+        armarx::NaturalIKControlMode control_mode;
+        std::vector<float> jointValues;
+        bool reached;
+        
+    public:
+        NaturalIKResult()
+        {
+            resetHard();
+        }
+        
+    public:
+        /**
+        * @brief operator==() - This method checks whether all values equal another instance.
+        * @param i - The other instance
+        * @return - true, if all members are the same, false otherwise
+        */
+        bool operator==(const armarx::NaturalIKResult& i) const
+        {
+            if (not (control_mode == i.control_mode))
+            {
+                return false;
+            }
+            if (not (jointValues == i.jointValues))
+            {
+                return false;
+            }
+            if (not (reached == i.reached))
+            {
+                return false;
+            }
+            return true;
+        }
+        
+        /**
+        * @brief resetHard() - This method resets member variables according to the XML type description.
+        * @return - nothing
+        */
+        virtual void resetHard() override
+        {
+            control_mode.resetHard();
+            jointValues = std::vector<float>();
+            reached = bool();
+        }
+        
+        /**
+        * @brief resetSoft() - This method resets all member variables with respect to the current parameterization.
+        * @return - nothing
+        */
+        virtual void resetSoft() override
+        {
+            control_mode.resetSoft();
+            jointValues.clear();
+            reached = bool();
+        }
+        
+        /**
+        * @brief writeType() - This method returns a new type from the class structure using a type writer implementation. This function is static.
+        * @return - the result of the writer implementation
+        */
+        template<class T>
+        static T writeType(armarx::aron::type::WriterInterface<T>& aron_w, armarx::aron::type::Maybe aron_maybeType = armarx::aron::type::Maybe::eNone, const armarx::aron::Path& aron_p = armarx::aron::Path())
+        {
+            std::map<std::string, T> aron_objectMembers;
+            auto aron_objectExtends = std::nullopt;
+            // members of armarx::NaturalIKResult
+            auto aron_variant_control_mode = armarx::NaturalIKControlMode::writeType(aron_w, armarx::aron::type::Maybe::eNone, armarx::aron::Path(aron_p, {"control_mode"})); // of control_mode
+            aron_objectMembers.emplace("control_mode", aron_variant_control_mode);
+            auto aron_variant_jointValues_dot_accepted_type = aron_w.writeFloat(armarx::aron::type::Maybe::eNone, armarx::aron::Path(aron_p, {"jointValues", "::accepted_type"})); // of float
+            auto aron_variant_jointValues = aron_w.writeList(aron_variant_jointValues_dot_accepted_type, armarx::aron::type::Maybe::eNone, armarx::aron::Path(aron_p, {"jointValues"})); // of jointValues
+            aron_objectMembers.emplace("jointValues", aron_variant_jointValues);
+            auto aron_variant_reached = aron_w.writeBool(armarx::aron::type::Maybe::eNone, armarx::aron::Path(aron_p, {"reached"})); // of bool
+            aron_objectMembers.emplace("reached", aron_variant_reached);
+            return aron_w.writeObject("armarx::NaturalIKResult", aron_objectMembers, aron_objectExtends, aron_maybeType, aron_p); // of top level object armarx::NaturalIKResult
+        }
+        
+        /**
+        * @brief write() - This method returns a new type from the member data types using a data writer implementation.
+        * @param w - The writer implementation
+        * @return - the result of the writer implementation
+        */
+        template<class T>
+        T write(armarx::aron::data::WriterInterface<T>& aron_w, const armarx::aron::Path& aron_p = armarx::aron::Path()) const
+        {
+            std::map<std::string, T> aron_objectMembers;
+            std::optional<T> aron_objectExtends;
+            // members of armarx::NaturalIKResult
+            auto aron_variant_control_mode = aron_w.writeNull();
+            aron_variant_control_mode = control_mode.write(aron_w, armarx::aron::Path(aron_p, {"control_mode"})); // of control_mode
+            aron_objectMembers.emplace("control_mode", aron_variant_control_mode);
+            auto aron_variant_jointValues = aron_w.writeNull();
+            std::vector<T> aron_variant_jointValues_listElements;
+            for(unsigned int aron_jointValues_it = 0; aron_jointValues_it < jointValues.size(); ++aron_jointValues_it)
+            {
+                auto aron_variant_jointValues_dot_at_lbrR_aron_jointValues_it_rbrR_ = aron_w.writeNull();
+                aron_variant_jointValues_dot_at_lbrR_aron_jointValues_it_rbrR_ = aron_w.writePrimitive(jointValues.at(aron_jointValues_it), armarx::aron::Path(aron_p, {"jointValues", std::to_string(aron_jointValues_it)})); // of jointValues.at(aron_jointValues_it)
+                aron_variant_jointValues_listElements.push_back(aron_variant_jointValues_dot_at_lbrR_aron_jointValues_it_rbrR_);
+            }
+            aron_variant_jointValues = aron_w.writeList(aron_variant_jointValues_listElements, armarx::aron::Path(aron_p, {"jointValues"})); // of jointValues
+            aron_objectMembers.emplace("jointValues", aron_variant_jointValues);
+            auto aron_variant_reached = aron_w.writeNull();
+            aron_variant_reached = aron_w.writePrimitive(reached, armarx::aron::Path(aron_p, {"reached"})); // of reached
+            aron_objectMembers.emplace("reached", aron_variant_reached);
+            return aron_w.writeDict(aron_objectMembers, aron_objectExtends, aron_p); // of top level object armarx::NaturalIKResult
+        }
+        
+        /**
+        * @brief read() - This method sets the struct members to new values given in a data reader implementation.
+        * @param r - The reader implementation
+        * @return - nothing
+        */
+        template<class T>
+        void read(armarx::aron::data::ReaderInterface<T>& aron_r, T& input)
+        {
+            using TNonConst = typename std::remove_const<T>::type;
+            {
+                const TNonConst* _suppressUnusedWarning;
+                (void) _suppressUnusedWarning;
+            }
+            this->resetSoft();
+            if (aron_r.readNull(input))
+            {
+                throw armarx::aron::error::AronException(__PRETTY_FUNCTION__, "The input to the read method must not be null.");
+            }
+            std::map<std::string, TNonConst> aron_objectMembers;
+            aron_r.readDict(input, aron_objectMembers); // of top level object armarx::NaturalIKResult
+            control_mode.read<T>(aron_r, aron_objectMembers.at("control_mode"));
+            std::vector<TNonConst> aron_jointValues_listElements;
+            aron_r.readList(aron_objectMembers.at("jointValues"), aron_jointValues_listElements);
+            for (const auto& aron_jointValues_listValue : aron_jointValues_listElements)
+            {
+                float aron_jointValues_listTmp;
+                aron_r.readPrimitive(aron_jointValues_listValue, aron_jointValues_listTmp); // of aron_jointValues_listTmp
+                jointValues.push_back(aron_jointValues_listTmp);
+            }
+            aron_r.readPrimitive(aron_objectMembers.at("reached"), reached); // of reached
+        }
+        
+        /**
+        * @brief toAron() - This method returns a new data from the member data types using a writer implementation.
+        * @return - the result of the writer implementation
+        */
+        armarx::aron::data::DictPtr toAron() const
+        {
+            armarx::aron::data::writer::VariantWriter writer;
+            return armarx::aron::data::Dict::DynamicCastAndCheck(this->write(writer));
+        }
+        
+        /**
+        * @brief FromAron() - This method sets the struct members to new values given in a reader implementation.
+        * @return - nothing
+        */
+        static This FromAron(const armarx::aron::data::DictPtr& input)
+        {
+            This t;
+            t.fromAron(input);
+            return t;
+        }
+        
+        /**
+        * @brief fromAron - This method sets the struct members to new values given in a reader implementation.
+        * @return - nothing
+        */
+        void fromAron(const armarx::aron::data::DictPtr& input)
+        {
+            armarx::aron::data::reader::VariantReader reader;
+            this->read<armarx::aron::data::reader::VariantReader::InputType>(reader, (input));
+        }
+        
+        /**
+        * @brief toAronType() - This method returns a new type from the member data types using a writer implementation.
+        * @return - the result of the writer implementation
+        */
+        static armarx::aron::type::ObjectPtr toAronType()
+        {
+            armarx::aron::type::writer::VariantWriter writer;
+            return armarx::aron::type::Object::DynamicCastAndCheck(writeType(writer));
+        }
+        
+    }; // class NaturalIKResult
+} // namespace armarx
+
+```
+
+As you see, the code generation creates a class for the `NaturalIKControlMode` enum. This special class provides convenience methods compared to normal c++ enums.
+Further, it creates a class for the `NaturalIKResult` object. 
+
+Both, the enum and the object provide methods for reading and writing. The `read` method is used to parse a Aron object in an arbitrary representation (e.g. Aron variant or nlohmann::json) and to set the c++ members to the same values as the Aron object. To do so it uses a ReaderInterface implementation (See [Converter](Aron/Converter)). The `write` method is used to create an Aron object in an arbitrary representation with the same values as the c++ object. This method uses a WriterInterface implementation.
+
+For convenience, the `toAron()` and `fromAron()` methods, which internally use the `read` and `write` methods, are created. To get the structure of the c++ class as an Aron type object you can use the static `toAronType()` method which internally uses the `writeType` method.
+
+Futher, the code generation creates methods to compare two classes with each other (right now only operator==).
+
+This means, when using Aron, you don't need to mess around with the Aron DTOs and Aron objects, you only have to set and use plain c++ members of a generated class!
+
+
+
+
+# (Optional) Add conversions to existing (potentially more intelligent) C++ types
+
+Consider the case of `simox::OrientedBoxf` and `simox::arondto::OrientedBox`. The former is the business object (BO), used in daily business logic code (as it offers useful methods to construct and manipulate it). The latter is a mere data storage used to transfer the data, which is called a data transfer object (DTO).
+
+Therefore, you usually want to convert a `simox::arondto::OrientedBox` to a `simox::OrientedBoxf` as soon as you want to do things other than passing it around over network (e.g., at the beginning of a component method or after reading it from the working memory). Likewise, you want to convert a `simox::OrientedBoxf` to a `simox::arondto::OrientedBox` when you send the information over network or store it in the memory.
+
+To allow this conversion, follow these steps:
+
+- In your library, add a file pair `aron_conversions.{h, cpp}` next to your `aron/` directory and add them to the `CMakeLists.txt`
+- In the header, declare functions following this form:
+
+```cpp
+#pragma once
+
+#include <SimoxUtility/shapes/OrientedBox.h>
+#include <RobotAPI/libraries/aron/common/aron/OrientedBox.aron.generated.h>
+
+
+namespace simox
+{
+    void fromAron(const arondto::OrientedBox& dto, OrientedBoxf& bo);
+    void toAron(arondto::OrientedBox& dto, const OrientedBoxf& bo);
+}
+```
+
+Note:
+
+- Both functions take the DTO first and the BO second.
+- `fromAron()` takes a `const` DTO and a `non-const` BO.
+- `toAron()` takes a `non-const` DTO and a `const` BO.
+- All arguments are passed as reference (especially the `non-const` arguments).
+- The functions are defined in the BO's namespace (`simox` in this example, `armarx::mydata` in the running example).
+
+
+* In the cpp file, define the functions like this:
+
+```cpp
+#include "aron_conversions.h"
+
+// Include this and use armarx::aron::to/fromAron() for std::vector, std::map.
+#include <RobotAPI/libraries/aron/common/aron_conversions.h>
+
+// Include other aron_conversions.h files for other ARON types
+
+
+void simox::fromAron(const arondto::OrientedBox& dto, OrientedBoxf& bo)
+{
+    bo = OrientedBoxf(dto.center, dto.orientation, dto.extents);
+}
+
+void simox::toAron(arondto::OrientedBox& dto, const OrientedBoxf& bo)
+{
+    dto.center = bo.center();
+    dto.orientation = bo.rotation();
+    dto.extents = bo.dimensions();
+}
+```
+
+Note:
+
+- The implementation depends on your data. It might be as simple as copying all members, or require more complex conversions. Especially, you might use `fromAron()` for `toAron()` for other ARON object types.
+
+# Lessons learned
+- How to create a XML file with a valid Aron specification
+- How to add this file to CMake
+- How to use the generated class and how to convert it to an Aron object (e.g. for sending it to the memory)
\ No newline at end of file
diff --git a/docs/aron/conversion/README.md b/docs/aron/conversion/README.md
new file mode 100644
index 000000000..a2233c26e
--- /dev/null
+++ b/docs/aron/conversion/README.md
@@ -0,0 +1,35 @@
+# Aron conversion
+
+Aron offers ways to simply convert any aron object into another representation (e.g. from variant to nlohmann::json or vice versa). To do so, it makes use of specific readers and writers. In the following we will only describe the readers, writers and converters for Aron data, not for types (but the principle is the same).
+
+## Readers
+
+An Aron reader is used to get information of an Aron object in a specific representation. Assume you have an nlohmann::json aron object which contains some information (E.g. it is a dict, containing some members, ...). We need this information to create another object in another representation with the same content.
+
+To do so, you only have to implement the armarx::aron::data::ReaderInterface class. It needs one template parameter for your InputType (e.g. here const nlohmann::json).
+
+The interface provides the following pure virtual methods:
+```cpp
+    virtual void readList(InputType& input, std::vector<InputTypeNonConst>& elements) = 0;
+    virtual void readDict(InputType& input, std::map<std::string, InputTypeNonConst>& elements) = 0;
+    virtual void readNDArray(InputType& input, std::vector<int>& shape, std::string& typeAsString, std::vector<unsigned char>& data) = 0;
+    virtual void readInt(InputType& input, int& i) = 0;
+    virtual void readLong(InputType& input, long& i) = 0;
+    virtual void readFloat(InputType& input, float& i) = 0;
+    virtual void readDouble(InputType& input, double& i) = 0;
+    virtual void readString(InputType& input, std::string& s) = 0;
+    virtual void readBool(InputType& input, bool& i) = 0;
+```
+You have to implement the function so that the non-const arguments of the method will be filled with the values of the input. E.g. the implementation of the readString method for the nlohmann::json reader would be:
+```cpp
+    void NlohmannJSONReader::readString(const nlohmann::json& input, std::string& i)
+    {
+        if (input[rw::json::constantes::TYPE_SLUG] != expectedType)
+        {
+            throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Wrong type in json encountered.", input[rw::json::constantes::TYPE_SLUG], expectedType);
+        }
+        i = input[rw::json::constantes::VALUE_SLUG];
+    }
+```
+
+Of course, the way to get the member depend on the way how to construct (writer) the nlohmann::json.
\ No newline at end of file
diff --git a/docs/aron/introduction/README.md b/docs/aron/introduction/README.md
new file mode 100644
index 000000000..1a9c9987d
--- /dev/null
+++ b/docs/aron/introduction/README.md
@@ -0,0 +1,213 @@
+[[_TOC_]]
+
+# Aron structure
+
+Aron (ArmarX Object Notation) is the ArmarX implementation of variants which can be transferred over the network via ZeroC Ice. Further, Aron is the data representation used in the ArmarX Memory System [ArMem](ArMem/ArMem). We distinguish between:
+
+- type specification vs. data information
+- data transfer object (in the following called Aron DTO) vs. its corresponding c++ wrapper (in the following called Aron object). The DTO specification is done in ice so that every Aron object can be transferred via ice.
+
+## Aron Type specification
+
+An Aron type specification defines the static type for an Aron data DTO or an Aron data object. It does not contain any data (e.g. an aron type list only knows the accepted type, not the list members). Since Aron supports maybe types (raw ptr, smart ptr, optional), every Aron type DTO contains a special member. It can only consist of the following types and information (AronVariant means any Type):
+
+```cpp
+    Object { // dto called armarx::aron::type::dto::AronObject
+        string name;
+        AronVariant extends;
+        map<string, AronVariant> memberTypes;
+    }
+    Dict { // dto called armarx::aron::type::dto::Dict
+        AronVariant acceptedType;
+    }
+    List { // dto called armarx::aron::type::dto::List
+         AronVariant acceptedType;
+    }
+    Pair { // ...
+         AronVariant acceptedType1;
+         AronVariant acceptedType2;
+    }
+    Tuple {
+         vector<AronVariant> acceptedTypes;
+    }
+    IntEnum {
+         string name;
+         map<string, int> acceptedValues;
+    }
+    NDArray {
+         int ndim;
+         type type; // in [uint8, int8, uint16, int16, uint32, int32, float32, float64]
+    }
+    Matrix {
+         int rows, cols;
+         type type; // in [int16, int32, int64, float32, float64]
+    }
+    Quaternion {
+         type type; // in [float32, float64]
+    } 
+    Position {
+    }
+    Orientation {
+    } 
+    Pose {
+    } 
+    Image {
+        pixelType type; // in [rgb24, depth32]
+    }     
+    PointCloud {
+        voxelType type; // in [PointXYZ, PointXYZI, PointXYZL, PointXYZRGB, PointXYZRGBA, PointXYZRGBL, PointXYZHSV]
+    }
+    Int { // dto called armarx::aron::type::dto::AronInt
+    }
+    Long { // dto called armarx::aron::type::dto::AronLong
+    }
+    Float { // dto called armarx::aron::type::dto::AronFloat
+    }
+    Double { // dto called armarx::aron::type::dto::AronDouble
+    }
+    String { // dto called armarx::aron::type::dto::AronString
+    }
+    Bool { // dto called armarx::aron::type::dto::AronBool
+    }
+    Time { // dto called armarx::aron::type::dto::AronTime
+    }
+```
+
+## Aron Data specification
+
+Aron data objects and Aron data DTOs are similar structured to type objects and type DTOs. However, there are less classes for data objects and data DTOs. Aron data is completely decoupled from the static types and contains the data members (e.g. an aron data list only contains the list members (as AronVariants) and not the accepted type):
+
+```cpp
+    Dict { // dto called armarx::aron::data::dto::Dict
+        map<string, AronVariant> members;
+    }
+    List { // dto called armarx::aron::data::dto::List
+         vector<AronVariant> elements;
+    }
+    NDArray { // ...
+         vector<int> shape;
+         string type;
+         vector<byte> data;
+    }
+    Int { // dto called armarx::aron::data::dto::AronInt
+         int value;
+    }
+    Long { // dto called armarx::aron::data::dto::AronLong
+         long value;
+    }
+    Float { // dto called armarx::aron::data::dto::AronFloat
+         float value;
+    }
+    Double { // dto called armarx::aron::data::dto::AronDouble
+         double value;
+    }
+    String { // dto called armarx::aron::data::dto::AronString
+         string value;
+    }
+    Bool { // dto called armarx::aron::data::dto::AronBool
+         bool value;
+    }
+```
+
+Please note that every Aron data object or DTO can be NULL!. The reason is, that if the type supports maybe types and a member is e.g. optional the data must support maybetype as well. If a generated Aron class (We come to the code generation later) has an optional member, this member will be translated into a NULL Aron object and DTO. 
+
+## Connection of Aron data and Aron type
+
+Aron data contains less classes than Aron type. Because Aron data objects and DTOs do not check the type of the members (they can be any aron data (AronVariant)), we can only validate an aron data object or DTO if we have the type information. The following mapping describes, how data and types correspond.
+```cpp
+    Aron Type      |      Aron Data
+    -------------------------------
+    Object         ->          Dict
+    Dict           ->          Dict
+    List           ->          List
+    Pair           ->          List
+    Tuple          ->          List
+    NDArray        ->       NDArray
+    Matrix         ->       NDArray
+    Quaternion     ->       NDArray
+    Position       ->       NDArray
+    Orientation    ->       NDArray
+    Pose           ->       NDArray
+    Image          ->       NDArray
+    PointCloud     ->       NDArray
+    IntEnum        ->           Int
+    Int            ->           Int
+    Long           ->          Long
+    Float          ->         Float
+    Double         ->        Double
+    String         ->        String
+    Bool           ->          Bool
+    Time           ->          Long
+```
+
+If no type object or DTO is available, we can at least derive some information from the data object (e.g. "it is a data dict, so the type cant be list").
+
+To differ between data and type makes it easier to work with these Variants. In most cases, the type information is not relevant. Then you only have to check for the data type.
+
+# Aron data and type objects
+
+As already mentioned, we implemented wrapper classes around the DTO. These classes offer convenience methods and conversions and make lots things easier when working directly with Aron. These classes can be found at aron/core/[data,type]/variant/Variant.h.
+
+The Aron objects have more or less the same structure as the DTOs (see above). Everything is stored as a shared_ptr (e.g. members, elements, acceptedTypes, ...). If you want to implement a method which takes any Aron data object as input, you can use the base class of every Aron data object: 
+```cpp
+    void myFancyMethod(const armarx::aron::data::VariantPtr& variant);
+```
+
+If you want to check, what a variant really is, you can use the descriptor of the object:
+```cpp
+    armarx::aron::data::VariantPtr variant; // <-- the variant
+    auto desc = variant->getDescriptor();
+    switch(desc)
+    {
+        case armarx::aron::data::Descriptor::eDict: ...
+        case armarx::aron::data::Descriptor::eList: ...
+        ...
+    }
+```
+
+If you have a DTO, you dont know the exact type but you want to have a Aron object you can make use of the static construction methods:
+```cpp
+    armarx::aron::data::dto::GenericData dto; // <-- the DTO variant
+    auto aron = armarx::aron::data::Variant::FromAronDTO(dto);
+```
+
+If you know the type, you can use the constructor the specific Aron object.
+
+## Example to create an Aron data dict from scratch
+
+Goal: Have an Aron dict with a list as member "the_list" and some values in it. Then echo the members and their descriptor as a string.
+
+```cpp
+    using namespace armarx;
+
+    // setup aron object
+    auto dict = std::make_shared<aron::data::Dict>();
+    {
+        auto list = std::make_shared<aron::data::List>();
+        for (unsigned int i = 0; i < 10; ++i)
+        {
+            list->addElement(std::make_shared<aron::data::Int>(i));
+        }
+        dict->addElement("the_list", list);
+    }
+
+    // echo
+    auto listVariant = dict->getElement("the_list"); // will return a aron::data::VariantPtr
+    auto list = aron::data::List::DynamicCastAndCheck(listVariant); // cast and check whether the cast was successful
+    for (const auto& intVar : list->getElements())
+    {
+        auto i = aron::data::Int::DynamicCastAndCheck(intVar);
+        std::cout << "The value is: " << i->getValue() << std::endl;
+        std::cout << "The descriptor is: " << aron::data::defaultconversion::string::Descriptor2String.at(i->getDescriptor()) << std::endl;
+    }
+```
+
+Please note that we might add more methods or make the current ones more flexible (e.g. such as nlohmann::json).
+
+# Lessons learned
+
+- There is a difference between Aron data and Aron type
+- There is a difference between Aron objects and Aron DTOs
+- How are Aron DTOs structured
+- How do Aron data and Aron types correspond
+- How to use the Aron objects
\ No newline at end of file
diff --git a/docs/aron/visitors/README.md b/docs/aron/visitors/README.md
new file mode 100644
index 000000000..c72e3a92e
--- /dev/null
+++ b/docs/aron/visitors/README.md
@@ -0,0 +1,101 @@
+[[_TOC_]]
+
+# Visitors
+
+Visitors are a useful tool to define specific methods for specific types without specifying the `switch(): case: ...` again and again. Further, recursive visitors offer a convenient way to iterate through the tree-like structure of any Aron object. (Please note that right now the implementation does not check for cycles!). Again, we will only look at data visitors since the implementation of type visitors is more or less similar.
+
+## Non-recursive Visitors
+
+First, there are "normal" visitors. They are used to get rid of the big switch-case statement when getting an Aron object with unknown type. Further, these visitors can be used to convert an Aron object from one representation into another (see [Aron/Conversion](Aron/Conversion)). 
+The Visitor Base-class offers the following pure virtual methods which you have to implement:
+```cpp
+    virtual data::Descriptor getDescriptor(Input&) = 0;
+    virtual void visitDict(Input&) {};
+    virtual void visitList(Input&) {};
+    virtual void visitNDArray(Input&) {};
+    virtual void visitInt(Input&) {};
+    virtual void visitLong(Input&) {};
+    virtual void visitFloat(Input&) {};
+    virtual void visitDouble(Input&) {};
+    virtual void visitBool(Input&) {};
+    virtual void visitString(Input&) {};
+    virtual void visitUnknown(Input&) { throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor."); }
+```
+`Input` is a template parameter, defining the Input-type (e.g. `const armarx::aron::data::VariantPtr` for a `VariantVisitor` Implementation).
+
+The method `getDescriptor(Input&)` is used for the switch case interally.
+
+As you can see the `VariantVisitor` always gets a generic variant as input in each function. This means that, although the Visitor guarantees that the input is correct, you have to cast the class to the correct type. For widely used Visitors, the Aron library offers convenience implementations (e.g. for Variants and for nlohmann::json inputs). The convenience class for Variants additionally adds overloads where the input is already casted correctly (you can decide which method you want to override).
+
+To use a Visitor, you have to use the function 
+```cpp
+    void visit(VisitorImplementation& v, typename VisitorImplementation::Input& o);
+```
+which takes the visitor and the input as arguments and does the switch-case.
+
+## Recursive Vistors
+
+Recursive visitors are similar to normal vistors but they continue "visiting" until the object is fully visited. For containers (e.g. dicts, lists) they offer two methods each:
+```cpp
+        virtual void visitDictOnEnter(Input& element) {};
+        virtual void visitDictOnExit(Input& element) {};
+        virtual void visitListOnEnter(Input& element) {};
+        virtual void visitListOnExit(Input& element) {};
+```
+The `*OnEnter` method is called before iterating over all children of the container. The `*OnExit` is called after the iteration.
+
+Further, in order to get the elements of a container, you must implement the methods:
+```cpp
+        virtual MapElements getDictElements(Input&) = 0;
+        virtual ListElements getListElements(Input&) = 0;
+```
+Again, Input can be any aron object (e.g. Variant or nlohmann::json).
+
+As for normal visitors, the Aron library offers convenience implementations for Variants and nlohmann::json inputs.
+
+To use the RecursiveVisitor, you have to use the function 
+```cpp
+    void visitRecursive(RecursiveVisitorImplementation& v, typename RecursiveVisitorImplementation::Input& o);
+```
+
+### Example 
+
+Assume you want to count how many objects of each kind you have in a Variant.
+```cpp
+    #include <RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.h>
+    class CountingRecursiveVisitor : public RecursiveConstVariantVisitor
+    {
+    public:
+        int dicts = 0;
+        int lists = 0;
+        int ndarrays = 0;
+        int ints = 0;
+        int floats = 0;
+        int longs = 0;
+        int doubles = 0;
+        int strings = 0;
+        int bools = 0;
+    public:
+        void visitAronVariantOnEnter(const data::DictPtr&) override { dicts++; }
+        void visitAronVariantOnEnter(const data::ListPtr&) override { lists++; }
+        void visitAronVariant(const data::NDArrayPtr&) override     { ndarrays++; }
+        void visitAronVariant(const data::IntPtr&) override         { ints++; }
+        void visitAronVariant(const data::LongPtr&) override        { longs++; }
+        void visitAronVariant(const data::FloatPtr&) override       { floats++; }
+        void visitAronVariant(const data::DoublePtr&) override      { doubles++; }
+        void visitAronVariant(const data::BoolPtr&) override        { strings++; }
+        void visitAronVariant(const data::StringPtr&) override      { bools++; }
+    };
+
+    void countHowMany(const aron::data::VariantPtr& aron)
+    {
+        CountingRecursiveVisitor visitor;
+        aron::data::visitRecursive(visitor, aron);
+
+        std::cout << "The aron has " << visitor.dicts << " dicts." << std::endl;
+    }
+```
+
+## Typed Visitors
+
+# Lessons Learned
\ No newline at end of file
-- 
GitLab