Vorqualifikation in Hannover

Lange gab es keine Neuigkeiten, die Zeit dafür fehlte leider in letzter Zeit etwas. Während des Wettbewerbs wird es aber einen täglichen Statusbericht geben, zudem werden wir über Twitter (siehe Seite) aktuelles während des Wettbewerbs posten.

Wir haben bezüglich des Roboters eine gute und eine schlechte Nachricht. Zuerst die gute: Das Fahren im Labyrinth klappt 99%ig. Das Ausrichten an den Wänden ist sehr zuverlässig. Wir haben allerdings die Orientierungserweiterung, mit der Roboter Wände, an denen er vorbeifährt erkennt, entfernt, da das zu unzuverlässig ist (wenn der Roboter schräg zur Wand steht, wird die Wand später erkannt, der Roboter fährt dementsprechend zu weit, anders herum nicht weit genug). Wie gesagt ist das so, wie es nun ist, zuverlässig genug.

Es gab ein paar Probleme mit dem Orientierungssensor, weshalb wir erstmal nur auf die Gyrodaten setzen (die allerdings vom Sensor schon temperaturkompensiert werden) und die Ausgabe, die in °/s erfolgt, in regelmäßigen Abständen auf einen Wert addieren, sodass wir einen absoluten Winkel bekommen. Das machen wir, da die berechnete Ausgabe des Sensors etwas zu unzuverlässig ist. Mit unseren Werten kann man zwar auf Dauer auch nichts anfangen, allerdings reichen sie völlig aus, um eine grobe 90° Drehung zu erkennen (der Roboter kontrolliert nun die Drehencoder und den berechneten Wert des Gyros, wenn der Roboter, warum auch immer, mal eine Wand berühren sollte, drehen die Räder ja durch, der Roboter dreht sich nicht weit genug und richtet sich an der alten Wand aus, bei einer späteren Kartenerstellung könnte so die Orientierung verloren gehen). Ein Durchdrehen der Räder wird nun kompensiert durch den Gyro, nur, wenn der Roboter sich entsprechend weit gedreht hat und der Gyro einen Wert liefert, hat er sich weit genug gedreht.

Nun die schlechte Nachricht: Wir haben riesige Probleme mit der Rampe. In erster Linie natürlich bei sehr steilen Rampen, aber auch bei kleineren Neigungen können wir die Rampe nur hochfahren. Das hängt mit der Bauart des Roboters zusammen. Er ist im Laufe der Zeit zu weit nach oben gewachsen. Nach den Qualifikationsturnieren wird es also erst einmal einen relativ großen Umbau geben. Das wird aber schon. Die Wettbewerbsarena wird nur aus einer unteren Etage und einer Rampe bestehen. Je nachdem, wie steil die Rampe beim Wettbewerb sein wird, werden wir versuchen, sie frühzeitig zu erkennen und noch vor der Rampe umzudrehen oder hochzufahren, die Rampe währenddessen erkennen (ist viel zuverlässiger!!!), oben dann 360° drehen und rückwärts herunterfahren. Mal gucken.

 

Fotos des Roboters folgen in der Wettbewerbsarena!

Orientierung im Labyrinth

Nachdem unser Orientierungssensor nicht 99,9%ig funktioniert (leider nur 99%ig, das ist für uns nicht zuverlässig genug 😀 ), mussten wir uns zur Verbesserung der Geradeausfahrten etwas anderes überlegen. Problem war, dass der Roboter, wenn keine Wände in unmittelbarer Nähe zur Verfügung stehen, an denen er sich ausrichten kann, manchmal nicht weit genug oder zu weit fährt (zur Erinnerung: Der Roboter fährt immer in ,,Elementen“, also z.B. 30cm geradeaus oder 90° Kurve). Nun haben wir ein weiteres Sensorpaar installiert, sodass der Roboter nun insgesamt acht Sharp Infrarotentfernungssensoren, also vier Paare, in jede Richtung eines, hat, um sich über die Differenz zweier Sensoren an einer Wand auszurichten (so spielt die Mindestreichweite der Sensoren von 15cm, ab denen die Werte wieder steigen, keine Rolle). Das war uns aber immer noch nicht genug. Deshalb haben wir uns überlegt, dass der Roboter manchmal erkennen kann, wenn er am Ende einer Fliese steht: Bei 90° Außenkurven beispielsweise befindet sich erst eine Wand neben dem Roboter, die dann aber ,,umklappt“, d.h. der Roboter sieht zuerst eine Wand neben sich und auf einmal nicht mehr. Wenn er an dem Punkt angelangt ist, an dem sich auf einmal keine Wand mehr rechts befindet, muss er noch genau 15cm geradeaus fahren.

Des Weiteren haben wir nun einen PD-Regler implementiert. Wenn sich links oder rechts neben dem Roboter eine Wand befindet, hält er den Abstand so gut wie möglich. Zuvor haben wir einen normalen P-Regler benutzt, jetzt haben wir den D-Anteil hinzugefügt, sodass kleinste Änderungen oder sogar Andeutungen auf Änderungen schon vorher erkannt werden (differentiell). Nun fährt der Roboter zwar nicht mehr schön ,,flüssig“, gleichmäßig neben der Wand, dafür aber sehr genau in der Mitte.

Fotos folgen bald!

Fortschritt

Nach fast einem Monat Schreibpause geht es nun endlich weiter.

Im Januar standen Schülerpraktika an, weshalb in dieser Zeit nicht am Roboter gearbeitet wurde. Dafür haben wir uns in der letzten Woche um so mehr gespurtet:

  1. Das ,,elementare Fahren“, also z.B, eine Fliese geradeaus, 90° Kurve etc., was sehr wichtig für eine spätere Navigation ist, ist vom Prinzip her fertig. Nun stehen Optimierungen und Verbesserungen an. Das muss perfekt funktionieren, denn wenn der Roboter sich dabei nur ein mal verhakt oder nicht richtig dreht, ist die gesamte Karte unbrauchbar.
  2. Es wurden einige Optimierungen an der Hardware (die Ultraschallsensoren sind jetzt ganz vorne, um auch eventuelle Hindernisse erkennen zu können, außerdem wurde ein Bedienpanel mit richtigem Schalter (vorher mussten wir den Akku immer abklemmen), Inkrementalgeber und einem Taster hinzugefügt, des Weiteren können wir nun die Akkuspannung überwachen und anzeigen lassen) und viele Optimierungen an der Software (im Wesentlichen Verbesserung und Stabilisierung der Sensorlibrarys, besonders der Library für den UM6 Orientierungssensor, außerdem Einbindung des Bluetoothmoduls: Nun können wir kabellos Sensordaten zum PC übertragen (vorteilhaft, wenn Display nicht ablesbar ist (Roboter steht unter zweiter Etage), es müssen mehr Daten übertragen werden, als das Display anzeigen kann)) vorgenommen.

Nun können wir sagen, dass wir mit dem Roboter, wie er bei den Qualifikationsturnieren Ende Februar aufgebaut und programmiert sein soll, zu 70% fertig sind. Es fehlt nur noch die Sackgassenerkennung (nur noch Programmierung notwendig, Sensor selbst funktioniert einwandfrei), die Opfererkennung (Sensoren müssen nur noch platziert werden, Programmierung schon fertig) und die Optimierung für das Elementare fahren.