Programmes d’exemple ROKAE
Ce sujet présente les programmes d’exemple qui réalisent une tâche réelle de préhension et de dépose.
Programmes d’exemple
Les programmes d’exemple utilisés pour une opération simple de préhension et dépose sont stockés dans le fichier main.mod dans le dossier MM_Project.
Obtenir le résultat de vision depuis Mech-Vision
// **********************************************************
// FUNCTION: Eye to Hand simple pick and place with Vision
// **********************************************************
LOCAL PROC Vision_Sample_1()
AccSet 100,100
MoveAbsJ home_point,v3000,fine,tool0 //move robot home position
MoveL camera_capture,v500,fine,tool0
Pos_Num = 0
// Set ip address of IPC
IP_Address = "192.168.2.222"
Server_Port = 50000
MM_Timeout = 60
MM_Init_Socket()
Wait 0.1
// Set vision recipe
Job = 1
Model_Number = 1
MM_Switch_Model()
// Run vision project
Job = 1
Pos_Num_Need = 0
SendPos_Type = 1
MM_Start_Vis()
Wait 1
Job = 1
MM_Get_VisData()
IF(MM_Status != 1100)
EXIT
ENDIF
Serial = 1
MM_Get_Pose()
robtarget _P = MM_P
MoveL RelTool(_P,0,0,-100,0,0,0),v1000,fine,tool01
MoveL MM_P,v300,fine,tool01
Pause
// Add object grasping logic here.
MoveL Offs(_P,0,0,100), v1000, fine, tool01
MoveL way_point1,v1000,z50,tool01
MoveL RelTool(drop,0,0,-100,0,0,0),v1000,fine,tool01
MoveL drop,v300,fine,tool01
Pause
// Add object releasing logic here.
MoveL Offs(drop,0,0,100), v1000, fine, tool01
MoveAbsJ home_point,v3000,fine,tool0
RETURN
ENDPROC
Logique du programme
-
Ligne 6: Déplacer le robot vers la position HOME.
-
Ligne 7: Déplacer le robot vers la pose de capture d’image.
-
Ligne 11: IP_Address spécifie l’adresse IP de l’IPC.
-
Ligne 12: Server_Port spécifie le numéro de port de l’IPC.
-
Ligne 13: MM_Timeout spécifie le délai d’attente d’expiration de la communication.
-
Ligne 14: Initialiser la communication avec MM_Init_Socket.
-
Ligne 18: Job indique l’ID du projet Mech-Vision.
-
Ligne 19: Model_Number spécifie le numéro de la recette de paramètres utilisée dans le projet Mech-Vision.
-
Ligne 20: Si des recettes de paramètres sont utilisées dans le projet Mech-Vision, MM_Switch_Model doit être appelé pour définir la recette de paramètres.
-
Ligne 24: Pos_Num_Need spécifie le nombre attendu de points de vision reçus de Mech-Vision. 0 indique que tous les points de vision seront reçus.
-
Ligne 25: SendPos_Type indique que la pose du robot sous forme des positions articulaires actuelles ainsi que la pose actuelle de la bride sera envoyée au système de vision.
-
Ligne 26: Exécuter le projet Mech-Vision avec MM_Start_Vis.
-
Ligne 27: Attendre une seconde. En configuration Eye-In-Hand, cette instruction Wait est nécessaire pour s’assurer que le robot reste immobile jusqu’à la fin de l’acquisition d’image. En configuration Eye-To-Hand, cette instruction Wait peut être remplacée par MoveL ou MoveJ.
-
Ligne 29: Obtenir le résultat de vision depuis Mech-Vision.
-
Ligne 30: Vérifier si le code d’état renvoyé indique une erreur. Si un code d’erreur est renvoyé, le programme est arrêté.
-
Ligne 34: Obtenir le point de prise avec MM_Get_Pose. Comme les fonctions personnalisées dans la syntaxe ROKAE ne prennent pas en charge le passage de paramètres, la variable globale MM_P est utilisée pour stocker le résultat de MM_Get_Pose. La variable locale _P = MM_P sert à enregistrer les données de pose obtenues dans la variable de position définie par l’utilisateur.
-
Ligne 37: Déplacer le robot vers le point de prise et effectuer la prise.
-
Ligne 42: Déplacer le robot vers un point intermédiaire entre le point de prise et le point de dépose.
-
Ligne 44: Déplacer le robot vers le point de dépose défini et effectuer la dépose.
Personnalisation requise
-
Définir le TCP
tool01: modifier la valeur de tool01 dans la fenêtre d’étalonnage sur le pupitre d’enseignement pour ajuster le TCP.
-
Enseigner la position HOME
MoveAbsJ home_point: enregistrer la position HOME dans home_point.
-
Enseigner la pose de capture d’image
MoveL camera_capture: Enregistrer la pose de capture d’image dans camera_capture.
-
Enseigner le(s) point(s) intermédiaire(s)
MoveL way_point1: Les points intermédiaires se situent entre le point de prise et le point de dépose et servent à éviter que le robot n’entre en collision avec l’environnement lors du déplacement entre les points de prise et de dépose. Vous pouvez ajouter un ou plusieurs points intermédiaires à way_point.
-
Enseigner le point de dépose
MoveL drop: Enregistrer le point de dépose dans drop.
-
Ajouter les logiques de prise et de libération de l’objet pour l’outil
Lorsque le robot se déplace vers les points de prise et de dépose, vous devez ajouter les logiques de commande de l’outil pour, respectivement, saisir ou relâcher l’objet.
-
Définir l’offset Z depuis le point de prise/dépose
-
Offset Z lors de l’approche du point de prise
MoveL RelTool(_P,0,0,-100,0,0,0),v1000,fine,tool01
Dans cet exemple, l’offset Z lors de l’approche du point de prise est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’outil à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.
-
Offset Z lors du départ du point de prise
MoveL Offs(_P,0,0,100), v1000, fine, tool01
Dans cet exemple, l’offset Z lors du départ du point de prise est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’objet à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.
-
Offset Z lors de l’approche du point de dépose
MoveL RelTool(drop,0,0,-100,0,0,0),v1000,fine,tool01
Dans cet exemple, l’offset Z lors de l’approche du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’outil à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.
-
Offset Z lors du départ du point de dépose
MoveL Offs(drop,0,0,100), v1000, fine, tool01
Dans cet exemple, l’offset Z lors du départ du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’objet à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.
-
Obtenir le trajet planifié depuis Mech-Viz
// **********************************************************
// FUNCTION: Eye to Hand simple pick and place with Viz
// **********************************************************
LOCAL PROC Vision_Sample_2()
AccSet 100, 100
MoveAbsJ home_point,v3000,fine,tool0 //move robot home position
MoveL camera_capture,v500,fine,tool0
Pos_Num = 0
// Set ip address of IPC
IP_Address = "192.168.2.222"
Server_Port = 50000
MM_Timeout = 60
MM_Init_Socket()
Wait 0.1
// Set vision recipe
Job = 1
Model_Number = 1
MM_Switch_Model()
// Run Viz project
SendPos_Type = 1
MM_Start_Viz()
Wait 0.1
// set branch exitport
Branch_Num = 1
Export_Num = 1
MM_Set_Branch()
// get planned path
Jps_Pos = 2
MM_Get_VizData()
IF(MM_Status != 2100)
EXIT
ENDIF
robtarget _P[20]
int _Label[20]
int _Speed[20]
Serial = 0
while(Serial < Pos_Num)
Serial += 1
MM_Get_Pose()
_P[Serial] = MM_P
_Label[Serial] = MM_Label
_Speed[Serial] = MM_Speed
endwhile
// follow the planned path to pick
int count = 0
while(count < Pos_Num)
count += 1
MoveL _P[count],v1000,fine,tool01
IF(count == VisPos_Num)
Pause
// add object grasping logic here
ENDIF
endwhile
// go to drop location
MoveL RelTool(drop,0,0,-100,0,0,0),v1000,z50,tool01
MoveL drop,v500,fine,tool01 // drop point
Pause
// add object releasing logic here
MoveL Offs(drop,0,0,100), v1000, fine, tool01
MoveAbsJ home_point,v3000,fine,tool0
RETURN
ENDPROC
Logique du programme
-
Ligne 6: Déplacer le robot vers la position HOME.
-
Ligne 7: Déplacer le robot vers la pose de capture d’image.
-
Ligne 11: IP_Address spécifie l’adresse IP de l’IPC.
-
Ligne 12: Server_Port spécifie le numéro de port de l’IPC.
-
Ligne 13: MM_Timeout spécifie le délai d’attente d’expiration de la communication.
-
Ligne 14: Initialiser la communication avec MM_Init_Socket.
-
Ligne 18: Job indique l’ID du projet Mech-Vision.
-
Ligne 19: Model_Number spécifie le numéro de la recette de paramètres utilisée dans le projet Mech-Vision.
-
Ligne 20: Si des recettes de paramètres sont utilisées dans le projet Mech-Vision, MM_Switch_Model doit être appelé pour définir la recette de paramètres.
-
Ligne 23: SendPos_Type indique que la pose du robot sous forme des positions articulaires actuelles ainsi que la pose actuelle de la bride sera envoyée à Mech-Viz.
-
Ligne 24: Déclencher l’exécution du projet Mech-Viz.
-
Ligne 28: Branch_Num spécifie l’ID de l’étape Branch by Msg.
-
Ligne 29: Export_Num spécifie le numéro du port de sortie à prendre.
-
Ligne 30: Si vous devez définir la branche dans le projet Mech-Viz, vous pouvez appeler MM_Set_Branch() pour définir le port de sortie pour l’étape « Branch by Msg ».
-
Ligne 33: Jps_Pos indique que les points de passage seront renvoyés sous forme de TCP.
-
Ligne 34: Obtenir le trajet planifié depuis Mech-Viz.
-
Ligne 35: Vérifier si le code d’état renvoyé indique une erreur. Si un code d’erreur est renvoyé, le programme est arrêté.
-
Lignes 42-48: Stocker les points de passage obtenus via MM_Get_Pose au moyen d’une boucle dans les variables correspondantes _P[20], _Label[20] et _Speed[20]. Comme les fonctions personnalisées dans la syntaxe ROKAE ne prennent pas en charge le passage de paramètres, les variables globales MM_P, MM_Label et MM_Speed sont utilisées pour stocker le résultat de MM_Get_Pose.
-
Lignes 52-59: Déplacer le robot le long du trajet planifié par Mech-Viz avec une boucle FOR jusqu’au point de prise.
-
Ligne 63: Déplacer le robot vers le point de dépose défini et effectuer la dépose.
Personnalisation requise
-
Définir le TCP
tool01: modifier la valeur de tool01 dans la fenêtre d’étalonnage sur le pupitre d’enseignement pour ajuster le TCP.
-
Enseigner la position HOME
MoveAbsJ home_point: enregistrer la position HOME dans home_point.
-
Enseigner la pose de capture d’image
MoveL camera_capture: Enregistrer la pose de capture d’image dans camera_capture.
-
Enseigner le point de dépose
MoveL drop: Enregistrer le point de dépose dans drop.
-
Ajouter les logiques de prise et de libération de l’objet pour l’outil
Lorsque le robot se déplace vers les points de prise et de dépose, vous devez ajouter les logiques de commande de l’outil pour, respectivement, saisir ou relâcher l’objet.
-
Définir l’offset Z depuis le point de dépose
-
Offset Z lors de l’approche du point de dépose
MoveL RelTool(drop,0,0,-100,0,0,0),v1000,fine,tool01
Dans cet exemple, l’offset Z lors de l’approche du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’outil à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.
-
Offset Z lors du départ du point de dépose
MoveL Offs(drop,0,0,100), v1000, fine, tool01
Dans cet exemple, l’offset Z lors du départ du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’objet à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.
-
Obtenir le trajet planifié depuis Mech-Vision
// ****************************************************************************
// FUNCTION: Eye to Hand simple pick and place with Vision Path Planning Step
// ****************************************************************************
LOCAL PROC Vision_Sample_3()
AccSet 100, 100
MoveAbsJ home_point,v3000,fine,tool0 //move robot home position
MoveL camera_capture,v500,fine,tool0
Pos_Num = 0
// Set ip address of IPC
IP_Address = "192.168.2.222"
Server_Port = 50000
MM_Timeout = 60
MM_Init_Socket()
Wait 0.1
// Set vision recipe
Job = 1
Model_Number = 1
MM_Switch_Model()
// Run vision project
Job = 1
Pos_Num_Need = 0
SendPos_Type = 1
MM_Start_Vis()
Wait 1
// get planned path from {product-vis} Path Planning Step
Job = 1
Jps_Pos = 2
MM_Get_VisPath()
IF(MM_Status != 1103)
EXIT
ENDIF
robtarget _P[20]
int _Label[20]
int _Speed[20]
Serial = 0
while(Serial < Pos_Num)
Serial += 1
MM_Get_Pose()
_P[Serial] = MM_P
_Label[Serial] = MM_Label
_Speed[Serial] = MM_Speed
endwhile
// follow the planned path to pick
int count = 0
while(count < Pos_Num)
count += 1
MoveL _P[count],v1000,fine,tool01
IF(count == VisPos_Num)
Pause
// add object grasping logic here
ENDIF
endwhile
// go to drop location
MoveL RelTool(drop,0,0,-100,0,0,0),v1000,z50,tool01
MoveL drop,v500,fine,tool01 // drop point
Pause
// add object releasing logic here
MoveL Offs(drop,0,0,100), v1000, fine, tool01
MoveAbsJ home_point,v3000,fine,tool0
RETURN
ENDPROC
Logique du programme
-
Ligne 6: Déplacer le robot vers la position HOME.
-
Ligne 7: Déplacer le robot vers la pose de capture d’image.
-
Ligne 11: IP_Address spécifie l’adresse IP de l’IPC.
-
Ligne 12: Server_Port spécifie le numéro de port de l’IPC.
-
Ligne 13: MM_Timeout spécifie le délai d’attente d’expiration de la communication.
-
Ligne 14: Initialiser la communication avec MM_Init_Socket.
-
Ligne 18: Job indique l’ID du projet Mech-Vision.
-
Ligne 19: Model_Number spécifie le numéro de la recette de paramètres utilisée dans le projet Mech-Vision.
-
Ligne 20: Si des recettes de paramètres sont utilisées dans le projet Mech-Vision, MM_Switch_Model doit être appelé pour définir la recette de paramètres.
-
Ligne 24: Pos_Num_Need spécifie le nombre attendu de points de vision reçus de Mech-Vision. 0 indique que tous les points de vision seront reçus.
-
Ligne 25: SendPos_Type indique que la pose du robot sous forme des positions articulaires actuelles ainsi que la pose actuelle de la bride sera envoyée au système de vision.
-
Ligne 26: Exécuter le projet Mech-Vision avec MM_Start_Vis.
-
Ligne 27: Attendre une seconde. En configuration Eye-In-Hand, cette instruction Wait est nécessaire pour s’assurer que le robot reste immobile jusqu’à la fin de l’acquisition d’image. En configuration Eye-To-Hand, cette instruction Wait peut être remplacée par MoveL ou MoveJ.
-
Ligne 31: Jps_Pos indique que les points de passage seront renvoyés sous forme de TCP.
-
Ligne 32: Obtenir le trajet planifié à partir de l’étape « Path Planning » de Mech-Vision avec MM_Get_VisPath.
-
Ligne 33: Vérifier si le code d’état renvoyé indique une erreur. Si un code d’erreur est renvoyé, le programme est arrêté.
-
Lignes 40-46: Stocker les points de passage obtenus via MM_Get_Pose au moyen d’une boucle dans les variables correspondantes _P[20], _Label[20] et _Speed[20]. Comme les fonctions personnalisées dans la syntaxe ROKAE ne prennent pas en charge le passage de paramètres, les variables globales MM_P, MM_Label et MM_Speed sont utilisées pour stocker le résultat de MM_Get_Pose.
-
Lignes 50 -57: Déplacer le robot le long du trajet planifié avec une boucle FOR jusqu’au point de prise et effectuer la prise.
-
Ligne 61: Déplacer le robot vers le point de dépose défini et effectuer la dépose.
Personnalisation requise
-
Définir le TCP
tool01: modifier la valeur de tool01 dans la fenêtre d’étalonnage sur le pupitre d’enseignement pour ajuster le TCP.
-
Enseigner la position HOME
MoveAbsJ home_point: enregistrer la position HOME dans home_point.
-
Enseigner la pose de capture d’image
MoveL camera_capture: Enregistrer la pose de capture d’image dans camera_capture.
-
Enseigner le point de dépose
MoveL drop: Enregistrer le point de dépose dans drop.
-
Ajouter les logiques de prise et de libération de l’objet pour l’outil
Lorsque le robot se déplace vers les points de prise et de dépose, vous devez ajouter les logiques de commande de l’outil pour, respectivement, saisir ou relâcher l’objet.
-
Définir l’offset Z depuis le point de dépose
-
Offset Z lors de l’approche du point de dépose
MoveL RelTool(drop,0,0,-100,0,0,0),v1000,fine,tool01
Dans cet exemple, l’offset Z lors de l’approche du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’outil à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.
-
Offset Z lors du départ du point de dépose
MoveL Offs(drop,0,0,100), v1000, fine, tool01
Dans cet exemple, l’offset Z lors du départ du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’objet à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.
-
Exécuter le programme d’exemple
Avant d’exécuter le programme d’exemple, veuillez vous assurer que :
-
Vous avez configuré la communication Standard Interface avec le robot.
-
Vous avez terminé l’étalonnage main-œil avec le programme d’étalonnage.
-
Vous avez créé une solution et un projet Mech-Vision, et sélectionné Autoload Project.
-
Vous avez créé un projet Mech-Viz si le programme d’exemple « Obtenir le trajet planifié depuis Mech-Viz » est utilisé, et avez cliqué avec le bouton droit sur le nom du projet dans le panneau Resources de Mech-Viz et sélectionné Charger automatiquement le projet dans le menu contextuel.
-
La position HOME, la pose de capture d’image, le TCP et les points de passage intermédiaires ont été enseignés.
Lorsque toutes les conditions préalables sont remplies, exécutez le programme d’exemple en vous référant à la section Exécuter le programme du robot.
Lorsque vous procédez à l’étape ci-dessous, ouvrez le commentaire dans le programme d’exemple spécifique. Par exemple, pour exécuter le premier programme d’exemple, sélectionnez “// Vision_Sample_1()”, puis sélectionnez .