Dritter Platz in der Running Robot Competition

Letztes Jahr bekamen wir die Möglichkeit an der Running Robot Competition in China teilzunehmen. Da wir im letzten Jahr Spaß hatten, wollten wir auch dieses Jahr wieder daran teilnehmen.

Die Running Robot Competition ist kein Teil der RoboCup Turniere an denen wir normalerweise teilnehmen. Sie ist ein Turnier in dem die Roboter durch einen Parkour laufen müssen und dabei mehrere Hindernisse überwinden müssen. Diese Hindernisse können z.B. sein, dass der Roboter warten muss bis eine Schranke nicht mehr im Weg ist, oder über Treppenstufen laufen zu müssen.

Wegen Covid-19 hatten wir leider nicht die Möglichkeit in Person teilzunehmen, aber wir freuten uns trotzdem über das Internet teilnehmen zu können. Um das zu ermöglichen haben die Veranstalter uns eine Simulationsumgebung bereit gestellt.

Wir haben uns einige Optionen überlegt wie man die Probleme lösen könnte.
Angefangen mit einem konventionellen Ansatz in dem wir eine Vision entwickeln würden um z.B. die die gelben und schwarzen Segmente der Schranke zu erkennen. Sobald die Schranke dann in einem bestimmten Winkel ist, könnte der Roboter dann los laufen.

Wir wollten aber die Möglichkeit nutzen und uns mit etwas beschäftigen, mit dem die meisten aus unserem Team weniger Erfahrung hatten. Deshalb haben wir uns entschieden reinforcement learning für unseren Ansatz zu verwenden.

Reinforcement learning ist ein Ansatz in dem wir neuronale Netze verwenden, damit der Roboter lernen kann an den Hindernissen vorbei zu kommen, ohne das wir dem Roboter erklären müssen wie er das schafft. Das kann auch zu Lösungen führen die effizienter sind als Lösungen auf die wir gekommen wären. Das kann sein, dass der Roboter einen Fehler in der Physik im Simulator und sich ins Ziel teleportiert oder etwas so simples wie einen Weg zu finden, an den wir nicht gedacht haben.

Als Eingabe für den reinforcement learning Algorithmus haben wir nur das Kamerabild des Roboters verwendet. Ausgehend von diesem Bild musste der Roboter dann herausfinden was er tun sollte. Sollte er warten bis die Schranke oben ist oder kann er schon anfangen zu laufen?
Das klingt trivial für uns Menschen, aber der Roboter hat zu Beginn kein Konzept davon, dass die Schranke ein Hindernis ist. Am Anfang kann der Roboter nicht einmal unterscheiden zwischen dem Boden auf den er treten kann und einem solchen Hindernis.

Um dem Roboter zu helfen solche Dinger zu lernen, haben wir ihm Punkte als Belohnung gegeben, wenn er sich dem Ziel näherte und ihm welche abgezogen, wenn er in ein Hindernis wie die Schranke gelaufen ist.

Der Roboter konnte nur die Richtung bestimmen in die er gelaufen ist. Wir haben das selbe Programm zum laufen genutzt wie wir es auch auf unseren Fußballspielenden Robotern einsetzen. Da in dem Wettkampf ein anderer Roboter verwendet wurde, mussten wir einige Parameter anpassen. Zum Glück hatten wir ein Skript von unserem vorhandenen Laufen, mit dem der Roboter lernen konnte ideal zu laufen in dieser neuen Simulation.

Mit diesem Ansatz konnten wir die ersten Hindernisse überqueren. Wegen eines Missverständnisses, hatten wir weniger Zeit als geplant und wir konnten leider nicht den gesamten Parkour beenden.

Wir hatten eine Menge Spaß damit unseren Ansatz zu entwickeln um die Probleme zu lösen vor die uns die Running Robot Competition stellte. Wir freuten uns auch über die Möglichkeit viel über reinforcement learning zu lernen.

Wie ihr wahrscheinlich schon aus dem Titel gelesen habt, hatten wir nicht nur jede Menge Spaß während des Wettkampfs, sondern haben sogar den dritten Platz bekommen!

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.