EmilE
Eckdaten
Gewicht: | ca. 220 kg |
Leistung: | 2x 35 kW |
Drehmoment: | 2x 320 Nm |
Spannung: | 600 V |
Höchstgeschwindigkeit: | 5 m/s (18 km/h) |
Sensoren: | Velodyne Puck HiRes |
Objekterkennung: | Euklidisches Clustering |
Mapping: | FastSLAM |
Autonomes System
Das autonome System setzt sich aus einem Velodyne Puck HiRes-Lidar und einem dSPACE Embedded PC mit MicroAutoBox zusammen. Mit Hilfe des Lidars werden die blauen und gelben Hütchen erkannt, die links und rechts die Fahrbahn markieren.
Streckenerkennung
Im Gegensatz zu vielen anderen Teams haben wir nur einen einzigen Sensor, mit dem wir die Umgebungsobjekte erkennen können – einen Velodyne Puck HiRes. Dieses Lidar bietet dank seiner hohen Auflösung die Möglichkeit Cones in Entfernungen von bis zu 15m zu detektieren.
Die prinzipielle Objekterkennung wird mit Hilfe von euklidischem Clustering durchgeführt: indem Punkte, die räumlich nahe beieinander liegen, zu Gruppierungen (Clustern) zusammengefasst werden, lassen sich Cones dank ihrer hohen Punktedichte gut erkennen.
Lokalisierung
Um herauszufinden, wo sich das Fahrzeug befindet, hat es mehrere Möglichkeiten. Beispielsweise gibt es da GPS (ungenau), D-GPS (genau und teuer), Odometrie (ungenau) oder, wie in unserem Fall, Simultaneous Localization and Mapping, kurz SLAM.
Es handelt sich bei SLAM um eine Klasse von Algorithmen, die allesamt ein Ziel verfolgen: das bestmöglichste Schätzen der Position von Fahrzeug und Umgebungsobjekten mit Hilfe von Umgebungssensorik (Velodyne Puck HiRes) und – in den meisten Fällen – Odometrie. Wir setzen in unserem Fall auf eine FastSLAM 1.0-Implementation.
Dadurch haben wir die Möglichkeit, die Strecke während der ersten Runde komplett aufzuzeichnen, damit ab der zweiten dann jede Kurve und Gerade schon im vorhinein bekannt ist – und so auch schneller abgefahren werden kann.
Pfadplanung
Die Pfadplanung setzt sich aus 3 Grundfunktionen zusammen:
- Triangulierung
- Pfadgenerierung
- Diskriminierung
Am Anfang werden die erkannten Cones einer Delaunay-Triangulation unterzogen, die dafür sorgt, dass die Punkte zu einem Dreiecksnetz zusammengefasst werden.
Mögliche Pfade werden gefunden, indem alle benachbarten Dreiecke von der Position des Fahrzeugs aus rekursiv durchsucht werden. Auf diese Weise lassen sich eine ganze Menge an Pfaden finden, aus denen im Anschluss der beste Pfad herausgefiltert werden muss.
Letzteres erreichen wir mit Hilfe einer Kostenfunktion, die die Pfade je nach Nützlichkeit bewertet – ist der Pfad lang? Ist die Strecke regelkonform? …
Regelung
Um dem Pfad zu folgen setzen wir auf einen Pure-Pursuit-Controller. Das ist ein einfacher Controller, der einfach einem vordefinierten Punkt auf der Fahrbahn folgt. Wir haben einige Anpassungen vorgenommen, durch die:
- die Strecke mit einem variablem Tempo zwischen 1…5m/s abhängig von dem Fehler zwischen Ziel- und dem aktuellen Zustand abgefahren wird.
- die Position von diesem vordefinierten Punkt abhängig von der “Kurvigkeit” der Strecke ist.