Universal Robots

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Zurück zum Hauptartikel


Universal Robots (UR) an der HSHL

UR3, CB-Serie

UR3 mit RG2 Greifer

Der Roboter ist ein UR3 von Universal Robots. Er verfügt über sechs rotierende Gelenke welche sechs Freiheitsgrade ermöglichen. Seine maximale Reichweite beträgt 500mm. Programmiert werden kann er entweder über das angeschlossene Terminal in der mitgelieferten Polyscope Software oder über einen angeschlossenen Computer in einer kompatiblen Entwicklungsumgebung. Zur weiteren Ansteuerung besitzt er sowohl 16 digitale als auch zwei analoge Ein- und Ausgänge. Außerdem ist ein RG2 Greifer der Firma OnRobot montiert. Bei diesem handelt es sich um einen elektrischen zwei Finger Greifer mit einer maximalen Greifkraft von 40 Newton.

Technische Daten zu dem Roboter können auf der Internetseite von Universal Robots angefordert werden.

Das Datenblatt des UR3-Roboters kann hier entnommen werden: Datei:Technische-Daten-UR-3.pdf.


UR10, CB-Serie

Zweiarmrobotersystem UR10 auf fertigem höhenverstellbaren Gestell [1]


Ansteuerung der UR-Roboter

Matlab

Ansteuerungart Funktionen Konflikte
Ansteuerungsmöglichkeiten
Realtime/RTDE Senden von URScript-Befehlen (z.B. Roboterbewegung) mit Hilfe von Peter Corke Toolbox

Gleichzeitiges Auslesen der Realtime/ RTDE-Schnittstelle (Erhalt vieler nützlicher Roboterdaten)

Senden von URCaps Befehlen (notwendig für Roboter-Werkzeuge) nicht möglich

Datenaustausch zwischen Polyscope und Matlab (oder anderem Gerät) nicht möglich

Server-Client-Verbindung Datenaustausch zwischen Polyscope und Matlab (oder anderem Gerät) möglich

URCap und URScript-Befehle können im Polyscope geschrieben werden und durch Matlab angestoßen werden (über Variablenaustausch)

Server-Client-Verbindung erlaubt Kommunikation nur über einen unbelegten Port, Realtime und RTDE können also nur noch zum lesen verwendet werden

Thread-Scheudling des Polyscope muss bei der Programmierung bedacht werden


Senden von URScript Befehlen Hilfe der Robotics Toolbox über Realtime- und RTDE-Schnittstelle

Um mit dem Roboter über eine Ethernet-Verbindung kommunizieren zu können, muss ein TCP Port geöffnet werden.

  • Die Ports für die Kommunikation zum Roboter sind 30003 (Realtimeschnittstelle) und 30004 (RTDE-Schnittstelle)[1] [2]
  • Die IP-Adresse des Roboters muss gegebenenfalls auf statisch festgelegt werden anstatt DHCP.

Für das Erzeugen einer Bewegung gibt es im Skripthandbuch von UR bestimmte Befehle. So ist eine Bewegung aller Achsen des Roboters auf bestimmte Zielwinkel „q“ mit der Funktion „movej(q, a, v, t=0, r=0)“ möglich. Die zu übergebenden Variablen sind hier ebenfalls beschrieben.

  • q = Gelenkwinkel der einzelnen Achsen (Jeder Achse wird ein Winkel in Radiant zugeordnet. Jede Achse dreht sich beim Anfahren des neuen Bewegungsbefehls somit auf seinen vorgegebenen Wert. Bei dem UR3 gibt es 6 Achsen, somit auch 6 unterschiedliche q (q1, q2, q3, q4, q5, q6).)
  • a = Beschleunigung der Achsen
  • v = maximale Geschwindigkeit der Achsen

Dieser Befehl muss als String, also nicht als Variablen, an die Steuerung des Roboters übergeben werden. Dies kann in MATLAB mit „num2str“ so umgesetzt werden:

function [commandString] = command2string(q,a,v,t,r)
    
    commandString = ['movej([' num2str(q(1)) ', ' num2str(q(2)) ', ' num2str(q(3)) ', ' num2str(q(4))...
                    ', ' num2str(q(5)) ', ' num2str(q(6)) '], ' num2str(a) ', ' num2str(v) ', ' num2str(t)...
                    ', ' num2str(r) ')'];
end

Hier kann die originale MATLAB-Funktion heruntergeladen werden: Datei:Command2string.m. Diese muss sich am Ende des Hauptprogramms oder mit demselben Namen im gleichen Pfad befinden.

