Der Wettbewerb

Der Wettbewerb hat stattgefunden, und es lief leider garnicht erfreulich für unser Team. Obwohl unser Roboter zum richtigen Zeitpunkt bereit war, gab es ein Problem mit dem Router, der die Verbindung zwischen Roboter und Basisstation herstellt. Es  gab keinerlei Kommunikationsverbindung zwischen dem Rechner in der Basisstation und dem Roboter. Schon vorher am Testtag hatten sich hier Probleme angedeutet, es stand vor Ort aber leider nicht mehr genug Zeit zur Fehlersuche zur Verfügung. Damit konnte das Startsignal aus der Basisstation nicht gegeben werden, und als es losgehen sollte stand der Roboter einfach nur herum.

Immerhin waren wir nicht das einzige Team mit diesem Problem. Auch bei manchen anderen blieb der Roboter nur am Startpunkt stehen. Somit gab es insgesamt leider ein eher unglückliches Bild, das dem tatsächlichen Leistungsvermögen der Roboter kaum gerecht wurde. Sollte es einen weiteren Wettbewerb dieser Art geben, werden die Teilnehmer sicher mehr auf eine zuverlässige Infrastruktur achten. Somit wurde von der Jury auch entschieden, dass es keinen Gewinner für dieses Mal gab.

Für uns war der Wettbewerb dennoch ein bisher einmaliges Ereignis. Es war erstaunlich, wieviele völlig verschiedene Robotersysteme in der kurzen Vorbereitungszeit von unter einem Jahr entwickelt wurden. In einem Schaulaufen nach den offiziellen Wettbewerbsläufen konnten zudem alle nochmal zeigen, dass die Roboter zu weit mehr in der Lage waren als direkt während des Wettbewerbs gezeigt werden konnte.

Hebebühne

Die Hebebühne ist fertiggestellt. Sie besteht im Wesentlichen aus zwei Laufschienen, an denen unten eine Platte befestigt ist. Über ein Seilsystem kann die Platte von einem Elektromotor hochgehoben werden. Durch ihr eigenes Gewicht fällt sie dann wieder runter, wenn sie auf den Boden abgelassen werden soll. Wir haben hierfür einen Elektromotor mit hoher Umsetzung, also hohem Drehmoment gewählt. Er kann damit auch deutlich schwerere Objekte heben als die im Wettbewerb, ist dafür allerdings auch wirklich langsam.

Die Hebebühne wird vor dem Roboter befestigt. Die Positionen der Laufschienen links und rechts sind dabei so gewählt, dass der Arm des Roboter zwischen Ihnen hindurch greifen kann. Damit ist es möglich, dass er Objekte auf die Platte der Hebebühne schiebt und diese in angehobenem Zustand auch wieder wegschiebt. Dadurch wird der Arm zum größten Teil entlastet. Insbesondere muss er nicht das ganze Gewicht vom Boden bis zum Ziel, hier in 30cm Höhe, heben.

Die Ansteuerung der Hebebühne geschieht über ein Arduino-Board welches der Laptop per ROS Interface anpricht.

Neuer Antrieb

Der neue Antrieb für den Roboter ist fertig. Wir haben entschieden, die bisherigen Motoren weiter zu verwenden, damit möglichst viel vom alten System, insb. die Treibersoftware, übernommen werden kann. Zum einen wurden neue Getriebe ausgewählt, die eine deutlich höhere Übersetzung haben. Damit fährt der Roboter langsamer, hat aber mehr Kraft um Steigungen oder Hindernisse zu überwinden.

Die größte Änderung sind natürlich die Räder. Die bisherigen omni-wheels können zwar kleine Dinge wie Kabel auch überwinden, sind aber sonst nur für einen flachen Untergrund geeignet. Somit haben wir nun “klassische” Räder gewählt, die dem youBot eine Art differential drive Antrieb geben. Nach Recherchen fiel unsere Wahl auf Räder aus dem Modellbau. Diees sind zwar normalerweise für kleinere Gewichte gedacht, in unseren Tests konnten sie aber auch das Gewicht (über 30kg) des youBots tragen. Um die Räder an die Achsen zu montieren wurden neue Befestigungen modelliert und gebaut.

Zusätzlich haben wir noch eine Platte konstruiert, mit denen die gesamte Antriebseinheit am Roboter weiter nach außen versetzt werden kann. Ansonsten könnten durch die Konstruktion des Roboterrahmens nur relativ kleine Raddurchmeesser (wie bei den bishrigen omni-Rädern) eingesetzt werden, oder man bräuchte recht lange Achsen was uns zu unsicher erschien. Damit haben wir die Wahl zwischen verschiedenen Größen von Rädern. Wahrend große Räder höhere Manövrierbarkeit gewährleisten, benötigen sie aber auch ein höheres Drehmoment um in Bewegung zu kommen. Wir werden hier einen Kompromiß auswählen.

