UR3 Roboter zeichnen lassen - Entwicklung einer "Etch-A-Sketch" Ansteuerung

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
UR3-Roboter Etch-A-Sketch Ansteuerung


Etch-A-Sketch Zeichenspielzeug

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
Tabelle 1: Anforderungsdefinition
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.

Funktionaler Systementwurf UR3-Etch-A-Sketch











Technischer Systementwurf

Im technischen Systementwurf wird der Aufbau genauer spezifiziert und die Ein- und Ausgänge deklariert.

Technischer Systementwurf UR3-Etch-A-Sketch











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

Schalt- und Kontaktplan

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

UR3-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

Etch-A-Sketch 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
Tabelle 2: Systemtest
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
Tabelle 3: Abnahmetest
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

UR3 Etch-A-Sketch in Aktion

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.



Literaturverzeichnis