Auf der Fischertechnik Convention gibt es seit zwei Jahren einen Labyrinth Wettbewerb, bei dem ein mobiler Roboter den Ausgang in einem Labyrinth finden muss.
An diesem habe ich mich mit meinem Roboter auch versucht.
Damit so ein Roboter im Labyrinth fahren kann muss er einen guten Geradeauslauf, da er sonst ständig an die Seitenwände stößt, und eine Hindernisserkennung haben.
Der Geradeauslauf wird hier über ein RoboPro Programm realisiert und die Hindernisserkennung erfolgt per Ultraschall.
Das Labyrinth hat eine maximale Breite von 30 cm. Da sich der Roboter auch innerhalb des Labyrinthes drehen muss, muss er entsprechend klein sein. Bei der Konstruktion habe ich einen guten Kompromiss zwischen der Größe und dem Spiel der Antriebsräder gefunden. Man hätte ihn auch noch schmaler machen können, allerdings hätten dann auch die Reifen viel mehr Spiel gehabt.
Der Roboter besitzt zwei schwenkbare Ultraschallsensoren und zwei Taster über die er Hindernisse, im Labyrinth
die Wände, erkennt. Beim Geradeausfahren sind die Ultraschallsensoren nach vorne gerichtet. Wird dort
ein Hinderniss erkannt bleibt der Roboter stehen, richtet die Sensoren zur Seite und erkennt die Richtung in die
es weitergeht. Danach werde die Sensoren wieder nach vorne gerichtet und die Fahrt geht weiter.
Über die Ultraschallsensoren ist es leider nicht möglich zu erkennen ob der Roboter beim Fahren sich langsam der Wand nähert.
Dazu wurden seitlich zwei Taster angebracht, über die erkannt wird ob er schon die Wand berührt. Ist das der Fall bleibt er stehen,
fährt er kurz zurück, dreht leicht von der Wand weg und fährt weiter.
Um die Geschwindigkeiten zweier Motoren auf einen Wert zu bekommen, müssen irgendwo die Umdrehungen oder andere Impulse pro Drehung gezählt werden. Über einen Vergleich der Impulse kann festgestellt werden, welcher der beiden Motoren sich langsamer bzw. schneller dreht. An disem Roboter werden durch normale ft-Taster und Impulseräder 4 Impulse pro Umdrehung erfasst. Durch das RoboPro Programm wird der schnellere Motor so lange abgebremst bis er die gleiche Ipulszahl wie der langsamere hat. Danach wird er wieder auf die vorgegebene Geschwindigkeit gesetzt. Um die Ansteuerung im Programm einfacher zu gestalten muss an der Unterprogramm nur eine 1 für geradeaus, eine 0 für Stop oder eine -1 für rückwärts geschickt werden. Zusätzlich läuft der Roboter langsam an und beschleunigt dann auf die volle Geschwindigkeit.
Leider hat er bis jetzt noch nicht das Labyrinth durchfahren. Die Ultraschallsensoren schalten nur, wenn sie wirklich senkrecht zur Wand ausgerichtet sind. Das das leider nie der Fall wahr, drehte sich der Roboter immer in die falsche Richtung und fuhr gegen die Wand. Zusätzlich geben die Ultraschallsensoren nur ein digitales Signal bei einem vorher eingestelltem Abstand aus. In nächster Zeit werde ich die Sensoren durch IR-Abstandssensoren, die mir ein analoges Signal statt eines digitalen ausgeben, ersetzen.