Programme d’exemple 12 : MM_S12_Viz_ForLoop

Vous consultez actuellement la documentation pour la dernière version (2.1.2). Pour accéder à une autre version, cliquez sur le bouton "Changer de version" situé dans le coin supérieur droit de la page.

■ Si vous n’êtes pas sûr de la version du produit que vous utilisez, veuillez contacter le support technique Mech-Mind pour obtenir de l’aide.

Présentation du programme

Description

Le robot déclenche l’exécution du projet Mech-Viz, obtient le chemin planifié, puis stocke ce chemin en boucle pour la prise et la dépose.

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 Communication Component/Robot_Interface/ABB/sample/MM_S12_Viz_ForLoop.

Pour RobotWare6, l’extension de fichier est .mod. Pour RobotWare7, veuillez modifier l’extension de fichier de .mod à .modx.

Projet

Projets Mech-Vision et Mech-Viz

Prérequis

  1. Vous avez configuré la communication de l’interface standard.

  2. L’étalonnage automatique est terminé.

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_S12_Viz_ForLoop.

Le programme d’exemple MM_S12_Viz_ForLoop est similaire au programme d’exemple MM_S2_Viz_Basic, à l’exception du fait que MM_S2_Viz_Basic stocke les points de passage un par un et que MM_S12_Viz_ForLoop les stocke en boucle (le code de cette fonctionnalité est en gras). Par conséquent, seule la fonctionnalité de stockage des points de passage en boucle est décrite dans la section suivante. Pour les informations concernant les parties de MM_S12_Viz_ForLoop qui sont identiques à celles de MM_S2_Viz_Basic, voir Programme d’exemple 2 : MM_S2_Viz_Basic.
MODULE MM_S12_Viz_ForLoop
!----------------------------------------------------------
! FUNCTION: trigger Mech-Viz project and get planned path,
! get poses using for-loop structure
! Mech-Mind, 2023-12-25
!----------------------------------------------------------
!define local num variables
LOCAL VAR num pose_num:=0;
LOCAL VAR num status:=0;
LOCAL VAR num toolid{5}:=[0,0,0,0,0];
LOCAL VAR num vis_pose_num:=0;
LOCAL VAR num count:=0;
LOCAL VAR num label{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 PERS 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 PERS 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}:=
[
    [[0,0,0,0,89,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],
    [[11.1329,49.0771,-36.9666,0.5343,79.2476,-169.477],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],
    [[11.2355,52.1281,-23.3996,0.5938,62.6295,-169.548],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]],
    [[11.1329,49.0771,-36.9666,0.5343,79.2476,-169.477],[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_12()
    !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, 1st argument (1) means getting pose in JPs
    MM_Get_VizData 1, 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
    !close socket connection
    MM_Close_Socket;
    !save waypoints of planned path to local variables using for-loop structure
    FOR i FROM 1 TO pose_num DO
        count:=i;
        MM_Get_Jps count,jps{count},label{count},toolid{count};
    ENDFOR
    !follow the planned path to pick, in this example waypoint 2 (jps{2}) is picking waypoint
    !move to approach waypoint of picking
    MoveAbsJ jps{1},v1000,fine,gripper1;
    !move to picking waypoint
    MoveAbsJ jps{2},v300,fine,gripper1;
    !add object grasping logic here, such as "setdo DO_1, 1;"
    Stop;
    !move to departure waypoint of picking
    MoveAbsJ jps{3},v1000,fine,gripper1;
    !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 du programme d’exemple ci‑dessus est illustré dans la figure ci‑dessous.

sample12

Le tableau ci‑dessous décrit la fonctionnalité de stockage du chemin planifié en points de passage par bouclage. Vous pouvez cliquer sur l’hyperlien vers le nom de la commande pour en consulter la description détaillée.

Fonctionnalité Code et description

Stocker le chemin planifié en boucle

FOR i FROM 1 TO pose_num DO
    count:=i;
    MM_Get_JPS count,jps{count},label{count},toolid{count};
ENDFOR
  • Ligne 1: FOR indique une boucle for. i est utilisé pour contrôler le nombre d’itérations de la boucle (c.-à-d. i commence à 1 et s’incrémente de 1 après chaque itération de boucle jusqu’à ce qu’il dépasse la valeur de pose_num, moment où la boucle se termine). pose_num est le deuxième paramètre de la commande MM_Get_VizData, qui représente le nombre de points de passage renvoyés par le système de vision.

  • Ligne 2: Attribuez la valeur de i à count, où count représente l’ID du point de passage actuel dans le chemin planifié.

  • Ligne 3: La commande MM_Get_Jps stocke les positions articulaires, l’étiquette et l’ID d’outil d’un point de passage spécifique dans des variables spécifiques. La commande entière stocke les positions articulaires, l’étiquette et l’ID d’outil du point de passage dont l’ID est count dans les variables jps{count}, label{count} et toolid{count}, respectivement.

En supposant que le chemin planifié dans ce programme d’exemple contient trois points de passage, la boucle for ci‑dessus est équivalente aux trois commandes suivantes dans le programme d’exemple MM_S2_Viz_Basic :

MM_Get_JPS 1,jps{1},label{1},toolid{1};
MM_Get_JPS 2,jps{2},label{2},toolid{2};
MM_Get_JPS 3,jps{3},label{3},toolid{3};

Cette page est-elle utile ?

Veuillez nous indiquer comment améliorer :

Nous accordons de l’importance à votre vie privée

Nous utilisons des cookies pour vous offrir la meilleure expérience possible sur notre site web. En continuant à utiliser le site, vous reconnaissez accepter l’utilisation des cookies. Si vous refusez, un cookie unique sera utilisé pour garantir que vous ne soyez pas suivi ou reconnu lors de votre visite sur ce site.