Zwischenstand: Karte

Nach etwas mehr als zwei Woche programmieren, programmieren, programmieren funktioniert unsere Karte nun perfekt. Wir haben noch zusätzliche Entfernungssensoren mit einer höheren Reichweite hinzugefügt, durch die wir nun größtenteils auf die Encoder verzichten können (wenn der Roboter nämlich irgendwo hängen bleiben sollte, drehen die Motoren durch, die Encoder zählen weiter und der Roboter ,,denkt“, er wäre die entsprechende Strecke gefahren, was natürlich die Karte unbrauchbar macht).

Unsere Kartenerstellung funktioniert so, dass wir immer, wenn wir eine Fliese (also 30cm) gefahren sind oder wir uns gedreht haben überprüfen, ob und wo Wände neben dem Roboter sind und ggf. eine Variable für die jeweiligen Wände in einem mehrdimensionalen Array hochzählen. Da wir mehrere Sensoren auf einer Seite haben, können wir die Schrittweite, wie weit die Variable also hochgezählt werden soll, auf die Zuverlässigkeit des Sensors anpassen (ein analoger, optischer Entfernungssensor in der Mitte des Roboters ist zuverlässiger als ein Ultraschallsensor, da das Auslesen eines Ultraschallsensors bei uns relativ lange dauert und außerdem die Wände den Schall des Sensors ungünstig reflektieren können).

Nun sind wir mit der Verarbeitung der Karte im Roboter angefangen. Zur Navigation werden wir den Algorithmus von Gaston Tarry benutzen:

  1. Wenn du einen Gang betrittst, markiere den Eingang mit dem Wort Stopp. Betritt nie einen Gang, der mit Stopp markiert ist.
  2. Betrittst du das erste Mal eine Kreuzung (daran erkennbar, dass an keinem Gang eine Markierung angebracht ist), markiere den eben verlassenen Gang mit dem Wort zuletzt.
  3. Gibt es an einer Kreuzung Gänge, die keine Markierung besitzen, wähle einen beliebigen davon, um weiterzugehen. Sollte es keine unmarkierten Gänge mehr geben, betritt den mit zuletzt markierten Gang.

Dieser Algorithmus hat den riesigen Vorteil, dass er sehr flexibel ist, Inseln und abgeschlossene Bereiche (in denen z.B. das Netzteil steht) kein Problem sind und dass er automatisch am Startfeld anhält, wenn jede Fliese mindestens einmal befahren wurden. Einen kleinen Haken hat die ganze Sache allerdings: Bei Foyern, also bei großen, freien Flächen im Parcours, wenn sich der Gang also von einer Fliesenbreite auf mehrer Fliesenbreiten aufweitet, fährt der Roboter ziemlich oft in dem Foyer hin- und her, d.h. wir benötigen relativ viel Zeit. In Anbetracht der Tatsache, dass wir durch den Algorithmus aber alle Opfer finden können und dass es nur noch etwas mehr als zwei Wochen bis zu den German Open sind, sollte das aber das kleinste Problem sein.

Nebenbei wurden übrigens die Quoten für die WM, die dieses Jahr in Eindhoven stattfindet, veröffentlicht. In Rescue B werden dieses Jahr 14 Teams teilnehmen, aber nur zwei Teams kommen weiter. Zum Vergleich: Letztes Jahr haben zehn Teams teilgenommen und es durften drei Teams zur WM. Das wird also ziemlich knapp, mit etwas Glück kann das aber funktionieren.