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 préhension. Ensuite, la caméra est démarrée par l’étape Branchement par Msg du projet lorsque le robot effectue la dépose afin de planifier la trajectoire suivante, ce qui raccourcit le temps de cycle. |
||
File path |
Vous pouvez accéder au répertoire d’installation de Mech-Vision et Mech-Viz et trouver le fichier en utilisant le chemin |
||
Project |
Projets Mech-Vision et Mech-Viz
|
||
Prerequisites |
|
| 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). En conséquence, 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. |
1: !-------------------------------- ;
2: !FUNCTION: trigger Mech-Viz ;
3: !project then set branch and get ;
4: !planned path, trigger Mech-Viz ;
5: !project and set branch in ;
6: !advance during pick&place proces ;
7: !process ;
8: !Mech-Mind, 2023-12-25 ;
9: !-------------------------------- ;
10: ;
11: !set current uframe NO. to 0 ;
12: UFRAME_NUM=0 ;
13: !set current tool NO. to 1 ;
14: UTOOL_NUM=1 ;
15: !move to robot home position ;
16:J P[1] 100% FINE ;
17: !initialize communication ;
18: !parameters(initialization is ;
19: !required only once) ;
20: CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
21: !move to image-capturing position ;
22:L P[2] 1000mm/sec FINE ;
23: !trigger Mech-Viz project ;
24: CALL MM_START_VIZ(2,10) ;
25: !set branch, "MM_SET_BCH ;
26: !(Branch_Num,Exit_Num)" ;
27: CALL MM_SET_BCH(1,1) ;
28: LBL[1:LOOP] ;
29: !get planned path, 1st argument ;
30: !(1) means getting pose in JPs ;
31: CALL MM_GET_VIZ(1,51,52,53) ;
32: !check whether planned path has ;
33: !been got from Mech-Viz ;
34: !successfully ;
35: IF R[53]<>2100,JMP LBL[99] ;
36: !save waypoints of the planned ;
37: !path to local variables one ;
38: !by one ;
39: CALL MM_GET_JPS(1,60,70,80) ;
40: CALL MM_GET_JPS(2,61,71,81) ;
41: CALL MM_GET_JPS(3,62,72,82) ;
42: !follow the planned path to pick ;
43: !move to approach waypoint ;
44: !of picking ;
45:J PR[60] 50% FINE ;
46: !move to picking waypoint ;
47:J PR[61] 10% FINE ;
48: !add object grasping logic here, ;
49: !such as "DO[1]=ON" ;
50: PAUSE ;
51: !trigger Mech-Viz project but not ;
52: !to trigger camera capturing ;
53: CALL MM_START_VIZ(2,10) ;
54: !move to departure waypoint ;
55: !of picking ;
56:J PR[62] 50% FINE ;
57: !move to intermediate waypoint ;
58: !of placing ;
59:J P[3] 50% CNT100 ;
60: !move to approach waypoint ;
61: !of placing ;
62:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
63: !set branch exit port and trigger ;
64: !camera capturing when robot ;
65: !moves out of camera’s field of ;
66: !view ;
67: CALL MM_SET_BCH(1,1) ;
68: !move to placing waypoint ;
69:L P[4] 300mm/sec FINE ;
70: !add object releasing logic here, ;
71: !such as "DO[1]=OFF" ;
72: PAUSE ;
73: !move to departure waypoint ;
74: !of placing ;
75:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
76: !move back to robot home position ;
77:J P[1] 100% FINE ;
78: JMP LBL[1] ;
79: END ;
80: ;
81: LBL[99:vision error] ;
82: !add error handling logic here ;
83: !according to different ;
84: !error codes ;
85: !e.g.: status=2038 means no ;
86: !point cloud in ROI ;
87: PAUSE ;
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 (préhension→déclenchement du cycle suivant de planification de trajectoire→dépose) |
Le code ci-dessus indique que le programme exécute de façon répétée le code à LBL[1].
Le code ci-dessus indique que le robot obtient la trajectoire planifiée depuis Mech-Viz en exécutant la commande MM_GET_VIZ.
Le code ci-dessus indique que le robot stocke la trajectoire planifiée dans le registre spécifié en exécutant la commande MM_GET_JPS. Cet exemple suppose que PR[60], PR[61] et PR[62] correspondent respectivement au point d’approche de la préhension, au point de préhension et au point de départ de la préhension.
Le code ci-dessus indique que le robot se déplace vers le point d’approche de la préhension puis vers le point de préhension, puis la commande DO (par exemple DO[1]=ON) est exécutée pour contrôler l’outil afin d’effectuer la préhension.
Le code ci-dessus indique que le robot exécute la commande MM_START_VIZ pour démarrer à nouveau le projet Mech-Viz. Maintenant que le robot a obtenu la trajectoire de préhension planifiée pour ce cycle et s’est déplacé jusqu’au point de préhension, vous pouvez démarrer le projet Mech-Viz à l’avance pour planifier la trajectoire du cycle suivant au lieu d’attendre la fin de la dépose puis de démarrer le projet Mech-Viz.
Le code ci-dessus indique que le robot se déplace vers le point de départ de la préhension (PR[62]), le point intermédiaire (P[3]), puis le point d’approche de la dépose (Tool_Offset,PR[2]).
Dans le code ci-dessus, le robot définit le port de sortie de l’étape Branchement par Msg avec la commande MM_SET_BCH. Sur ce port de sortie, l’étape de reconnaissance visuelle sera exécutée. Ensuite, Mech-Viz planifiera à l’avance la prochaine trajectoire de préhension en se basant sur le résultat de vision.
Dans l’exemple ci-dessus, le robot se déplace vers le point de dépose (P[4]), effectue la dépose (par exemple, DO[1]=OFF), puis se déplace vers le point de départ de la dépose (Tool_Offset,PR[2]) et enfin vers la position de référence. |