Objekttracking mit LiDAR: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 100: Zeile 100:
Die Segmentierung liefert eine Segmentliste. Jedes Segment wird an der Objektbildung übergeben, um ein Objekt daraus zu machen. Stellvertreter jedes Objektes ist der Mittelpunkt der Vorderkante. Beim ersten Durchlauf bilden alle Mittelpunkte bzw. Objekte neue Tracks. Hiernach passiert der Prädikitionsschritt des Kalmanfilters
Die Segmentierung liefert eine Segmentliste. Jedes Segment wird an der Objektbildung übergeben, um ein Objekt daraus zu machen. Stellvertreter jedes Objektes ist der Mittelpunkt der Vorderkante. Beim ersten Durchlauf bilden alle Mittelpunkte bzw. Objekte neue Tracks. Hiernach passiert der Prädikitionsschritt des Kalmanfilters


[[Datei:Prediction.PNG|400px|thumb|center]]
[[Datei:Prediction.PNG|400px|thumb|none]]


[[Datei:gain.PNG|400px|thumb|center]]
[[Datei:gain.PNG|400px|thumb|none]]


Sobald eine neue Liste von Objekten ankommt findet eine Datenzuordnung statt über ein Munkres-Algorithmus, um die neuen Objekte den Prädiktionen des Kalman-Filters aus dem vorigen Zyklus zuzuordnen. Zur Vereinfachung der Distanzmatrix, die an dem Munkres übergeben wird, kommt ein euklidisches Gating zum Einsatz. Nach der Datenzuordnung findet der Korrekturschritt des Kalman-Filters statt
Sobald eine neue Liste von Objekten ankommt findet eine Datenzuordnung statt über ein Munkres-Algorithmus, um die neuen Objekte den Prädiktionen des Kalman-Filters aus dem vorigen Zyklus zuzuordnen. Zur Vereinfachung der Distanzmatrix, die an dem Munkres übergeben wird, kommt ein euklidisches Gating zum Einsatz. Nach der Datenzuordnung findet der Korrekturschritt des Kalman-Filters statt
[[Datei:correct.PNG|400px|thumb|center]]
[[Datei:correct.PNG|400px|thumb|none]]
[[Datei:correct2.PNG|400px|thumb|center]]
[[Datei:correct2.PNG|400px|thumb|none]]
Tracks, denen keine Messungen für eine gewisse Anzahl an Durchläufen zugeordnet worden sind, werden gelöscht. Neue Messungen, die keinem bestehenden Track zugeordnet worden sind, bilden neue Tracks. Somit erfolgt die Aktualisierung der Trackliste.
Tracks, denen keine Messungen für eine gewisse Anzahl an Durchläufen zugeordnet worden sind, werden gelöscht. Neue Messungen, die keinem bestehenden Track zugeordnet worden sind, bilden neue Tracks. Somit erfolgt die Aktualisierung der Trackliste.



Version vom 12. Februar 2021, 22:14 Uhr

Autoren: Ahmad Hassan, Lihui Liu

Einleitung

Die Gruppe Hassan/Liu beschäftigt sich im Wintersemester 2020/2021 mit dem Thema Objekterkennung und Objekttracking mit dem Hokuyo LiDAR. Im Sommersemester wurde schon ein Arbeitskonzept dazu entworfen inkl. einem Signalflussplan sowie einem morphologischen Kasten. In dem WS20/21 soll eine Umsetzung dieses Arbeitskonzepts in C/C++ erfolgen. Zuerst kommt die Einbindung bzw. Einrichtung und Ansteuerung des LiDARs in C/C++. Darauffolgend wird die Koordinatentransformation implementiert. Zum Testen des Schnittstellenkommunikationsprinzips wird auch eine Funktion programmiert, die innerhalb des ersten Monats des Semesters eine Dummy Objektliste erstellt, die an die DS1104 verschickt werden kann anhand von dem vom Team Heuer/Kruse entwickelten Kommunikationsframework. Zukünftig dient diese Funktion dem Versand der tatsächlichen, erfassten Objekte und ihrer Attribute. Danach kommt eine Implementierung der Segmentierung. Allerdings wird hier die Successive Edge Following genommen statt der Connected Component Clustering im Gegensatz zu dem aus dem SS20/21 resultierenden Konzept. Anschließend erfolgt die Umsetzung der Komponenten Objektbildung, Datenzuordnung und das Gating. An letzter Stelle findet die Programmierung des Kalman-Filters zur Objektverfolgung und Schätzung der Attribute wie Geschwindigkeit und Beschleunigung der verfolgten Objekte statt. Eine detaillierte Beschreibung der erforderlichen, fachlichen Grundlagen und des entwickelten Konzepts ist im Objekterkennung mit Hokuyo LiDAR zu finden.

Vorgehensweise war, dass Datensätze erstmal mit einer LiDAR C-Anwendung aufgenommen werden. Zweiter Schritt war diese Datensätze in ein MatLab Framework (Offline-Betrieb) einzulesen, in dem die von den oben erwähnten Komponenten verarbeitet werden. Ziel dahinter war die Verifikation der Lauffähigkeit einer Funktion vor Beginn der Überführung dieser Funktion in C/C++