Objekterkennung

Wir haben die Objekterkennung vorläufig abgeschlossen. Die Erkennung der zu transportierenden Objekte im Wettbewerb geschieht bei uns zunächst über die Farbe, da.die Objekte im Wettbewerb alle farblich markiert sind (gelb, blau, und rot). Dazu wird das Bild der Kamera zunächst binär segmentiert und dann zusammenhängende Bereiche gesucht. Die Farberkennung basiert auf den OpenCV und cvBlob Libraries, welche beide frei verfügbar sind.

Wenn der Roboter nah genug am Objekt ist kommt zudem eine Erkennung per 3D Punktewolken mittels der PCL Library hinzu, die eine bessere Position und Orientierung der Objekte liefert.

Wir haben zudem ein eigenes kleines tool zum Einstellen der Farbbereiche geschrieben, wo man entweder am live-Bild oder mit vorher aufgenommen Bilder die segmentierten Farbbereiche ansehen und verändern kann.

In künstlicher Testumgebung funktioniert die Erkennung per Farbe recht zuverlässig. Falls aber viele ähnliche Farben in der Umgebung auftauchen, ist der Ansatz eher ungeeignet. Sollte das im Wettbewerb der Fall sein, müsste die automatische Objekterkennung notfalls durch manuelle Kontrolle in der Basisstation unterstützt werden. Sollte vor dem Wettbewerb noch Zeit bleiben werden wir die automatische Erkennung aber auch noch verfeinern.

Kommunikation mit Basisstation

Für die Software an der Basisstation haben wir ein eigenes kleines Netzwerk-Protokoll geschrieben und mit UDP Messages umgesetzt. Während auf dem Roboter selbst ROS läuft, ist dies für die Kommunikation zwischen Roboter und Basisstation wenig geeignet, da hier im Wettbewerb ein künstliches Delay von 2 ms pro Nachricht eingeführt wird. Dieses soll die Situation zwischen einer Station auf der Erde und einem Roboter auf einem anderen Planeten nachbilden.Zusätzlich sind nur wenige Ports für die Kommunikation geöffnet.

Unser Protokoll beinhaltet zum einen Statusmeldungen des Roboters, wo alle relevanten aktuellen Informationen aus dessen Weltmodell übertragen werden wie Position des Roboters, Position der detektieren Objekte, Kamerabild etc. Zum anderen können auch einfache Kommandos von der Basisstation aus an den Roboter gesandt werden, z.B. um in eine bestimmte Richtung zu fahren, ein Objekt zu greifen, etc.

Die Monitoring-Software für die Basisstation haben wir neu geschrieben. Die Kommandos an den Roboter werden per Tastatureingabe eingegeben. So kann der Roboter komplett ferngesteuert werden, oder auch semi-autonom den Bediener unterstützen. Das Programm ist eher einfach gehalten, dafür könnte es aber auch in anderen Situationen, wo nur eine schlechte WLAN Verbindung zum Roboter besteht, nützlich sein.

Pioneer als Plattform

Wir konnten von der Hochschule Bonn-Rhein-Sieg einen Pioneer 3-AT Roboter ausleihen, um ihn für einen möglichen Einsatz im Wettbewerb zu testen. Leider wurde der Roboter schon mehrere Jahre lang nicht mehr eingesetzt, so dass erst nach einigen Mühen überhaupt Sensoren und Motoren angesprochen werden konnten. Leider haben sich die Motoren nachwievor noch nicht bewegt, wofür wir ein Hardwarerproblem vermuten, dass noch zu beheben sein wird.

Update: Nach Rücksprache mit dem Hersteller liegt hier ein größeres Problem vor, so dass u.a. die Motorsteuerelektronik ausgetauscht werden muss. Somit werden wir dies für den Wettbewerb nicht weiter verfolgen und nur auf den youBot setzen.

Erste Version des Hauptprogramms

Die erste Version des Hauptprogramms ist fertiggestellt, dass auf den Robotern laufen soll. Es basiert auf dem ROS Framework und bildet einen hierarchischen Zustandsautomaten nach. Auf der höchsten Ebene gibt es u.a. Zustände für die Exploration und Objektsuche, das Anfahren der Objekte, das Greifen der Objekte, und zum Zusammenfügen aller Objekte. Wir legen besonderen Wert auf ein robustes Gesamtverhalten, so dass der Roboter nicht in Deadlock-Situationen endet.

Die meisten Einzelfähigkeiten, wie Navigation, Greifen, etc. sind bisher aber noch nur vorläufig eingebunden und werden der Schwerpunkt der Entwicklung in den nächsten zwei Monaten sein. Ebenfalls wurde bisher nur ROS Fuerte benutzt, wir werden die Software aber voraussichtlich auf das neue ROS Hydro umstellen.