Datenübertragung zwischen PC und dSPACE Karte: Unterschied zwischen den Versionen
Zeile 42: | Zeile 42: | ||
| Baudrate von 19200 | | Baudrate von 19200 | ||
| Baudrate von 115200 | | Baudrate von 115200 | ||
| | |||
|- | |||
| Alle Daten werden bereits übertragen | |||
| Spurparameter a,b und c werden übertragen | |||
| | | | ||
|- | |- | ||
Zeile 47: | Zeile 51: | ||
| Versand der Daten effektiv in for-Schleife gelöst | | Versand der Daten effektiv in for-Schleife gelöst | ||
| | | | ||
|- | |||
| Übergabe an Funktion zum Senden gut gelöst, da Daten als struct übergeben werden | |||
| Spurparameter werden einzeln an Funktion zum Senden übergeben | |||
| | |||
|- | |||
| Vertauschen der Byte-Ordnung aufwendig gelöst und teilweise überflüssig | |||
| Vertauschen der Byte-Ordnung durch den Einsatz von Zeigern sehr gut implementiert | |||
| | |||
|- | |||
| | |||
| | |||
| Verschachtelte Funktionsaufrufe zum Übertragen der Daten | |||
|- | |- | ||
! scope="row"| a | ! scope="row"| a |
Version vom 10. November 2020, 20:43 Uhr
Autor: Hagen Heuer und Tim Kruse
Betreuer: Prof. Dr. Mirek Göbel
Einleitung
Der folgende Artikel beschäftigt sich mit der Kommunikation zwischen dem PC und der dSPACE Karte. Die Kommunikation erfolgt hierbei mittels einer RS232-Schnittstelle. Über diese Schnittstelle wird unteranderem das Spurpolynom sowie Lidar-Daten versendet. Eine genaue Beschreibung, welche Daten übertragen werden, ist in Abbildung X zu sehen. Hier werden zudem die Datentypen genannt.
Für die Bearbeitung der Aufgabe wird zunächst der aktuelle Stand des Fahrzeugs ermittelt, da bereits eine RS232 Kommunikation besteht. Diese wird zunächst getestet. Anschließend wird die Struktur des C-Programm überarbeitet, da Funktionen des C-Programms des Vorsemesters ausgelagert werden. Im letzten Schritt soll die Datenübertragungsrate nach Möglichkeit erhöht werden und fehlende Daten übertragen werden. Diese Teilaufgabe wird durch Funktionstest abgeschlossen.
Anforderungen
-
Abb. 1: Lastenheft REQ10.3160
-
Abb. 2: Lastenheft REQ10.3275
-
Abb. 3: Lastenheft REQ10.3280
-
Abb. 4: Lastenheft REQ10.3290
-
Abb. 5: Pflichtenheft
Aktuelle Stand des Programms
Im ersten Schritt wurden die beiden bestehenden Ansätze im SVN betrachtet und mit einander verglichen. Ziel war es, den aktuellen Stand zu ermitteln und ein Programm auszuwählen, mit dem die Kommunikation umgesetzt wird. Die Unterschiede und Gemeinsamkeiten der beiden Programme sind in den nachfolgenden Tabelle ausgelistet.
Vergleich der beiden Programme
OSE_Fusion_Final_Software | OSE_Draufsicht_Spurpolynom_RS232 | Gemeinsamkeiten |
---|---|---|
Baudrate von 19200 | Baudrate von 115200 | |
Alle Daten werden bereits übertragen | Spurparameter a,b und c werden übertragen | |
Daten werden aufwendig einzeln verschickt | Versand der Daten effektiv in for-Schleife gelöst | |
Übergabe an Funktion zum Senden gut gelöst, da Daten als struct übergeben werden | Spurparameter werden einzeln an Funktion zum Senden übergeben | |
Vertauschen der Byte-Ordnung aufwendig gelöst und teilweise überflüssig | Vertauschen der Byte-Ordnung durch den Einsatz von Zeigern sehr gut implementiert | |
Verschachtelte Funktionsaufrufe zum Übertragen der Daten | ||
a | float32 (4 Byte) | Fahrspurparameter |
b | float32 (4 Byte) | Fahrspurparameter |
c | float32 (4 Byte) | Fahrspurparameter |
lane_asign | bool (1 Byte) | Spurzuordnung: 1 = rechte Fahrspur, 0 = linke Fahrspur |
stop_insight | bool (1 Byte) | 1 = Stopplinie erkannt, 0 = keine Stopplinie erkannt |
stop_distance | float32 (4 Byte) | Entfernung zur Stopplinie |
n_objekte | uint8 (1 Byte) | Anzahl relevanter Objekte (maximal 5) |
number[n_objekte] | uint8 (1 Byte) | Objektzähler |
x_0[n_objekte] | float32 (4 Byte) | x-Koordinate des Objektmittelpunktes (mitte, vorn) |
y_0[n_objekte] | float32 (4 Byte) | y-Koordinate des Objektmittelpunktes (mitte, vorn) |
b[n_objekte] | float32 (4 Byte) | Objektbreite |
t[n_objekte] | float32 (4 Byte) | Objekttiefe |
alpha[n_objekte] | float32 (4 Byte) | Objektausrichtung |
v[n_objekte] | float32 (4 Byte) | Betrag des Geschwindigkeitsvektors |
plausible[n_objekte] | uint8 (1 Byte) | Vertrauenswert für das Objekt in Prozent ( 0 = minimale Vertrauen, 100 = maximale Vertrauen) |
Gesamtgröße des Datenpakets | 149 Byte |
Zunächst wurde der aktuelle Stand des Programms vom Wintersemester 19/20 ermittelt. Hierbei konnte abweichend festgestellt werden, dass lediglich das Spurpolynom mit den Parametern a, b, c übertragen wird. Weder das Programm noch die Funktion zum Übertragen der Daten von Herrn Assulai und Herrn Di Lillo berücksichtigen die Übertragung weiterer Daten. Daher wird es die Aufgabe in diesem Semester sein, die Kommunikation auf die restlichen Daten, welche in der nachfolgenden Tabelle zu sehen sind, auszuweiten.
PC zu dSpace
Signalname | Datentyp | Beschreibung |
---|---|---|
a | float32 (4 Byte) | Fahrspurparameter |
b | float32 (4 Byte) | Fahrspurparameter |
c | float32 (4 Byte) | Fahrspurparameter |
lane_asign | bool (1 Byte) | Spurzuordnung: 1 = rechte Fahrspur, 0 = linke Fahrspur |
stop_insight | bool (1 Byte) | 1 = Stopplinie erkannt, 0 = keine Stopplinie erkannt |
stop_distance | float32 (4 Byte) | Entfernung zur Stopplinie |
n_objekte | uint8 (1 Byte) | Anzahl relevanter Objekte (maximal 5) |
number[n_objekte] | uint8 (1 Byte) | Objektzähler |
x_0[n_objekte] | float32 (4 Byte) | x-Koordinate des Objektmittelpunktes (mitte, vorn) |
y_0[n_objekte] | float32 (4 Byte) | y-Koordinate des Objektmittelpunktes (mitte, vorn) |
b[n_objekte] | float32 (4 Byte) | Objektbreite |
t[n_objekte] | float32 (4 Byte) | Objekttiefe |
alpha[n_objekte] | float32 (4 Byte) | Objektausrichtung |
v[n_objekte] | float32 (4 Byte) | Betrag des Geschwindigkeitsvektors |
plausible[n_objekte] | uint8 (1 Byte) | Vertrauenswert für das Objekt in Prozent ( 0 = minimale Vertrauen, 100 = maximale Vertrauen) |
Gesamtgröße des Datenpakets | 149 Byte |
Im nächsten Schritt soll nun das bestehende C-Programm getestet werden, um dem Team ein funktionsfähiges Fahrzeug bereitzustellen. Der Test der Software wurde wie in Fahrzeugkommunikation via RS232 beschrieben erfolgreich durchgeführt. Daher kann dem Team nun eine funktionierende Kommunikation mit Übertragung der Spurparameter a, b und c zur Verfügung gestellt werden.
Konzept für die Übertragung
Zunächst werden Dummy-Werte im C-Programm ergänzt und der Übertragung hinzugefügt. Zudem wird das Online-Modell in Matlab/Simulink für den Empfang dieser Daten angepasst. Anschließend wird die Übertragung dieser Daten getestet.
Außerdem wird die Struktur des derzeitigen C-Programms verändert, um eine bessere Austauschbarkeit von Modulen zu gewährleisten. Derzeit sind einige Funktionsteile des Programms in der main.cpp realisiert, was den schnellen Austausch der Module verhindert. In diesem Zuge soll zudem die Bildvorverarbeitung und Spurerkennung aus dem 6ten Semester implementiert werden.
Nachfolgend sind die Programmablaufpläne für die einzelnen Funktionen der Module aufgeführt.
Hauptprogramm
Spurerkennung
Stopplinienerkennung
Datenübertragung
Empfang der Daten in Matlab/Simulink
Programmierung
Komponententest
Zusammenfassung
Link zum Quelltext in SVN
→ zurück zum Hauptartikel: SDE Praktikum Autonomes Fahren