Welche Techniken gibt es für die softwaregesteuerte Fortbewegung eines zweibeinigen Roboters?

8

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:

  • Der Winkel aller 22 Scharniere
  • Der X-, Y-, Z-Ausgang eines Beschleunigungsmessers in der Brust des Roboters
  • Der X, Y, Z-Ausgang eines Gyroskops in der Brust des Roboters
  • Die Position bestimmter Orientierungspunkte (Ecken, Ziele) über eine Kamera im Kopf des Roboters
  • Ein Vektor für die Kraft, die auf den Fuß eines jeden Fußes ausgeübt wird, zusammen mit einem Vektor, der die Position der Kraft auf der Fußsohle angibt

Die Arten von Aufgaben, die ich erreichen möchte, sind:

  • So schnell wie möglich in einer geraden Linie laufen
  • Bewegung mit einer definierten Geschwindigkeit (dh eine Funktion, die schnelles und langsames Gehen abhängig von einer zusätzlichen Eingabe behandelt)
  • Rückwärts gehen
  • Die Stelle einschalten
  • Laufen entlang einer einfachen Kurve
  • Seitwärts gehen
  • So hoch wie möglich springen und landen, ohne umzukippen
  • Trete einen Ball vor deine Füße
  • "unbewusste" stabilisierende Bewegungen ausführen, wenn sie unerwarteten Kräften ausgesetzt sind (von einem Ball oder einem anderen Spieler getroffen), idealerweise im Tandem mit einem der oben genannten

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:

Drew Noakes 18.06.2010, 09:54
quelle

4 Antworten

4

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):

  • Zero Moment Point - ein dynamikbasierter Ansatz zur Stabilität und Kontrolle der Fortbewegung.
  • Biologisch inspirierte Fortbewegung - ein Kontrollansatz, der nach biologischen neuronalen Netzen in Säugetieren, Insekten usw. modelliert ist und sich auf die Verwendung von zentrale Mustergeneratoren , die durch andere Motorsteuerungsprogramme / -schleifen modifiziert werden, um das gesamte Gehen zu steuern und die Stabilität zu erhalten.

Bewegungssteuerung für zweibeinigen Fußballroboter

Beim Umgang mit den Kontrollproblemen Ihres simulierten Biped-Roboters gibt es zwei Aspekte:

  1. Grundlegende Geh- und Fortbewegungskontrolle
  2. Aufgabenorientierte Bewegungsplanung

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.

    
Joel Hoff 25.06.2010 13:36
quelle
2

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.

    
Bradley Powers 18.06.2010 12:54
quelle
2

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:

Drew Noakes 18.06.2010 16:54
quelle
2

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:

  1. Unterbewusstsein Motor Control (SMC).
  2. bewusste Entscheidungsfindung (CDM).

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!

Aktualisieren

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 ).

    
Kiril 22.06.2010 17:59
quelle