Programme d’exemple 7 : MM_S7_Viz_SwitchTCP

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émarre le projet Mech-Viz, obtient le résultat de planification de trajectoire, puis change l’outil en fonction de l’identifiant d’outil du point de prise pour effectuer 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/KUKA/sample/MM_S7_Viz_SwitchTCP.

Projets

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 section décrit le programme d’exemple MM_S7_Viz_SwitchTCP.

La seule différence entre le programme d’exemple MM_S7_Viz_SwitchTCP et le programme d’exemple MM_S2_Viz_Basic est que MM_S7_Viz_SwitchTCP peut changer l’outil selon l’ID d’outil(cet code de cette fonctionnalité est en gras). Ainsi, les fonctionnalités du programme MM_S7_Viz_SwitchTCP similaires à celles de MM_S2_Viz_Basic ne sont pas décrites dans cette section. Pour plus d’informations sur ces fonctionnalités, voir Programme d’exemple 2 : MM_S2_Viz_Basic.
DEF  MM_S7_Viz_SwitchTCP ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project and get
; planned path, switch TCP according to the label
; Mech-Mind, 2023-12-25
;---------------------------------------------------
   ;set current tool no. to 1
   BAS(#TOOL,1)
   ;set current base no. to 0
   BAS(#BASE,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]
   ;trigger Mech-Viz project
   MM_Start_Viz(2,init_jps)
   ;get planned path, 1st argument (1) means getting pose in JPs
   MM_Get_VizData(2,pos_num,vis_pos_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
      halt
   ENDIF
   ;save waypoints of the planned path to local variables one by one
   MM_Get_Pose(1,Xpick_point1,label[1],toolid[1])
   MM_Get_Pose(2,Xpick_point2,label[2],toolid[2])
   MM_Get_Pose(3,Xpick_point3,label[3],toolid[3])
   ;switch TCP according to the received toolid
   ;reset tool signals according to received toolid
   switch toolid[vis_pos_num]
      CASE 1
         TOOL_DATA[1]=tool_1
         ;reset tool signal
      CASE 2
         TOOL_DATA[1]=tool_2
         ;reset tool signal
      DEFAULT
         ;add handling logic here if the toolid is invalid
         ;reset tool signal
         halt
   endswitch
   ;follow the planned path to pick
   ;move to approach waypoint of picking
LIN pick_point1 Vel=1 m/s CPDAT7 Tool[1] Base[0]
   ;move to picking waypoint
LIN pick_point2 Vel=0.3 m/s CPDAT8 Tool[1] Base[0]
   ;add object grasping logic here, such as "$OUT[1]=TRUE"
   switch toolid[vis_pos_num]
      CASE 1
         halt
         ;open tool signal
      CASE 2
         halt
         ;open tool signal
      DEFAULT
         halt
   endswitch
   ;move to departure waypoint of picking
LIN pick_point3 Vel=1 m/s CPDAT9 Tool[1] Base[0]
   ;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT2 Tool[0] Base[0]
   ;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[0] Base[0]
   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT4 Tool[0] Base[0]
   ;add object releasing logic here, such as "$OUT[1]=FALSE"
   switch toolid[vis_pos_num]
      CASE 1
         halt
         ;reset tool signal
      CASE 2
         halt
         ;reset tool signal
      DEFAULT
         halt
   endswitch
   ;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[0] Base[0]
   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END

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

sample7

Le tableau ci-dessous décrit le code en gras.

Fonctionnalité Code et description

Obtenir la trajectoire planifiée

;get planned path, 1st argument (1) means getting pose in JPs
MM_Get_VizData(2,pos_num,vis_pos_num,status)
  • MM_Get_VizData: La commande permettant d’obtenir la trajectoire planifiée par Mech-Viz.

  • 2: Le type de pose du point de passage obtenu est défini sur TCP.

  • pose_num: La variable qui stocke le nombre de points de passage renvoyés par le système de vision.

  • vis_pose_num: La variable qui stocke le numéro de séquence du point de passage Vision Move (point de prise) dans la trajectoire.

  • status: La variable qui stocke le code d’état d’exécution de la commande.

L’ensemble de l’instruction indique que le robot obtient la trajectoire planifiée depuis le projet Mech-Viz.

La trajectoire planifiée renvoyée est enregistrée dans la mémoire du robot et ne peut pas être obtenue directement. Pour accéder à la trajectoire planifiée, vous devez la stocker à l’étape suivante.

Stocker la trajectoire planifiée

;save waypoints of the planned path to local variables one by one
MM_Get_Pose(1,Xpick_point1,label[1],toolid[1])
MM_Get_Pose(2,Xpick_point2,label[2],toolid[2])
MM_Get_Pose(3,Xpick_point3,label[3],toolid[3])
  • MM_Get_Pose: La commande permettant de stocker la trajectoire planifiée.

  • 1: Stocker le premier point de passage.

  • Xpick_point1: La variable qui stocke le TCP du premier point de passage.

  • label[1]: La variable qui stocke l’étiquette du premier point de passage.

  • toolid[1]: La variable qui stocke l’ID d’outil correspondant au premier point de passage.

L’instruction entière “MM_Get_Pose(1,Xpick_point1,label[1],toolid[1])” stocke le TCP, l’étiquette et l’ID d’outil du premier point de passage dans les variables spécifiées.

  • Veuillez stocker la trajectoire planifiée en fonction du projet Mech-Viz réel. Dans ce programme d’exemple, la trajectoire planifiée par Mech-Viz se compose de trois points de passage: le premier point de passage est le point d’approche de la prise (Xpick_point1), le deuxième est le point de prise (Xpick_point2), et le troisième est le point de départ de la prise (Xpick_point3). En outre, vis_pose_num indique le numéro de séquence du point de prise dans la trajectoire. Ainsi, toolid[vis_pos_num] est équivalent à toolid[2]. L’un ou l’autre des deux paramètres peut spécifier l’ID d’outil utilisé par le robot lorsque le robot se déplace vers le point de prise (Xpick_point2).

  • Cet exemple changera l’ID d’outil en fonction de la valeur de toolid[vis_pos_num]. Par conséquent, le projet Mech-Viz utilisé doit inclure une Étape de changement d’outil et les paramètres de l’Étape de changement d’outil doivent être correctement définis.

    • L’Étape de changement d’outil doit être connectée au port de sortie A des résultats de l’Étape Vérifier le résultat de la vision.

    • Le paramètre Mode de fonctionnement de l’Étape de changement d’outil doit être défini sur Commutation automatique vers l’outil approprié.

Changer l’outil en fonction de l’ID d’outil

;switch TCP according to the received toolid
;reset tool signals according to received toolid
switch toolid[vis_pos_num]
   CASE 1
      TOOL_DATA[1]=tool_1
      ;reset tool signal
   CASE 2
      TOOL_DATA[1]=tool_2
      ;reset tool signal
   DEFAULT
      ;add handling logic here if the toolid is invalid
      ;reset tool signal
      halt
endswitch

toolid[vis_pos_num] indique l’ID d’outil du point de prise. Vous pouvez déterminer l’outil à utiliser lorsque le robot se déplace vers la pose cible (point de prise) en fonction de la valeur de la variable toolid[vis_pos_num], c’est-à-dire changer l’outil selon l’ID d’outil. La description du code ci-dessus est présentée ci-dessous.

  • Lorsque l’ID d’outil du point de prise est 1, le robot utilisera le repère d’outil tool_1.

  • Lorsque l’ID d’outil du point de prise est 2, le robot utilisera le repère d’outil tool_2.

  • Lorsque l’ID d’outil du point de prise est défini sur une autre valeur, le robot s’arrêtera. Vous pouvez ajouter un autre code selon la situation réelle.

Lorsque le robot se déplace vers le point de prise, vous pouvez activer les signaux DO correspondant à l’ID d’outil, comme montré dans le code suivant.

;add object grasping logic here, such as "$OUT[1]=TRUE"
switch toolid[vis_pos_num]
   CASE 1
      halt
      ;open tool signal
   CASE 2
      halt
      ;open tool signal
   DEFAULT
      halt
endswitch

Lorsque le robot se déplace vers le point de dépose, vous pouvez désactiver et réinitialiser les signaux DO correspondant à l’ID d’outil, comme montré dans le code suivant.

;add object releasing logic here, such as "$OUT[1]=FALSE"
switch toolid[vis_pos_num]
   CASE 1
      halt
      ;reset tool signal
   CASE 2
      halt
      ;reset tool signal
   DEFAULT
      halt
endswitch

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.