Exemple de programme 6 : MM_S6_Viz_ErrorHandle

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 lance le projet Mech-Viz, obtient la trajectoire planifiée, puis détermine, d’après le code d’état, si la trajectoire a été obtenue avec succès. Si la trajectoire est obtenue avec succès, le robot effectuera la prise et la dépose ; sinon, le robot s’arrêtera.

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/KUKA/sample/MM_S6_Viz_ErrorHandle.

Projet

Projets Mech-Vision et Mech-Viz

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

La seule différence entre le programme d’exemple MM_S6_Viz_ErrorHandle et le programme d’exemple MM_S2_Viz_Basic est que MM_S6_Viz_ErrorHandle peut gérer les erreurs en fonction des différents codes d’erreur (le code de cette fonctionnalité est en gras). Ainsi, les fonctionnalités du programme principal similaires à celles de MM_S2_Viz_Basic ne sont pas décrites dans cette partie. Pour plus d’informations sur ces fonctionnalités, voir Exemple de programme 2 : MM_S2_Viz_Basic.
DEF  MM_S6_Viz_ErrorHandle ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project and get
; planned path, handle errors according to status
; codes (if no point cloud in ROI, retry several
; times before exit loop)
; Mech-Mind, 2023-12-25
;---------------------------------------------------
   ;set current tool no. to 1
   BAS(#TOOL,1)
   ;set current base no. to 0
   BAS(#BASE,0)
   ;initialize variables
   retry_cnt=0
   ;move to robot home position
PTP HOME Vel=100 % DEFAULT
   ;initialize communication parameters (initialization is required only once)
   MM_Init_Socket("XML_Kuka_MMIND",873,871,60)
   ;move to image-capturing position
LIN camera_capture Vel=1 m/s CPDAT1 Tool[1] Base[0]
RECAP:
   ;trigger Mech-Viz project
   MM_Start_Viz(2,init_jps)
   ;get planned path, 1st argument (1) means getting pose in JPs
   MM_Get_VizData(1,pos_num,vis_pos_num,status)
   ;check whether planned path has been got from Mech-Viz successfully
   IF status<> 2100 THEN
        IF status == 2038 THEN
            ;no point cloud in ROI, add handling logic here
            ;self-adding then check retry counter
            retry_cnt=retry_cnt+1
            IF retry_cnt<3 THEN
                ;jump back to vision retry label if the number of retry times is less than 3
                GOTO RECAP
            ELSE
                ;reset counter and exit loop if the number of retry times has reached 3
                retry_cnt=0
                GOTO END_LOOP
            ENDIF
        ELSE
            ;add other error handling logic here
            halt
            GOTO END_LOOP
        ENDIF
   ENDIF
   ;save waypoints of the planned path to local variables one by one
   MM_Get_Jps(1,Xpick_point1,label[1],toolid[1])
   MM_Get_Jps(2,Xpick_point2,label[2],toolid[2])
   MM_Get_Jps(3,Xpick_point3,label[3],toolid[3])
   ;follow the planned path to pick
   ;move to approach waypoint of picking
PTP pick_point1 Vel=50 % PDAT1 Tool[1] Base[0]
   ;move to picking waypoint
PTP pick_point2 Vel=10 % PDAT2 Tool[1] Base[0]
   ;add object grasping logic here, such as "$OUT[1]=TRUE"
   halt
   ;move to departure waypoint of picking
PTP pick_point3 Vel=50 % PDAT3 Tool[1] Base[0]
   ;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT2 Tool[1] Base[0]
   ;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[1] Base[0]
   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT4 Tool[1] Base[0]
   ;add object releasing logic here, such as "$OUT[1]=FALSE"
   halt
   ;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[1] Base[0]
   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT

END_LOOP:
    halt
END

Le flux de travail correspondant au code du programme d’exemple ci-dessus est présenté dans la figure ci-dessous.

sample6

Le tableau ci-dessous décrit la fonctionnalité permettant de traiter différents codes d’état.

Fonctionnalité Code et description

Traitement de différents codes d’état

...
retry_cnt=0
...
RECAP:
   ;trigger Mech-Viz project
   MM_Start_Viz(2,init_jps)
   ;get planned path, 1st argument (1) means getting pose in JPs
   MM_Get_VizData(1,pos_num,vis_pos_num,status)
   ;check whether planned path has been got from Mech-Viz successfully
   IF status<> 2100 THEN
        IF status == 2038 THEN
            ;no point cloud in ROI, add handling logic here
            ;self-adding then check retry counter
            retry_cnt=retry_cnt+1
            IF retry_cnt<3 THEN
                ;jump back to vision retry label if the number of retry times is less than 3
                GOTO RECAP
            ELSE
                ;reset counter and exit loop if the number of retry times has reached 3
                retry_cnt=0
                GOTO END_LOOP
            ENDIF
        ELSE
            ;add other error handling logic here
            halt
            GOTO END_LOOP
        ENDIF
   ENDIF
   ...
END_LOOP:
    halt

Après l’exécution de MM_Get_VizData, le robot stocke le code d’état reçu dans la variable status. Vous pouvez effectuer l’opération correspondante en fonction du code d’erreur spécifique reçu.

  • Lorsque la variable status est définie à 2100, le robot a obtenu avec succès la trajectoire planifiée. Le robot effectuera alors la prise en suivant la trajectoire planifiée.

  • Lorsque la variable status n’est pas définie à 2100, une exception s’est produite dans le système de vision. Vous devez effectuer l’opération correspondante en fonction du code d’erreur spécifique.

    • Lorsque la variable status est définie sur 2038, il n’existe aucun nuage de points dans le ROI, c’est-à-dire que le robot ne peut pas obtenir la trajectoire planifiée. Dans ce cas, le robot peut tenter de relancer l’exécution du projet Mech-Viz afin d’obtenir la trajectoire planifiée. Le nombre de tentatives pour réobtenir la trajectoire planifiée est contrôlé par la variable retry_cnt dans le programme d’exemple. Si aucun nuage de points n’est détecté après deux tentatives de reprise (c’est-à-dire si retry_cnt est supérieur à 2), le programme s’arrête.

    • Lorsque la variable status est définie sur un autre code d’erreur, le programme s’arrête.

Vous pouvez écrire le code de gestion des erreurs en vous référant au manuel Codes d’état et dépannage.

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.