Para controlar las pinzas Brooks PreciseFlex desde una simulación, incluida la pinza doble, siga los pasos descritos en esta sección.
1.Haga clic con el botón derecho del ratón en su programa y añada una instrucción de llamada a programa.
2.Introduzca "Pinza(ID pinza, valor pinza)". Por ejemplo, "Pinza(2, 50)" para mover la pinza nº 2 de una pinza doble a 50 mm.
a.Puede acortar la llamada a "Pinza(valor pinza)" con una sola pinza.
b.Si hay más de un robot, utilice "Pinza(ID pinza, valor pinza, item.ptr)". Por ejemplo, "Pinza(2, 50, item.ptr)" moverá la pinza nº 2 de una pinza doble a 50 mm, asegurándose de que el robot padre está vinculado al programa.
3.Añada la instrucción Gripper() como primera instrucción de todos los subprogramas y después de todas las llamadas a subprogramas. Esto es para asegurar la compatibilidad con el postprocesador. Se esperan instrucciones Gripper() duplicadas.
4.Añada un script Python, cámbiele el nombre a "Gripper".
5.Edite el script Python "Gripper" y pegue lo siguiente:
from robodk import robolink
importar sys
si len(sys.argv) < 2:
abandonar()
def get_item(ptr_item, RDK):
item = robolink.Item(RDK, str(ptr_item), robolink.ITEM_TYPE_PROGRAM)
si no item.Valid(True):
devolver Ninguno
devolver artículo
RDK = robolink.Robolink()
gripper_id = -1
valor_agarre = 0
prog_item = Ninguno
# Obtener el ID de la pinza, el valor y el llamante
si len(sys.argv) == 2:
valor_agarre = float(sys.argv[1])
elif len(sys.argv) >= 4:
gripper_id = int(sys.argv[1])
valor_agarre = 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:
valor_agarre = float(sys.argv[1])
si no:
gripper_id = int(sys.argv[1])
valor_agarre = float(sys.argv[2])
# Obtener candidatos
pinzas = [x for x in RDK.ItemList(robolink.ITEM_TYPE_ROBOT_AXES) if 'pinza' in x.Name().lower() and len(x.Joints().tolist()) == 1].
si len(pinzas) > 1 y prog_item:
robot_item = prog_item.getLink(robolink.ITEM_TYPE_ROBOT)
if not robot_item.Valid():
robot_item = RDK.ItemUserPick("Seleccione el robot vinculado", robolink.ITEM_TYPE_ROBOT)
prog_item.setRobot(robot_item)
def get_flat_childs(item):
childs = item.Childs()
para child en item.Childs():
childs.extend(get_flat_childs(child))
devolver childs
childs = get_flat_childs(robot_item)
pinzas = [x for x in childs if x.Type() == robolink.ITEM_TYPE_ROBOT and len(x.Joints().tolist()) == 1]
si no son pinzas:
RDK.ShowMessage('¡No se puede encontrar una pinza!', False)
# Intente encontrar el id de pinza correcto (es decir, pinza dual 1)
pinza = pinzas[0]
si gripper_id > 0:
gripper_ids = [g for g in pinzas if g.Nombre().endswith(str(gripper_id))]
si gripper_ids:
pinza = pinza_ids[0]
pinza.MoverJ([valor_pinza])
Tenga en cuenta que este método también es compatible con el postprocesador Brooks.