Commit 6cbcb567 by Sebastian Stern

added readme

parent 247dfa61
h1. Dokumentation - ADTF Plugingenerator ROS2
H1 Dokumentation - ADTF Plugingenerator ROS2
Dieses Dokument die beschreibt die Nutzung des Plugingenerator Scriptes zur Generierung von ADTF-Plugins in Kombination mit ROS2.
h2. Voraussetzungen
H2 Voraussetzungen
h3. Python
H3 Python
* Version 3.6.5
* cogapp >= 2.5.1
......@@ -14,18 +14,18 @@ h3. Python
Alternativ kann auch die beiliegende VENV oder Anaconda Umgebung genutzt werden, zu empfehlen ist Anaconda.
h3. ROS2
H3 ROS2
* Version == Ardent Apalone - 2018-03-07
h3. ADTF
H3 ADTF
* Version >= 3.3.1
h3. Visual Studio
H3 Visual Studio
* Version == 2015
h2. Erste Schritte
H3 Erste Schritte
Damit ROS2 in ADTF genutzt werden kann müssen Umgebungsvariablen ergänzt werden.
Dazu im Configuration-Editor das gewünschte System auswählen und im Bereich System-Editor >> Environment-Variables folgende Einträge ergänzen.
......@@ -38,34 +38,35 @@ Den Service im Configuration-Editor unter System-Editor >> Services einfügen mi
Bei Bedarf kann der Service von Source gebaut werden die Daten dazu liegen im Unterordner "files/adtf_system_service" bei.
Diesen Ordner einfach in path_to_ros\ros2_ws\src\ros2 kopieren und danach in einer VisualStudio CommandLine folgende Befehle ausführen:
<pre><code class="text">
```
cd path_to_ros
install\local_setup.bat
ament build --only-package adtf_system_service
</code></pre>
```
Nach dem Build & Install Vorgang liegen die Plugindateien im angegebenen Pfad(Bei Bedarf in der CMakeLists.txt anpassen)
Das Script kann über die Konsole mit python main.py gestartet werden. Bei ersten Start wird man dazu aufgefordert einige Einstellungen anzupassen.
Diese sind unter dem Menü (5) Settings zu finden. Nach dem anpassen bzw. ergänzen der Parameter kann das Script genutzt werden.
h2. Funktionen
H2 Funktionen
Das Script bietet drei Grundfunktionen
h3. Create Subscriber
H3 Create Subscriber
Mit Hilfe dieser Funktion kann aus einer ROS2 Message Datei (*.msg) ein ROS2 Subscriber bzw. eine ADTF-Streaming Source erstellt werden.
Die zur Verfügung stehenden Message Dateien können mit dem Menü (6) Show ROS2 msg files angezeigt werden.
*Beispiel:*
**Beispiel:**
Aus einer Message Datei IntegerArray.msg mit foldendem Inhalt:
<pre><code class="text">
```
int32[100] data
</code></pre>
```
wird eine eine Streaming Source erstellt mit folgendem StreamType:
<pre><code class="text">
```C++
StreamName = "IntegerArray";
DDL =
"<structs>"
......@@ -73,18 +74,18 @@ DDL =
"<element alignment=\"1\" arraysize=\"100\" byteorder=\"LE\" bytepos=\"0\" name=\"data\" type=\"tInt32\"/>"
"</struct>"
"</structs>"
</code></pre>
```
Die nun generierte Streaming Source sendet mit jedem neuen Datenpaket das aus dem ROS2 DDL Nety empfangen wird ein neues Sample mit o.g. Beschreibung in das ADTF Netz.
h3. Create Publisher
H3 Create Publisher
Diese Funktion erstellt aus gegebener DDL Beschreibung im XML oder cString Format eine eine oder mehrere Message Dateien und im Anschluss daran einen oder mehrere ROS2 Publisher bzw. eine ADTF-Streaming Sinks.
*Beispiel:*
**Beispiel:**
Aus einer Message Datei DDL.xml (oder .txt) mit foldendem Inhalt:
<pre><code class="xml">
```XML
<structs>
<struct alignment="1" name="tHeaderStruct" version="1">
<element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="ui32HeaderVal" type="tUInt32" />
......@@ -104,10 +105,10 @@ Aus einer Message Datei DDL.xml (oder .txt) mit foldendem Inhalt:
<element alignment="1" arraysize="1" byteorder="LE" bytepos="27" name="f32Val" type="tFloat32" />
</struct>
</structs>
</code></pre>
```
werdem zunächst folgende Message Dateieien erstellt und ein ROS Build&Install wird für die neuen Daten ausgeführt.
<pre><code class="text">
```
TSimpleStruct.msg
uint8 ui8_val
uint16 ui16_val
......@@ -124,12 +125,12 @@ float64 f64_header_val
TNestedStruct.msg
THeaderStruct s_header_struct
TSimpleStruct s_simple_struct
</code></pre>
```
In einem zweiten Schritt werden dann den gewünschten Publisher bzw. Streaming Sinks erstellt entsprechende des jeweiligen DDL-Structs und der korrespondieren ROS2 Message.
Diese Streaming Sinks publizieren mit jedem neuen Datenpaket aus dem ADTF-Netz diese in das ROS2-Netz.
h3. Create Message
H3 Create Message
Diese Funktion erstellt nur eine Message Datei nach gleichem Schema wie die Funktion "Create Publisher"
......
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="8286b5a2-7ff7-4cf4-a5d2-60de7599911f" name="Default" comment="added more Settings" />
<list default="true" id="8286b5a2-7ff7-4cf4-a5d2-60de7599911f" name="Default" comment="added more Settings">
<change beforePath="$PROJECT_DIR$/../README.md" beforeDir="false" afterPath="$PROJECT_DIR$/../README.md" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -166,8 +168,8 @@
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/files/examples/ddl.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="118" column="8" lean-forward="true" selection-start-line="118" selection-start-column="8" selection-end-line="134" selection-end-column="17" />
<state relative-caret-position="592">
<caret line="134" column="8" lean-forward="true" selection-start-line="134" selection-start-column="8" selection-end-line="134" selection-end-column="17" />
</state>
</provider>
</entry>
......@@ -376,40 +378,6 @@
<item name="ros2_adtf_codegen" type="b2602c69:ProjectViewProjectNode" />
<item name="codegen_py" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="ros2_adtf_codegen" type="b2602c69:ProjectViewProjectNode" />
<item name="codegen_py" type="462c0819:PsiDirectoryNode" />
<item name="files" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="ros2_adtf_codegen" type="b2602c69:ProjectViewProjectNode" />
<item name="codegen_py" type="462c0819:PsiDirectoryNode" />
<item name="files" type="462c0819:PsiDirectoryNode" />
<item name="examples" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="ros2_adtf_codegen" type="b2602c69:ProjectViewProjectNode" />
<item name="codegen_py" type="462c0819:PsiDirectoryNode" />
<item name="files" type="462c0819:PsiDirectoryNode" />
<item name="plugins" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="ros2_adtf_codegen" type="b2602c69:ProjectViewProjectNode" />
<item name="codegen_py" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="ros2_adtf_codegen" type="b2602c69:ProjectViewProjectNode" />
<item name="codegen_py" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="CLI" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="ros2_adtf_codegen" type="b2602c69:ProjectViewProjectNode" />
<item name="codegen_py" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="Parser" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
......@@ -642,7 +610,6 @@
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="2576" height="1416" extended-state="6" />
<editor active="true" />
<layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.15957446" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
......@@ -1018,8 +985,8 @@
</entry>
<entry file="file://$PROJECT_DIR$/files/examples/ddl.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="118" column="8" lean-forward="true" selection-start-line="118" selection-start-column="8" selection-end-line="134" selection-end-column="17" />
<state relative-caret-position="592">
<caret line="134" column="8" lean-forward="true" selection-start-line="134" selection-start-column="8" selection-end-line="134" selection-end-column="17" />
</state>
</provider>
</entry>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment