Hintergrund | Meine Experimente mit dem robolink-System von igus bedeuten zwar viel Arbeit, aber eben auch viel Spass - insbesondere dann, wenn man eine Konstruktion real vor sich stehen hat, die dem geistigen Bilde, das man einmal davon hatte, tatsächlich einigermaßen ähnlich geworden ist. Ich hatte mich im Zusammenhang des robolink Systems ja schon mit einer möglichen Motorisierung, der Ansteuerung der Motoren, dem Auslesen der Winkelencoder und einigem mehr beschäftigt. In letzter Zeit habe ich versucht, die bisher gesammelten Erfahrungen zusammenzubringen und für ein neues Projekt zu nutzen. Weil ich das eigentliche Potential des robolink-Systems im Kontext der humanoiden Robotik sehe, erschien es mir nur folgerichtig, etwas in diesem Bereich zu entwickeln. Um mich nicht von vornherein zu überfordern, habe ich mich entschieden, zunächst einen einzelnen Arm aufzubauen. Zugegebenermaßen ist es noch etwas übertrieben, die aktuelle Version als "humanoid" zu bezeichnen, aber immerhin, die ersten Schritte in diese Richtung sind getan. Die mechanische Konstruktion mitsamt Antrieben und ein Controller für die Gelenke ist in einer ersten Version fertig. Außerdem habe ich einen einfachen elektromagnetischen Greifer für den Arm entwickelt, der magnetische Gegenstände greifen kann.
Kinematik | Tatsächlich ist ein menschlicher Arm eine sehr bewegliche Struktur, weil die daran vorhandenen Gelenke relativ "frei" sind. Das gilt insbesondere für das Schultergelenk, das das beweglichste Kugelgelenk des menschlichen Körpers ist. Es erlaubt Bewegungen in allen drei Körperebenen, in der sog. Transversalebene (auf die man blickt, wenn man auf einen Menschen aus "Vogelperspektive" guckt) und in der Sagittalebene (auf die man blickt, wenn man einen Menschen von der Seite anguckt) und der Frontalebene (auf die man blickt, wenn man einen Menschn von vorne ansieht). Zusätzlich können wir unseren Oberarm mit Hilfe des Schultergelenkes auch um die Längsachse drehen. Praktisch werden dem Schultergelenk drei Freiheitsgrade zugeordnet. Bei Verwendung eines robolink-Gelenks mit zwei Freiheitsgraden für die Schulter muss man also entweder selber einen zusätzlichen dritten Freiheitsgrad schaffen, oder aber einen Kompromiss finden, der die Gesamtstruktur bei nur zwei Freiheitsgraden einem menschlichen Arm dennoch ähnlich werden lässt. Ich habe mich im Falle dieses ersten Versuchsaufbaus für die zweite Variante entschieden, um die Struktur nicht von vornherein zu kompliziert werden zu lassen.
Inverses robolink Gelenk | Spielt man nun mögliche Bewegungsabläufe durch, merkt man schnell, dass hier sinnvoll ist, das robolink für die Schulter umgekehrt zu seiner eigentlich vorgesehenen Richtung zu verwenden. Dann stellt das Gelenk vom Körper aus gesehen erst die Rotations- und dann die Schwenkbewegung zur Verfügung. Es war insofern eine konstruktive Herausforderung, für das Schultergelenk eine belastbare Umlenkung der Antriebszüge um 180° im robolink zu realisieren. Tatsächlich habe ich zwei verschiedene Ansätze verfolgt. Bei der ersten Variante wurden die Züge nach außen geführt. Dazu wurden die Elemente im robolink, die die Seile für die Schwenkbewegung führen, umgeabeitet. Die ersten zwei Bilder zeigen das umgearbeitete Teil. Es wurden zwei Rollen integriert, die im Zusammenspiel das Seil um 90° umlenken. Nach der Umlenkung werden die Seile dann aus dem Schenkel des Gelenkes herausgeführt. Dort setzt dann der entsprechende Bowdenzug an.
In einer zweiten Variante wurde die Umlenkung komplett im Gelenk realisiert. Dazu wurde einerseits wiederrum das o. g. Seilführungsteil modifiziert. Bei dieser Variante wurde allerdings nur eine Rolle eingesetzt, die das Seil um 90° ins Innere des robolinks umlenkt. Um die vollen 180° zur Richtungsumkehr zu erreichen, wurde außerdem der Bowdenzug modifiziert. Die einzelnen Elemente, aus denen der hier verwendete Bowdenzug besteht, wurden stark gekürzt, sodass er in deutlich engeren Radien geführt werden kann. Auf dem rechten unteren der folgenden vier Bilder kann man sowohl den Origianlbowdenzug mit den großen Elementen (außen) wie auch die umgearbeiteten kleinen Elemente (innen) erkennen.
Bei den hier verwendeten robolink Gelenken und Bowdenzügen handelt es sich nicht um die Versionen, die aktuell (2012) von igus vertrieben werden. Die hier gezeigten Gelenke sind Modelle der zweiten Prototypengeneration von 2009. Im Detail können sich mechanischen Verhältnisse gegenüber der hier dargestellten Version also geändert haben.
Antrieb | Beim robolink Gelenksystem müssen zwei Seilzüge für die beiden Bewegungsrichtungen in einem Freiheitsgrad gegensinnig aktuiert werden, analog zur biologischen Situation eines agonistischen und antagonistischen Antriebes. Um dieses zu bewerkstelligen, wurde ein einfaches Seilzugwindenkonzept erarbeitet, bei dem mit einem Motor gleichzeitig ein Seilzug aufgewickelt und der zweite abwickelt wird. Die eigentliche Winde wird von einem Gewindebolzen gebildet. Das Seil liegt dabei in den Gewindegängen, wodurch sichergestellt ist, dass es sich kontrolliert auf- und abwickelt. Zum Antrieb wurden einfache DC-Motoren mit Schneckengetriebe verwendet. Bei den Motoren handelt es isch um billige Restposten, die offenbar aus dem Automobilbereich stammen. Das Getriebe wurde um ein Gegenlager ergänzt, um die radialen Kräfte, die über die Winde auftreten besser abfangen zu können. Das Lager wurde als einfaches Gleitlager realisiert.
Spannschlösser | Um die Spannung der Antriebszüge justieren zu können, wurden spezielle Spannschlösser angefertigt. Der etwas raumgreifende Aufbau der Antriebseinheit ergibt sich wesentlich aus der Verwendung der Spannschlösser: es muss genügend Strecke ohne Umlenkung zur Verfügung stehen, damit sich die Schlösser über den gesamten Arbeitsbereich frei bewegen können. An dieser Stelle besteht sicherlich noch Optimierungspotential und -bedarf.
Rahmen | Arm und zugehörige Antriebe sitzen in einer stabilen Rahmenkonstruktion aus Aluminium. Ich habe gerade einige kleine Modifikationen an meinem ersten Aufbau vorgenommen und bei der Gelegenheit die Oberflächen der Aluminiumteile glasperlgestrahlt. Das linke Bild zeigt alle Komponenten des Rahmens, das rechte Bild die schöne Oberfläche nach dem Strahlen. Langfristig sollen die Teile eloxiert werden, weil die Oberflächen jetzt noch sehr empfindlich sind.
Aufbau | Nach dem erneuten Zusammenbau sieht die ganze Maschinerie jetzt aus wie auf den folgenden Bildern gezeigt. Die weiter unten verlinkten Videos zeigen noch den alten Aufbau. Die Kabel von den Rotationsencodern und dem Greifer sind jetzt bis zum Ansatz an den Hauptrahmen im Inneren des Armes verlegt, das war vorher anders. Das wurde möglich, weil ich die Umlenkung der Züge im Schultergelenk nochmal geändert habe. Die Züge werden nach der Umlenkung nach außen geführt, dadurch ist im Inneren mehr Platz, den ich für die Kabelage nutze.
Controller | Die robolink-Gelenke verfügen über magnetische Drehencoder, die über Stellungsänderungen im Gelenk informieren. Um eine bestimmte Gelenkstellung unterwechselnder Last halten zu können, muss aus den Encoderinformationen die absolute Gelenkstellung ermittelt werden und der Antrieb für den entprechenden Freiheitsgrad so aktiviert werden, dass alle Abweichungen von der Soll-Lage so kurzfristig wie möglich ausgeglichen werden. Es bietet sich deshalb an, Treiber für die Antriebsmotoren und Auswertung der Stellungssensoren in einem Modul zusammenzufassen. Da ein robolink-Gelenk jeweils eine funktionelle Einheit darstellt, hielt ich es für sinnvoll, je Gelenk einen Controller vorzusehen, wobei die Controller problemlos kaskadierbar sein sollten um ein einheitliches Steuerungssystem für beliebig viele Gelenke zu bieten. Die Controller sind per USB (oder RS232 oder I2C) mit einem Rechner zu verbinden, aufgrund der Kaskadierbarkeit braucht man dabei aber natürlich nur eine Verbindung zum Computer. Die verwendete USB-Elektronik hat den angenehmen Vorteil, dass die Verbindung als virtueller COM-Port ins Betriebssystem integriert wird, das macht den Zugriff auf den Controller - und damit auf die Gelenke - aus Hochsprachen sehr einfach. Pro Controller stehen zwei moderne H-Brücken zur Verfügung, die laut Datenblatt Motoren mit bis zu 30 A treiben können - bei so hohen Strömen wird man allerdings sicher kühlen müssen. Bei den aktuell verwendeten Motoren ist das nicht nötig. Ein Stromsensor im Mototreiber misst die momentane Stromaufnahme jedes Motors, diese Information erlaubt Rückschlüsse auf die Belastung des entsprechenden Freihetisgrades. Die Aktivierung der Motoren erfolgt über ein pulsweitenmoduliertes Signal, dass von einem 20 MHz schnellen AVR µC erzeugt wird. Der µC wertet auch das Encoder Quadratursignal aus. Und damit schließt sich der (Regel-)Kreis: der nächste Schritt ist die Implentierung der Lageregelung.
Hier ein kleines Webcam Video des aktuellen Aufbaus:
Elektromagnetischer Greifer | Seinen eigentlichen Zweck kann ein Arm erst dann erfüllen, wenn er über irgendein Werkzeug, z. B. Greifwerkzeug verfügt. Um erst einmal etwas Simples für erste Experimente zu haben, habe ich einen einfachen elektromagnetischen Greifmechanismus entwickelt. Dieser kann nichts anderes, als Objekte aus magnetischen Metallen zu halten oder fallenzulassen. Weil ich aus verschiedenen Gründen erst mal mit farbigen Kugeln arbeiten wollte (warum denn nur... ;-)), ist der Greifer so konstruiert, dass er insbesondere Kugeln gut festhalten kann. Der Greifer gibt dem Arm einen zusätzlichen Bewegungsfreiheitsgrad, der durch einen einfachen Modellbauservo realisiert ist. Die Steuerung ist erstmal ganz primitiv auf Lochrasterkarte improvisiert, der ganze Kabelsalat muss dann mittelfristig natürlich auch noch verschwinden. Die Greifersteuerung wird ebenfalls an den Bus der Gelenkcontroller angeschlossen, insofern bleibt eine gewisse Konsistenz beim Ansteuerungskonzept erhalten. Weitere Informationen folgen in Kürze, dann auch mal ein paar Fotos, vorerst gibt‘s nur wieder ein kleines Video.