Exemple de programme 10 : MM_S10_Viz_Subtask
Introduction du programme
Description |
Ce programme d’exemple comprend deux programmes : un programme principal et un sous-programme. Le sous-programme (programme en arrière-plan) déclenche l’exécution du projet Mech-Viz afin d’obtenir la trajectoire planifiée. Le programme principal (programme au premier plan) déplace le robot en fonction de la trajectoire planifiée. Ensuite, le programme principal déclenche l’exécution du sous-programme lorsque le robot quitte la zone de prélèvement afin d’obtenir la prochaine trajectoire planifiée, réduisant ainsi 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 trouver le fichier via le chemin Programme principal : 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 à 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 section 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 code de trajectoire planifiée. Par conséquent, les fonctionnalités du sous-programme qui sont identiques à celles de MM_S2_Viz_Basic ne sont pas décrites dans cette section. Pour plus d’informations sur ces fonctionnalités, voir Exemple de programme 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_S10_Viz_Subtask) ;
6: !Mech-Mind, 2023-12-25 ;
7: !-------------------------------- ;
8: ;
9: F[11]=(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[11]=(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[11] sur ON.
-
Exécuter le projet Mech-Viz.
-
Obtenir la trajectoire planifiée.
-
Stocker la trajectoire planifiée.
-
Définir F[11] sur OFF.
Ainsi, vous pouvez déterminer si le sous-programme a fini de s’exécuter en vous basant sur la valeur de F[11].
La section suivante décrit le programme principal.
| À l’instar du programme d’exemple MM_S2_Viz_Basic, le programme principal effectue le prélèvement et la dépose en se basant sur le code de la trajectoire planifiée. Par conséquent, les fonctionnalités du programme principal qui sont identiques à celles de MM_S2_Viz_Basic ne sont pas décrites dans cette section. Pour plus d’informations sur ces fonctionnalités, voir Exemple de programme 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_S10_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_S10_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[11]=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, and trigger Mech-Viz ;
45: !project and get planned path in ;
46: !advance ;
47:J P[3] 50% CNT100 DB 10.0mm,CALL MM_S10_SUB ;
48: !move to approach waypoint ;
49: !of placing ;
50:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
51: !move to placing waypoint ;
52:L P[4] 300mm/sec FINE ;
53: !add object releasing logic here, ;
54: !such as "DO[1]=OFF" ;
55: PAUSE ;
56: !move to departure waypoint ;
57: !of placing ;
58:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
59: !move back to robot home position ;
60:J P[1] 100% FINE ;
61: JMP LBL[1] ;
62: END ;
63: ;
64: LBL[99:vision error] ;
65: !add error handling logic here ;
66: !according to different ;
67: !error codes ;
68: !e.g.: status=2038 means no ;
69: !point cloud in ROI ;
70: PAUSE ;
Le flux de travail correspondant au code de 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 la trajectoire planifiée |
Le code ci-dessus indique que le programme principal appelle le sous-programme MM_S10_SUB afin de déclencher l’exécution du projet Mech-Viz et d’obtenir la trajectoire planifiée.
|
||
Planifier à l’avance la prochaine trajectoire par bouclage (prélèvement → déclenchement du prochain cycle de planification de trajectoire → dépose) |
Le code ci-dessus indique que le programme principal exécute de manière répétée le code à LBL[1].
Dans le code ci-dessus, le robot se déplace vers un point d’attente avant le prélèvement et attend que le sous-programme ait terminé son exécution (c’est-à-dire que F[11] passe de ON à OFF), garantissant ainsi que la trajectoire planifiée a été obtenue et stockée.
Dans l’exemple ci-dessus, le robot se déplace le long de la trajectoire planifiée jusqu’au point d’approche du prélèvement (PR[60]), puis jusqu’au point de prélèvement (PR[61]), effectue le prélèvement (par exemple, DO[1]=ON), puis se déplace vers le point de départ du prélèvement (PR[62]).
La commande ci-dessus correspond à la commande « Execute Distance First », expliquée en détail comme suit.
Le code ci-dessus indique que lorsque le robot entre dans la zone sphérique centrée sur P[3], il appelle le sous-programme MM_S10_SUB, déclenchant ainsi l’exécution du projet Mech-Viz pour obtenir la trajectoire planifiée. Étant donné que le robot se trouve en dehors de la zone de dépose, il peut planifier à l’avance la prochaine trajectoire de prélèvement sans attendre la fin de la dépose puis la planification de la prochaine trajectoire de prélèvement.
L’exemple ci-dessus indique que le robot se déplace vers le point d’approche de la dépose (Tool_Offset,PR[2]), puis vers le point de dépose (P[4]), effectue la dépose (comme 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 d’origine. |