Ich programmiere einen Softwareagenten, um einen Roboterspieler in einem simulierten Fußballspiel zu steuern. Letztendlich hoffe ich, dass ich in den RoboCup Wettbewerb einsteigen kann.
Unter den verschiedenen Herausforderungen bei der Schaffung eines solchen Agenten ist die Bewegung seines Körpers einer der ersten, mit denen ich konfrontiert bin. Die Simulation, die ich anvisiere, benutzt einen Nao Roboterkörper mit 22 Scharnieren zur Kontrolle. Sechs in jedem Bein, vier in jedem Arm und zwei im Nacken:
Ich habe ein Interesse am maschinellen Lernen und glaube, dass es einige Techniken geben muss, um diesen Typ zu kontrollieren.
Zu jedem Zeitpunkt ist bekannt:
Die Arten von Aufgaben, die ich erreichen möchte, sind:
Für jede dieser Aufgaben glaube ich, dass ich eine geeignete Fitnessfunktion entwickeln könnte, aber nicht eine Reihe von Trainingseingaben mit erwarteten Ausgaben. Das heißt, jeder maschinelle Lernansatz müsste unüberwachtes Lernen anbieten.
Ich habe einige Beispiele in Open-Source-Projekten mit kreisförmigen Funktionen (Sinuswellen) gesehen, die in jeden Winkel des Scharniers mit unterschiedlichen Amplituden und Phasen geschaltet sind. Diese scheinen in geraden Linien zu laufen, aber sie sehen alle etwas klobig aus. Es ist kein Ansatz, der für alle oben genannten Aufgaben funktionieren würde.
Einige Teams benutzen anscheinend die inverse Kinematik, obwohl ich nicht viel darüber weiß.
Welche Ansätze gibt es also für die Fortbewegung / Gehfähigkeit von Robotern mit zwei Beinen?
Nebenbei habe ich eine .NET-Bibliothek namens TinMan geschrieben und veröffentlicht, die grundlegende Interaktion mit dem Fußball bietet Simulationsserver. Es hat ein einfaches Programmiermodell für die Sensoren und Aktoren der 22 Scharniere des Roboters.
Sie können mehr über die 3D Simulierte Fußballliga von RoboCup lesen:
Es gibt eine beträchtliche Menge an Forschungsliteratur zur Roboterbewegungsplanung und Roboterfortbewegung .
Allgemeine Robotersteuerungssteuerung
Für zweibeinige Roboter gibt es mindestens zwei Hauptansätze für das Design und die Steuerung von Robotern (ob der Roboter simuliert oder physisch real ist):
Bewegungssteuerung für zweibeinigen Fußballroboter
Beim Umgang mit den Kontrollproblemen Ihres simulierten Biped-Roboters gibt es zwei Aspekte:
Im ersten Teil geht es nur um die grundlegenden Steuerungsprobleme für die Aufrechterhaltung der Stabilität des Roboters (vorausgesetzt, Sie verwenden ein physikalisches Modell mit Schwerkraft), geradliniges Gehen, Drehen usw. Der zweite Teil konzentriert sich auf das Erhalten Ihr Roboter soll bestimmte Aufgaben als Fußballspieler erfüllen, z. B. auf den Ball zulaufen, den Ball treten, einen gegnerischen Spieler blocken, usw. Es ist wahrscheinlich am einfachsten, diese separat zu lösen und den zweiten Teil als übergeordneter Controller zu verknüpfen, der sendet Trajektorien und Zielrichtlinien zum ersten Teil.
Es gibt eine Menge relevanter Artikel und Bücher, die vorgeschlagen werden könnten, aber ich habe unten einige potentiell nützliche aufgelistet, die Sie eventuell in die Forschung aufnehmen könnten, die Sie bereits gemacht haben.
Vorschläge lesen
LaValle, Steven Michael (2006). Planungsalgorithmen , Cambridge University Press.
Raibert, Marc (1986). Legged Robots, die balancieren . MIT drücken.
Vukobratovic, Miomir und Borovac, Branislav (2004). " Null-Moment-Punkt - Fünfunddreißig Jahre seines Lebens ", Internationale Zeitschrift für Humanoide Robotik, Vol. 1, Nr. 1, S. 157-173.
Hirose, Masato und Takenaka, T (2001). " Entwicklung des humanoiden Roboters ASIMO ", Honda R & amp; D Technical Review, Band 13, Nr . 1.
Wu, QiDi und Liu, ChengJu und Zhang, JiaQi und Chen, QiJun (2009). " Vermessung der Fortbewegungskontrolle von Beinenrobotern, inspiriert durch ein biologisches Konzept ", Science in China Series F: Information Sciences, Band 52 , Nein. 10, S. 1715-1729, Springer.
Wahde, Mattias und Pettersson, Jimmy (2002) " Ein kurzer Rückblick auf die Forschung mit zweibeinigen Robotern , Proceedings der 8. Internationalen Konferenz Mechatronics Forum, S. 480-488.
Shan, J., Junshi, C. und Jiapin, C. (2000). " Entwurf des zentralen Mustergenerators für humanoider Roboterlauf basierend auf Mehrziel-GA ", In: Proc. des IEEE / RSJ Internationale Konferenz über intelligente Roboter und Systeme, S. 1930-1935.
Chestnutt, J., Lau, M., Cheung, G., Kuffner, J., Hodgins, J., und Kanade, T. (2005). " Schrittweise Planung für den Honda ASIMO Humanoiden "Proceedings der 2005 IEEE International Conference on Robotik und Automation (ICRA 2005), S. 629-634.
Ich arbeitete an einem Projekt, das nicht unähnlich war (einen Roboter-Thunfisch zu machen) und eine der Methoden, die wir erforschten, war ein genetischer Algorithmus , um die Leistung eines künstlichen zentralen Mustergenerators abzustimmen (in unserem Fall war das Muster eine Zahl) von Sinuswellen, die an jedem Gelenk des Schwanzes arbeiten). Es könnte sich lohnen, eine Chance zu geben, Genetische Algorithmen sind ein weiteres dieser Werkzeuge, die unglaublich mächtig sein können, wenn Sie vorsichtig bei der Auswahl einer Fitness-Funktion sind.
Hier ist eine großartige Arbeit von Peter Nordin und Mats G. Nordahl aus dem Jahr 1999, die einen evolutionären Ansatz zur Steuerung eines humanoiden Roboters auf der Grundlage ihrer Erfahrung beim Aufbau des ELVIS-Roboters skizziert:
Ich habe schon seit einiger Zeit darüber nachgedacht und mir ist aufgefallen, dass Sie mindestens zwei intelligente "Agenten" brauchen, damit das funktioniert. Die Grundidee ist, dass Sie hier zwei Arten intelligenter Aktivität haben:
Training für die SMC-on-line getan werden könnte ... wenn du wirklich darüber nachdenken: Definieren Erfolg in Motorsteuerung im Grunde getan, wenn Sie ein Signal an den Roboter zur Verfügung stellen, wertet sie aus, dass Signal und entweder akzeptiert es oder ablehnt es. Wenn Ihr Roboter ein Signal annimmt und es zu einem "Fehler" kommt, geht Ihr Roboter "offline" und kann keine weiteren Signale mehr annehmen. Definieren von „Fehlern“ und „offline“ könnte schwierig sein, aber ich dachte, es wäre ein Fehler, wenn zum Beispiel ein Sensor am Roboter zeigt an, dass der Roboter unbeweglich ist (auf dem Boden liegend).
Ihre Fitness-Funktion für die SMC könnte also etwas von der Art sein: numAcceptedSignals/numGivenSignals + numFailure
Der CDM ist ein weiterer AI-Agent, der Signale erzeugt und die Fitness-Funktion dafür könnte sein: (numSignalsAccepted/numSignalsGenerated)/(numWinGoals/numLossGoals)
Also, was Sie tun, ist, dass Sie das CDM laufen lassen und die gesamte Ausgabe, die daraus hervorgeht, geht an die SMC ... Am Ende eines Spiels führen Sie Ihre Fitness-Funktionen aus. Alternativ können Sie den SMC und den CDM zu einem einzigen Agenten kombinieren, und Sie können eine zusammengesetzte Fitnessfunktion basierend auf den anderen beiden Fitnessfunktionen erstellen. Ich weiß nicht, wie du es sonst tun könntest ...
Schließlich müssen Sie bestimmen, was eine Lernsitzung darstellt: ist es ein halbes Spiel Vollversion des Spiels, nur ein paar Züge, etc. Wenn ein Spiel 1 Minute dauert und Sie haben insgesamt 8 Spieler auf dem Feld, dann Der Prozess des Trainings könnte sehr langsam sein!
Hier ist ein kurzer Verweis auf ein Papier, das die genetische Programmierung verwendet, um „softbots“, der Fußball spielen zu erstellen: Ссылка
In Bezug auf Ihre Kommentare: Ich dachte, dass für die unterbewusste motorische Kontrolle (SMC) die Signale vom bewussten Entscheidungsträger (CDM) kommen würden. Auf diese Weise entwickeln Sie Ihren SMC-Agenten so, dass er die Befehle (Signale) des CDM-Agenten korrekt verarbeitet. Sie möchten die Betriebszeit des SMC-Agenten maximieren, unabhängig davon, was der CDM-Agent sagt.
Der SMC-Agent empfängt eine Eingabe, z. B. eine Vektorkraft für einen Join, und führt ihn dann durch seine Verarbeitungseinheit, um festzustellen, ob er diese Eingabe ausführen soll oder ob er sie ablehnen sollte. Der SMC sollte nur Eingaben ausführen, von denen er nicht "denkt", dass er sich davon erholen wird, und er sollte Eingaben ablehnen, von denen er denkt, dass sie zu einem "katastrophalen Fehler" führen würden.
Nun hat der SMC-Agent einen Ausgang: Akzeptieren oder Ablehnen eines Signals (1 oder 0). Der CDM kann dieses Signal für die eigene Ausbildung nutzen ... das CDM will die Zahl der Signale maximieren, die die SMC akzeptiert und sie will auch ein Ziel erfüllen: eine hohe Punktzahl für ihr eigenes Team und eine niedrige Punktzahl für das gegnerische Team . Das CDM hat also eine eigene Verarbeitungseinheit, die entwickelt wird, um beide Bedürfnisse zu erfüllen. Ihre Referenz lieferte ein 3-Schicht-Design, während meine nur eine 2-Schicht-Konstruktion ist ... Ich denke, dass mein Schritt ein richtiger Schritt in Richtung 3-Schicht-Design war.
Noch eine Anmerkung: Ist fallen wirklich ein "katastrophaler Fehler" ? Was ist, wenn dein Roboter fällt, aber der CDM ihn wieder aufrichtet? Ich denke, dass ein gültiges Verhalten wäre, so dass Sie nicht den Roboter für fallenden bestrafen sollten ... vielleicht eine bessere Sache zu tun zu bestrafen ist es für die Menge an Zeit, um braucht ein Ziel (nicht unbedingt ein Fußballtor auszuführen ).
Tags und Links language-agnostic machine-learning robotics robocup