Um die Brooks PreciseFlex-Greifer, einschließlich des Doppelgreifers, von einer Simulation aus zu steuern, folgen Sie den in diesem Abschnitt beschriebenen Schritten.
1.Klicken Sie mit der rechten Maustaste auf Ihr Programm, und fügen Sie eine Programmaufruf-Anweisung hinzu.
2.Geben Sie "Greifer(Greifer-ID, Greiferwert)" ein. Zum Beispiel "Greifer(2, 50)", um den Greifer #2 eines Doppelgreifers auf 50 mm zu bewegen.
a.Sie können den Aufruf von "Greifer(Greiferwert)" mit einem einzigen Greifer abkürzen.
b.Wenn mehr als ein Roboter vorhanden ist, verwenden Sie "Greifer(Greifer-ID, Greiferwert, item.ptr)". Beispiel: "Greifer(2, 50, item.ptr)" bewegt den Greifer #2 eines Doppelgreifers auf 50 mm und stellt sicher, dass der übergeordnete Roboter mit dem Programm verknüpft ist.
3.Fügen Sie die Anweisung Gripper() als erste Anweisung aller Unterprogramme und nach allen Unterprogrammaufrufen ein. Dies dient der Kompatibilität mit dem Postprozessor. Doppelte Gripper()-Anweisungen werden erwartet.
4.Fügen Sie ein Python-Skript hinzu und benennen Sie es in "Gripper" um.
5.Bearbeiten Sie das Python-Skript "Gripper" und fügen Sie Folgendes ein:
von robodk import robolink
sys importieren
wenn len(sys.argv) < 2:
quit()
def get_item(ptr_item, RDK):
item = robolink.Item(RDK, str(ptr_item), robolink.ITEM_TYPE_PROGRAM)
if not item.Valid(True):
return Keine
Artikel zurückgeben
RDK = robolink.Robolink()
gripper_id = -1
gripper_value = 0
prog_item = Keine
# Ermitteln Sie die Greifer-ID, den Wert und den Aufrufer.
wenn len(sys.argv) == 2:
gripper_value = float(sys.argv[1])
elif len(sys.argv) >= 4:
gripper_id = int(sys.argv[1])
gripper_value = float(sys.argv[2])
prog_item = get_item(int(sys.argv[3]), RDK)
elif len(sys.argv) == 3:
prog_item = get_item(int(sys.argv[2]), RDK)
if prog_item:
gripper_value = float(sys.argv[1])
sonst:
gripper_id = int(sys.argv[1])
gripper_value = float(sys.argv[2])
# Kandidaten holen
grippers = [x for x in RDK.ItemList(robolink.ITEM_TYPE_ROBOT_AXES) if 'gripper' in x.Name().lower() and len(x.Joints().tolist()) == 1]
wenn len(Greifer) > 1 und prog_item:
robot_item = prog_item.getLink(robolink.ITEM_TYPE_ROBOT)
if not robot_item.Valid():
robot_item = RDK.ItemUserPick("Wählen Sie den verknüpften Roboter", robolink.ITEM_TYPE_ROBOT)
prog_item.setRobot(robot_item)
def get_flat_childs(Artikel):
childs = item.Childs()
for child in item.Childs():
childs.extend(get_flat_childs(child))
Rückgabe Kinder
childs = get_flat_childs(robot_item)
grippers = [x for x in childs if x.Type() == robolink.ITEM_TYPE_ROBOT and len(x.Joints().tolist()) == 1]
wenn nicht Greifer:
RDK.ShowMessage('Es wurde kein Greifer gefunden!', False)
# Versuchen Sie, die richtige Greifer-ID zu finden (z.B. Dualer Greifer 1).
Greifer = Greifer[0]
wenn gripper_id > 0:
gripper_ids = [g for g in grippers if g.Name().endswith(str(gripper_id))]
if gripper_ids:
gripper = gripper_ids[0]
gripper.MoveJ([gripper_value])
Beachten Sie, dass diese Methode auch mit dem Brooks Postprozessor kompatibel ist.