Alternativer Text


Eine Auflistung der Aufgaben zu den entsprechenden Meilensteinen ist unten ersichtlich.

  1. Meilenstein 3:
    1. Implementierung der Einbindung und Ansteuerung des Hokuyo LiDAR
    2. Implementierung der Koordinatentransformation
    3. Testdokumentation der Koordinatentransformation
    4. Versand einer Dummy-Objektliste an DS1104
    5. Implementierung der Segmentierung (Connected Component Clustering)
    6. Erstellen eines PAPs zum L-Shape Fitting Algorithmus
  2. Meilenstein 4:
    1. Implementierung des L-Shape Fitting Algorithmus
    2. Implementierung des Kalman Filters
    3. Attribute schätzen
    4. Versand der echten Objektlisten an die dSpace-Karte
    5. Dokumentation im Wiki

Anforderungen

Abbildung 2.1: der Anforderung
Abbildung 2.2: der Anforderung
Abbildung 2.3: der Anforderung

Pflichten

Die vorgenommenen Pflichten zeigen die folgenden Abbildungen:

Abbildung 3.1: Pflichtheft Teil1
Abbildung 3.2: Pflichtheft Teil2
Abbildung 3.3: Pflichtheft Teil3


Funktionaler Systementwurf / Technischer Systementwurf

Inbetriebnahme und Ansteuerung des LiDARs

Koordinatentransformation

Erstellung einer Dummy Objektliste zum Testen des Schnittstellenkommunikationsprinzips für LiDAR Daten

Um das Kommunikationsprinzip von dem Team Heuer/Kruse im Hinblick auf LiDAR Objekte ohne Integration zu testen, werden Dummyparameter in Form einer Objektliste generiert.Diese sieht folgendermaßen aus.

Signal Bedeutung Datentype
nObjekte Gesamtanzahl der relevanten Objekte (max. 5) u8
Objekt[n].Nummer Objektzähler u8
Objekt[n].x0 x-Koordinate des Objektmittelpunktes (mitte, vorn) f32
Objekt[n].y0 y-Koordinate des Objektmittelpunktes (mitte, vorn) f32
Objekt[n].b Objektbreite f32
Objekt[n].t Objekttiefe f32
Objekt[n].alpha Objektausrichtung f32
Objekt[n].v Betrag des Geschwindigkeitsvektors f32
Objekt[n].Plausibel Vertrauenswert für das Objekt (100: 100% vertrauenswürdig) u8


Segmentierung: Successive Edge Following

Objektbildung

In diesem Artikel werden verschiedene Fahrtszenarien dargestellt. Darauf aufbauend wird ein Ansatz zur Objektbildung bzw. Beschreibung der Hindernisse entwickelt.
Hier gehts zu Artikel Objektbildung

Tracking

Die Segmentierung liefert eine Segmentliste. Jedes Segment wird an der Objektbildung übergeben, um ein Objekt daraus zu machen. Stellvertreter jedes Objektes ist der Mittelpunkt der Vorderkante. Beim ersten Durchlauf bilden alle Mittelpunkte bzw. Objekte neue Tracks. Hiernach passiert der Prädikitionsschritt des Kalmanfilters

Sobald eine neue Liste von Objekten ankommt findet eine Datenzuordnung statt über ein Munkres-Algorithmus, um die neuen Objekte den Prädiktionen des Kalman-Filters aus dem vorigen Zyklus zuzuordnen. Zur Vereinfachung der Distanzmatrix, die an dem Munkres übergeben wird, kommt ein euklidisches Gating zum Einsatz. Nach der Datenzuordnung findet der Korrekturschritt des Kalman-Filters statt

Tracks, denen keine Messungen für eine gewisse Anzahl an Durchläufen zugeordnet worden sind, werden gelöscht. Neue Messungen, die keinem bestehenden Track zugeordnet worden sind, bilden neue Tracks. Somit erfolgt die Aktualisierung der Trackliste.

Programmierung (Hier pro Modul Code-Snippets und Erklärung)

Inbetriebnahme und Ansteuerung des LiDARs

Koordinatentransformation

[1]

Erstellung einer Dummy Objektliste zum Testen des Schnittstellenkommunikationsprinzips für LiDAR Daten

In diesem Artikel beschreibt die Erstellung einer Dummy Objektliste in Visual Studio.
Hier gehts zu Artikel Erstellung einer Dummy Objektliste zum Testen des Schnittstellenkommunikationsprinzips für LiDAR Daten

Segmentierung: Connected Component Clustering

Objektbildung

In diesem Artikel wird die Durchführung der Objektbildung erklärt.
Hier gehts zu Artikel Durchführung der Objektbildung

Objekttracking: Kalman Filter

Komponententest

Zusammenfassung

Ausblick

Link zum Quelltext in SVN

Literaturverzeichnis


→ zurück zum Gruppenartikel: SDE-Team_2020/21
→ zurück zum Hauptartikel: SDE Praktikum Autonomes Fahren