Universal Robots: Unterschied zwischen den Versionen
(→Matlab) |
(→Matlab) |
||
Zeile 23: | Zeile 23: | ||
{| class="mw-datatable" | {| class="mw-datatable" | ||
! style="font-weight: bold;" | Ansteuerungart | ! style="font-weight: bold;" | Ansteuerungart | ||
! style="font-weight: bold;" | | ! style="font-weight: bold;" | Funktionen | ||
! style="font-weight: bold;" | | ! style="font-weight: bold;" | Konflikte | ||
|+ style = "text-align: left"| | |+ style = "text-align: left"| Ansteuerungsmöglichkeiten | ||
|- | |- | ||
| | | Realtime/RTDE | ||
| | | Senden von URScript-Befehlen (z.B. Roboterbewegung) mit Hilfe von Peter Corke Toolbox | ||
| | Gleichzeitiges Auslesen der Realtime/ RTDE-Schnittstelle | ||
| 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 | |||
|} | |} | ||
Version vom 4. Februar 2022, 15:41 Uhr
Universal Robots (UR) an der HSHL
UR3, CB-Serie
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
Ansteuerung der UR-Roboter
Matlab
Ansteuerungart | Funktionen | Konflikte |
---|---|---|
Realtime/RTDE | Senden von URScript-Befehlen (z.B. Roboterbewegung) mit Hilfe von Peter Corke Toolbox
Gleichzeitiges Auslesen der Realtime/ RTDE-Schnittstelle |
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. Funktionen der Virtuellen Maschine wie "Gemeinsame Ordner" oder den "VirtualBox-Gasterweiterungen" sind zwar in gewissen Hinsichten praktischer, deren Einrichtung ist jedoch wesentlich komplizierter und wird deshalb hier nicht erläutert.
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!
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
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:
- Einrichtung einer Netzwerkverbindung in den Einstellungen von VirtualBox:
- Netzwerkadresse einstellen.
- DHCP-Server einstellen.
- In den Einstellungen für die virtuelle Maschine muss noch der richtige Netzwerkadapter und der richtige Modus eingestellt werden:
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.