Commit 247dfa61 by Sebastian Stern

added readme

parent 897ac18d
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
h3. Python
* Version 3.6.5
* cogapp >= 2.5.1
* colorama >= 0.3.9
* prettytable >= 0.7.2
Alternativ kann auch die beiliegende VENV oder Anaconda Umgebung genutzt werden, zu empfehlen ist Anaconda.
h3. ROS2
* Version == Ardent Apalone - 2018-03-07
h3. ADTF
* Version >= 3.3.1
h3. Visual Studio
* Version == 2015
h2. 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.
* PYTHONPATH = path_to_ros\install\Lib\site-packages
* Path= path_to_ros\install\Scripts;path_to_ros\install\bin;$(Path)
Danach muss ein bereitgestellter Service hinzugefügt werden.
Die Plugindaten liegen im Unterverzeichnis files/plugins.
Den Service im Configuration-Editor unter System-Editor >> Services einfügen mit dem Level System.
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
Das Script bietet drei Grundfunktionen
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:*
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">
StreamName = "IntegerArray";
DDL =
"<structs>"
"<struct alignment=\"1\" name=\"IntegerArray\" version=\"1\">"
"<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
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:*
Aus einer Message Datei DDL.xml (oder .txt) mit foldendem Inhalt:
<pre><code class="xml">
<structs>
<struct alignment="1" name="tHeaderStruct" version="1">
<element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="ui32HeaderVal" type="tUInt32" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="4" name="f64HeaderVal" type="tFloat64" />
</struct>
<struct alignment="1" name="tNestedStruct" version="1">
<element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="sHeaderStruct" type="tHeaderStruct" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="12" name="sSimpleStruct" type="tSimpleStruct" />
</struct>
<struct alignment="1" name="tSimpleStruct" version="1">
<element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="ui8Val" type="tUInt8" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="1" name="ui16Val" type="tUInt16" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="3" name="ui32Val" type="tUInt32" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="7" name="i32Val" type="tInt32" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="11" name="i64Val" type="tInt64" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="19" name="f64Val" type="tFloat64" />
<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
uint32 ui32_val
int32 i32_val
int64 i64_val
float64 f64_val
float32 f32_val
THeaderStruct.msg
uint32 ui32_header_val
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
Diese Funktion erstellt nur eine Message Datei nach gleichem Schema wie die Funktion "Create Publisher"
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
h3. Python
* Version 3.6.5
* cogapp >= 2.5.1
* colorama >= 0.3.9
* prettytable >= 0.7.2
Alternativ kann auch die beiliegende VENV oder Anaconda Umgebung genutzt werden, zu empfehlen ist Anaconda.
h3. ROS2
* Version == Ardent Apalone - 2018-03-07
h3. ADTF
* Version >= 3.3.1
h3. Visual Studio
* Version == 2015
h2. 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.
* PYTHONPATH = path_to_ros\install\Lib\site-packages
* Path= path_to_ros\install\Scripts;path_to_ros\install\bin;$(Path)
Danach muss ein bereitgestellter Service hinzugefügt werden.
Die Plugindaten liegen im Unterverzeichnis files/plugins.
Den Service im Configuration-Editor unter System-Editor >> Services einfügen mit dem Level System.
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
Das Script bietet drei Grundfunktionen
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:*
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">
StreamName = "IntegerArray";
DDL =
"<structs>"
"<struct alignment=\"1\" name=\"IntegerArray\" version=\"1\">"
"<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
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:*
Aus einer Message Datei DDL.xml (oder .txt) mit foldendem Inhalt:
<pre><code class="xml">
<structs>
<struct alignment="1" name="tHeaderStruct" version="1">
<element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="ui32HeaderVal" type="tUInt32" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="4" name="f64HeaderVal" type="tFloat64" />
</struct>
<struct alignment="1" name="tNestedStruct" version="1">
<element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="sHeaderStruct" type="tHeaderStruct" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="12" name="sSimpleStruct" type="tSimpleStruct" />
</struct>
<struct alignment="1" name="tSimpleStruct" version="1">
<element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="ui8Val" type="tUInt8" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="1" name="ui16Val" type="tUInt16" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="3" name="ui32Val" type="tUInt32" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="7" name="i32Val" type="tInt32" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="11" name="i64Val" type="tInt64" />
<element alignment="1" arraysize="1" byteorder="LE" bytepos="19" name="f64Val" type="tFloat64" />
<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
uint32 ui32_val
int32 i32_val
int64 i64_val
float64 f64_val
float32 f32_val
THeaderStruct.msg
uint32 ui32_header_val
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
Diese Funktion erstellt nur eine Message Datei nach gleichem Schema wie die Funktion "Create Publisher"
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