Objekterkennung mit Hokuyo LiDAR: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(100 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:LiDAR]] | |||
'''Autoren:''' [[Benutzer:Ahmad Hassan|Ahmad Hassan]] und [[Benutzer:Alexander Schirrmeister|Alexander Schirrmeister]] | '''Autoren:''' [[Benutzer:Ahmad Hassan|Ahmad Hassan]] und [[Benutzer:Alexander Schirrmeister|Alexander Schirrmeister]] | ||
== Einleitung == | == Einleitung == | ||
Die Gruppe Hassan/Schirrmeister bearbeiten im Sommersemester 2020 die Objekterkennung mit dem Hokuyo LiDAR. Aufgrund der aktuellen Lage rund um das Coronavirus erlaubt es nicht direkt mit dem Sensor zu arbeiten. Als Mittelweg werden hier bereits aufgezeichnete Messdaten zur Auswertung herangezogen. Aufgabe ist es anhand der vorliegenden Daten Objekte zu erkennen und zu verfolgen. Im ersten Schritt erfolgt die Auswertung der Arbeiten aus den Vorsemestern und einer Beurteilung des aktuellen Zustands der Aufgabe. Eine Auflistung von Meilensteinaufgaben ist unten ersichtlich. | Die Gruppe Hassan/Schirrmeister bearbeiten im Sommersemester 2020 die Objekterkennung mit dem Hokuyo LiDAR. Aufgrund der aktuellen Lage rund um das Coronavirus erlaubt es nicht direkt mit dem Sensor zu arbeiten. Als Mittelweg werden hier bereits aufgezeichnete Messdaten zur Auswertung herangezogen. Aufgabe ist es anhand der vorliegenden Daten Objekte zu erkennen und zu verfolgen. Im ersten Schritt erfolgt die Auswertung der Arbeiten aus den Vorsemestern und einer Beurteilung des aktuellen Zustands der Aufgabe. Eine Auflistung von Meilensteinaufgaben ist unten ersichtlich. | ||
Zeile 14: | Zeile 15: | ||
## Testdokumentation der Objektbildung | ## Testdokumentation der Objektbildung | ||
## Meilenstein 2: | ## Meilenstein 2: | ||
## Objekttracking | ## Ausführliche Literaturrecherche zur Ermittlung von verschiedenen Algorithmen zur Segmentierung, Objektbildung und Objekttracking | ||
## | ## Beurteilung der Ergebnisse der Literaturrecherche | ||
## | ## Signalflussplan | ||
## | ## Morphologischer Kasten | ||
## Dokumentation im Wiki | ## Dokumentation im Wiki | ||
== Anforderungen | == Anforderungen== | ||
=== Fahrt auf Rundstrecke mit statischen Hindernissen === | === Fahrt auf Rundstrecke mit statischen Hindernissen === | ||
[[Datei:CCF_REQ10_2330.PNG]] | [[Datei:CCF_REQ10_2330.PNG]] | ||
Zeile 28: | Zeile 29: | ||
== Ziele / Pflichten == | == Ziele / Pflichten == | ||
[[Datei:Pflichten SDE Praktikum MS1.PNG |1050px|thumb|center]] | |||
[[Datei:Aktualisierte Pflichten zum MS2 Hassan Schirrmeister.PNG |1050px|thumb|center]] | |||
== Requirements == | |||
Folgende Anforderungen wurden an die Objekterkennung mit Hokuyo LiDAR gestellt: | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | ID | |||
! style="font-weight: bold;" | Inhalt | |||
! style="font-weight: bold;" | Ersteller | |||
! style="font-weight: bold;" | Datum | |||
! style="font-weight: bold;" | Geprüft von | |||
! style="font-weight: bold;" | Datum | |||
|- | |||
| 1 | |||
| Die LiDAR-Objekterkennung muss als zyklischer Task aufgerufen werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 2 | |||
| Die erfassten Messwerte müssen auf Region of Interest und Rauschen gefiltert werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 3 | |||
| Die erfassten Messwerte müssen von Polarkoordinaten des LiDARs in das kartesische Koordinatensystem des Autos transformiert werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 4 | |||
| Die entstandene Punktewolke muss in Segmente unterteilt werden (Segmentierung). | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 5 | |||
| Die Punkte der jeweiligen Segmente müssen in einer einheitlichen Farbe gekennzeichnet werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 6 | |||
| Auf die geometrischen Beschaffenheiten der erfassten Segmente muss eine Boundingbox aufgebaut werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 7 | |||
| Objekt-Pose (Entfernung und Ausrichtung) muss ermittelt werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 8 | |||
| Bereits bestehende Objekte müssen z.B. durch einen Kalmanfilter getrackt werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 9 | |||
| Parameter der erkannten Objekte müssen abgeschätzt werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 10 | |||
| Neue und aktuelle Objekt-Posen und Parameter müssen in Objektliste überführt werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 11 | |||
| Eingangsgrößen der Funktion <code>LiDAR_Objekttracking.m</code> sind | |||
# Messpunkte der LiDAR-Sweeps: LiDAR_Values | |||
# Parameter (a,b,c) der Fahrspur | |||
# Spurzuordnung (0,1) | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 12 | |||
| Ausgangsgrößen der Funktion <code>LiDAR_Objekttracking.m</code> sind | |||
Gesamtzahl relevanter Objekte (max. 5) | |||
# Objektliste mit folgenden Parametern: | |||
## Objekt.Nummer | |||
## Objekt.x | |||
## Objekt.y | |||
## Objekt.b | |||
## Objekt.t | |||
## Objekt.alpha | |||
## Objekt.v | |||
## Objekt.Plausibel | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
| 13 | |||
| Bei Kommentierung und Dokumentation muss sich an die Projektrichtlinien gehalten werden. | |||
| Alexander Schirrmeister | |||
| 03.06.2020 | |||
| Hr. Hassan | |||
| --- | |||
|- | |||
|} | |||
== | == Funktionaler Systementwurf / Technischer Systementwurf == | ||
=== | === Theoretische Grundlagen === | ||
Die theoretischen Grundlagen sollen einen Umriss dessen geben, welche Ansätze im Zuge dieser Arbeit recherchiert wurden. In den Abschnitten der Segmentierungs-, Objektbildungs- und Objekttrackingverfahren wurde sich sehr eng an den der Masterthesis "3D-LIDAR Multi Object Tracking for Autonomous Driving - Multi-target Detection and Tracking under Urban Road Uncertanties" orientiert, da die Ausführungen sehr gut verschiedene Ansätze abwägt und Schwächen und Stärken aufzeigt. | |||
=== | ==== Koordinatentransformation ==== | ||
Um die Position bzw. Orientierung eines Objektes im Raum beschreiben zu können, muss zuerst ein Koordinatensystem in diesem Raum festgelegt werden. Das kartesische Koordinatensystem benutzt zum Beispiel x- und y-Koordinaten, um die Position eines Objektes darzustellen. Das Polarkoordinatensystem benutzt im Gegensatz dazu die radiale Entfernung vom Ursprung zum Objekt sowie den Objektwinkel. Manchmal ist eine Transfromation der einen Koordinatensystemsart in die andere von Bedeutung. Ein anderer Sachverhalt, wo eine Koordinatentransformation auch erforderlich wäre, wäre von dem kartesischen Koordinatensystem eines Sensors in das kartesische Weltkoordinatensystem oder Fahrzeugskoordinatensystem. Hat ein Objekt die Position A in Relation zum Sensorkoordinatensystem, ist diese Position anders zu beschreiben in Relation zum Weltkoordinatensystem zum Beispiel. | |||
Der Hokuyo LiDAR bietet einen Sichtbereich von 240 Grad. Es sind dementsprechend Winkelmessungen von -120° bis hinzu +120° möglich. Die Totzone beträgt also 120°. Die Winkelauflösung beträgt 0.3515625° (360° /1024 Messschritte). Mit der Vorderachse des Sensors als Messreferenz entspricht der Schritt 384 dem Sensorwinkel 0° während die Schritte 44 und 725 die Winkelmessungen -120° bzw. +120° darstellen. Dies zeigt auch die Abbildung 1 [[Datei:Field_of_View_LiDAR.jpg |200px|thumb|right|Abb.: 1 Sichtbereich des LiDARs]]. | |||
Der Hokuyo LiDAR liefert die Messpunkte in Form von Schrägentfernungen zu umgebenden Objekten in Millimetern, wobei jeder Schrägentfernung eine Schrittnummer zugewiesen ist. Die Schrittnummer ist quasi der Index der Entfernungsmessung und deutet darauf hin, was das erfasste Objekt für einen Winkel hat. Die von dem Sensor bereitgestellten Messungen sind daher in dem Polarkoordinaten. Es ist deswegen eine Koordinatentransformation von dem Polarkoordinatensystem des Sensors in das kartesische Koordinatensystem des Fahrzeugs erforderlich, bevor die ermittelten Messpunkte verarbeitet oder segmentiert werden können. | |||
=== | Zunächst findet die Koordinatentransformation der Messpunkte von dem Polarkoordinatensystem des LiDARs in das kartesische Koordinatensystem des LiDARs. Das kartesische Koordinatensystem des LiDARs kennzeichnet sich dadurch, dass die x-Achse positiv in Fahrtrichtung und die y-Achse positiv nach links zeigt. Da die x-Achse die Messreferenz bzw. den Winkel 0° darstellt, können die folgenden Formeln eingesetzt werden, um von dem Polarkoordinatensystem des Sensors in sein kartesisches Koordinatensystem zu kommen. Die Teilung durch 1000 entspricht einer Umrechnung von mm in m. | ||
x = (Entfernung/1000)*cos(θ) | |||
y = (Entfernung/1000)*sin(θ) | |||
Darauffolgend erolgt die Translation der sich aus der Rotation ergebenden Achsen mit dem folgenden Translationsvektor.<br><br> | |||
<math>T = \begin{pmatrix} | |||
0.14\\ | |||
0.08 | |||
\end{pmatrix}</math> <br><br> | |||
==== Datenvorverarbeitung ==== | |||
Vorab sollte aufkommendes "Salt and Pepper" Rauschen herausgefiltert werden um Fehlinterpretationen des Algorithmus zu verhindern. Dies kann zum Beispiel über einen Median-Filter realisiert werden. | |||
==== Segmentierung ==== | |||
In Hinblick auf die von dem LiDAR ermittelten Punktwolken bedeutet die Segmentierung die Gruppierung von Messpunkten unter Beachtung einer bestimmten Bedingung zu sogenannten Clusters, wobei ein Cluster ein Objekt darstellt. | |||
Segmentierungsverfahren lassen sich grob in Grid-Basierte und Objekt-Basierte Segmentierungsverfahren einteilen. | |||
Bei gridbasierten Verfahren werden Kacheln auf das "Sichtfeld" projeziert. Liegen Messpunkte in einer Kachel, so gilt diese Kachel als belegt. Belegte benachbarte Kacheln werden einem Segment zugeordnet. Über die Messung von Ausrichtung und Geschwindigkeit der Punkte in den jeweiligen Segmenten, kann auf zukünftige von diesem Segment belegte Kacheln geschlossen werden. Diese Art der Segmentierung ist in Anbetracht der Weiterverarbeitung zwar einfacher, ist allerdings in seiner Darstellung dynamischer Objekte eingeschränkt. Damit fallen grid-basierte Verfahren für die Anwendung von komplexeren Verfahren weniger gut geeignet. | |||
Objektbasierte Verfahren beruhen auf einem Punktmodell. Anders als bei gridbasierten Verfahren, verläuft die Segmentierung mit mehreren Schritten. Zuerst werden die Rohdaten des Sensors gefiltert, um relevante Messwerte von irrelevanten Messwerten (z.B. Punktreflexionen) zu trennen. Darauf folgend, werden Messpunkte zu Clustern zusammengefasst. Da der Sensor nur 2D Informationen zur Verfügung stellt, sollte auf ein 2D-Clusterverfahren zurückgegriffen werden. Weitverbreitete Verfahren wie zum Beispiel DBSCAN sind bieten zwar umfassendes 3D-Clustering, aber sind aufgrund hoher Komplexität der begrenzten Rechenkapazitäten nicht ratsam. | |||
==== Objektbildung ==== | |||
Nachdem die aufgefassten Punkte geclustert wurde, befindet man sich im Schritt der Objektbildung bzw. Abschätzung der Objektpose. Diesen Schritt kann man in zwei Varianten - modellbasiert und merkmalbasiert - unterteilen. Ziel ist es, erkannte Cluster mit einer Bounding Box zu umrahmen und Informationen wie Abmessungen, Ausrichtung, Geschwindigkeit und Beschleunigung zu ermitteln. | |||
Modellbasierte Objektbildung versucht mittels der "Best-Fit"-Methode einem Cluster in iterativer Weise eine möglichst optimale Pose zuzuordnen. Diese Variante bedarf allerdings einer relativ hohen Rechenzeit und dient nicht mehr dem Ziel möglichst in Echtzeit zu agieren. | |||
Merkmalbasierte Objektbildung leitet aus Merkmalen eines Clusters, wie z.B. am weitesten außenliegenden Punkten eines L-Clusters, Kanteninformationen ab um aufgrund dieser ein Rechteck mit möglichst kleiner Fläche zu bestimmen. Hinzu kommt, dass merkmalbasierte Objektbildungsverfahren als weniger rechenintensiv gelten und für diesen Usecase eher in Frage käme. | |||
==== Objekttracking ==== | |||
Aufgrund beliebiger Komplexität des Themas Objekttracking, wird in erster Linie auf Filter der Zustandsschätzung und Messdaten-Verfikation eingegangen. Diese können bei auftretenden Problemen in Unit-Tests der Implementierung mit weiteren Filtern kombiniert werden um eine robusteres Objekttracking zu realisieren. | |||
Die Bayes-Methode zählt zu einer der populärsten Methoden für Modellbeschreibungen, wie z.B. Zustandsschätzungen. | |||
Das Kalman-Filter (KF) ist die Anwendung der Bayes Methode zur rekursiven Parameter- /Zustandsschätzung. | |||
Für nicht-lineare Anwendungsbereiche werden Abwandlungen des KF - Extended Kalman-Filter (EKF) und Unscented Kalman-Filter (UKF) - genutzt. | |||
Das EKF nutzt Taylor-Reihen um nicht-lineare Systeme zu beschreiben. Diese Linearisierung kann zu einer erhöhten Rechenzeit führen und könnte im Kontext der Echtzeitanwendung zu Problemen führen. | |||
Das UKF lässt die Linearisierung des nicht-linearen Modells aus und apporximiert Zustände des Modells über die Standardabweichung der gausschen Normalverteilung der Punkte. Diese Approximation ist weniger aufwändig als die Linearisierung des Extended Kalman-Filters, was den UKF "echtzeit-freundlicher" macht. | |||
Im Falle des Praktikums bestehen zur Zeit nur statische Hindernisse auf der Fahrbahn. Hier ist das lineare Kalman-Filter also ausreichend. | |||
Zur Data Assoziation soll ein JPDA-Filter eingesetzt werden um eine Zuordnung von neuen Datenpunkten bereits bekannten Objekten zu ermöglichen. | |||
=== Signalflussplan === | |||
Zum besseren Verständnis der vom System zu erfüllenden Gesamtaufgabe werden die Schritte der Datenverarbeitung vom LiDAR bishin zur Schnittstelle zu anderen Softwaremodulen in einem Signalflussplan dargestellt. | |||
Wie auch die Software, ist der Signalflussplan von iterativen Änderungen nicht ausgeschlossen und wird daher im SVN als bearbeitbares Dokument bereitgestellt. Die Bearbeitung des Signalflussplans fand im PAP-Designer statt. Der aktuelle Stand des Signalflussplans ist in der Abb. 2 ersichtlich. | |||
[[Datei:LiDARTracking.png|200px|thumb|right|Abb.: 2 Signalflussplan]] | |||
=== Morphologischer Kasten === | |||
[[Datei:MK_Abbildung.PNG|1000px|thumb|center|Abb. 3: Morphologischer Kasten]] | |||
== Komponentenspezifikation == | |||
Das Script "LiDAR_Objekttracking.m" wird im Verbund mit allen seiner Funktionsaufrufe als eigenes Skript bestehen und später in C++ von Hand überführt oder generiert. | |||
Output des Skripts ist eine Objektliste mit den Oben in "Requirements" angegebenen Daten von bis zu 5 Objekten. Diese Liste steht anderen Modulen an der RS-232 Schnittstelle zur Verfügung. | |||
== Programmierung == | |||
Die Funktionsprototypen für die Objektverfolgung wurden in einem Matlab-Objekt angelegt. In der beistehenden Abbildung können die Abhängigkeiten der Funktionsprototypen erkannt werden. | |||
Diese sind unter dem SVN Pfad "Teams\OSE\OSE_LiDAR_Tracking\LiDAR_Tracking" zu finden. | |||
[[Datei:LiDAR_ObjektTracking_Graph.jpg|200px|thumb|right|Abb. 4: Funktionsabhängigkeiten]] | |||
=== Initialisierung === | |||
=== Aktualisierung === | |||
== Komponententest == | |||
== Zusammenfassung == | == Zusammenfassung == | ||
=== Ausblick === | === Ausblick === | ||
Nach Entwicklung eines Konzeptes wird nun in den folgenden Meilensteinen die Implementierung der Funktionen erfolgen, sodass ein Verifikation mit aufgezeichneten Testsets erfolgen kann. | |||
Das Konzept (Signalflussplan und morphologischer Kasten) kann sich im laufe der Implementierung weiterhin anpassen und steht zur Bearbeitung im SVN unter dem Pfad "\Teams\OSE\OSE_LiDAR_Tracking" zur verfügung. | |||
=== Offene Punkte === | === Offene Punkte === | ||
* Funktionsrümpfe mit Funktion füllen | |||
* Dokumentation des entstehenden Codes im Wiki | |||
* Verifikation der Software mit vorhandenen Datensets | |||
* Implementierung in C++ auf dem PC des Fahrzeugs | |||
* Verifikation des Codes im integrierten Zustand | |||
== Link zum Quelltext in SVN == | |||
== Literaturverzeichnis == | == Literaturverzeichnis == | ||
Zeile 53: | Zeile 256: | ||
* [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.46.2456&rep=rep1&type=pdf An optimized segmentation method for a 2D Laser-Scanner applied to mobile robot navigation] | * [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.46.2456&rep=rep1&type=pdf An optimized segmentation method for a 2D Laser-Scanner applied to mobile robot navigation] | ||
* [https://www.researchgate.net/publication/323122919_A_line_segment_extraction_algorithm_using_laser_data_based_on_seeded_region_growing A line segment extraction algorithm using laser data based on seeded region growing] | * [https://www.researchgate.net/publication/323122919_A_line_segment_extraction_algorithm_using_laser_data_based_on_seeded_region_growing A line segment extraction algorithm using laser data based on seeded region growing] | ||
* [https://ieeexplore.ieee.org | * [https://de.mathworks.com/help/stats/dbscan-clustering.html DBSCAN-Clustering] | ||
* [https://de.mathworks.com/help/fusion/examples/track-vehicles-using-lidar.html Track Vehicles Using Lidar: From Point Cloud to Track List] | |||
* [https://journals.sagepub.com/doi/full/10.1177/0278364914562237 Model-free detection and tracking of dynamic objects with 2D lidar] | |||
* [https://www.kalmanfilter.net/default.aspx kalmanfilter.net] | |||
* [http://publications.lib.chalmers.se/records/fulltext/253622/253622.pdf LiDAR Clustering and Shape Extraction for Automotive Applications] | |||
* [https://ieeexplore.ieee.org/document/6664687 Connected Components for a Fast and Robust 2D Lidar Data Segmentation] | |||
* [https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=2ahUKEwjvpevnpa7pAhUGC-wKHY-9B50QFjACegQIARAB&url=https%3A%2F%2Frepository.tudelft.nl%2Fislandora%2Fobject%2Fuuid%3Af536b829-42ae-41d5-968d-13bbaa4ec736%2Fdatastream%2FOBJ%2Fdownload&usg=AOvVaw3F9Qt8KyZERODYdSTdjeoF 3D-LIDAR Multi Object Tracking for Autonomous Driving] | |||
<references /> | <references /> | ||
Zeile 76: | Zeile 285: | ||
* [https://de.mathworks.com/help/fusion/ug/introduction-to-multiple-target-tracking.html Introduction to Multiple Target Tracking] | * [https://de.mathworks.com/help/fusion/ug/introduction-to-multiple-target-tracking.html Introduction to Multiple Target Tracking] | ||
---- | |||
→ zurück zum Hauptartikel: [[Praktikum_SDE|SDE Praktikum Autonomes Fahren]] | → zurück zum Hauptartikel: [[Praktikum_SDE|SDE Praktikum Autonomes Fahren]] |
Aktuelle Version vom 9. November 2022, 12:41 Uhr
Autoren: Ahmad Hassan und Alexander Schirrmeister
Einleitung
Die Gruppe Hassan/Schirrmeister bearbeiten im Sommersemester 2020 die Objekterkennung mit dem Hokuyo LiDAR. Aufgrund der aktuellen Lage rund um das Coronavirus erlaubt es nicht direkt mit dem Sensor zu arbeiten. Als Mittelweg werden hier bereits aufgezeichnete Messdaten zur Auswertung herangezogen. Aufgabe ist es anhand der vorliegenden Daten Objekte zu erkennen und zu verfolgen. Im ersten Schritt erfolgt die Auswertung der Arbeiten aus den Vorsemestern und einer Beurteilung des aktuellen Zustands der Aufgabe. Eine Auflistung von Meilensteinaufgaben ist unten ersichtlich.
- Einarbeitung in dier bestehende Software
- Softwareentwurf in MATLAB
- Meilenstein 1:
- Ansteuerung des Hokuyo LiDAR
- Koordinatentransformation polar- zu karthesisch
- Testdokumentation der KOS-Trafo
- Objektbildung (z.B. Sukzessiv Edge Following)
- Testdokumentation der Objektbildung
- Meilenstein 2:
- Ausführliche Literaturrecherche zur Ermittlung von verschiedenen Algorithmen zur Segmentierung, Objektbildung und Objekttracking
- Beurteilung der Ergebnisse der Literaturrecherche
- Signalflussplan
- Morphologischer Kasten
- Dokumentation im Wiki
Anforderungen
Fahrt auf Rundstrecke mit statischen Hindernissen
Unit-Tests
Ziele / Pflichten
Requirements
Folgende Anforderungen wurden an die Objekterkennung mit Hokuyo LiDAR gestellt:
ID | Inhalt | Ersteller | Datum | Geprüft von | Datum |
---|---|---|---|---|---|
1 | Die LiDAR-Objekterkennung muss als zyklischer Task aufgerufen werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
2 | Die erfassten Messwerte müssen auf Region of Interest und Rauschen gefiltert werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
3 | Die erfassten Messwerte müssen von Polarkoordinaten des LiDARs in das kartesische Koordinatensystem des Autos transformiert werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
4 | Die entstandene Punktewolke muss in Segmente unterteilt werden (Segmentierung). | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
5 | Die Punkte der jeweiligen Segmente müssen in einer einheitlichen Farbe gekennzeichnet werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
6 | Auf die geometrischen Beschaffenheiten der erfassten Segmente muss eine Boundingbox aufgebaut werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
7 | Objekt-Pose (Entfernung und Ausrichtung) muss ermittelt werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
8 | Bereits bestehende Objekte müssen z.B. durch einen Kalmanfilter getrackt werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
9 | Parameter der erkannten Objekte müssen abgeschätzt werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
10 | Neue und aktuelle Objekt-Posen und Parameter müssen in Objektliste überführt werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
11 | Eingangsgrößen der Funktion LiDAR_Objekttracking.m sind
|
Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
12 | Ausgangsgrößen der Funktion LiDAR_Objekttracking.m sind
Gesamtzahl relevanter Objekte (max. 5)
|
Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
13 | Bei Kommentierung und Dokumentation muss sich an die Projektrichtlinien gehalten werden. | Alexander Schirrmeister | 03.06.2020 | Hr. Hassan | --- |
Funktionaler Systementwurf / Technischer Systementwurf
Theoretische Grundlagen
Die theoretischen Grundlagen sollen einen Umriss dessen geben, welche Ansätze im Zuge dieser Arbeit recherchiert wurden. In den Abschnitten der Segmentierungs-, Objektbildungs- und Objekttrackingverfahren wurde sich sehr eng an den der Masterthesis "3D-LIDAR Multi Object Tracking for Autonomous Driving - Multi-target Detection and Tracking under Urban Road Uncertanties" orientiert, da die Ausführungen sehr gut verschiedene Ansätze abwägt und Schwächen und Stärken aufzeigt.
Koordinatentransformation
Um die Position bzw. Orientierung eines Objektes im Raum beschreiben zu können, muss zuerst ein Koordinatensystem in diesem Raum festgelegt werden. Das kartesische Koordinatensystem benutzt zum Beispiel x- und y-Koordinaten, um die Position eines Objektes darzustellen. Das Polarkoordinatensystem benutzt im Gegensatz dazu die radiale Entfernung vom Ursprung zum Objekt sowie den Objektwinkel. Manchmal ist eine Transfromation der einen Koordinatensystemsart in die andere von Bedeutung. Ein anderer Sachverhalt, wo eine Koordinatentransformation auch erforderlich wäre, wäre von dem kartesischen Koordinatensystem eines Sensors in das kartesische Weltkoordinatensystem oder Fahrzeugskoordinatensystem. Hat ein Objekt die Position A in Relation zum Sensorkoordinatensystem, ist diese Position anders zu beschreiben in Relation zum Weltkoordinatensystem zum Beispiel.
Der Hokuyo LiDAR bietet einen Sichtbereich von 240 Grad. Es sind dementsprechend Winkelmessungen von -120° bis hinzu +120° möglich. Die Totzone beträgt also 120°. Die Winkelauflösung beträgt 0.3515625° (360° /1024 Messschritte). Mit der Vorderachse des Sensors als Messreferenz entspricht der Schritt 384 dem Sensorwinkel 0° während die Schritte 44 und 725 die Winkelmessungen -120° bzw. +120° darstellen. Dies zeigt auch die Abbildung 1
.
Der Hokuyo LiDAR liefert die Messpunkte in Form von Schrägentfernungen zu umgebenden Objekten in Millimetern, wobei jeder Schrägentfernung eine Schrittnummer zugewiesen ist. Die Schrittnummer ist quasi der Index der Entfernungsmessung und deutet darauf hin, was das erfasste Objekt für einen Winkel hat. Die von dem Sensor bereitgestellten Messungen sind daher in dem Polarkoordinaten. Es ist deswegen eine Koordinatentransformation von dem Polarkoordinatensystem des Sensors in das kartesische Koordinatensystem des Fahrzeugs erforderlich, bevor die ermittelten Messpunkte verarbeitet oder segmentiert werden können.
Zunächst findet die Koordinatentransformation der Messpunkte von dem Polarkoordinatensystem des LiDARs in das kartesische Koordinatensystem des LiDARs. Das kartesische Koordinatensystem des LiDARs kennzeichnet sich dadurch, dass die x-Achse positiv in Fahrtrichtung und die y-Achse positiv nach links zeigt. Da die x-Achse die Messreferenz bzw. den Winkel 0° darstellt, können die folgenden Formeln eingesetzt werden, um von dem Polarkoordinatensystem des Sensors in sein kartesisches Koordinatensystem zu kommen. Die Teilung durch 1000 entspricht einer Umrechnung von mm in m.
x = (Entfernung/1000)*cos(θ)
y = (Entfernung/1000)*sin(θ)
Darauffolgend erolgt die Translation der sich aus der Rotation ergebenden Achsen mit dem folgenden Translationsvektor.
Datenvorverarbeitung
Vorab sollte aufkommendes "Salt and Pepper" Rauschen herausgefiltert werden um Fehlinterpretationen des Algorithmus zu verhindern. Dies kann zum Beispiel über einen Median-Filter realisiert werden.
Segmentierung
In Hinblick auf die von dem LiDAR ermittelten Punktwolken bedeutet die Segmentierung die Gruppierung von Messpunkten unter Beachtung einer bestimmten Bedingung zu sogenannten Clusters, wobei ein Cluster ein Objekt darstellt. Segmentierungsverfahren lassen sich grob in Grid-Basierte und Objekt-Basierte Segmentierungsverfahren einteilen.
Bei gridbasierten Verfahren werden Kacheln auf das "Sichtfeld" projeziert. Liegen Messpunkte in einer Kachel, so gilt diese Kachel als belegt. Belegte benachbarte Kacheln werden einem Segment zugeordnet. Über die Messung von Ausrichtung und Geschwindigkeit der Punkte in den jeweiligen Segmenten, kann auf zukünftige von diesem Segment belegte Kacheln geschlossen werden. Diese Art der Segmentierung ist in Anbetracht der Weiterverarbeitung zwar einfacher, ist allerdings in seiner Darstellung dynamischer Objekte eingeschränkt. Damit fallen grid-basierte Verfahren für die Anwendung von komplexeren Verfahren weniger gut geeignet.
Objektbasierte Verfahren beruhen auf einem Punktmodell. Anders als bei gridbasierten Verfahren, verläuft die Segmentierung mit mehreren Schritten. Zuerst werden die Rohdaten des Sensors gefiltert, um relevante Messwerte von irrelevanten Messwerten (z.B. Punktreflexionen) zu trennen. Darauf folgend, werden Messpunkte zu Clustern zusammengefasst. Da der Sensor nur 2D Informationen zur Verfügung stellt, sollte auf ein 2D-Clusterverfahren zurückgegriffen werden. Weitverbreitete Verfahren wie zum Beispiel DBSCAN sind bieten zwar umfassendes 3D-Clustering, aber sind aufgrund hoher Komplexität der begrenzten Rechenkapazitäten nicht ratsam.
Objektbildung
Nachdem die aufgefassten Punkte geclustert wurde, befindet man sich im Schritt der Objektbildung bzw. Abschätzung der Objektpose. Diesen Schritt kann man in zwei Varianten - modellbasiert und merkmalbasiert - unterteilen. Ziel ist es, erkannte Cluster mit einer Bounding Box zu umrahmen und Informationen wie Abmessungen, Ausrichtung, Geschwindigkeit und Beschleunigung zu ermitteln.
Modellbasierte Objektbildung versucht mittels der "Best-Fit"-Methode einem Cluster in iterativer Weise eine möglichst optimale Pose zuzuordnen. Diese Variante bedarf allerdings einer relativ hohen Rechenzeit und dient nicht mehr dem Ziel möglichst in Echtzeit zu agieren.
Merkmalbasierte Objektbildung leitet aus Merkmalen eines Clusters, wie z.B. am weitesten außenliegenden Punkten eines L-Clusters, Kanteninformationen ab um aufgrund dieser ein Rechteck mit möglichst kleiner Fläche zu bestimmen. Hinzu kommt, dass merkmalbasierte Objektbildungsverfahren als weniger rechenintensiv gelten und für diesen Usecase eher in Frage käme.
Objekttracking
Aufgrund beliebiger Komplexität des Themas Objekttracking, wird in erster Linie auf Filter der Zustandsschätzung und Messdaten-Verfikation eingegangen. Diese können bei auftretenden Problemen in Unit-Tests der Implementierung mit weiteren Filtern kombiniert werden um eine robusteres Objekttracking zu realisieren.
Die Bayes-Methode zählt zu einer der populärsten Methoden für Modellbeschreibungen, wie z.B. Zustandsschätzungen. Das Kalman-Filter (KF) ist die Anwendung der Bayes Methode zur rekursiven Parameter- /Zustandsschätzung. Für nicht-lineare Anwendungsbereiche werden Abwandlungen des KF - Extended Kalman-Filter (EKF) und Unscented Kalman-Filter (UKF) - genutzt.
Das EKF nutzt Taylor-Reihen um nicht-lineare Systeme zu beschreiben. Diese Linearisierung kann zu einer erhöhten Rechenzeit führen und könnte im Kontext der Echtzeitanwendung zu Problemen führen.
Das UKF lässt die Linearisierung des nicht-linearen Modells aus und apporximiert Zustände des Modells über die Standardabweichung der gausschen Normalverteilung der Punkte. Diese Approximation ist weniger aufwändig als die Linearisierung des Extended Kalman-Filters, was den UKF "echtzeit-freundlicher" macht.
Im Falle des Praktikums bestehen zur Zeit nur statische Hindernisse auf der Fahrbahn. Hier ist das lineare Kalman-Filter also ausreichend.
Zur Data Assoziation soll ein JPDA-Filter eingesetzt werden um eine Zuordnung von neuen Datenpunkten bereits bekannten Objekten zu ermöglichen.
Signalflussplan
Zum besseren Verständnis der vom System zu erfüllenden Gesamtaufgabe werden die Schritte der Datenverarbeitung vom LiDAR bishin zur Schnittstelle zu anderen Softwaremodulen in einem Signalflussplan dargestellt. Wie auch die Software, ist der Signalflussplan von iterativen Änderungen nicht ausgeschlossen und wird daher im SVN als bearbeitbares Dokument bereitgestellt. Die Bearbeitung des Signalflussplans fand im PAP-Designer statt. Der aktuelle Stand des Signalflussplans ist in der Abb. 2 ersichtlich.
Morphologischer Kasten
Komponentenspezifikation
Das Script "LiDAR_Objekttracking.m" wird im Verbund mit allen seiner Funktionsaufrufe als eigenes Skript bestehen und später in C++ von Hand überführt oder generiert. Output des Skripts ist eine Objektliste mit den Oben in "Requirements" angegebenen Daten von bis zu 5 Objekten. Diese Liste steht anderen Modulen an der RS-232 Schnittstelle zur Verfügung.
Programmierung
Die Funktionsprototypen für die Objektverfolgung wurden in einem Matlab-Objekt angelegt. In der beistehenden Abbildung können die Abhängigkeiten der Funktionsprototypen erkannt werden. Diese sind unter dem SVN Pfad "Teams\OSE\OSE_LiDAR_Tracking\LiDAR_Tracking" zu finden.
Initialisierung
Aktualisierung
Komponententest
Zusammenfassung
Ausblick
Nach Entwicklung eines Konzeptes wird nun in den folgenden Meilensteinen die Implementierung der Funktionen erfolgen, sodass ein Verifikation mit aufgezeichneten Testsets erfolgen kann. Das Konzept (Signalflussplan und morphologischer Kasten) kann sich im laufe der Implementierung weiterhin anpassen und steht zur Bearbeitung im SVN unter dem Pfad "\Teams\OSE\OSE_LiDAR_Tracking" zur verfügung.
Offene Punkte
- Funktionsrümpfe mit Funktion füllen
- Dokumentation des entstehenden Codes im Wiki
- Verifikation der Software mit vorhandenen Datensets
- Implementierung in C++ auf dem PC des Fahrzeugs
- Verifikation des Codes im integrierten Zustand
Link zum Quelltext in SVN
Literaturverzeichnis
- Fast people detection in indoor environments using a mobile robot with a 2D laser scanner
- An optimized segmentation method for a 2D Laser-Scanner applied to mobile robot navigation
- A line segment extraction algorithm using laser data based on seeded region growing
- DBSCAN-Clustering
- Track Vehicles Using Lidar: From Point Cloud to Track List
- Model-free detection and tracking of dynamic objects with 2D lidar
- kalmanfilter.net
- LiDAR Clustering and Shape Extraction for Automotive Applications
- Connected Components for a Fast and Robust 2D Lidar Data Segmentation
- 3D-LIDAR Multi Object Tracking for Autonomous Driving
Getting Started
- Recherchieren Sie die Schritte der Signalverarbeitungskette. Ergebnis: Signalflussplan
- Recherchieren Sie die Elemente/Blöcke des Signalflussplans. Ergebnis: Morphologischer Kasten
- Bewerten Sie die Ergebnisse Ihrer Recherche und legen Sie sich auf ein Vorgehensweise fest.
- Setzen Sie diese anhand Ihres Signalflussplans um.
- Testen Sie die Module.
- Testen Sie das System.
- Dokumentieren Sie fortlaufend Ihre Ergebnisse im Wiki/SVN.
Weblinks
- Track Vehicles Using Lidar: From Point Cloud to Track List
- Sensor Fusion and Tracking Toolbox
- Perception with Computer Vision and Lidar
- Lidar and Point Cloud Processing
- Object Tracking with 2D LiDAR
- Objekterkennung und -tracking mit Lidar-Daten
- 3D-LIDAR Multi Object Tracking for Autonomous Driving
- Lidar Processing for Automated Driving
- Introduction to Multiple Target Tracking
→ zurück zum Hauptartikel: SDE Praktikum Autonomes Fahren