Kom - Kommunikation: Unterschied zwischen den Versionen
K (Größe Bilder auf 16:9 angepasst) |
(weitere Aktualisierung/Ergänzung) |
||
Zeile 1: | Zeile 1: | ||
= Aufgabenstellung und Ziele = | = Aufgabenstellung und Ziele = | ||
Das Modul Kommunikation realisiert den Datenaustausch der einzelnen Module des Carolo Cup Fahrzeugs (CCF). Das Ziel ist es, mithilfe von C++ Code (Visual Studio 2019) die Variablen aus der [[OSE - Objekt - und Spurerkennung|Objekt- und Spurerkennung]] (z.B. Spurpolynom <math>Y(X)=aX^2+bX+c</math>) von PC zur x86 PCI-Erweiterungskarte zu übertragen, die sich auf dem CCF befinden.<br> | Das Modul Kommunikation realisiert den Datenaustausch der einzelnen Module des Carolo Cup Fahrzeugs (CCF). Das Ziel ist es, mithilfe von C++ Code (Visual Studio 2019) die Variablen aus der [[OSE - Objekt - und Spurerkennung|Objekt- und Spurerkennung]] (z.B. Spurpolynom <math>Y(X)=aX^2+bX+c</math>) von PC zur x86 PCI-Erweiterungskarte zu übertragen, die sich auf dem CCF befinden. <br> | ||
Das wird realisiert indem eine serielle RS-232 Schnittstelle zum Microcontroller, in diesem Fall der Entwicklerkarte DS1104 von dSPCACE, implementiert wird. | Das wird realisiert indem eine serielle RS-232 Schnittstelle zum Microcontroller, in diesem Fall der Entwicklerkarte DS1104 von dSPCACE, implementiert wird. </br> | ||
</br> | |||
Die weitere Verarbeitung der Daten findet in den anderen Modulen statt, die in Simulink (2019b) implementiert und auf der dSPACE-Karte ausgeführt werden. Die Spurparameter werden z.B. in [[BSF - Bahn- und Spurführung]] verarbeitet, um den Lenkwinkel aus der aktuellen Position und dem Spurpolynom zu regeln. | Die weitere Verarbeitung der Daten findet in den anderen Modulen statt, die in Simulink (2019b) implementiert und auf der dSPACE-Karte ausgeführt werden. Die Spurparameter werden z.B. in [[BSF - Bahn- und Spurführung]] verarbeitet, um den Lenkwinkel aus der aktuellen Position und dem Spurpolynom zu regeln. | ||
Zeile 118: | Zeile 117: | ||
[[Datei:BitReihenfolge.png|700px|center]] | [[Datei:BitReihenfolge.png|700px|center]] | ||
=== Initialisierung auf der dSPACE-Karte === | === Initialisierung auf der dSPACE-Karte === | ||
dSPACE | Mit der [https://www.dspace.com/en/inc/home/products/sw/impsw/real-time-interface.cfm RTI Toolbox von dSPACE] wird eine Simulink-Bibliothek für die serielle Schnittstelle bereitgestellt ([https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Teams/Kom/Demos/DEMO%20dSPACE%20Kommunikation/ Beispiel: ..\Teams\Kom\Demos\DEMO dSPACE Kommunikation]). Hierfür sollte das MATLAB®/Simulink [[Starten der Online-Simulation | ''online Modell'']] des CCF gestartet werden. Die serielle Kommunikation wird mittels des sogenannten '''DS1104SER_SETUP''' -Blocks in Simulink initialisiert, dieser muss im Simulink-Modell enthalten sein. Mit Doppelklick auf den Block können die Einstellungen des Busses konfiguriert werden: Für die Fahrzeugskommunikation wird eine Baudrate von 115200 gewählt, die Kommunikation erfolgt erstmal ohne Handshake (WiSe22/23). | ||
Alte Wiki-Artikel zur Kommunikationsimplementierung: <br> | Alte Wiki-Artikel zur Kommunikationsimplementierung: <br> | ||
Zeile 127: | Zeile 125: | ||
===[[Fahrzeugkommunikation via RS232| Kommunikation und Diagnoseschnittstelle]] (aktueller Ansatz)=== | ===[[Fahrzeugkommunikation via RS232| Kommunikation und Diagnoseschnittstelle]] (aktueller Ansatz)=== | ||
=== Datenverarbeitung === | |||
Für die Datenverarbeitung wird einen S-Function in Simulink erstellt. Die Funktion hat den Zweck die Daten zu interpretieren und die Spurparameter zu rekonstruieren. Hierfür werden zwei Eingänge benötigt: | |||
* Nutzdata | |||
* Statusbit | |||
und der wesentliche Ausgängen sind: | |||
* a-Parameter | |||
* b-Parameter | |||
* c-Parameter. | |||
Empfangt werden 8-Bit-Zeichen und diese müssen zusammengepfügt werden und einer 32-Bit-Zeichen als Ausgabeparameter zurückgeben. Hierfür werden zwei Zähler in der Funktion benötigt: | |||
* zaehler_param | |||
* zaehler_uebertragung | |||
Der erste Zähler wird für die Zusammenfügung der Parameter benötig. Diese wird ein wert von 0 bis 3 einnehmen. Um ein 32-Bit-Zeichen wird erst 4 mal 8-Bit-Zeichen empfängt. Der zweite Zähler wird für die Übertragung von alle Spurparameter verwendet. Dieser nimmt den Wert von 1 bis 12 ein. | |||
Als erstes werden immer die Daten als 8-Bit-Zeichen empfängt. Die Datenverarbeitung fängt, wenn der Start_Flag gesetzt ist. Dieser wird nur gesetzt wenn: | |||
# der empfängte Byte der Start Byte (170) entspricht | |||
# der Start_Flag und der Parameter Zähler null sind | |||
Wenn der Flag gesetzt ist, fangen sowohl der Übertragungs- als auch der Parameterzähler hochzuzählen. Der Parameterzähler fasst immer 4-Datenbyte zusammen, dies ergibt einen Spurparameter. Der a-Parameter wird nach 4 Durchläufe komplett zusammengebaut, der b-Parameter nach 8 und der c-Parameter nach 12. Anschließend werden die alle Variablen der Funktion auf null zurückgesetzt. | |||
= Anleitung für das ONLINE-Modell = | = Anleitung für das ONLINE-Modell = |
Version vom 23. November 2022, 17:18 Uhr
Aufgabenstellung und Ziele
Das Modul Kommunikation realisiert den Datenaustausch der einzelnen Module des Carolo Cup Fahrzeugs (CCF). Das Ziel ist es, mithilfe von C++ Code (Visual Studio 2019) die Variablen aus der Objekt- und Spurerkennung (z.B. Spurpolynom ) von PC zur x86 PCI-Erweiterungskarte zu übertragen, die sich auf dem CCF befinden.
Das wird realisiert indem eine serielle RS-232 Schnittstelle zum Microcontroller, in diesem Fall der Entwicklerkarte DS1104 von dSPCACE, implementiert wird.
Die weitere Verarbeitung der Daten findet in den anderen Modulen statt, die in Simulink (2019b) implementiert und auf der dSPACE-Karte ausgeführt werden. Die Spurparameter werden z.B. in BSF - Bahn- und Spurführung verarbeitet, um den Lenkwinkel aus der aktuellen Position und dem Spurpolynom zu regeln.
Konzept
Die OSE Softwareumgebung beinhaltet die Bild- und Objekterkennung mit Laserscanner die Lidar-Verarbeitung, sowie die Implementierung der RS232 Kommunikation.
Die Kamera ist mit Ethernet an die x86-CPU verbunden, diese wiederum ist über einen COM Port über das RS-232 Protokoll mit der dSPACE Karte verbunden. Die x86-CPU führt die "OSE_Draufsicht_Spurpolynom_RS232.exe" (C/C++ Code) aus, die einen Bildverarbeitungsalgorithmus auf das Kamerabild anwendet, um die a-, b-, c-Parameter der Fahrspur zu ermitteln.
Die OSE Softwareumgebung erkennt aus den Lidar-Daten Objekte, die in Modulen AEP - Autonomes Einparken, BSF - Bahn- und Spurführung und AuF - Antrieb und Fernbedienung benötigt werden. Mit diesen Daten kann das CCF Hindernissen auf der Teststrecke reagieren und ausweichen.
Überblick Variablen
- 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 Objekt (0=min,255=max) |
149 Byte | Gesamtgröße des Datenpakets |
- dSpace zu PC
Signalname | Datentyp | Beschreibung |
---|---|---|
V_x_ego | float32 (4 Byte) | Ego-Längsgeschwindigkeit des Fahrzeugs |
alpha | float32 (4 Byte) | Lenkwinkel: α > 0 Lenkausschlag links, α < 0 Lenkausschlag rechts |
8 Byte | Gesamtgröße des Datenpakets |
Softwarearchitektur für die Kommunikation
Die für die OSE Softwareumgebung relevanten Dateien werden im folgendem Diagramm abgebildet.
Beschreibung der Implementierung
Die OSE Softwareumgebung umfasst drei Themenbereiche. Erstens die Linienerkennung, mit der die Fahrspur berechnet oder die Stopplinie identifiziert wird. Zweitens die Objekterkennung die aus LIDAR Daten berechnet werden (Noch nicht vollständig im Diagramm! | Stand Sprint1 WS22/23). Drittens die Implementierung einer RS-232 Kommunikation mit der rs-232.c-Bibliothek von Teunis van Beelen.
Die Hauptklasse der OSE Softwareumgebung "main.h" ruft die Funktion RS232_SendDataBigEndianFirst() auf, die mit der Funktion RS232_SendByte() aus "RS232Comm.h" das Datenpaket an die dSPACE-Karte schickt. Vom PC wird jeder Parameter in 4 Byte aufgesplittet. Da 3 Parameter versendet werden, werden pro Übertragung 12 Byte benötigt, um die a-,b- und c-Parameter an der dSPACE-Karte zu bilden. Als erstes werden die 4 Byte des a-Parameters empfangen, dann wird des b-Parameter, anschließend der c-Parameter. Um sicher zu stellen, dass der a-Parameter immer als erstes bearbeitet wird, wird einen START_BYTE von PC zu der dSPACE-Karte gesendet. Dieser wird bewusst als 10101010(BIN) = 170(DEC) gewählt. Wichtig zu beachten ist, dass die Daten im PC als Little-Endian und auf der dSPACE-Karte als Big-Endian gespeichert sind.
Initialisierung auf der dSPACE-Karte
Mit der RTI Toolbox von dSPACE wird eine Simulink-Bibliothek für die serielle Schnittstelle bereitgestellt (Beispiel: ..\Teams\Kom\Demos\DEMO dSPACE Kommunikation). Hierfür sollte das MATLAB®/Simulink online Modell des CCF gestartet werden. Die serielle Kommunikation wird mittels des sogenannten DS1104SER_SETUP -Blocks in Simulink initialisiert, dieser muss im Simulink-Modell enthalten sein. Mit Doppelklick auf den Block können die Einstellungen des Busses konfiguriert werden: Für die Fahrzeugskommunikation wird eine Baudrate von 115200 gewählt, die Kommunikation erfolgt erstmal ohne Handshake (WiSe22/23).
Alte Wiki-Artikel zur Kommunikationsimplementierung:
Übertragen des Spurpolynoms
Kommunikation zwischen PC und dSpace-Karte (vorheriger Ansatz)
Kommunikation und Diagnoseschnittstelle (aktueller Ansatz)
Datenverarbeitung
Für die Datenverarbeitung wird einen S-Function in Simulink erstellt. Die Funktion hat den Zweck die Daten zu interpretieren und die Spurparameter zu rekonstruieren. Hierfür werden zwei Eingänge benötigt:
- Nutzdata
- Statusbit
und der wesentliche Ausgängen sind:
- a-Parameter
- b-Parameter
- c-Parameter.
Empfangt werden 8-Bit-Zeichen und diese müssen zusammengepfügt werden und einer 32-Bit-Zeichen als Ausgabeparameter zurückgeben. Hierfür werden zwei Zähler in der Funktion benötigt:
- zaehler_param
- zaehler_uebertragung
Der erste Zähler wird für die Zusammenfügung der Parameter benötig. Diese wird ein wert von 0 bis 3 einnehmen. Um ein 32-Bit-Zeichen wird erst 4 mal 8-Bit-Zeichen empfängt. Der zweite Zähler wird für die Übertragung von alle Spurparameter verwendet. Dieser nimmt den Wert von 1 bis 12 ein.
Als erstes werden immer die Daten als 8-Bit-Zeichen empfängt. Die Datenverarbeitung fängt, wenn der Start_Flag gesetzt ist. Dieser wird nur gesetzt wenn:
- der empfängte Byte der Start Byte (170) entspricht
- der Start_Flag und der Parameter Zähler null sind
Wenn der Flag gesetzt ist, fangen sowohl der Übertragungs- als auch der Parameterzähler hochzuzählen. Der Parameterzähler fasst immer 4-Datenbyte zusammen, dies ergibt einen Spurparameter. Der a-Parameter wird nach 4 Durchläufe komplett zusammengebaut, der b-Parameter nach 8 und der c-Parameter nach 12. Anschließend werden die alle Variablen der Funktion auf null zurückgesetzt.
Anleitung für das ONLINE-Modell
- Nutzen sie bitte MATLAB 2019b
- Achten Sie bitte auf der Solver des Blocks --> Fixed Step nicht auf auto
- Lesen Sie die Wiki-Artikeln durch
- Notieren Sie Fehlermeldungen und Warnings
- Warnings sind sofort zu beseitigen beim Erstellen einer neuen Bibliothek!
Tutorial - Bussysteme in Matlab
Autor: John Kneib
Verbindung zum Fahrzeug
VNC-Verbindung
Von Simulink zu ControlDesk
Aufbau einer virtuellen Kommunikationsumgebung
Fehlermeldung MSVCP140D bei ComTest.exe
Autor: Tim Schonlau, Changlai Bao in WS2022/23
Beim ersten Start fehlen bestimmte Windows Bibliotheken. Das Kompilieren der Datei "ComTest.vcxproj" mit Visual Studio (2019) löst das Problem.
LiDAR
Objekterkennung mit LiDAR Hokuyo URG-04LX
Autor: Michael Deitel Manuel Groß Bearbeitet von: Benedikt Wulowitsch, John Kneib
Inbetriebnahme und Objekterkennung des LiDAR Hokuyo URG-04LX in MATLAB
Autor: Yu Peng
Inbetriebnahme und Objekterkennung des RP Lidar A1M8 in MATLAB
Autor:Thomas Miska
Kommunikation Hokuyo LiDAR via USB
Autor:Isaac Mpidi Bita
Kamera
Umrechnung von Bildkoordinaten ins Weltkoordinatensystem
Spurerkennung (Vorheriger Ansatz)
Autor: Konstantin Wotschel
Objekterkennung mit Kamera VR-Magic
Autor: Christian Hauke 7. Feb. 2014 (CET)
Bildentzerrung und KOS-Transformation mit OpenCV (aktueller Ansatz)
Autor: Luca Di Lillo, Tim Bexten in SS2019
Tests der Kommunikation
Datum | Link |
---|---|
Februar 2019 | Kommunikation zwischen PC und dSpace-Karte via RS232 |
Januar 2020 | Übertragen des Spurpolynoms |
Januar 2022 | Kommunikation RS232 zwischen PC und DS1104 |
Juli 2022 | Kom - Kommunikation: Test der Kommunikation zw. PC und DS1104 |
Wichtige Dokumenten in SVN
- Schnittstellendokumentation
Im SVN ist der aktuelle Stand der Schnittstelle zwischen dSPACE-1104-Karte und PC dokumentiert.
→ SVN: Schnittstellendokumentation
- Namenskonvetion
Im SVN sind Programmierrichtlinien bezüglich Namenskonvention unter: Programmierrichtlinien: Namenskonvention gespeichert.
→ zurück zum Hauptartikel: Praktikum SDE