Programme d’exemple 15: MM_S15_Viz_GetDoList

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

Après avoir obtenu la trajectoire de prise et les signaux DO, le robot peut effectuer la prise et la dépose en se déplaçant jusqu’au point de passage de prise et en définissant les signaux DO dans une boucle. Ce programme d’exemple est utilisé dans des scénarios de dépalettisation, et l’outil utilisé par le robot est un préhenseur à vide multisections.

File path

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

Project

Projet Mech-Vision et projet Mech-Viz (l’outil est un préhenseur à vide de dépalettisation)

Prerequisites

Ce programme d’exemple est fourni à titre de référence uniquement. Avant d’utiliser le programme, veuillez le modifier selon le scénario réel.

Description du programme

Cette partie décrit le programme d’exemple MM_S15_Viz_GetDoList.

Par rapport au programme d’exemple MM_S2_Viz_Basic, ce programme d’exemple ne contient que la modification suivante (le code de cette modification est en gras). De ce fait, les fonctionnalités du programme MM_S15_Viz_GetDoList similaires à celles de MM_S2_Viz_Basic ne sont pas décrites dans cette partie. Pour plus d’informations sur ces fonctionnalités, voir Programme d’exemple 2: MM_S2_Viz_Basic.
DEF  MM_S15_Viz_GetDoList ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project, then get
; planned path and gripper control signal using
; command 210
; 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
   MM_Get_PlanData(0,3,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
   ;get gripper control signal list
   MM_Get_Dolist(0,0)
   ;save waypoints of the planned path to local variables one by one
   FOR count=1 TO pos_num
     MM_Get_PlanJps(count,3,pick_point[count],move_type[count],tool_num[count],speed[count])
   ENDFOR
   Xpick_point1=pick_point[1]
   Xpick_point2=pick_point[2]
   Xpick_point3=pick_point[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
   halt
   ;set gripper control signal
   MM_Set_Dolist(0)
   ;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

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

sample15

Le tableau ci-dessous décrit le code en gras. Vous pouvez cliquer sur l’hyperlien du nom de la commande pour afficher sa description détaillée.

Feature Code and description

Obtenir la trajectoire planifiée

;get planned path
MM_Get_PlanData(0,3,pos_num,vis_pos_num,status)
  • MM_Get_PlanData: La commande pour obtenir la trajectoire planifiée. Les points de passage Vision Move obtenus par cette commande contiennent, en plus des poses, des données Vision Move et des données personnalisées (le cas échéant), tandis que les points de passage Vision Move obtenus par la commande MM_Get_VizData ne contiennent pas de données Vision Move ni de données personnalisées.

  • 0 : Obtenir la trajectoire planifiée depuis Mech-Viz.

  • 3 : Le format des données attendues en retour, qui est pose (en positions articulaires), type de mouvement, ID d’outil, vitesse, données Vision Move de Mech-Viz, élément 1 des données de sortie personnalisées,…​, élément N des données de sortie personnalisées.

  • 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) sur la trajectoire.

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

Obtenir la liste DO du préhenseur

;get gripper control signal list
MM_Get_Dolist(0,0)
  • MM_Get_Dolist: La commande permettant d’obtenir la liste DO du préhenseur.

  • Premier 0 : Spécifie la source des signaux DO, c’est-à-dire obtenir les signaux DO du préhenseur multisections depuis Mech-Viz.

  • Second 0 : Obtenir tous les signaux DO planifiés du préhenseur.

Stocker la trajectoire planifiée

FOR count=1 TO pos_num
MM_Get_PlanJps(count,3,pick_point[count],move_type[count],tool_num[count],speed[count])
ENDFOR
Xpick_point1=pick_point[1]
Xpick_point2=pick_point[2]
Xpick_point3=pick_point[3]
  • Ligne 1 : FOR indique une boucle for. count est utilisé pour contrôler le nombre d’itérations de la boucle (c’est-à-dire que count commence à 1 et s’incrémente de 1 après chaque itération jusqu’à dépasser la valeur de pose_num, moment auquel la boucle se termine). pose_num est le troisième paramètre de la commande MM_Get_PlanData, qui représente le nombre de points de passage renvoyés par le système de vision.

  • Ligne 2 : La commande MM_Get_PlanJps stocke les positions articulaires, le type de mouvement, l’ID d’outil et la vitesse d’un point de passage spécifique dans des variables spécifiques. L’ensemble de la commande stocke les positions articulaires, le type de mouvement, l’ID d’outil et la vitesse du point de passage dont l’ID est count, respectivement dans les variables pick_point[count], move_type[count], tool_num[count] et speed[count].

  • Ligne 3 : La boucle for se termine.

  • Lignes 4 à 6 : Stocker la trajectoire planifiée (pick_point_b[1], pick_point_b[2] et pick_point_b[3]) dans Xpick_point1, Xpick_point2 et Xpick_point3.

Se déplacer vers le point de prise pour effectuer la prise

   ;move to picking waypoint
PTP pick_point2 Vel=10 % PDAT2 Tool[1] Base[0]
   ;add object grasping logic here
   halt
   ;set gripper control signal
   MM_Set_Dolist(0)
  • MM_Set_Dolist: La commande pour définir la liste DO du préhenseur.

  • 0 : Définir tous les signaux DO planifiés du préhenseur.

L’énoncé ci-dessus indique que le robot se déplace vers le point de prise (pick_point2) puis exécute la commande MM_Set_Dolist pour définir les signaux DO du préhenseur afin d’effectuer la prise.

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.