Programme d’exemple 18: MM_S18_Viz_GetUserData
Introduction du programme
Description |
Lorsque le robot obtient le trajet de prélèvement, il obtient également les données de sortie personnalisées du projet Mech-Vision. |
||
Chemin du fichier |
Vous pouvez accéder au répertoire d’installation de Mech-Vision et Mech-Viz et trouver le fichier en utilisant le chemin
|
||
Projet |
projet Mech-Vision (un ou plusieurs ports personnalisés doivent être ajoutés à l’étape Sortie) et projet Mech-Viz (l’outil est une pince à vide de dépalletisation) |
||
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_S18_Viz_GetUserData.
| Comparé au programme d’exemple MM_S15_Viz_GetDoList, ce programme d’exemple ne contient que la modification suivante (le code de cette modification est en gras). Par conséquent, seule la modification est décrite dans la section suivante. Pour des informations sur les parties de MM_S18_Viz_GetUserData qui sont cohérentes avec celles de MM_S15_Viz_GetDoList, voir Programme d’exemple 15: MM_S15_Viz_GetDoList. |
MODULE MM_S18_Viz_GetUserData
!----------------------------------------------------------
! FUNCTION: trigger Mech-Viz project, then get planned path
! and get custom data from Mech-Vision using command 210
! Mech-Mind, 2023-12-25
!----------------------------------------------------------
!define local num variables
LOCAL VAR num pose_num:=0;
LOCAL VAR num status:=0;
LOCAL VAR num vis_pose_num:=0;
LOCAL VAR num count:=0;
LOCAL VAR num offset_x:=0;
LOCAL VAR num offset_y:=0;
LOCAL VAR num offset_z:=0;
LOCAL VAR num movetype{5}:=[0,0,0,0,0];
LOCAL VAR num toolnum{5}:=[0,0,0,0,0];
LOCAL VAR num speed{5}:=[0,0,0,0,0];
!define local joint&pose variables
LOCAL CONST jointtarget home:=[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL CONST jointtarget snap_jps:=[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget camera_capture:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL VAR robtarget pickpoint:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL VAR robtarget drop_waypoint:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL VAR robtarget drop:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS jointtarget jps{5}:=
[
[[1.1835,39.2938,-17.0883,0.1382,67.7901,176.701],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],
[[1.2008,45.8522,-13.6729,0.1512,57.8163,176.689],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],
[[1.1835,39.2938,-17.0883,0.1382,67.7901,176.701],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],
[[36.2634,-36.6956,48.5019,-1.0197,78.1304,356.473],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],
[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]]
];
!define local tooldata variables
LOCAL PERS tooldata gripper1:=[TRUE,[[0,0,0],[1,0,0,0]],[0.001,[0,0,0.001],[1,0,0,0],0,0,0]];
PROC Sample_18()
!set the acceleration parameters
AccSet 50, 50;
!set the velocity parameters
VelSet 50, 1000;
!move to robot home position
MoveAbsJ home\NoEOffs,v3000,fine,gripper1;
!initialize communication parameters (initialization is required only once)
MM_Init_Socket "127.0.0.1",50000,300;
!move to image-capturing position
MoveL camera_capture,v1000,fine,gripper1;
!open socket connection
MM_Open_Socket;
!trigger Mech-Viz project
MM_Start_Viz 2,snap_jps;
!get planned path from Mech-Viz
MM_Get_PlanData 0, 3, pose_num, vis_pose_num, status;
!check whether planned path has been got from Mech-Viz successfully
IF status <> 2100 THEN
!add error handling logic here according to different error codes
!e.g.: status=2038 means no point cloud in ROI
Stop;
ENDIF
!get gripper control signal list
MM_Get_Dolist 0,0;
!close socket connection
MM_Close_Socket;
!save waypoints of the planned path to local variables one by one
FOR i FROM 1 TO pose_num DO
count:=i;
MM_Get_PlanJps count,3,JPS{count},movetype{count},toolnum{count},speed{count};
ENDFOR
!save received custom data
offset_x:=MM_UserData{1};
offset_y:=MM_UserData{2};
offset_z:=MM_UserData{3};
!follow the planned path to pick
FOR j FROM 1 TO pose_num DO
count:=j;
MoveAbsJ jps{count},v1000,fine,gripper1;
!set gripper control signal when current waypoint is picking waypoint
IF count=vis_pose_num THEN
!add object grasping logic here
Stop;
!set gripper control signal
!MM_Set_DoList 0, 1, go16_1;
!MM_Set_DoList 0, 2, go16_2;
!MM_Set_DoList 0, 3, go16_3;
!MM_Set_DoList 0, 4, go16_4;
ENDIF
ENDFOR
!move to intermediate waypoint of placing
MoveJ drop_waypoint,v1000,z50,gripper1;
!move to approach waypoint of placing
MoveL RelTool(drop,0,0,-100),v1000,fine,gripper1;
!move to placing waypoint
MoveL drop,v300,fine,gripper1;
!add object releasing logic here, such as "setdo DO_1, 0;"
Stop;
!move to departure waypoint of placing
MoveL RelTool(drop,0,0,-100),v1000,fine,gripper1;
!move back to robot home position
MoveAbsJ home\NoEOffs,v3000,fine,gripper1;
ENDPROC
ENDMODULE
Le flux de travail correspondant au code de l’exemple ci-dessus est illustré dans la figure ci-dessous.
Le tableau ci-dessous décrit le code en gras. Vous pouvez cliquer sur l’hyperlien du nom de la commande pour en afficher la description détaillée.
| Fonctionnalité | Code et description | ||||
|---|---|---|---|---|---|
Stocker les données personnalisées des points de passage |
Le robot exécute la commande MM_Get_PlanData pour obtenir les données Vision Move des points de passage et les données personnalisées des points de passage, puis exécute la commande MM_Get_PlanJps pour enregistrer respectivement les données Vision Move et les données personnalisées, stockées dans la mémoire du robot, dans les tableaux globaux MM_Plan_Results et MM_UserData. Le code ci-dessus affecte aux variables offset_x, offset_y et offset_z, respectivement, les données de sortie personnalisées MM_UserData{1}, MM_UserData{2}, et MM_UserData{3} qui représentent trois points de passage Vision Move (points de prélèvement).
|