Skip to content

Template: Maschine Beladen

Zusammenfassung

Das Maschine Beladen Template (Machine Tending Template, MTT) ist eine virtuelle Beispielapplikation um eine Bearbeitungsmaschine aus einem Raster mit Rohteilen zu bestücken und die Fertigteile anschließend wieder zu entnehmen und zurück zu legen. Die Bestandteile, die Einrichtung und der Aufbau werden hier beschrieben. Die Applikation, das Szenario und alle Elemente dienen als Vorlage und können relativ schnell und unkompliziert an eine entsprechende reale Applikation angepasst werden, ohne das die Applikation neu entwickelt werden muss. Dies wird in hier beschrieben.

Empfehlung

Ist es das Ziel das Template für eine reale Applikation an einem realen Roboter anzupassen, so empfiehlt es sich das komplette Setup inkl. Szenario, Roboter, Greifer, Programme zuerst komplett in der Simulation zumindest ungefähr anzupassen und intensiv hinsichtlich potentieller Kollisionen zu testen. Erst anschließend wird empfohlen die Applikation in der realen Umgebung mit dem realen Roboter zu testen und das abschließende Finetuning der Positionen vorzunehmen.

Szenario

Ersetzen sie im Szenariomanager das Maschinenmodell durch ein eigenes 3D Modell und passen sie deren Position an. Das Modell dient nur zur Visualisierung und erfüllt keinen funktionalen Zweck. Ist kein 3D Modell der Maschine notwendig oder vorhanden, kann das Objekt entfernt werden.

Roboter

Wählen sie im Komponentenmanager für den Robot Simulator ihr Robotermodell aus um das Szenario initial einzurichten und grob anzupassen. Später können sie den Robot Simulator durch den Treiber des entsprechenden Roboters ersetzen um mit dem echten Roboter zu arbeiten.

Greifer

Ersetzen sie das Modell des Doppelgreifers durch ihr eigenes 3D Modell. Das Modell dient nur zur Visualisierung und erfüllt keinen funktionalen Zweck. Ist keine Visualisierung des Greifers notwendig oder vorhanden, kann das Objekt entfernt werden.

Passen sie im Werkzeugmanager die Koordinaten der beiden Werkzeuge mtt_rtg für den Rohteilgreifer und mtt_ftg für den Fertigteilgreifer entsprechend ihres Setups an. Die Koordinaten der Werkzeuge haben einen direkten Einfluss auf die später geteachten Trajektorien. Nachträgliche Änderungen können ein erneutes Teachen von Posen notwendig machen.

Programm MTT - Applikation

Anpassen von Positionen

Der größte Unterschied zwischen der Maschine Beladen Beispielapplikation und einer entsprechenden realen Applikation liegt in den unterschiedlichen Positionen aller Bewegungen des Roboters. Diese müssen in den Programmen entsprechend angepasst werden.

Gehen sie Funktionsblock für Funktionsblock durch das Programm MTT - Applikation und passen sie in allen Move Cartesian Funktionsblöcken, in denen die Zielposition nicht verlinkt ist, diese entsprechend den Bezeichnungen an. Gleich bezeichnete Wegpunkte sollten an der gleichen Pose geteacht sein. Achten sie auf kollisionsfreie Verbindungen zwischen den Wegpunkten, aber insbesondere auch zwischen den Funktionsblöcken. Fügen sie dafür evtl. zusätzliche Wegpunkte als Stützpunkte hinzu. Beachten sie, dass einige Wegpunkte mit dem Werkzeug mtt_rtg bzw. mtt_ftg geteacht werden müssen. Ein Wechsel des Werkzeugmittelpunkts im Programm wird durch den Funktionsblock Change Robot TCP ausgeführt und bleibt für alle folgenden Bewegungen bestehen. Stellen sie sicher, dass das entsprechende Werkzeug eingestellt ist, wenn sie nachfolgende Wegpunkte teachen.

Im Template wird das Roh- bzw. Fertigteilraster zu Beginn im Funktionsblock Grid - Initialize definiert. Die Parameter dafür müssen für ihre Applikation entsprechend angepasst werden. Stellen sie das eingestellte Werkzeug auf mtt_rtg und lassen sie sich mit dem Wizard des Funktionsblocks durch die notwendigen Schritte führen. Beachten sie, dass die Trajektorie sowohl für die Entnahme von Rohteilen mit dem Werkzeug mtt_rtg genutzt wird, als auch für das Ablegen von Fertigteilen mit dem Wekzeug mtt_ftg.

Entfernen von Funktionsblöcken

Der Funktionsblock ZOffset für Fertigteil für Visualisierung vom Typ Move Cartesin Relative platziert Fertigteile ca. 2cm tiefer, als das Raster definiert ist, um einen visuellen Unterschied zu unbearbeiteten Teilen zu erzeugen. Es empfiehlt sich diesen Funktionsblock für die Ausführung an der realen Applikation zu entfernen, um eine Kollision mit dem Raster zu vermeiden.

Einfügen von Greifer-Funktionsblöcken

Solange die Applikation mit der Simulation getestet wird, ist eine Ansteuerung der beiden Greifer nicht zwangsläufig notwendig. Aber spätestens wenn die reale Applikation geteacht wird, müssen auch diese angesteuert werden. Das Ansteuern der Greifer ist in vier Unterprogramme ausgelagert, die an mehreren Stellen verwendet werden:

  • Rohteilgreifer öffnen
  • Rohteilgreifer schließen
  • Fertigteilgreifer öffnen
  • Fertigteilgreifer schließen