Anschließend muss dieser String über die Verbindung mit „fprintf“ gesendet werden.

Socket_conn = tcpip(Robot_IP,Port_NR);
fprintf(Socket_conn; command2string(q,a,v,t,r));


Austauschen von Daten über Server-Client Verbindung


Eine Server-Client Verbindung erlaubt es, dass zwei Geräten untereinander Daten austauschen und diese verarbeiten können. Im Gegensatz zur Nutzung der Realtime-Schnittstelle ist es hier also möglich, aus MATLAB Daten zu senden und diese im Polyscope Skript zu verwenden. Wird der UR3 über die Realtime-Schnittstelle betrieben, können nur Befehle gesendet werden, die unabhängig von einem Polyscope Skript verarbeitet werden.

Um die Server-Client Verbindung aufzubauen ist es notwendig die Rollen „Server“ (in dem Fall MATLAB) und „Client“ (hier das Polyscope) zu vergeben. Dies wird in MATLAB in dem Code eingebunden und vom Polyscope automatisch erkannt. Des Weiteren ist es unbedingt notwendig einen freien, also nicht belegten, Port zur Kommunikation zu wählen, da sich auf einem belegten Port keine neue Verbindung öffnen lässt (Portliste [3]) und die (Windows-)Firewall in ihren Werkseinstellungen zu nutzen. Stärkere Firewalls können die Server-Client Verbindung gegebenenfalls unterbinden.

Der Vorteil dieser Verbindungsart besteht darin, dass Skriptbefehle, die über den Port der Realtime-Schnittstelle nicht gesendet werden können, hier im Polyscope-Skript eingebettet werden. Dort wird laufend eine Variable abgefragt, die je nach Wert einen bestimmten Programmteil anstößt und ausführt. Diese Variable kann nun durch MATLAB-Code beliebig oft und in veränderter Weise aufgerufen werden, um bestimmte Funktionen auszuführen. Dadurch können alle notwendigen Funktionen über eine Socket-Connection implementiert werden. Dies ist notwendig, da das Polyscope lediglich über einen Socket gleichzeitig Befehle empfangen, aber über mehrere Daten senden kann. Also muss der Datenaustausch über die Server-Client Verbindung stattfinden, während das reine Auslesen der Realtime-Schnittstelle noch möglich bleibt. Das Senden von Bewegungsbefehlen über diese Art und Weise fällt dann jedoch weg.

  • UR3

Um eine Server-Client Verbindung aufzubauen, muss zuerst gegeben sein, dass sich beide Geräte im selben IP-Adressbereich finden und per Ethernet-Kabel verbunden sind. Eventuell müssen die IP-Adressen aufeinander abgestimmt werden. Als unbelegter Port wird hier Port_NR = 33 gewählt und als Robot_IP wird, die des Roboters vergeben (es funktioniert sowohl mit dem richtigen Roboter als auch mit der Virtuellen Maschine).

Durch den folgenden Code wird eine Server-Client Verbindung aufgebaut:

 Socket_conn = tcpip(Robot_IP,Port_NR,'NetworkRole','server');

try
    fprintf(1, 'Aufbau der Verbindung mit dem UR3....');
    fopen(Socket_conn); % Verbindung herstellen
catch
    error('Verbindung zum  UR3 nicht herstellbar');
end

fprintf(1, 'Verbindung mit UR3 hergestellt.\n');
pause(2); % warten

Der Befehl Socket_conn = tcpip(Robot_IP,Port_NR,'NetworkRole','server'); gibt MATLAB die Information, sich als Server an das Polyscope zu richten.

Im Polyscope-Skript lautet der notwendige Befehl socket_open(„IPADRESSE“,PORTNUMMER), in dem als IP-Adresse die des Rechners (auf richtigen Ethernet Port achten) und dieselbe Portnummer wie im MATLAB-Code eingetragen werden. Nun sollte die Meldung „Verbindung mit UR3 hergestellt“ im Command Window von MATLAB erscheinen. Es können nun Daten ausgetauscht werden. Der vollständige Polyscope-Code wird im Abschnitt 8.7 Programmierung des Polyscope [2] genauer erläutert.

  • Simulationssoftware

Um in der Virtuellen Maschine eine Server-Client Verbindung aufbauen zu können sind ebenfalls die beiden Grundbedingungen (passende IP-Adressen und unbelegter Port) zu erfüllen. Der MATLAB-Code bleibt, bis auf eine angepasste IP-Adresse, vollständig erhalten.

