Moderne Robotersysteme können auf unterschiedliche Weise zu einer gewünschten Bewegung oder Aufgabe gelangen. Während generative KI zunehmend autonome Planungs- und Entscheidungsprozesse ermöglicht, basiert ein Großteil industrieller Robotik nach wie vor auf strukturiertem „Teaching“ – dem gezielten Vormachen und Speichern von Bewegungsabläufen. In diesem Tutorium entwickeln wir ein eigenes Programm, mit dem ein Roboter Bewegungen im “Teach-Modus” erlernt und diese anschließend im “Play-Modus” reproduziert. Ziel ist es, die Prinzipien der klassischen Roboterprogrammierung praktisch und systematisch zu verstehen. Dazu werden wir einzelne Posen eines humanoiden Roboters anlernen und abspielen.
Klassisches Teaching in der Robotik: Beim Teaching wird ein Roboter manuell oder schrittweise durch eine gewünschte Bewegung geführt. Dieses Verfahren ist: deterministisch, nachvollziehbar, sicherheitsorientiert und industriell bewährt. Industrieroboter werden deshalb häufig über sogenannte Teach-Pendants programmiert, bei denen Bedienende Bewegungen schrittweise definieren und abspeichern. Das Grundprinzip lautet: „Vormachen – Speichern – Wiederholen“. Typische Vorgehensweisen sind:
Im Gegensatz dazu verfolgt die Generative KI in der Robotik einen anderen Ansatz. Ein KI-gestütztes System könnte beispielsweise den Befehl erhalten: „Räume den Tisch ab.“ Die konkrete Bewegungsplanung entsteht dynamisch auf Basis von Sensorik, Trainingsdaten und Modellen. Hier steht nicht das explizite Programmieren einzelner Bewegungen im Vordergrund, sondern:
Die im ersten Tutorial zu den Dynamixel Servos kennengelernten Funktionen “Lesen des Istwertes” und “Setzen des Sollwertes” bilden die Grundlage für unseren Algorithmus. Da “Teaching” naturgemäß vor “Play” erfolgen muss, splitten wir den Algorithmus in zwei Teile. Im Setup werden die Positionen gelernt, in der Loop dann endlos abgespielt.
Das Gedächtnis, also welche Positionen der Roboter gelernt hat, besteht aus einem zweidimensionalen Datenfeld und verbindet die beiden Teilschritte. Unser zweidimensionales Datenfeld “Mein 2D_Array” besteht aus vielen Fließkommazahlen, die ähnlich wie ein Getränkekasten in Spalten zun Zeilen angeordnet sind. In unserem Beispiel stehen die die Zeilen für die einzelnen Steps, die wir zeiltlich abfolgend durchlaufen. Die Spalten repräsentieren die ID der verbauten Servos. Die Inhalte des Feldes beeinhalten also die Werte für die Winkelpositionen des jeweiligen Servos an einem bestimmten Step. Zusammengfasst: Zeilen = Steps, Spalten = Servo ID, Zu jedem Schritt gibt es also für alle Servos eine Sollposition. Aus syntaktischen Gründen der Hochsprache C müssen wir die Dimension unseres Datenfeldes bereits beim Übersetzen festlegen. Hierbei sind nur Zahlenkonstanten gestattet. Wir verwenden sogenannte Predefinitions (grüne Puzzelteile), die einer Zahlenkonstante einen symbolischen Namen geben. Das verbessert Les- und Wartbarkeit unseres Algorithmus. Gemäß guter Programmierpraxis werden Prefdefinitions immer in Großbuchstaben benannt. Das erleichtert später die Unterscheidung zwischen konstanten Symbolen (Großbuchstaben, grün) und einer Variable (violett).

Während des “Teaching” (Setup) schaltet unser Algorithmus zuerst alle Servos in den kraftlosen Zustand, denn nur so können wir die einzelnen Gelenke per Hand bewegen - eine Grundvoraussetzung für das Teaching. Anschließend durchlaufen wir alle Steps und speichern zu jedem Schritt die über den Bus abgefragten aktuellen Gelenkpositionen der Servos MIN_ID bis MAX_ID im Datenfeld. Damit wir jede Schritt (jede Pose unseres humanoiden Roboters) einzeln trainieren können, wird die Position erst dann übernommen, wenn der Dreh-Drückmich Knopf betätigt wurde.

Die Endlosschleife der Loop nutzen wir beim “Play” zur Wiedergabe der gelernten Positionen (= Posen). Dazu werden die Servos am Ende des Setups per “Torque enable” eingeschaltet und verfolgen ab jetzt ihre jeweilige Sollposition. Für jeden Step werden die trainierten Sollpositionen aus dem Datenfeld geholt und an die Servos übermittelt. Zwischen jedem Step ist eine kurze Pause vorgesehen. Unsere trainierten Posen werden zeitlich hintereinander endlos abgespielt - der Roboter bewegt den Arm.

Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an VCRP/Panopto übermittelt. Weitere Informationen dazu finden Sie hier.
In diesem Tutorial haben wir die Ansteuerung eines humanoiden Roboters kennengelernt und so ein tieferes Verständnis für die Grundlagen der Bewegungsplanung erlangt. Es verdeutlicht zudem, dass KI-gestützte Robotik nicht das klassische Engineering ersetzt, sondern darauf aufbaut. Bevor ein System autonom planen kann, muss klar sein, wie Bewegungen formal beschrieben, gespeichert und ausgeführt werden. Das lernt man am Campus zum Beispiel in den Vorlesungen des Maschinenbaues und der Angewandten Informatik.
Sie verlassen die offizielle Website der Hochschule Trier