Objekttracking mit LiDAR: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 83: Zeile 83:


==== Erstellung einer Dummy Objektliste zum Testen des Schnittstellenkommunikationsprinzips für LiDAR Daten ====
==== Erstellung einer Dummy Objektliste zum Testen des Schnittstellenkommunikationsprinzips für LiDAR Daten ====
<syntaxhighlight lang="cpp">
#include <iostream>
int m2 (int ax, char *p_ax) {
  std::cout <<"Hello World!";
  return 0;
}</syntaxhighlight>


==== Segmentierung: Connected Component Clustering ====
==== Segmentierung: Connected Component Clustering ====

Version vom 30. Oktober 2020, 03:21 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 erfolgen. Zuerst kommt die Einbindung bzw. Einrichtung und Ansteuerung des LiDARs in 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. Es ist die Implementierung eines Connected Component Clusterung Algorithmus zur Segmentierung und eines L-Shape Fitting Algorithmus zur Objektbildung vorgesehen. An letzter Stelle findet die Programmierung des Kalman-Filters zur Objektverfolgung und Schätzung Attribute wie Geschwindigkeit und Beschleunigung der verfolgten Objekte. Eine detaillierte Beschreibung der erforderlichen, fachlichen Grundlagen und des entwickelten Konzepts ist im Objekterkennung mit Hokuyo LiDAR zu finden.

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 1 der Anforderung
Abbildung 2 der Anforderung
Abbildung 3 der Anforderung

Pflichten

Die vorgenommenen Pflichten zeigen die folgenden Abbildungen:

Pflichtheft Teil1
Pflichtheft Teil2
Pflichtheft Teil3


Funktionaler Systementwurf / Technischer Systementwurf

Komponentenspezifikation (Hier pro Modul ein PAP)

Inbetriebnahme und Ansteuerung des LiDARs

Koordinatentransformation

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

Segmentierung: Connected Component Clustering

Objektbildung: L-Shape Fitting

Objekttracking: Kalman Filter

Attribute schätzen

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

Inbetriebnahme und Ansteuerung des LiDARs

Koordinatentransformation

Das Modul zur Umsetzung der Koordinatentransformation besteht aus der Schnittstellendatei coordinate_transformation.h und ihrer Implementierung coordinate_transformation.c. Der Funktionsprototyp sieht folgendermaßen aus:

echo void coord_transform(const urg_t* lidar_handle, long* distance_array, int numMeasurements, long* x_coord, long* y_coord, int trans_x, int trans_y);

Die Eingangsparameter sind:

  1. lidar_handle: Lidarobjekt dient dem Zugriff auf die erstellte LiDAR Instanz und ihre Funktionalitäten
  2. distance_array: Array der empfangenen Schrägentfernungswerten
  3. numMeasurements: Anzahl der durchgeführten Messungen
  4. x_coord: Dieser leere, dynamische Array wird über Call-by-Reference übergeben. Die transformierten x-Koordinaten werden in diesem Array geschrieben
  5. y_coord: Dieser leere, dynamische Array wird über Call-by-Reference übergeben. Die transformierten y-Koordinaten werden in diesem Array geschrieben
  6. trans_x: x-Komponente des Translationsvektors, falls nötig, zwischen Ursprung dem KoS des Fahrzeugs und dem des LiDARs
  7. trans_y: y-Komponente des Translationsvektors, falls nötig, zwischen Ursprung dem KoS des Fahrzeugs und dem des LiDARs

Die Funktion ist void. Es wird kein Rückgabewert zurückgeliefert. Die Ausgangsparameter der Funktion bzw. ihre Resultate werden in den übergebenen, leeren Arrays gespeichert


 echo "Hallo Welt!";

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

#include <iostream>
int m2 (int ax, char *p_ax) {
  std::cout <<"Hello World!";
  return 0;
}

Segmentierung: Connected Component Clustering

Objektbildung: L-Shape Fitting

Objekttracking: Kalman Filter

Attribute schätzen

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