Das Odometriesystem

Aufgabe des Odometrie Systems ist die Ortsbestimmung des Roboters anhand interner Sensordaten, in unserem Fall die Umdrehungen der Räder. Dies war nötig, da eine Positionsbestimmung über externe Sensoren und Referenzen nicht möglich war.

Wie eingangs erwähnt, wird durch ein aufwändiges Getriebe die Winkelgenauigkeit der mit 11,25° recht ungenauen Lego-Rotationssensoren auf 1,17° erhöht. Das entspricht 144 Schritte pro Radumdrehung.

Die Rotationssensoren lösen pro Raste einen Interrupt aus, der RCX zählt hiermit "Schritte seit einschalten". Die Interruptsteuerung sowie die Zählung übernimmt das BrickOS, die Zählstände werden in Form einer Variable abgefragt.
Der aktuelle Winkel des Roboters ergibt sich aus der Differenz der Umdrehungen des linken und rechten Rades, geteilt durch den Radabstand.
Zur Berechnung der Position in x- und y-Koordinaten (in cm) werden die Sinus und Cosinus Funktionen gebraucht. Leider werden diese nicht von BrickOS zur Verfügung gestellt und mussten selbst implementiert werden. Nach verschiedenen Experimenten mit Ideen aus dem Internet (look-up-table, Taylor-Reihe) hat sich eine Berechnung mittels Taylor Reihe ergeben. Zunächst wird der Winkel auf den Bereich 0° bis 90° gebracht (Vorzeichenänderungen), und dann mittels Taylor Reihe bis zum 7. glied berechnet (Jedes glied mit gerade nummer ergibt sich zu 0, was die Berechnung vereinfacht). Die Berechnung erfolgt sehr schnell.

Ziele werden über ihre x- und y-Korrdinaten definiert. Zum anfahren eines Ziels wird zunächst der Roboter auf der Stelle gedreht, bis der eigene Winkel mit dem Winkel zum Ziel übereinstimmt. Anschließen wird in einer geraden Linie auf das Ziel zugefahren.
Leider sind die Motoren nicht exakt gleich, und so passiert es schnell, dass der Roboter anstatt einer Geraden eine Kurve fährt. Um dies auszugleichen wurde versucht eine PID Kontrollschleife zu implementieren.

Der vorgegeben Testparkur sah zum Ende das anfahren der Ursprungsposition vor. Trotz ungewollter Kurvenfahrten war der Roboter am Ende dem Ausganspunkt sehr nah.

In unseren Testläufen wurde allerdings die Schwäche im Verfahren deutlich: Hatten die Räder nicht genügend Bodenhaftung, ließ die Genauigkeit nach.

Ebenso war die Trägheit des recht schweren Schwenkarms ein Problem, besonders in Kurven und bei rutschigem Untergrund. Durch die Pendelbewegung wurde der Minensucher aus seiner Bahn gedrängt und diese Information entging dem Odometriesystem natürlich.

Ein Video mit einem Fehlversuch durch Schlupf gibt es hier... (1,5 MB; leider etwas dunkel)