Der im Polyscope verwendete Befehl socket_open(„IPADRESSE“,PORTNUMMER) erhält hier, statt der IP-Adresse des Computers, die IP-Adresse des Ethernet-Adapters der VirtualBox. Diese sind über den Windows-cmd Befehl ipconfig zu finden und lautet 10.0.2.1, wenn die VirtualBox nach den Anleitungen der Hochschule [4] eingerichtet wurde. Die Virtuelle Maschine über das Windows-cmd Fenster mit dem Windows-cmd Befehl ping 10.0.2.2 anzupingen (IP-Adresse des virtuellen UR3 prüfen), hilft gelegentlich die Verbindung aufzubauen. Dies kann wiederholt durchgeführt werden, falls die Verbindung nach einer gewissen Zeit nicht mehr hergestellt werden kann.

Um geschriebenen Polyscope-Code in der Virtuellen Maschine einzubinden hat es sich als nützlich erwiesen diesen auf einem USB-Stick abzulegen, welcher dann von der Virtuellen Maschine ausgelesen werden kann.

ROS

In diesem Artikel ist die Inbetriebnahme der beiden UR-10 Arme mit Hilfe von ROS beschrieben.

Simulation der UR-Roboter mittels "Offline-Simulation"

Die Software, die auf den Rechnern des Roboters läuft (auf dem Handbediengerät) kann auf jedem beliebigen PC als so genannte "virtuelle Maschine" installiert werden.

Installation

Eine auführliche Anleitung erhalten Sie, wenn Sie im Download-Bereich der UR-Internetseite auswählen:

  • CB-Series
  • Software
  • Offline Simulator
  • Betriebssystem auswählen, wo die Roboter-Offline-Software laufen soll. Im häufigsten Fall liegt auf Ihrem PC ein Windows-Betriebssystem vor. Installieren Sie sich in diesem Fall die Software VirtualBox und folgenden der Anleitung von UR!

Ergänzung Prof. Göbel 11.5.22: Da dafür nun ein Login erforderlich ist, verwenden wir einheitlich die virtuelle Maschine Nr. URSim_VIRTUAL-3.14.3.1031232. Die Installationsschritte sind hier dargelegt:

  1. VirtualBox installieren [zuletzt getestet: v6.1]
  2. Maschine/neu
  3. Namen beliebig vergeben
  4. Ordner beliebig wählen
  5. Typ: Linux
  6. Version: Ubuntu 32bit
  7. Speichergröße: 768MB
  8. "Vorhandene Festplatte verwenden" auswählen und den entpackten Ordner der virtuellen Maschine verwenden (siehe Download von Prof. Göbel)
  9. Erzeugen!


Diese Art der Offline-Simulation der UR-Roboter wird selbst vom Support von UR verwendet, um alle Roboter in allen Software-Versionen testen und Fragen dazu beantworten zu können!

Einrichtung der Netzwerkverbindung von Host-Rechner und virtuellem PC

Einstellungen

Der Rechner, auf dem die virtuelle Maschine installiert ist, nennt sich "host". Um von diesem "host" aus eine Netzwerkverbindung zum virtuellen Rechner herstellen zu können, wurde dieses Vorgehen erfolgreich getestest:

  1. Einrichtung einer Netzwerkverbindung in den Einstellungen von VirtualBox:
    1. Werkzeuge/Netzwerk/Erzeugen
    2. Werkzeuge/Netzwerk/Eigenschaften: Netzwerkadresse einstellen.
      Netzwerkadresse einstellen
    3. Werkzeuge/Netzwerk/Eigenschaften/DHCP-Server Adresse für DHCP-Server einstellen.
      DHCP-Server einstellen
  2. In den Einstellungen für die virtuelle Maschine muss noch der richtige Netzwerkadapter und der richtige Modus eingestellt werden:
    Netzwerkadapter und Modus einstellen

Getestet wird das Ganze, in dem auf dem "host" in einem Kommandofenster (Suchen nach "cmd") der Befehl "ping 10.0.2.15" ausgeführt wird.

Fehlersuche

Sollte es bei dieser Netzwerkverbindung [In Virtual Box "VirtualBox Host-Only Ethernet-Adapter"] beim Start der virtuellen Maschine zu Fehlermeldungen kommen, so kann ein Deaktivieren und anschließenden Aktivieren des Netzwerkadapter [in Windows: Einstellunge/Netzwerk/Adaptereinstellungen] helfen.



Literatur