Die Umsetzung ist bis heute nicht ganz gelungen. Jasper Kühn hat es geschafft, eine Verbindung zum Roboter aufzubauen, mit dieser ist es jedoch nur möglich, einfache Socket-Befehle an den Arm zu senden. Der Anschluss des Roboters erfolgt dabei nicht direkt an die Ethernet-Schnittstelle des Computers, sondern über einen Router. Dieser Router bildet damit ein eigenes Netzwerk, welches es nun möglich macht, dem UR5e eine IP-Adresse zu geben. Nach erfolgreicher Identifikation im Netzwerk muss ein entsprechender Port angewählt werden, für die Verwendung von Socket-Befehlen ist dies der Port 29999. Diese sogenannten Socket-Befehle ermöglichen es, einfache einzeilige Befehle abzurufen. Auf diese Weise lässt sich ein Programm starten, der Arm ein- und ausschalten, und sogar die Temperatur der einzelnen Achsen überwachen. Mit diesen Befehlen lässt sich jedoch nur die werksseitige Benutzeroberfläche von Universal Robots beeinflussen. Möchte man ein Programm laden, muss man dieses jedoch zuvor erst anlegen und abspeichern, was den Prozess des Abspielens eher verlängert als verbessert. Auch wenn diese Verbindung sich als durchaus praktisch erweist, erfüllt sie nicht unsere Ansprüche.
Um eine Echtzeitübertragung zu ermöglichen, müssen die Befehle direkt aus den Programmen heraus auf den Arm exportiert werden. Dies erwies sich als begrenzt durchführbar. Mit RoboDK war Martin Kuhlenkamp in der Lage, eben diesen Upload über den Port 30002 durchzuführen, das Programm verlief jedoch nicht wie erwartet. Bei einem Programm, welches über das sogenannte „Teach Panel“, also das Tablet, welches zum Arm gehört, erstellt wurde, wurde die Interpolation der einzelnen Wegpunkte vom internen Controller übernommen. Wird nun das Programm jedoch über den PC gestartet, so werden dem Arm nur die einzelnen Wegpunkte, aber keine Verkettung dieser übermittelt. Dies hat zur Folge, dass die Punkte nicht interpoliert werden und die Fahrbewegung stark ruckelt oder sich der Roboter aufgrund von zu hoher Achslast sogar ausschaltet. Mit HAL war es gar nicht erst möglich, diese Befehle zu schicken, da keine Verbindung zum Arm hergestellt werden konnte. Nach Rücksprache mit den Entwicklern von HAL sollte dies aber möglich sein.
Auch ist es uns bisher noch nicht gelungen, mehreren Geräten gleichzeitigen Zugriff auf den Roboterarm zu verschaffen. Es war zwar möglich, ein Programm über RoboDK zu starten, jedoch konnte dieses nicht über die Socket-Befehle von einem anderen Computer aus pausiert, gestoppt oder anderweitig beeinflusst werden. Bei einem versuchten Zugriff wurde der jeweilige andere Computer aus dem Netzwerk entfernt.
Anpassung der Parameter
Die Parameter, mit denen ich mich am meisten beschäftigt habe, sind Beschleunigung, Geschwindigkeit und Interpolation. Diese drei befinden sich in einem sensiblen Zusammenhang zueinander, und das Verändern einer dieser Einstellungen kann entscheidend sein, um ein Programm flüssig zu fahren. Viele Programme unterstützen mittlerweile eine automatische Anpassung dieser Parameter, so z.B. auch RoboDK.
HAL hingegen bietet den Nutzern die Freiheit, diese selbst anzupassen. Dies bringt viel Spielraum mit sich, ist am Anfang aber alles andere als hilfreich. Sollte man keine der Parameter verändern, greift HAL auf interne zurück, diese sind jedoch bedingt nutzbar. Je höher die Interpolation, desto mehr Probleme machen diese Einstellungen. Wenn weniger Targets vorliegen, wirkt die Fahrweise flüssiger, da der Roboter nur bei Richtungsänderungen die Targets berührt. Eine hohe Interpolation ist aber für unsere Zwecke ein wichtiger Faktor, denn besonders beim Schreiben und Erstellen von Grafiken ist höchste Präzision gefragt. Man könnte das Programm sicherlich auch schlecht optimiert fahren, jedoch würde das heftige Anfahren und Abbremsen für eine hohe Belastung der internen Motoren sowie Bremsen sorgen. Der Verschleiß würde sich drastisch erhöhen und die Gelenke an Präzision verlieren, im schlimmsten Fall würden sie beschädigt werden.
Eine Optimierung dieser Einstellungen ist also dringend notwendig, weshalb ich viel Zeit damit zugebracht habe, diese zu testen. Letztendlich habe ich Werte gefunden, von denen ich ausgehe, dass diese gut funktionieren sollten. Problematisch wird es erst wieder, falls die von mir festgelegte Interpolation verändert werden sollte, dann ist eine flüssige Fahrbewegung nicht mehr garantiert. Zuletzt haben auch die Anzahl der erstellten Targets sowie der Target-Filter direkten Einfluss auf diese Einstellungen.