Pour commander les préhenseurs PreciseFlex Brooks à partir d'une simulation, y compris le préhenseur double, suivez les étapes décrites dans cette section.
1.Cliquez avec le bouton droit de la souris sur votre programme et ajoutez une instruction d'appel de programme.
2.Saisissez "Gripper(gripper ID, gripper value)". Par exemple, "Gripper(2, 50)" pour déplacer la pince n°2 d'une pince double à 50 mm.
a.Vous pouvez raccourcir l'appel à "Gripper(valeur du gripper)" avec un seul gripper.
b.Si plusieurs robots sont présents, utilisez "Gripper(gripper ID, gripper value, item.ptr)". Par exemple, "Gripper(2, 50, item.ptr)" déplacera la pince n°2 d'une pince double à 50 mm, en s'assurant que le robot parent est lié au programme.
3.Ajoutez l'instruction Gripper() comme première instruction de tous les sous-programmes et après tous les appels de sous-programmes. Cela permet d'assurer la compatibilité avec le post-processeur. Les instructions Gripper() dupliquées sont attendues.
4.Ajoutez un script Python, renommez-le "Gripper".
5.Modifiez le script Python "Gripper" et collez ce qui suit :
from robodk import robolink
import sys
if len(sys.argv) < 2 :
quitter()
def get_item(ptr_item, RDK) :
item = robolink.Item(RDK, str(ptr_item), robolink.ITEM_TYPE_PROGRAM)
if not item.Valid(True) :
retournez Aucun
article de retour
RDK = robolink.Robolink()
gripper_id = -1
valeur_pince = 0
prog_item = None
# Obtenir l'ID de la pince, la valeur et l'appelant
si 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)
si prog_item :
gripper_value = float(sys.argv[1])
autre :
gripper_id = int(sys.argv[1])
gripper_value = float(sys.argv[2])
# Obtenir des candidats
grippers = [x for x in RDK.ItemList(robolink.ITEM_TYPE_ROBOT_AXES) if 'gripper' in x.Name().lower() and len(x.Joints().tolist()) == 1]
si len(grippers) > 1 et prog_item :
robot_item = prog_item.getLink(robolink.ITEM_TYPE_ROBOT)
if not robot_item.Valid() :
robot_item = RDK.ItemUserPick("Sélectionnez le robot lié", robolink.ITEM_TYPE_ROBOT)
prog_item.setRobot(robot_item)
def get_flat_childs(item) :
childs = item.Childs()
pour child dans item.Childs() :
childs.extend(get_flat_childs(child))
retour enfants
enfants = get_flat_childs(robot_item)
grippers = [x for x in childs if x.Type() == robolink.ITEM_TYPE_ROBOT and len(x.Joints().tolist()) == 1]
si ce n'est pas des pinces :
RDK.ShowMessage('Unable to find a gripper!', False)
# Essayez de trouver l'identifiant du bon préhenseur (c'est-à-dire le préhenseur double 1).
gripper = grippers[0]
si gripper_id > 0 :
gripper_ids = [g for g in grippers if g.Name().endswith(str(gripper_id))]
si gripper_ids :
gripper = gripper_ids[0]
gripper.MoveJ([gripper_value])
Notez que cette méthode est également compatible avec le post-processeur Brooks.