Zum Inhalt springen

Wegfindung (Pathfinding)

Ein Micromouse muss nicht nur fahren und stoppen – es soll das Labyrinth möglichst effizient lösen. Dafür gibt es verschiedene Algorithmen, die sich in Komplexität, Speicherbedarf und Qualität des gefundenen Weges unterscheiden.

AlgorithmusSchwierigkeitKarte nötig?Findet kürzesten Weg?Typischer Einsatz
Wall Follower⭐ EinfachNeinNeinErster funktionierender Prototyp
Flood Fill⭐⭐ MittelJaJa (bei vollständiger Karte)Standard bei Micromouse-Wettbewerben
Tiefensuche (DFS)⭐⭐ MittelJaNeinErkundung unbekannter Labyrinthe
Breitensuche (BFS)⭐⭐ MittelJaJa (ungewichtet)Garantiert kürzester Weg in Schritten
A*⭐⭐⭐ SchwerJaJa (gewichtet)Optimale Navigation mit Heuristik

Der einfachste Ansatz: Der Roboter folgt immer einer Wand – entweder der linken oder der rechten.

Funktionsweise:

  • Ist die linke Wand frei → abbiegen und ihr folgen
  • Sonst geradeaus fahren
  • Ist die linke Wand und geradeaus blockiert → rechts abbiegen
  • Überall blockiert → umdrehen

Vorteile:

  • Sehr einfach umzusetzen
  • Benötigt keinerlei Karte oder Speicher

Nachteile:

  • Funktioniert nur in Labyrinthen ohne Inseln (isolierte Wandstücke)
  • Findet nicht zwingend den kürzesten Weg

Flood Fill ist der Standardalgorithmus bei Micromouse-Wettbewerben. Die Idee: Jede Zelle im Labyrinth bekommt einen Wert, der angibt, wie viele Schritte sie vom Ziel entfernt ist – wie eine Flut, die vom Ziel aus das Labyrinth „überflutet”.

Funktionsweise:

  1. Das Ziel erhält den Wert 0.
  2. Alle Nachbarn des Ziels (ohne Wand dazwischen) erhalten den Wert 1, deren Nachbarn 2, usw.
  3. Der Roboter fährt immer zur Nachbarzelle mit dem kleinsten Wert.
  4. Sobald der Roboter eine neue Wand entdeckt, wird die Karte neu berechnet.

Vorteile:

  • Findet den kürzesten Weg (bei vollständiger Kenntnis des Labyrinths)
  • Passt sich dynamisch an neu entdeckte Wände an

Nachteile:

  • Benötigt eine vollständige Karte im Speicher
  • Neuberechnung kostet Zeit und Rechenleistung

Die Tiefensuche erkundet das Labyrinth, indem sie immer so weit wie möglich in eine Richtung vordringt, bevor sie umkehrt.

Vorteile:

  • Gut geeignet um das Labyrinth vollständig zu erkunden
  • Geringer Speicherbedarf

Nachteile:

  • Findet nicht zwingend den kürzesten Weg
  • Kann lange Umwege nehmen

Die Breitensuche erkundet das Labyrinth Schicht für Schicht – zuerst alle Zellen mit Abstand 1 vom Start, dann alle mit Abstand 2, usw.

Vorteile:

  • Garantiert den kürzesten Weg (in Anzahl Schritte)
  • Einfach zu implementieren

Nachteile:

  • Hoher Speicherbedarf (alle besuchten Zellen müssen gespeichert werden)
  • Langsamer als A* bei großen Labyrinthen

A* ist eine Erweiterung der Breitensuche. Er verwendet eine Heuristik (z.B. die Luftlinien-Distanz zum Ziel), um gezielt in die richtige Richtung zu suchen und unnötige Wege zu überspringen.

Vorteile:

  • Findet garantiert den kürzesten Weg
  • Deutlich effizienter als BFS in großen Labyrinthen

Nachteile:

  • Komplexer zu implementieren
  • Benötigt eine gute Heuristik und vollständige Karte

Hast du noch keinen laufenden Roboter?
└─→ Wall Follower
Läuft der Roboter, aber du willst den kürzesten Weg finden?
└─→ Flood Fill (Empfehlung für Wettbewerbe)
Willst du tiefer in die Informatik einsteigen?
└─→ BFS → A*
  1. Welcher Algorithmus benötigt keine gespeicherte Karte des Labyrinths?

  2. Welcher Algorithmus garantiert den kürzesten Weg und ist gleichzeitig der Standardalgorithmus bei Micromouse-Wettbewerben?

  3. Was ist der Hauptnachteil des Wall Followers?

  4. Was unterscheidet A* von der einfachen Breitensuche (BFS)?