Mono-Vision für ein autonomes Fahrzeug: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(35 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 57: Zeile 57:
*[[Software_Planung| PAP Designer Einstieg]]
*[[Software_Planung| PAP Designer Einstieg]]
*[[Software_Versionsverwaltung_mit_SVN| Einführung in SVN]]
*[[Software_Versionsverwaltung_mit_SVN| Einführung in SVN]]
== Projektplan ==
Stand 07.08.: Die Einarbeitung in die Kamera, sowie die API und das bestehende System sind abgeschlossen; eine Inbetriebnahme mittels Visual Studio war ohne die Nutzung von openCV möglich; die Integration in die bestehende Software läuft
[[Datei:Projektplan Nils-Koch Stand-August.png|gerahmt|zentriert]]


== Auswahl Kamerasoftwareversion ==
== Auswahl Kamerasoftwareversion ==
Für die Kamerasoftware und das damit verbundene '''S'''oftware '''D'''evelopment '''K'''it werden 3 unterschiedliche Versionen in Betracht gezogen. Die Version 5.0.12 ist aktuell auf den Laborrechnern instaliert. Die Version 6.1.1 ist die aktuellste Version, welche mit 32-bit Betriebssystem kompatibel ist und die Version 7.4.0 ist die aktuellste verfügbare Version (Stand 04.03.2024). Um die Software zu testen wurde die Kamera zunächst über ein Ethernet-Kabel an einen Laborrechner angeschlossen und über den pylon Viewer ein Video gestartet. Hierbei traten bei der ältesten Version schon gravierende Probleme auf, welche einen praktischen Einsatz dieser Version unmöglich machen. Die Versionen 6.1.1 und 7.4.0  
Für die Kamerasoftware und das damit verbundene '''S'''oftware '''D'''evelopment '''K'''it werden 3 unterschiedliche Versionen in Betracht gezogen. Die Version 5.0.12 ist aktuell auf den Laborrechnern instaliert. Die Version 6.1.1 ist die aktuellste Version, welche mit 32-bit Betriebssystem kompatibel ist und die Version 7.4.0 ist die aktuellste verfügbare Version (Stand 04.03.2024). Um die Software zu testen wurde die Kamera zunächst über ein Ethernet-Kabel an einen Laborrechner angeschlossen und über den pylon Viewer ein Video gestartet.  
 
Hierbei traten bei der ältesten Version schon gravierende Probleme auf, welche einen praktischen Einsatz dieser Version unmöglich machen. Der Versuch die Fehler zu beheben blieb erfolglos. Die auftretende Fehlermeldung empfielt das Inter-Packet Delay, also die Zeit zwischen zwei gesendeten Datenpaketen, zu erhöhen, was den Fehler zwar eleminiert, aber die Bildrate erheblich verringert (3-10 fps) und die Reaktionszeit deutlich erhöht (3-5 sek). Mit diesen Werten ist ein Einsatz zur Bildverarbeitung schlicht unmöglich.
 
Die Versionen 6.1.1 weist in diesem Test nur geringfügige Störungen auf. Etwa 0,5% der Frames können nicht richtig übertragen werden. Eine weitere Untersuchung dieser Fehler findet zunächst nicht statt, da eine andere Version nutzbar ist. Außerdem ist die Bildrate etwas geringer als die der Version 7.4.0.
 
Auch die Version 7.4.0 läuft zunächst nicht störunggsfrei. Zu Beginn läuft die Videoübertragung problemlos. Hierbei kann eine Bildrate von 24 fps kontimuiertich gehalten werden. Auch die Reaktionszeit ist mit deutlich unter einer Sekunde gut. Nachdem jedoch ca 4.300 Frames übertragen wurden, also nach ca. 180 Sekunden, verliert das Programm plötzlich die Verbundung zur Kamera. Eine Fehlermeldung des Programms empfiehlt den GigE Configurator auszuführern. Nachdem dieser ausgeführt wurde, tritt das Problem nicht mehr auf. Nach einigen weiteren Tests ergab sich, dass das Problem behoben werden kann, indem die IP-Adresse der Kamera manuell auf einen statischen Wert festgelegt wird. Die Version 7.4.0 kann also genutzt werden.


{| class="wikitable"
{| class="wikitable"
Zeile 67: Zeile 78:
|-
|-
| Pylon 5.0.12 || Fehler bei der Datenübertragung; Bildfehler; Verbindungsverlust ||  
| Pylon 5.0.12 || Fehler bei der Datenübertragung; Bildfehler; Verbindungsverlust ||  
[[Datei:Pylon5.0.12 Fehlerliste.png|mini|Datenübertrageungs- und Verbindungsprobleme]]
[[Datei:Pylon5.0.12 Fehlerliste.png|mini|Datenübertragungs- und Verbindungsprobleme]]
[[Datei:Pylon5.0.12 Bildfehler2.png|mini|Bildfehler]]
[[Datei:Pylon5.0.12 Bildfehler2.png|mini|Bildfehler]]
|-
|-
| Pylon 6.1.1 || ||
| Pylon 6.1.1 || Fehler bei Datenübertragung ||
[[Datei:Pylon6.1.1 Probleme.png|mini|Kamerabild mit Fehler-Log]]
|-
|-
| Pylon 7.4.0 || ||
| Pylon 7.4.0 || Plötzlicher Verbindungsverlust nach ca. 3 Minuten; vorher problemfreie Übertragung ||
[[Datei:Pylon7.4.0.png|mini|problemfreie Übertragung]]
|}
|}
== Installation openCV ==
openCV ist eine Softwarebibliothek, welche in den AMRn genutzt wird, um die Kamerabilder -möglichst in Echtzeit- zu verarbeiten. Hierfür stellt die Bibliothek verschiedene Klassen und Funktionen bereit, welche im Modul Objekt- und Spurerkennung genutzt werden. Um diese Funktionen allerdings nutzen zu können, muss die Bibliothek zunächst auf dem PC installiert werden. Um den vollen Funktionsumfang nutzen zu können, ist die Installation mittels CMake erforderlich. Für unseren Anwendungsfall ist die Installation der Prebuild-Libaries jedoch ausreichend.
Die genutzte Version 4.10.0 kann für Windows [https://github.com/opencv/opencv/releases/tag/4.10.0 hier] heruntergeladen werden. Wenn die .exe nach dem Download gestartet wird, muss nur ein Ziel für die Installation ausgewählt und mit "Extract" bestätigt werden.
Sobald die Installation abgeschlossen ist, ist es wichtig zu beachten, dass Visual Studio, bzw. das jeweilige Projekt auf die Bibliothek zugreifen kann. Hierfür ist die Angabe eine Dateipfads in den Projekteigenschaften nötig. Dieser ist für die bestehenden Projektdateien als <code>$(OPENCV_DIR)\..\..\include</code> festgelegt. Dabei handelt es sich bei <code>$(OPENCV_DIR)</code> um eine System-Umgebungsvariable. Damit diese von Visual Studio korrekt interpretiert werden kann, muss diese in den Systemeinstellungen des PCs angelegt werden.
Hierfür muss über die Windows-Systemeigenschaften im Reiter "Erweitert" das Fenster Umgebungsvariablen geöffnet werden. Hier muss in der Liste "Systemvariablen" zunächst die Variable "Path" ausgewählt werden. Über den Button "Bearbeiten..." wird ein weiteres Fenster geöffnet. Hier muss über den Button "Neu" der Wert <code>Installationsverzeichnis OpenCV\build\x64\vc16\bin</code>(Installationsverzeichnis OpenCV bitte durch das lokale Installationsverzeichnis ersetzen; z.B. <code>D:\opencv</code>) hinzugefügt werden.
Nachdem die Änderung mit dem Button "OK" übernommen wurde, muss über den Button "Neu..." im Bereich Systemvariablen eine weitere Systemvariable hinzugefügt werden. Als Name muss <code>OPENCV_DIR</code> vergeben werden. der Wert muss <code>Installationsverzeichnis OpenCV\build\x64\vc16\</code> sein (auch hier Installationsverzeichnis OpenCV durch das tatsächliche lokale Installationsverzeichnis ersetzen).
Eine detaillierte Schritt-für-Schritt Anleitung auf Englisch inkl. Bebilderung ist hier in Kapitel 3 zu finden: [[Medium:AW00136803000 Getting Started with pylon 6 and OpenCV.pdf|Erste Schritte mit pylon und OpenCV]] (Bitte beachten, dass andere Pylon- und OpenCV-Versionen verwendet werden und einige Variablen dadurch abweichen können)
== Inbetriebnahme der Kamera über ein VS-Projekt ==
[[Datei:Screenshot 2024-09-09 192603.png|mini|rechts|Plattformtoolset in den Projekteigenschaften]]
Dank guter Beispielprogramme des Herstellers, sowie einer umfassenden [https://docs.baslerweb.com/software Dokumentation] war das Erstellen eines einfachen Programmes, welches die Kamera startet, wichtige Einstellungen vorgibt, und anschließend das Livebild der Kamera anzeigt ohne größere Probleme möglich. Das Kamerabild ist flüssig und die Übertragung läuft auch über längere Zeit störungsfrei. Die Verzögerung ist minimal.
Das Programm ist im SVN-Repository zu finden. Das Programm wurde ursprünglich in VS2022 erstellt, kann jedoch auch mit VS2019 kompiliert werden. Hierfür muss das jeweils installierte Plattformtoolset (v143 für VS2022 und v142 für VS2019) in den Projekteigenschaften ausgewählt werden (siehe Abbildung rechts). Außerdem muss Basler Pylon in der [https://www2.baslerweb.com/de/downloads/downloads-software/software-pylon-7-5-0-windows/ Version 7.5.0] oder neuer installiert sein. Für diesen wird bei der Installation der Software automatisch eine Systemvariable<code>$(PYLON_DEV_DIR)</code> vergeben, damit nur ein allgemeiner Verweis im Projekt nötig ist.
== Integration der Kamera in das bestehende Projekt ==
Nach der erfolgreichen Inbetriebnahme, steht nun die tatsächliche Integration in das bestehende Projekt an. Hierfür wurde im SVN-Repositorium der Branch <code>2024_07_13_OSE_Einbindung_neue_Kamera</code> angelegt, in welchem die Integration schrittweise durchgeführt wird.
Diese Aufgabe stellt sicherlich den umfangreichsten Teil der Arbeit dar.


== Nützliche Artikel ==
== Nützliche Artikel ==

Aktuelle Version vom 25. September 2024, 14:54 Uhr

Abb. 1: Basler GigE Vision System
Autor: Nils Koch
Modul: Projektarbeit, MTR-B-2-6.01
Starttermin: 29.01.2024
Abgabetermin: 31.05.2024
Prüfungsform: Modulabschlussprüfung als Hausarbeit (Praxisbericht, Umfang 30-50 Seiten Textteil)
Betreuer: Prof. Dr.-Ing. Schneider, Tel. 806
Mitarbeiter: Marc Ebmeyer, Tel. 847

Einführung

Für das SDE Praktikum werden drei autonome Fahrzeuge im Maßstab 1:10 aufgebaut. Zwei davon verfügen bereits über dieselbe Kamera (). Da diese nicht mehr lieferbar ist, wird das dritte Fahrzeug mit einer Basler acA2000-50gc Kamera ausgestattet. Die Bildverarbeitung soll zukünftig für alle Systeme identisch sein. Bei Start der Kamerasoftware auf dem Fahrzeug-PC soll die verbaute Kamera automatisch identifiziert werden und die dazugehörigen Parameter geladen werden.

Aufgabenstellung

  1. Einarbeitung in das bestehende System
  2. Morphologischer Kasten der möglichen Optionen (Version von openCV, VisualStudio, Kameratreiber, x64,...)
  3. Bewertung und Auswahl einer Option - Besprechung mit Prof. Schneider
  4. Umsetzung in Visual Studio mit OpenCV
  5. Übernahme der bestehenden Bildverarbeitungssoftware im neuen System
  6. Systemtests (Kompatibilitätstests) aller 3 Fahrzeuge
  7. Optimierung
  8. Dokumentation im HSHL-Wiki


Anforderungen

Das Projekt erfordert Vorwissen in den nachfolgenden Themengebieten. Sollten Sie die Anforderungen nicht erfüllen müssen Sie sich diese Kenntnisse anhand im Rahmen der Arbeit anhand von Literatur/Online-Kursen selbst aneignen.

  • Bildverarbeitung mit openCV
  • Programmierung C++
  • Dokumentenversionierung mit SVN

Anforderungen an die wissenschaftliche Arbeit

SVN-Repositorium

Getting started

Lesen Sie zum Einstieg diese Artikel

Projektplan

Stand 07.08.: Die Einarbeitung in die Kamera, sowie die API und das bestehende System sind abgeschlossen; eine Inbetriebnahme mittels Visual Studio war ohne die Nutzung von openCV möglich; die Integration in die bestehende Software läuft

Auswahl Kamerasoftwareversion

Für die Kamerasoftware und das damit verbundene Software Development Kit werden 3 unterschiedliche Versionen in Betracht gezogen. Die Version 5.0.12 ist aktuell auf den Laborrechnern instaliert. Die Version 6.1.1 ist die aktuellste Version, welche mit 32-bit Betriebssystem kompatibel ist und die Version 7.4.0 ist die aktuellste verfügbare Version (Stand 04.03.2024). Um die Software zu testen wurde die Kamera zunächst über ein Ethernet-Kabel an einen Laborrechner angeschlossen und über den pylon Viewer ein Video gestartet.

Hierbei traten bei der ältesten Version schon gravierende Probleme auf, welche einen praktischen Einsatz dieser Version unmöglich machen. Der Versuch die Fehler zu beheben blieb erfolglos. Die auftretende Fehlermeldung empfielt das Inter-Packet Delay, also die Zeit zwischen zwei gesendeten Datenpaketen, zu erhöhen, was den Fehler zwar eleminiert, aber die Bildrate erheblich verringert (3-10 fps) und die Reaktionszeit deutlich erhöht (3-5 sek). Mit diesen Werten ist ein Einsatz zur Bildverarbeitung schlicht unmöglich.

Die Versionen 6.1.1 weist in diesem Test nur geringfügige Störungen auf. Etwa 0,5% der Frames können nicht richtig übertragen werden. Eine weitere Untersuchung dieser Fehler findet zunächst nicht statt, da eine andere Version nutzbar ist. Außerdem ist die Bildrate etwas geringer als die der Version 7.4.0.

Auch die Version 7.4.0 läuft zunächst nicht störunggsfrei. Zu Beginn läuft die Videoübertragung problemlos. Hierbei kann eine Bildrate von 24 fps kontimuiertich gehalten werden. Auch die Reaktionszeit ist mit deutlich unter einer Sekunde gut. Nachdem jedoch ca 4.300 Frames übertragen wurden, also nach ca. 180 Sekunden, verliert das Programm plötzlich die Verbundung zur Kamera. Eine Fehlermeldung des Programms empfiehlt den GigE Configurator auszuführern. Nachdem dieser ausgeführt wurde, tritt das Problem nicht mehr auf. Nach einigen weiteren Tests ergab sich, dass das Problem behoben werden kann, indem die IP-Adresse der Kamera manuell auf einen statischen Wert festgelegt wird. Die Version 7.4.0 kann also genutzt werden.

Übersicht der überprüften Versionen
Version Probleme Bilder
Pylon 5.0.12 Fehler bei der Datenübertragung; Bildfehler; Verbindungsverlust
Datenübertragungs- und Verbindungsprobleme
Bildfehler
Pylon 6.1.1 Fehler bei Datenübertragung
Kamerabild mit Fehler-Log
Pylon 7.4.0 Plötzlicher Verbindungsverlust nach ca. 3 Minuten; vorher problemfreie Übertragung
problemfreie Übertragung

Installation openCV

openCV ist eine Softwarebibliothek, welche in den AMRn genutzt wird, um die Kamerabilder -möglichst in Echtzeit- zu verarbeiten. Hierfür stellt die Bibliothek verschiedene Klassen und Funktionen bereit, welche im Modul Objekt- und Spurerkennung genutzt werden. Um diese Funktionen allerdings nutzen zu können, muss die Bibliothek zunächst auf dem PC installiert werden. Um den vollen Funktionsumfang nutzen zu können, ist die Installation mittels CMake erforderlich. Für unseren Anwendungsfall ist die Installation der Prebuild-Libaries jedoch ausreichend.

Die genutzte Version 4.10.0 kann für Windows hier heruntergeladen werden. Wenn die .exe nach dem Download gestartet wird, muss nur ein Ziel für die Installation ausgewählt und mit "Extract" bestätigt werden.

Sobald die Installation abgeschlossen ist, ist es wichtig zu beachten, dass Visual Studio, bzw. das jeweilige Projekt auf die Bibliothek zugreifen kann. Hierfür ist die Angabe eine Dateipfads in den Projekteigenschaften nötig. Dieser ist für die bestehenden Projektdateien als $(OPENCV_DIR)\..\..\include festgelegt. Dabei handelt es sich bei $(OPENCV_DIR) um eine System-Umgebungsvariable. Damit diese von Visual Studio korrekt interpretiert werden kann, muss diese in den Systemeinstellungen des PCs angelegt werden.

Hierfür muss über die Windows-Systemeigenschaften im Reiter "Erweitert" das Fenster Umgebungsvariablen geöffnet werden. Hier muss in der Liste "Systemvariablen" zunächst die Variable "Path" ausgewählt werden. Über den Button "Bearbeiten..." wird ein weiteres Fenster geöffnet. Hier muss über den Button "Neu" der Wert Installationsverzeichnis OpenCV\build\x64\vc16\bin(Installationsverzeichnis OpenCV bitte durch das lokale Installationsverzeichnis ersetzen; z.B. D:\opencv) hinzugefügt werden.

Nachdem die Änderung mit dem Button "OK" übernommen wurde, muss über den Button "Neu..." im Bereich Systemvariablen eine weitere Systemvariable hinzugefügt werden. Als Name muss OPENCV_DIR vergeben werden. der Wert muss Installationsverzeichnis OpenCV\build\x64\vc16\ sein (auch hier Installationsverzeichnis OpenCV durch das tatsächliche lokale Installationsverzeichnis ersetzen).

Eine detaillierte Schritt-für-Schritt Anleitung auf Englisch inkl. Bebilderung ist hier in Kapitel 3 zu finden: Erste Schritte mit pylon und OpenCV (Bitte beachten, dass andere Pylon- und OpenCV-Versionen verwendet werden und einige Variablen dadurch abweichen können)

Inbetriebnahme der Kamera über ein VS-Projekt

Plattformtoolset in den Projekteigenschaften

Dank guter Beispielprogramme des Herstellers, sowie einer umfassenden Dokumentation war das Erstellen eines einfachen Programmes, welches die Kamera startet, wichtige Einstellungen vorgibt, und anschließend das Livebild der Kamera anzeigt ohne größere Probleme möglich. Das Kamerabild ist flüssig und die Übertragung läuft auch über längere Zeit störungsfrei. Die Verzögerung ist minimal.

Das Programm ist im SVN-Repository zu finden. Das Programm wurde ursprünglich in VS2022 erstellt, kann jedoch auch mit VS2019 kompiliert werden. Hierfür muss das jeweils installierte Plattformtoolset (v143 für VS2022 und v142 für VS2019) in den Projekteigenschaften ausgewählt werden (siehe Abbildung rechts). Außerdem muss Basler Pylon in der Version 7.5.0 oder neuer installiert sein. Für diesen wird bei der Installation der Software automatisch eine Systemvariable$(PYLON_DEV_DIR) vergeben, damit nur ein allgemeiner Verweis im Projekt nötig ist.

Integration der Kamera in das bestehende Projekt

Nach der erfolgreichen Inbetriebnahme, steht nun die tatsächliche Integration in das bestehende Projekt an. Hierfür wurde im SVN-Repositorium der Branch 2024_07_13_OSE_Einbindung_neue_Kamera angelegt, in welchem die Integration schrittweise durchgeführt wird. Diese Aufgabe stellt sicherlich den umfangreichsten Teil der Arbeit dar.

Nützliche Artikel


→ zurück zum Hauptartikel: Studentische Arbeiten