UR3 Roboter zeichnen lassen - Entwicklung einer "Etch-A-Sketch" Ansteuerung
Autor: Henning Lütkemeier
Betreuer:
Prof. Dr. Mirek Göbel
Einleitung
Die Projektarbeit mit dem Titel „UR3 Roboter zeichnen lassen – Entwicklung einer „Etch-A-Sketch“-Ansteuerung“ wurde im Rahmen des Bachelorstudiengangs Mechatronik an der Hochschule Hamm-Lippstadt erstellt. Ziel der Arbeit ist es, bereits theoretisch erlerntes Wissen durch eine praktische Anwendung zu vertiefen und zu erweitern. Gleichzeitig bietet sie eine gute Chance, erste Erfahrungen im Bereich der kollaborativen Robotik zu sammeln. Um dieses Ziel zu erreichen, wurde ein realisierbares Projekt im Bereich des Produktionstechnik-Labors ausgewählt, das sowohl Themen wie die Programmierung von UR-Robotern, Konstruktionsumsetzungen mithilfe von 3D-Druckverfahren als auch Grundlagen der Elektrotechnik abdeckt.
Aufgabenstellung
Als Aufgabenstellung für die Projektarbeit wurde das Thema gewählt, den vorhandenen UR3-Roboter im Labor für Produktionstechnik zu nutzen. Das Kinderspielzeug Etch-A-Sketch, eine magnetische Schreibtafel, diente als Inspiration und Vorlage. Der UR3-Roboter soll nach dessen Funktionsprinzip angesteuert werden, um das Etch-A-Sketch-Zeichenspielzeug nachzustellen. Der Roboter soll mithilfe von zwei Drehreglern die X- und Y-Achse eines Zeichenblattes im DIN-A3-Format abfahren. Das Zeichenblatt wird mit Magneten an jeder Ecke befestigt. Am Roboter wird eine Halterung für einen Stift montiert, sodass es auch möglich ist, auf dem Blatt zu zeichnen. Zur Umsetzung soll ein Bedienpult mit Drehreglern konstruiert werden. Außerdem wird das von UR entwickelte Programm PolyScope verwendet, damit der UR3-Roboter eigenständig, ohne einen zusätzlichen PC, betrieben werden kann. Für ein verbessertes Erreichbarkeitsfeld des Roboterarms soll eine Erhöhung konstruiert und montiert werden. Dies dient vor allem der Umsetzung nachfolgender Projekte.
Etch-A-Sketch Funktionsprinzip
„Etch-A-Sketch“ ist ein mechanisches Zeichenspielzeug, das 1960 vom
französischen André Cassagnes entwickelt und in den 1970er Jahren populär
wurde. Die Besonderheit liegt in der Malweise und dem dahinterstehende Funktionsprinzip.
So ist es nur möglich eine ununterbrochene Zeichnung anzufertigen, da der „Stift“
nicht abgesetzt und neu angesetzt werden kann. Mithilfe von zwei Drehreglern
bewegt man den „Stift“ horizontal und vertikal. Es entsteht eine schwarze Strichzeichnung auf grauem Hintergrund.
Die Zeichenfläche besteht aus einer Glasscheibe, die auf der Rückseite
mit einer grauen Pulvermischung aus Aluminium und Polystyrol beschichtet ist.
Der Zeichenstift, der durch Federkraft gegen die Scheibe gedrückt wird, trägt bei
jeder Bewegung das Pulver ab und hinterlässt eine Linie. Der Bewegungsablauf
wird durch Drehregler und Umlenkrollen realisiert. Durch Umdrehen oder
Schütteln wird das Pulver wieder auf der Zeichenfläche verteilt, und die zuvor erstellte Zeichnung wird gelöscht.
Es handelt sich hierbei um ein feinmotorisch anspruchsvolles Spielzeug für alle
Generationen. Beispielsweise muss für eine diagonale Bewegung beide
Drehregler mit gleicher Drehgeschwindigkeit betätigt werden. [1]
Anforderungsdefinition
Diese Tabelle beschreibt die Anforderungen des Projektes.
ID | Typ (I=Info, A=Anforderung) | Kapitel | Inhalt | Ersteller |
---|---|---|---|---|
1 | I | 1 | Komponententest | |
2 | A | Verbindung des Bedienelementes muss sichergestellt sein. | HL | |
3 | A | Die eingelesene Spannung an AI(0) sowie an AI(1) soll zwischen 0-10 V eingelesen werden. | HL | |
4 | A | Der Start Taster muss bei Betätigung mit DI(0) abgefragt werden. | HL | |
5 | I | 2 | Konstruktion | |
6 | A | Robotererhöhung konstruieren und montieren (3D-Druck) , demontierbar ohne lösen der Tischplatte. | HL | |
7 | A | Bedienpult konstruieren, zwei Drehregler, mit Start-Taster, Zugentlastung der Zuleitung | HL | |
8 | I | 3 | Programmierung | |
9 | A | Der Roboter soll mit PolyScope programmiert werden, Standalone ohne PC. | HL | |
10 | I | 4 | Entwicklung der Schaltung | |
11 | A | Es muss eine Schaltung aufgebaut werden, die einen Drehpotentiometer zum einstellen der Spannung aufweist. | HL | |
12 | A | Spannung von 0-10 V muss einstellbar sein. | HL | |
13 | A | Roboter Spannungsquelle nutzen --> 12 V auf 10 V Poti Spannung | HL | |
14 | A | Schaltplan erstellen | HL | |
15 | I | 5 | Dokumentation | |
16 | A | Plakat für Labor erstellen | HL | |
16 | A | Wiki-Artikel erstellen | HL | |
17 | A | Schriftliche Ausarbeitung des Projektes | HL | |
18 | I | 6 | Systemtest | |
19 | A | Das System muss Sicher funktionieren. | HL | |
21 | A | Der Roboter soll das Funktionsprinzip des Etch-A-Sketch erfüllen. | HL | |
22 | A | Der Roboter soll die Bewegung flüssig ausführen. | HL |
Funktionaler Systementwurf
Der funktionale Systementwurf gibt eine Übersicht vom Aufbau des Systems. Das Bedienpult, "Teach-Pendant", des Roboters sowie die Bedienung der Drehpotentiometer für die X- und Y-Richtung als auch der Start-Knopf sind mit dem Schaltkasten des Roboters verbunden. Der UR3-Roboter führt dann die Bewegung aus und zeichnet auf dem Zeichnungsblatt. Die Abbildung zeigt den funktionalen Systementwurf.
Technischer Systementwurf
Im technischen Systementwurf wird der Aufbau genauer spezifiziert und die Ein- und Ausgänge deklariert.
Entwicklung
Die Projektentwicklung ist in drei Kapitel unterteilt. Im weiteren Verlauf wird zunächst die Konstruktion der erforderlichen Bauteile erläutert. Anschließend erfolgt eine Darstellung der Auswahl und Umsetzung der elektronischen Komponenten. Abschließend wird die Programmierung des UR3-Roboters mit PolyScope beschrieben.
Elektronische Komponenten
Zur Ansteuerung des Roboters wurden die vorhandenen Schnittstellen berücksichtigt. Der Roboter besitzt eine Ein- und Ausgangsschnittstelle. Zur Verfügung stehen hier unteranderem Digitale E/A- sowie Analoge E/A- Schnittstellen. Die Ansteuerung wurde mittels Drehpotentiometer realisiert. Es wurde ein 10 kOhm linear Drehpotentiometer verwendet. Dieser wird über die Analoge E/A-Schnittstelle 0-10V abgefragt. Die interne Spannungsquelle liefert eine Spannung von 12V. Es wurde eine weiterer Widerstand in Reihe geschaltet um eine maximale Spannung von 10V zu erhalten. Dieser wurde auf Grundlage des Spannungsteilers-Prinzip dimensioniert.
Spannungsteiler-Formel:
Umgestellt nach R1 ergibt:
Neben der Bewegungsansteuerung wurde auch ein Taster für den Startvorgang vorgesehen. Der Taster wird über den Digital E/A-Schnittstelle eingelesen.
Als Zuleitung diente ein Patchkabel des Typs SF/UTP. Die Abbildung zeigt den Schaltplan der Ansteuerung sowie die Belegung der Zuleitung.
Konstruktion
Die Konstruktionen wurden mit dem CAD-Programm SolidWorks erstellt. Dabei konnten die im Studienverlauf erworbenen Kenntnisse aus dem CAD-Praktikum genutzt werden. Mithilfe des 3D-Druckers im Labor sowie eines privat genutzten Druckers wurden die Bauteile produziert.
Robotererhöhung
Ein Aspekt der Aufgabenstellung bestand darin, den UR3-Roboter zu erhöhen, um das Erreichbarkeitsfeld des Roboterarms zu optimieren. Diese Anpassung war insbesondere für zukünftige Projekte von Bedeutung, wie zum Beispiel das Greifen von Schachfiguren auf einem Schachbrett. Hierzu wurde eine Erhöhung von 100mm konstruiert. Dabei sind die Maße der Bohrlöcher sowie deren Abstand zu berücksichtigen. Als Maßvorlage diente die CAD-Datei des UR3-Roboters. Die Abbildung zeigt die fertige Erhöhung. Der Roboter wurde mittels M6 Stehbolzen mit einer Länge von 140mm am Tisch montiert. Die Erhöhung wurde im 3D-Druckverfahren hergestellt. Zur Filament Einsparung wurde in der Mitte des Bauteils ein Kreisförmiger Hohlraum vorgesehen. Durch einen ausreichenden Infill von 20% im Wabenmuster kann die Mindestanforderung von 45kg Traglast des Herstellers UR sichergestellt werden.
Bedienpult
Neben der Konstruktion der Erhöhung war auch die Entwicklung eines Bedienpultes für die Drehregler ein wesentlicher Bestandteil des Projekts. Das Gehäuse des Bedienpultes wurde ebenfalls mithilfe des 3D-Drucks gefertigt. Für eine komfortable Handhabung wurden bei der Konstruktion die Maße des Gehäuses sowie der Durchmesser der Drehregler berücksichtigt. Die Abbildung zeigt das fertige Bedienpult, welches aus drei Bauteilen besteht. Dem Gehäuseoberteil, Gehäuseunterteil sowie die Knöpfe für die Drehpotentiometer. Zur Verbesserung der Handhabung des Bedienpultes sind im unteren Gehäuseteil zwei Aussparungen vorgesehen, in die Magneten eingebracht wurden. Diese ermöglichen die Befestigung des Bedienpults an metallischen Oberflächen, wie beispielsweise am Schaltkasten des Roboters. Zusätzlich zu den Drehreglern ist ein Start Taster im Gehäuseoberteil berücksichtigt worden.
Programmierung
Die Programmierung wurde auf der UR Oberfläche PolyScope des "Teach-Pendant" durchgeführt. Das Programm setzt sich wie folgt zusammen.
1. Zu Beginn werden die Programmvariablen definiert. Dazu zählen die Grenzen des Arbeitsbereichs des DIN A3 Zeichenblatt, die Stifthöhe (z_position) sowie der Spannungsbereich der einzulesenden Drehpotentiometer.
2. Mithilfe der „floor“-Funktion von Polyscope wird die eingelesene Spannung auf zwei Nachkommastellen gerundet. Dafür wird die Spannung des Potentiometers mit 100 multipliziert, wodurch die Nachkommastellen in den Ganzzahlbereich verschoben werden. Durch das Addieren von 0,5 wird die Zahl aufgerundet, falls sie sich im oberen Bereich der Dezimalstufe befindet. Anschließend wird mit der „Floor“-Funktion ganzzahlig abgerundet und durch die Division von 100 zurückskaliert. Ein Beispiel für einen Spannungswert von x = 5,478855 V:
1.Schritt:
2.Schritt:
3.Schritt:
4.Schritt:
3. Der nachfolgende Programmabschnitt skaliert die Werte der Potentiometer-Spannung auf den zuvor festgelegten Arbeitsbereich des Zeichenblattes. Die Berechnung erfolgt in zwei Schritten. Zuerst wird der Spannungsbereich normiert. Im zweiten Schritt erfolgt die Skalierung auf den Arbeitsbereich. Hierzu folgt eine Beispielrechnung für die x_position bei einem potivolt_xround-Wert von 5,48 V.
1.Schritt:
2.Schritt:
4. Da die Roboterbasis um 45 Grad zur Zeichenfläche verschoben ist, wird eine Rotationsmatrix angewendet.
5. Die errechneten Koordinaten werden dann in die Matrix "target_pose" geschrieben. Mithilfe der Funktion "movel" verfährt der Roboter dann zur errechneten Koordinate.
6. Der Roboter lässt sich vor dem Start des Zeichenvorgangs zu einer beliebigen Position fahren. Mit Betätigung des Tasters Start wird die z_position in Richtung des Zeichenblatts verfahren, sodass der Stift aufsetzt. Um dies zu realisieren, wird eine If-Anweisung verwendet. Sobald der Taster betätigt wird, wird die z_position in die Matrix target_pose geschrieben. Außerdem wird ein Flag, z_locked gesetzt, das bestätigt, dass der Taster betätigt wurde. Eine weitere If-Anweisung schreibt die z_position kontinuierlich in die target_pose, um sicherzustellen, dass die gewünschte Stifthöhe dauerhaft gehalten wird.
# Hauptschleife while (True): #define Grenzen des Arbeitsbereichs (DinA3 Zeichnungsberreich) x_min=-0.26 x_max=0.11 y_min=-0.34 y_max=-0.17 #define Startposition (Höhe des Stiftes) z_position=-0.101 z_locked=False #define Spannungsbereich (poti) voltage_min=0.0 voltage_max=9.5 #Berechnung Grad-->Bogenmaß rotation_deg= 45 rotation_rad= (rotation_deg* 3.14159/ 180) #Berechnung Rotationswinkel cos_theta=cos(rotation_rad) sin_theta=sin(rotation_rad) #Schleife für Berechnung der Koordinaten und Bewegung While (True): #Potentiometer -Spannung abfragen (Analog in 0-10V) poti_voltage_x = analog_in(0) poti_voltage_y = analog_in(1) # Rundung der Potentiometerwerte auf zwei Dezimalstellen (Floor-Methode) potivolt_xround = floor(poti_voltage_x * 100 + 0.5) / 100 potivolt_yround = floor(poti_voltage_y * 100 + 0.5) / 100 # Skalierung der Potentiometer -Spannung auf den Arbeitsbereich x_position = ((potivolt_xround - voltage_min) / (voltage_max - voltage_min)) * (x_max - x_min) + x_min y_position = ((potivolt_yround - voltage_min) / (voltage_max - voltage_min)) * (y_max - y_min) + y_min # Aktuelle Pose beziehen current_pose = get_actual_tcp_pose() # Rotation der X- und Y-Koordinaten rotated_x = (cos_theta * x_position - y_position) rotated_y = (sin_theta * x_position + y_position) # neue Koordinaten in der Pose anpassen target_pose = current_pose target_pose[0] = rotated_x target_pose[1] = rotated_y # Z-Position dauerhaft setzen, wenn Taster gedrückt wurde if digital_in[0]: target_pose[2] = z_position # Speichert die aktuelle Z-Position z_locked = True # Sperrflag setzen # Wenn z_locked aktiv ist, schreibe die Z-Position dauerhaft in target_pose[2] if z_locked: target_pose[2] = z_position # Bewegung der neuen Pose movel(target_pose, a=0.5, v=0.1)
Systemtest
Es wurde ein Systemtest, der in der folgenden Tabelle zu sehen ist, durchgeführt. Aufbauend auf der erstellten Anforderungsdefinition ist dieser durchgeführt worden.
ID | Typ (I=Info, A=Anforderung) | Kapitel | Inhalt | Status | Ersteller |
---|---|---|---|---|---|
1 | I | 1 | Komponententest | ||
2 | A | Verbindung des Bedienelementes muss sichergestellt sein. | i.O. | HL | |
3 | A | Die eingelesene Spannung an AI(0) sowie an AI(1) soll zwischen 0-10 V eingelesen werden. | i.O. | HL | |
4 | A | Der Start Taster muss bei Betätigung mit DI(0) abgefragt werden. | i.O. | HL | |
5 | I | 2 | Konstruktion | ||
6 | A | Robotererhöhung konstruieren und montieren (3D-Druck) , demontierbar ohne lösen der Tischplatte. | i.O. | HL | |
7 | A | Bedienpult konstruieren, zwei Drehregler, mit Start-Taster, Zugentlastung der Zuleitung | i.O. | HL | |
8 | I | 3 | Programmierung | ||
9 | A | Der Roboter soll mit PolyScope programmiert werden, Standalone ohne PC. | i.O. | HL | |
10 | I | 4 | Entwicklung der Schaltung | ||
11 | A | Es muss eine Schaltung aufgebaut werden, die einen Drehpotentiometer zum einstellen der Spannung aufweist. | i.O. | HL | |
12 | A | Spannung von 0-10 V muss einstellbar sein. | i.O. | HL | |
13 | A | Roboter Spannungsquelle nutzen --> 12 V auf 10 V Poti Spannung | i.O. | HL | |
14 | A | Schaltplan erstellen | i.O. | HL | |
15 | I | 5 | Dokumentation | ||
16 | A | Plakat für Labor erstellen | i.O. | HL | |
16 | A | Wiki-Artikel erstellen | i.O. | HL | |
17 | A | Schriftliche Ausarbeitung des Projektes | i.O. | HL | |
18 | I | 6 | Systemtest | ||
19 | A | Das System muss Sicher funktionieren. | i.O. | HL | |
21 | A | Der Roboter soll das Funktionsprinzip des Etch-A-Sketch erfüllen. | i.O. | HL | |
22 | A | Der Roboter soll die Bewegung flüssig ausführen. | z.T. Nicht ganz erfüllt, hier können Verbesserungen umgesetzt werden | HL |
Abnahmetest
Dieser Abschnitt beschreibt den Inbetriebnahmeprozess der UR3 Etch-A-Sketch Ansteuerung.
Der Inbetriebnahmeprozess bezieht sich auf das entwickelte UR PolyScope Programm "Etch-A-Sketch".
Die unten dargestellte Tabelle lässt sich in insgesamt acht verschiedene Parameter einteilen.
Diese lauten:
- Schritt Nummer
- Beschreibung
- Ausgangszustand
- Aktion
- Erwartetes Ergebnis
- Ergebnis
- Bewertung
- Bemerkung
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung |
---|---|---|---|---|---|---|---|
Precondition 1 | Roboter einschalten | Roboter aus | Einschalten durch Taster an Teach Pendant | Roboter an | Roboter ist an | i.O. | |
Precondition 2 | Verbindung zum Bedienpult prüfen | Verbindung hergestellt | Bedienpult anschließen | Bedienpult Betriebsbereit | Bedienpult ist Betriebsbereit | i.O. | |
Precondition 3 | Etch-A-Sketch Programm laden | Startbildschirm | Start des Programms | Roboter Betriebsbereit | Roboter ist Betriebsbereit | i.O. | |
Testschritt 1 | Roboter zu beliebiger Startposition verfahren | Roboter ist Betriebsbereit | Startposition durch Drehregler definieren | Roboter fährt Zeichenblatt mit Drehregler ab, Zeichenstift ist noch nicht auf dem Blatt | Roboter fährt Zeichenblatt mit Drehregler ab, Zeichenstift noch nicht auf dem Blatt | i.O. | |
Testschritt 2 | mit Start Taster Zeichenvorgang einleiten | Roboter befindet sich in Auswahl der Startposition | Startposition mit Start Taster am Bedienpult setzen | Roboter senkt Z-Achse auf Zeichenblatt ab | Roboter senkt Z-Achse auf Zeichenblatt ab | i.O. | |
Teschritt 3 | Zeichnungsmöglichkeit nach dem Etch-A-Sketch Funktionsprinzip | Roboter wartet auf Eingabe | Drehregler am Bedienpult bewegen | Roboter zeichnet auf dem Blatt in X-Y Richtung | Roboter zeichnet auf dem Blatt in X-Y Richtung, jedoch ist der Bewegungsablauf noch etwas ruckelig | z.T. | Bewegungsablauf könnte verbessert werden |
Postcondition 1 | Programm stoppen | Programm läuft | Programm Stopp | Roboter geht auf Stop | Roboter stoppt das Programm | i.O. | |
Postcondition 2 | Roboter ausschalten | Roboter ist an | Ausschalten durch Taster an Teach Pendant | Roboter aus | Roboter ist aus | i.O. |
Verwendete Software
- SolidWorks: Erstellung der CAD-Modelle
- UltiMaker Cura: Erstellung Slicer Software zur Erstellung des G-Code für 3D-Druck
- QElectroTech: Schaltplanerstellung
- UR-PolyScope: Programmierung des Roboters auf "Teach-Pendant" Oberfläche
Zusammenfassung
Das Ziel der Arbeit wurde erreicht. Der Roboter UR3 lässt sich mit dem entwickelten Bedienpult steuern und führt Zeichenvorgänge aus, die der Funktionsweise eines Etch-A-Sketch Spielzeugs ähneln. Dabei werden die Bewegungsrichtungen entlang der X- und Y-Koordinaten des Zeichenblattes wie vorgesehen abgefahren. Mögliche Verbesserungen im Bereich der Bewegungsabläufe des Roboters könnten dazu beitragen, sein etwas ruckartiges Verhalten zu optimieren. Eine Anpassung der Schaltung der Drehpotentiometer wäre denkbar. Da diese jedoch bereits „gute“ Werte liefern, könnten Versuche zur Optimierung im Programm unternommen werden, beispielsweise durch den Einsatz weiterer Filtermethoden.