Diese vier Unterprogramme müssen mit den entsprechenden Funktionsblöcken erweitert werden, die die realen Greifer mit der jeweiligen Funktion ansteuern. Welche Funktionsblöcke dafür benötigt werden hängt von dem individuellen Greifer ab, sollte in jedem Fall aber vor oder anstatt des Wait Funktionsblocks platziert werden.

Desweiteren bringen einige Greifer die Funktion des Attachen bzw. Detachen von simulierten Objekten bereits mit. In diesen Fällen kann der entsprechende expliziete Aufruf durch den Attach bzw. Detach Funktionsblock dann entfernt werden.

Abschließend kann es notwendig sein die Greifer zu Beginn des Programms MTT - Applikation zu initialisieren.

Hinzufügen von individuellen Funktionsblöcken

Je nach Applikation und genauem Anwendungsszenario kann es notwendig sein eigene Funktionblöcke hinzuzufügen, z.B. zur Interaktion mit der Maschine. Es sollte jedoch stets darauf geachtet werden, dass entsprechende Erweiterungen die gundsätzliche Funktionalität des Templates nicht behindern.

Programm MTT - Autogrundstellung

Das Programm zur automatisierten Grundstellungsfahrt fährt den Roboter von einer beliebigen Position innerhalb eines definierten Arbeitsbereichs, welcher durch mehrere Boxen definiert wird, schrittweise auf kollisionsfreiem Weg zurück in die Grundstellung. Zum Schluss wird noch einmal überprüft, ob sich der Roboter auch tatsächlich in der Grunstellung befindet oder komplett außerhalb des bekannten Bereichs steht. In diesem Fall wird eine Fehlermeldung ausgegeben und der Roboter muss manuell in den definierten Arbeitsbereich gefahren werden. Danach kann die Grundstellungsfahrt erneut gestartet werden.

Jeder Schritt der Grundstellungsfahrt ist dabei ähnlich aufgebaut und folgt einem festen Schema. Im folgenden Bild ist beispielhaft ein entsprechendes Unterprogramm abgebildet, welche auf eine Position in der Maschine überprüft und dann auf die nächste Position fährt.

  • Zunächst wird das Werkzeug für den relevanten Bereich ausgewählt. Kann der Bereich mit mehreren Werkzeugen befahren werden, so muss für jedes Werkzeug ein eigenes Unterprogramm mit eigener Überprüfung entwickelt werden.
  • Im Anschluss wird der aktuelle Tool Center Point (TCP) des Roboters abgefragt (Funktionsblock Get TCP Pose).
  • Dieser wird im Funktionsblock Pose Checker Box mit einer vorher definieren Box verglichen, welche den aktuell zu überpüfenden Bereich beschreibt.
  • Der zu überprüfende Bereich wird im Funktionsblock Markiere Bereich in der 3D Visualisierung farblich gelb hervorgehoben.
  • Anschließend wird der TCP mit der Box verglichen.
  • Liegt der TCP innerhalb der überprüften Box, fährt der Roboter auf einem definierten Weg zur nächsten Position, die dann innerhalb der nächsten Box liegt und im nachfolgenden Überprüfungsprogramm bearbeitet wird. Es können dabei mehrere Bewegungsblöcke verwendet werden. Für einen Bereich, der ein Raster beinhaltet, bietet es sich an zuerst relativ nach oben zu fahren und erst im Anschluss zur nächsten Position um eine Kollision mit anderen Werkstücken zu vermeiden.
  • Abschließend wird die überprüfte Box in der 3D Visualisierung farblich grün markiert.

Um eine reibungslose Grundstellungsfahrt zu ermöglichen sollten stets folgende Punkte erfüllt sein:

  • Die Boxen sollten direkt aneinander anschließen, sodass keine Lücken zwischen den überprüften Bereichen entstehen.
  • Ebenso sollten sich die Boxen aber auch nicht überlappen, dass der Roboter nicht außversehen wieder in einen peripheren Bereich zurück fahren kann.
  • Der Roboter muss von jedem Punkt, der innerhalb einer Box liegt, die dazugehörige hinausführende Bewegung hindernisfrei durchführen können.
  • Am Ende der Grundstellungsfahrt soll der Roboter sich immer in der Grundstellung befinden.
  • Die Grundstellung sollte mit einer Move Joints Bewegung angefahren werden, um unerwünschte Konfigurationen des Roboterarmes auszuschließen.

Insgesamt bildet dieses System eine Baumstruktur, wobei die Grundstellung die Wurzel darstellt, die Boxen entsprechen den Astknoten und Blättern und die möglichen Freifahr-Bewegungen den Ästen. Die Baumstruktur für das Template Programm ist im Folgenden abgebildet:

graph TD grst["Grundstellung"] ftg_machine["FTG in Maschine"] rtg_machine["RTG in Maschine"] in_machine["In Maschine"] pre_machine["Vor Maschine"] ftg_grid["FTG in Raster"] rtg_grid["RTG in Raster"] grid["Über Raster"] around_grid["Raster Bereich"] ftg_machine --> in_machine rtg_machine --> in_machine in_machine --> pre_machine pre_machine --> grst ftg_grid --> grid rtg_grid --> grid grid --> grst around_grid --> grst style grid stroke-dasharray: 5 5