Programme d’exemple 1 : MM_S1_Vis_Basic
Introduction du programme
Description |
Le robot déclenche l’exécution du projet Mech-Vision, puis obtient le résultat de vision pour saisir et déposer l’objet. |
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 |
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_S1_Vis_Basic.
DEF MM_S1_Vis_Basic ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Vision project and get
; vision result
; 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 NO.1 Mech-Vision project
MM_Start_Vis(1,0,2,init_jps)
;get vision result from NO.1 Mech-Vision project
MM_Get_VisData(1,pos_num,status)
;check whether vision result has been got from Mech-Vision successfully
IF status<> 1100 THEN
;add error handling logic here according to different error codes
;e.g.: status=1003 means no point cloud in ROI
;e.g.: status=1002 means no vision result
halt
ENDIF
;save first vision point data to local variables
MM_Get_Pose(1,Xpick_point,label,toolid)
;calculate pick approach point based on pick point
tool_offset={X 0,Y 0,Z -100,A 0,B 0,C 0}
Xpick_app=Xpick_point:tool_offset
;move to intermediate waypoint of picking
PTP pick_waypoint CONT Vel=50 % PDAT1 Tool[1] Base[0]
;move to approach waypoint of picking
LIN pick_app Vel=1 m/s CPDAT2 Tool[1] Base[0]
;move to picking waypoint
LIN pick_point Vel=0.3 m/s CPDAT3 Tool[1] Base[0]
;add object grasping logic here, such as "$OUT[1]=TRUE"
halt
;move to departure waypoint of picking
LIN pick_app Vel=1 m/s CPDAT2 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 CPDAT4 Tool[1] Base[0]
;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT5 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 CPDAT4 Tool[1] Base[0]
;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END
Le flux de travail correspondant au code de programme d’exemple ci-dessus est illustré dans la figure ci-dessous.
Le tableau ci-dessous explique le programme ci-dessus. Vous pouvez cliquer sur l’hyperlien du nom de la commande pour consulter sa description détaillée.
| Fonctionnalité | Code et description | ||
|---|---|---|---|
Définir le repère de référence |
Les deux instructions ci-dessus définissent les repères outil et base courants. |
||
Se déplacer vers la position Home |
L’instruction ci-dessus spécifie de déplacer le robot en mode PTP vers la position Home enseignée. |
||
Initialiser les paramètres de communication |
La commande MM_Init_Socket établit la communication TCP entre le robot et le système de vision sur la base des configurations du fichier XML_Kuka_MMIND.xml.
|
||
Se déplacer vers la position de capture d’image |
L’instruction ci-dessus spécifie de déplacer le robot linéairement vers la position de capture d’image enseignée. |
||
Déclencher l’exécution du projet Mech-Vision |
L’ensemble de l’instruction indique que le robot déclenche le système de vision pour exécuter le projet Mech-Vision avec un ID de 1 et attend que le projet Mech-Vision renvoie tous les points de vision. |
||
Obtenir le résultat de vision |
L’ensemble de l’instruction indique que le robot obtient le résultat de vision du projet Mech-Vision avec un ID de 1.
L’instruction ci-dessus indique que lorsque le code d’état est 1100, le robot a obtenu avec succès tous les résultats de vision ; sinon, une exception s’est produite dans le système de vision et le programme exécute le code entre IF et ENDIF. Vous pouvez effectuer l’opération correspondante en fonction du code d’erreur spécifique. Dans ce programme d’exemple, tous les codes d’erreur sont traités de la même manière, en mettant le programme en pause à l’aide de la commande halt. |
||
Stocker le résultat de vision |
L’ensemble de l’instruction stocke le TCP, l’étiquette et l’ID d’outil du premier point de vision dans les variables spécifiées.
Les deux instructions ci-dessus calculent la position du point d’approche de la prise. Dans les étapes suivantes, le robot atteindra cette position. |
||
Se déplacer vers le point intermédiaire |
Le robot se déplace en mode PTP vers un point intermédiaire (pick_waypoint) entre le point de capture d’image et le point d’approche de la prise.
|
||
Se déplacer vers le point d’approche de la prise |
Le robot se déplace linéairement vers un point situé 100 mm au-dessus du point de prise (c.-à-d. le point d’approche de la prise). pick_app et Xpick_app indiquent la même position.
|
||
Se déplacer vers le point de prise |
Le robot se déplace linéairement du point d’approche de la prise vers le point de prise. pick_point et Xpick_point indiquent la même position. |
||
Définir des sorties numériques (DO) pour effectuer la prise |
Après que le robot se soit déplacé vers le point de prise, vous pouvez définir une sortie numérique (par exemple “$OUT[1]=TRUE”) pour contrôler le robot afin d’utiliser l’outil pour effectuer la prise. Veuillez définir les DO en fonction de la situation réelle.
|
||
Se déplacer vers le point de départ de la prise |
Le robot se déplace jusqu’à 100 mm au-dessus du point de prise et atteint le point de départ de la prise. pick_app et Xpick_app indiquent la même position.
|
||
Se déplacer vers le point intermédiaire |
Le robot se déplace vers un point intermédiaire (drop_waypoint) entre le point de départ de la prise et le point d’approche de la dépose.
|
||
Déplacer le robot vers le point d’approche de la dépose |
Le robot se déplace du point intermédiaire vers le point d’approche de la dépose (drop_app).
|
||
Se déplacer vers le point de dépose |
Le robot se déplace du point d’approche de la dépose vers le point de dépose (drop).
|
||
Définir des sorties numériques (DO) pour effectuer la dépose |
Après que le robot se soit déplacé vers le point de dépose, vous pouvez définir une sortie numérique (par exemple “$OUT[1]=FALSE”) pour contrôler le robot afin d’utiliser l’outil pour effectuer la dépose. Veuillez définir les DO en fonction de la situation réelle.
|
||
Déplacer le robot vers le point de départ de la dépose |
Le robot se déplace du point de dépose vers le point de départ de la dépose (drop_app).
|
||
Se déplacer vers la position Home |
Le robot se déplace du point de départ de la dépose vers le point Home à nouveau.
|