Mittwoch, 1. August 2007

Neue Kreatur: Spinne

Über die Nacht habe ich eine spinnenartige Kreatur züchten lassen. Sie hat, im Gegensatz zu richtigen Spinnen, nur vier "Arme", jeder ist aber in 2 Teile unterteilt. Das obere Gelenk (Körper zu Oberarm) ist ein Universal-Joint. D.h. das Gelenk kann in 2 Freiheitsgrade gedreht werden. Beim unteren handelt es sich um einen Revolute-Joint, welcher nur in eine Richtung drehbar ist.

Die Hauptprobleme bei der Implementation waren, die aktuellen Gelenk-Informationen dem neuronalen Netz bereitzustellen. Leider bietet die Physik-Engine (AGEIA PhysX) keine direkten Funktionen an, um bei einem Gelenk die Winkel auszulesen. Deshalb musste ich komplizierte Vektorgeometrie anwenden, um die richtigen Winkel zu berechnen.

Nach einigen Stunden war dann die Kreatur bereit, trainiert zu werden. Es ist sehr wichtig, dass man alle Eingaben und Ausgaben bei einem neuronalen Netz von Hand überprüft, denn allfällige Fehler sind nicht direkt sichtbar, man merkt es erst, wenn sich die Kreatur nicht wirklich verbessert.

Das Ziel war es, sich möglichst schnell fortzubewegen. Anzumerken ist hierbei, dass es sich für diese Kreatur um eine relativ einfache Aufgabe handelte, wie im Diagramm zu sehen ist. Innerhalb weniger Generationen war die Spinne in der Lage, sich relativ schnell fortzubewegen (Fitness 1500). Bis zur Fitness 2250 brauchte es auch nur wenige hundert Generationen. Ab dort aber entwickelte sich der Roboter nur noch sehr, sehr langsam. Was das chaotische Verhalten beim Durchschnitt soll (Generation 600-700), kann ich auch nicht beantworten, vielleicht "experimentierte" der genetische Algorithmus ein bisschen fester als sonst.

Im Video sieht man, wie die Spinne praktisch am Optimum des Möglichen ist. Die Bewegung ist sehr rund und extrem synchron (alle Gelenke werden jedoch einzeln angesteuert!). Da es sich bei der Spinne um eine relativ einfache Aufgabe handelt, eignet sie sich auch, um nochmal das Thema Steuerkommandos für Roboter wieder zu beleben.

Video nach ca. 1700 Generationen

Keine Kommentare: