Programme d’exemple 9 : MM_S9_Viz_RunInAdvance
Présentation du programme
Description |
Le projet Mech-Viz est déclenché lorsque le robot effectue la prise. Ensuite, la caméra est démarrée par l’Étape Bifurcation par message du projet lorsque le robot effectue la dépose, afin de planifier la prochaine trajectoire et ainsi réduire le temps de cycle. |
||
Chemin du fichier |
Vous pouvez accéder au répertoire d’installation de Mech-Vision et Mech-Viz et trouver le fichier via le chemin |
||
Projet |
Projets Mech-Vision et Mech-Viz
|
||
Prérequis |
|
| Ce programme d’exemple est fourni uniquement à titre de référence. Avant d’utiliser le programme, veuillez le modifier en fonction du scénario réel. |
Description du programme
Cette partie décrit le programme d’exemple MM_S9_Viz_RunInAdvance.
| La seule différence entre le programme d’exemple MM_S9_Viz_RunInAdvance et le programme d’exemple MM_S5_Viz_SetBranch est que MM_S9_Viz_RunInAdvance peut planifier la trajectoire suivante (le code de cette fonctionnalité est en gras). Par conséquent, seule la fonctionnalité de planification de la trajectoire suivante est décrite dans la partie suivante. Pour des informations sur les parties de MM_S9_Viz_RunInAdvance qui sont identiques à celles de MM_S5_Viz_SetBranch, voir Programme d’exemple 5 : MM_S5_Viz_SetBranch. |
NOP
'--------------------------------
'FUNCTION: trigger Mech-Viz
'project then set branch and get
'planned path, trigger Mech-Viz
'project and set branch in
'advance during pick&place
'process
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P071 P071
SUB P072 P072
SUB P073 P073
'move to robot home position
MOVJ C00000 VJ=50.00
'initialize communication
'parameters (initialization is
'required only once)
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
'move to image-capturing position
MOVJ C00001 VJ=50.00 PL=0
'open socket connection
CALL JOB:MM_OPEN_SOCKET
'trigger Mech-Viz project
CALL JOB:MM_START_VIZ ARGF"2;30"
'set branch exit port
CALL JOB:MM_SET_BRANCH ARGF"1;1"
*LOOP
'get planned path, 1st argument
'(1) means getting pose in JPs
CALL JOB:MM_GET_VIZDATA ARGF"1;51;52;53"
'check whether planned path has
'been got from Mech-Viz
'successfully
IFTHENEXP I053<>2100
'add error handling logic here
'according to different error
'codes
'e.g.: I053=2038 means no
'point cloud in ROI
PAUSE
ENDIF
'save waypoints of the planned
'path to local variables one
'by one
CALL JOB:MM_GET_JPS ARGF"1;71;61;62"
CALL JOB:MM_GET_JPS ARGF"2;72;63;64"
CALL JOB:MM_GET_JPS ARGF"3;73;65;66"
'follow the planned path to pick
'move to approach waypoint of
'picking
MOVJ P071 VJ=50.00 PL=0
'move to picking waypoint
MOVJ P072 VJ=10.00 PL=0
'add object grasping logic here,
'such as DOUT OT#(1) ON
PAUSE
'trigger Mech-Viz project but not
'to trigger camera capturing
CALL JOB:MM_START_VIZ ARGF"2;30"
'move to departure waypoint of
'picking
MOVJ P073 VJ=50.00 PL=0
'move to intermediate waypoint of
'placing
MOVJ C00002 VJ=50.00
'move to approach waypoint of
'placing
MOVL C00003 V=166.6 PL=0
'set branch exit port and trigger
'camera capturing when robot
'moves out of camera’s field
'of view
CALL JOB:MM_SET_BRANCH ARGF"1;1"
'move to placing waypoint
MOVL C00004 V=50.0 PL=0
'add object releasing logic here,
'such as DOUT OT#(1) OFF
PAUSE
'move to departure waypoint of
'placing
MOVL C00005 V=166.6 PL=0
'move back to robot home position
MOVJ C00006 VJ=50.00
JUMP *LOOP
*ENDLOOP
'close socket connection
CALL JOB:MM_CLOSE_SOCKET
END
Le flux de travail correspondant au code du programme d’exemple ci-dessus est illustré dans la figure ci-dessous.
La partie suivante décrit la fonctionnalité de planification de la trajectoire suivante.
| Fonctionnalité | Code et description | ||||||
|---|---|---|---|---|---|---|---|
Planifier à l’avance la trajectoire suivante par bouclage (prise→déclenchement du prochain cycle de planification de trajectoire→dépose) |
Le code ci-dessus indique que le programme boucle sur le code entre « *LOOP » et « JUMP *LOOP ».
Le code ci-dessus indique que le robot obtient la trajectoire planifiée depuis Mech-Viz en exécutant la commande MM_GET_VIZDATA.
Le code ci-dessus indique que le robot enregistre la trajectoire planifiée dans la variable spécifiée en exécutant la commande MM_GET_JPS. Cet exemple suppose que P071, P072 et P073 sont respectivement le point d’approche de la prise, le point de prise et le point de départ de la prise.
Le code ci-dessus indique que le robot se déplace vers le point d’approche de la prise puis vers le point de prise, puis la commande DO (par exemple « DOUT OT#(1) ON ») est exécutée pour contrôler l’outil et effectuer la prise.
Le code ci-dessus indique que le robot exécute la commande MM_START_VIZ pour relancer le projet Mech-Viz. Maintenant que le robot a obtenu la trajectoire de prise planifiée de ce cycle et s’est déplacé vers le point de prise, vous pouvez lancer le projet Mech-Viz à l’avance pour planifier la trajectoire du cycle suivant, au lieu d’attendre la fin de la dépose pour lancer le projet Mech-Viz.
Le code ci-dessus indique que le robot se déplace vers le point de départ de la prise (P073), le point intermédiaire (C00002), puis le point d’approche de la dépose (C00003).
Dans l’exemple ci-dessus, le robot définit le port de sortie de l’Étape Bifurcation par message avec la commande MM_SET_BRANCH. Sur ce port de sortie, l’Étape de Reconnaissance Visuelle sera exécutée. Ensuite, Mech-Viz planifiera à l’avance la prochaine trajectoire de prise en fonction du résultat de vision.
Dans l’exemple ci-dessus, le robot se déplace vers le point de dépose (C00004), effectue la dépose (par exemple « DOUT OT#(1) OFF »), puis se déplace vers le point de départ de la dépose (C00005) et enfin vers la position d’origine (C00006).
Lors de l’écriture de la logique de gestion des erreurs dans du code en boucle, vous pouvez utiliser l’instruction « JUMP *ENDLOOP » pour sauter à la section du code où la communication est fermée. |