Kollisionserkennung und Optimierungen

Wie im letzten Artikel erwähnt, haben wir nun die Kollisionserkennung eingebaut und wir sind wirklich überrascht: Der Roboter funktioniert nun wirklich sehr zuverlässig. Der Testparcours in der Schule hat ein anderes Raster (ca. 28cm) als der Wettbewerbsparcours (genau 30cm, wie in den Regeln vorgegeben), weshalb der Roboter beim Schulparcours immer etwas zu weit fährt und nach dem Wettbewerb dort öfters rausgekommen ist, also seine Position verloren hat. Behoben werden kann das normalerweise nur durch Änderung eines Faktors zum Umrechnen der Encodersteps in cm. Wir wollten die Einstellungen von Hannover aber beibehalten, da bei den deutschen Meisterschaften auch ein Parcours im 30cm Raster genutzt wird. Jedenfalls verliert der Roboter, nachdem wir die Kollisionserkennung implementiert haben, nur sehr, sehr selten die Position (normalerweise muss man sogar nachhelfen). Er erkennt also nun, wenn er bei einer Geradeausfahrt mit einer Wand kollidieren würde (nur einer der drei vorderen Entfernungssensoren erkennt ein Hindernis) und korrigiert dann minimal in die Richtung, in die kein Hindernis ist. Dann wird ganz normal mit der Geradeausfahrt fortgeführt.

Außerdem haben wir die Berechnung des Pfades per Tiefensuche optimiert. Wir haben die Tiefensuche iterativ implementiert, um in Sachen Arbeitsspeicher des Roboters auf der sicheren Seite zu sein (bei der rekursiven Suche wird der Speicher ja dynamisch reserviert, bis evtl. kein Speicher mehr zur Verfügung steht), dazu wird in Zählschleifen der gesamte Speicher der Karte durchgegangen, was unter Umständen relativ viel Zeit (bis zu einer Sekunde) in Anspruch nehmen kann. Das Problem konnten wir beheben, indem nicht mehr im gesamten Speicher der potentielle Pfad berechnet wird, sondern wirklich nur in der Größe der tatsächlichen Karte.

Insgesamt sind wir nun sehr zufrieden mit unserem Roboter und einer erfolgreichen Teilnahme bei den German Open in Magdeburg steht nichts mehr im Wege. :) Natürlich braucht man immer auch etwas Glück, aber mal sehen, wie es so läuft.