Programme d’exemple 8 : MM_S8_Viz_Subtask
Présentation du programme
Description |
Ce programme d’exemple se compose de deux programmes : un programme principal et un sous-programme. Le sous-programme (programme d’arrière-plan) déclenche l’exécution du projet Mech-Viz pour obtenir le chemin planifié. Le programme principal (le programme au premier plan) déplace le robot sur la base du chemin planifié. Ensuite, le programme principal déclenche l’exécution du sous-programme lorsque le robot effectue la pose afin d’obtenir le prochain chemin planifié, ce qui réduit le temps de cycle.
|
||
Chemin du fichier |
Sous-programme : Vous pouvez accéder au répertoire d’installation de Mech-Vision et Mech-Viz et localiser le fichier en utilisant le chemin Programme principal:Vous pouvez accéder au répertoire d’installation de Mech-Vision et Mech-Viz et localiser le fichier en utilisant le chemin |
||
Projet |
projets Mech-Vision et Mech-Viz |
||
Prérequis |
|
|
Ce programme d’exemple est fourni à titre de référence uniquement. Avant d’utiliser le programme, veuillez le modifier en fonction du scénario réel. |
Description du programme
La partie suivante décrit le sous-programme.
| À l’instar du programme d’exemple MM_S2_Viz_Basic, le sous-programme déclenche l’exécution du projet Mech-Viz et obtient le chemin planifié. Par conséquent, les fonctionnalités du sous-programme qui sont cohérentes avec celles de MM_S2_Viz_Basic ne sont pas décrites dans cette partie. Pour plus d’informations sur ces fonctionnalités, voir Programme d’exemple 2 : MM_S2_Viz_Basic. |
1: !-------------------------------- ;
2: !FUNCTION: run Mech-Viz project ;
3: !and get planned path in subtask ;
4: !(run together with ;
5: !MM_S8_Viz_Subtask) ;
6: !Mech-Mind, 2023-12-25 ;
7: !-------------------------------- ;
8: ;
9: F[10]=(ON) ;
10: !trigger Mech-Viz project ;
11: CALL MM_START_VIZ(2,10) ;
12: !get planned path, 1st argument ;
13: !(1) means getting pose in JPs ;
14: CALL MM_GET_VIZ(1,51,52,53) ;
15: !check whether planned path has ;
16: !been got from Mech-Viz ;
17: !successfully ;
18: IF (R[53]=2100) THEN ;
19: !save waypoints of the planned ;
20: !path to local variables one ;
21: !by one ;
22: CALL MM_GET_JPS(1,60,70,80) ;
23: CALL MM_GET_JPS(2,61,71,81) ;
24: CALL MM_GET_JPS(3,62,72,82) ;
25: ENDIF ;
26: F[10]=(OFF) ;
Le code ci-dessus indique que si le sous-programme est en cours d’exécution, les opérations suivantes sont effectuées.
-
Définir F[10] sur ON.
-
Exécuter le projet Mech-Viz.
-
Obtenir le chemin planifié.
-
Stocker le chemin planifié.
-
Définir F[10] sur OFF.
Ainsi, vous pouvez déterminer si le sous-programme a terminé son exécution en fonction de la valeur F[10].
La partie suivante décrit le programme principal.
| À l’instar du programme d’exemple MM_S2_Viz_Basic, le programme principal effectue les opérations de prise et de pose sur la base du chemin planifié. Par conséquent, les fonctionnalités du programme principal qui sont cohérentes avec celles de MM_S2_Viz_Basic ne sont pas décrites dans cette partie. Pour plus d’informations sur ces fonctionnalités, voir Programme d’exemple 2 : MM_S2_Viz_Basic. |
1: !-------------------------------- ;
2: !FUNCTION: run Mech-Viz project ;
3: !and get planned path in subtask ;
4: !(run together with ;
5: !MM_S8_Sub) ;
6: !Mech-Mind, 2023-12-25 ;
7: !-------------------------------- ;
8: ;
9: !set current uframe NO. to 0 ;
10: UFRAME_NUM=0 ;
11: !set current tool NO. to 1 ;
12: UTOOL_NUM=1 ;
13: !initialize communication ;
14: !parameters(initialization is ;
15: !required only once) ;
16: CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
17: !move to robot home position ;
18:J P[1] 100% FINE ;
19: RUN MM_S8_SUB ;
20: LBL[1:LOOP] ;
21: !move to wait position for ;
22: !picking ;
23:L P[2] 1000mm/sec FINE ;
24: !wait until subtask program ;
25: !finished ;
26: WAIT (F[10]=OFF) ;
27: !check whether planned path has ;
28: !been got from Mech-Viz ;
29: !successfully ;
30: IF R[53]<>2100,JMP LBL[99] ;
31: !follow the planned path to pick ;
32: !move to approach waypoint ;
33: !of picking ;
34:J PR[60] 50% FINE ;
35: !move to picking waypoint ;
36:J PR[61] 10% FINE ;
37: !add object grasping logic here, ;
38: !such as "DO[1]=ON" ;
39: PAUSE ;
40: !move to departure waypoint ;
41: !of picking ;
42:J PR[62] 50% FINE ;
43: !move to intermediate waypoint ;
44: !of placing ;
45:J P[3] 50% CNT100 ;
46: !move to approach waypoint ;
47: !of placing ;
48:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
49: !trigger Mech-Viz project and get ;
50: !planned path in advance ;
51: RUN MM_S8_SUB ;
52: !move to placing waypoint ;
53:L P[4] 300mm/sec FINE ;
54: !add object releasing logic here, ;
55: !such as "DO[1]=OFF" ;
56: PAUSE ;
57: !move to departure waypoint ;
58: !of placing ;
59:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
60: !move back to robot home position ;
61:J P[1] 100% FINE ;
62: JMP LBL[1] ;
63: END ;
64: ;
65: LBL[99:vision error] ;
66: !add error handling logic here ;
67: !according to different ;
68: !error codes ;
69: !e.g.: status=2038 means no ;
70: !point cloud in ROI ;
71: PAUSE ;
Le flux de travail correspondant au code du programme d’exemple ci-dessus est illustré dans la figure ci-dessous.
Le tableau ci-dessous illustre le code central du programme principal.
| Fonctionnalité | Code et description | ||
|---|---|---|---|
Déclencher l’exécution du projet Mech-Viz et obtenir le chemin planifié |
Le code ci-dessus indique que le programme principal appelle le sous-programme MM_S8_SUB pour déclencher l’exécution du projet Mech-Viz et obtenir le chemin planifié.
|
||
Planifier le chemin suivant à l’avance par bouclage (prise→déclenchement du prochain cycle de planification du chemin→pose) |
Le code ci-dessus indique que le programme principal exécute de manière répétée le code au LBL[1].
Dans le code ci-dessus, le robot se déplace vers un point de passage d’attente avant la prise et attend que le sous-programme ait terminé son exécution (c.-à-d., F[10] passe de ON à OFF), garantissant ainsi que le chemin planifié a été obtenu et stocké.
Dans le code ci-dessus, le robot se déplace le long du chemin planifié vers le point de passage d’approche de la prise (PR[60]), puis vers le point de passage de prise (PR[61]), effectue la prise (par exemple, DO[1]=ON), puis se déplace vers le point de passage de départ de la prise (PR[62]), le point de passage intermédiaire de la pose (P[3]) et enfin vers le point de passage d’approche de la pose (Tool_Offset,PR[2]).
Le code ci-dessus indique que le programme principal appelle de nouveau le sous-programme MM_S8_SUB pour déclencher l’exécution du projet Mech-Viz et obtenir le chemin planifié. Étant donné que le robot se trouve dans la zone de pose, il peut planifier à l’avance le prochain chemin de prise sans attendre la fin de la pose puis planifier le prochain chemin de prise.
Dans l’exemple ci-dessus, le robot se déplace vers le point de passage de pose (P[4]), effectue la pose (par exemple, DO[1]=OFF), puis se déplace vers le point de passage de départ de la pose (Tool_Offset,PR[2]) et ensuite vers la position d’origine du robot. |