Programmes d’exemple ROKAE

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.

Ce sujet présente les programmes d’exemple qui réalisent une tâche réelle de préhension et de dépose.

Programmes d’exemple

Les programmes d’exemple utilisés pour une opération simple de préhension et dépose sont stockés dans le fichier main.mod dans le dossier MM_Project.

Obtenir le résultat de vision depuis Mech-Vision

// **********************************************************
// FUNCTION: Eye to Hand simple pick and place with Vision
// **********************************************************
LOCAL PROC Vision_Sample_1()
        AccSet 100,100
        MoveAbsJ home_point,v3000,fine,tool0 //move robot home position
        MoveL camera_capture,v500,fine,tool0
        Pos_Num = 0

        // Set ip address of IPC
        IP_Address = "192.168.2.222"
        Server_Port = 50000
        MM_Timeout = 60
        MM_Init_Socket()
        Wait 0.1

        // Set vision recipe
        Job = 1
        Model_Number = 1
        MM_Switch_Model()

        // Run vision project
        Job = 1
        Pos_Num_Need = 0
        SendPos_Type = 1
        MM_Start_Vis()
        Wait 1
        Job = 1
            MM_Get_VisData()
        IF(MM_Status != 1100)
                EXIT
        ENDIF
        Serial = 1
        MM_Get_Pose()
            robtarget _P = MM_P
        MoveL RelTool(_P,0,0,-100,0,0,0),v1000,fine,tool01
        MoveL MM_P,v300,fine,tool01
        Pause

        // Add object grasping logic here.
        MoveL Offs(_P,0,0,100), v1000, fine, tool01
        MoveL way_point1,v1000,z50,tool01
        MoveL RelTool(drop,0,0,-100,0,0,0),v1000,fine,tool01
        MoveL drop,v300,fine,tool01
        Pause

        // Add object releasing logic here.
        MoveL Offs(drop,0,0,100), v1000, fine, tool01
        MoveAbsJ home_point,v3000,fine,tool0
        RETURN

ENDPROC

Logique du programme

  • Ligne 6: Déplacer le robot vers la position HOME.

  • Ligne 7: Déplacer le robot vers la pose de capture d’image.

  • Ligne 11: IP_Address spécifie l’adresse IP de l’IPC.

  • Ligne 12: Server_Port spécifie le numéro de port de l’IPC.

  • Ligne 13: MM_Timeout spécifie le délai d’attente d’expiration de la communication.

  • Ligne 14: Initialiser la communication avec MM_Init_Socket.

  • Ligne 18: Job indique l’ID du projet Mech-Vision.

  • Ligne 19: Model_Number spécifie le numéro de la recette de paramètres utilisée dans le projet Mech-Vision.

  • Ligne 20: Si des recettes de paramètres sont utilisées dans le projet Mech-Vision, MM_Switch_Model doit être appelé pour définir la recette de paramètres.

  • Ligne 24: Pos_Num_Need spécifie le nombre attendu de points de vision reçus de Mech-Vision. 0 indique que tous les points de vision seront reçus.

  • Ligne 25: SendPos_Type indique que la pose du robot sous forme des positions articulaires actuelles ainsi que la pose actuelle de la bride sera envoyée au système de vision.

  • Ligne 26: Exécuter le projet Mech-Vision avec MM_Start_Vis.

  • Ligne 27: Attendre une seconde. En configuration Eye-In-Hand, cette instruction Wait est nécessaire pour s’assurer que le robot reste immobile jusqu’à la fin de l’acquisition d’image. En configuration Eye-To-Hand, cette instruction Wait peut être remplacée par MoveL ou MoveJ.

  • Ligne 29: Obtenir le résultat de vision depuis Mech-Vision.

  • Ligne 30: Vérifier si le code d’état renvoyé indique une erreur. Si un code d’erreur est renvoyé, le programme est arrêté.

  • Ligne 34: Obtenir le point de prise avec MM_Get_Pose. Comme les fonctions personnalisées dans la syntaxe ROKAE ne prennent pas en charge le passage de paramètres, la variable globale MM_P est utilisée pour stocker le résultat de MM_Get_Pose. La variable locale _P = MM_P sert à enregistrer les données de pose obtenues dans la variable de position définie par l’utilisateur.

  • Ligne 37: Déplacer le robot vers le point de prise et effectuer la prise.

  • Ligne 42: Déplacer le robot vers un point intermédiaire entre le point de prise et le point de dépose.

  • Ligne 44: Déplacer le robot vers le point de dépose défini et effectuer la dépose.

Personnalisation requise

  • Définir le TCP

    tool01: modifier la valeur de tool01 dans la fenêtre d’étalonnage sur le pupitre d’enseignement pour ajuster le TCP.

  • Enseigner la position HOME

    MoveAbsJ home_point: enregistrer la position HOME dans home_point.

  • Enseigner la pose de capture d’image

    MoveL camera_capture: Enregistrer la pose de capture d’image dans camera_capture.

  • Enseigner le(s) point(s) intermédiaire(s)

    MoveL way_point1: Les points intermédiaires se situent entre le point de prise et le point de dépose et servent à éviter que le robot n’entre en collision avec l’environnement lors du déplacement entre les points de prise et de dépose. Vous pouvez ajouter un ou plusieurs points intermédiaires à way_point.

  • Enseigner le point de dépose

    MoveL drop: Enregistrer le point de dépose dans drop.

  • Ajouter les logiques de prise et de libération de l’objet pour l’outil

    Lorsque le robot se déplace vers les points de prise et de dépose, vous devez ajouter les logiques de commande de l’outil pour, respectivement, saisir ou relâcher l’objet.

  • Définir l’offset Z depuis le point de prise/dépose

    • Offset Z lors de l’approche du point de prise

      MoveL RelTool(_P,0,0,-100,0,0,0),v1000,fine,tool01

      Dans cet exemple, l’offset Z lors de l’approche du point de prise est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’outil à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.

    • Offset Z lors du départ du point de prise

      MoveL Offs(_P,0,0,100), v1000, fine, tool01

      Dans cet exemple, l’offset Z lors du départ du point de prise est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’objet à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.

    • Offset Z lors de l’approche du point de dépose

      MoveL RelTool(drop,0,0,-100,0,0,0),v1000,fine,tool01

      Dans cet exemple, l’offset Z lors de l’approche du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’outil à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.

    • Offset Z lors du départ du point de dépose

      MoveL Offs(drop,0,0,100), v1000, fine, tool01

      Dans cet exemple, l’offset Z lors du départ du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’objet à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.

Obtenir le trajet planifié depuis Mech-Viz

// **********************************************************
// FUNCTION: Eye to Hand simple pick and place with Viz
// **********************************************************
    LOCAL PROC Vision_Sample_2()
            AccSet 100, 100
            MoveAbsJ home_point,v3000,fine,tool0    //move robot home position
            MoveL camera_capture,v500,fine,tool0
            Pos_Num = 0

            // Set ip address of IPC
            IP_Address = "192.168.2.222"
            Server_Port = 50000
            MM_Timeout = 60
            MM_Init_Socket()
            Wait 0.1

            // Set vision recipe
            Job = 1
            Model_Number = 1
            MM_Switch_Model()

            // Run Viz project
            SendPos_Type = 1
            MM_Start_Viz()
            Wait 0.1

            // set branch exitport
            Branch_Num = 1
            Export_Num = 1
            MM_Set_Branch()

            // get planned path
            Jps_Pos = 2
            MM_Get_VizData()
            IF(MM_Status != 2100)
                    EXIT
            ENDIF
            robtarget _P[20]
            int _Label[20]
            int _Speed[20]
            Serial = 0
            while(Serial < Pos_Num)
                    Serial += 1
                    MM_Get_Pose()
                    _P[Serial] = MM_P
                    _Label[Serial] = MM_Label
                    _Speed[Serial] = MM_Speed
            endwhile

            // follow the planned path to pick
            int count = 0
            while(count < Pos_Num)
                    count += 1
                    MoveL _P[count],v1000,fine,tool01
                    IF(count == VisPos_Num)
                            Pause
                            // add object grasping logic here
                    ENDIF
            endwhile

            // go to drop location
            MoveL RelTool(drop,0,0,-100,0,0,0),v1000,z50,tool01
            MoveL drop,v500,fine,tool01     // drop point
            Pause

            // add object releasing logic here
            MoveL Offs(drop,0,0,100), v1000, fine, tool01
            MoveAbsJ home_point,v3000,fine,tool0
            RETURN

    ENDPROC

Logique du programme

  • Ligne 6: Déplacer le robot vers la position HOME.

  • Ligne 7: Déplacer le robot vers la pose de capture d’image.

  • Ligne 11: IP_Address spécifie l’adresse IP de l’IPC.

  • Ligne 12: Server_Port spécifie le numéro de port de l’IPC.

  • Ligne 13: MM_Timeout spécifie le délai d’attente d’expiration de la communication.

  • Ligne 14: Initialiser la communication avec MM_Init_Socket.

  • Ligne 18: Job indique l’ID du projet Mech-Vision.

  • Ligne 19: Model_Number spécifie le numéro de la recette de paramètres utilisée dans le projet Mech-Vision.

  • Ligne 20: Si des recettes de paramètres sont utilisées dans le projet Mech-Vision, MM_Switch_Model doit être appelé pour définir la recette de paramètres.

  • Ligne 23: SendPos_Type indique que la pose du robot sous forme des positions articulaires actuelles ainsi que la pose actuelle de la bride sera envoyée à Mech-Viz.

  • Ligne 24: Déclencher l’exécution du projet Mech-Viz.

  • Ligne 28: Branch_Num spécifie l’ID de l’étape Branch by Msg.

  • Ligne 29: Export_Num spécifie le numéro du port de sortie à prendre.

  • Ligne 30: Si vous devez définir la branche dans le projet Mech-Viz, vous pouvez appeler MM_Set_Branch() pour définir le port de sortie pour l’étape « Branch by Msg ».

  • Ligne 33: Jps_Pos indique que les points de passage seront renvoyés sous forme de TCP.

  • Ligne 34: Obtenir le trajet planifié depuis Mech-Viz.

  • Ligne 35: Vérifier si le code d’état renvoyé indique une erreur. Si un code d’erreur est renvoyé, le programme est arrêté.

  • Lignes 42-48: Stocker les points de passage obtenus via MM_Get_Pose au moyen d’une boucle dans les variables correspondantes _P[20], _Label[20] et _Speed[20]. Comme les fonctions personnalisées dans la syntaxe ROKAE ne prennent pas en charge le passage de paramètres, les variables globales MM_P, MM_Label et MM_Speed sont utilisées pour stocker le résultat de MM_Get_Pose.

  • Lignes 52-59: Déplacer le robot le long du trajet planifié par Mech-Viz avec une boucle FOR jusqu’au point de prise.

  • Ligne 63: Déplacer le robot vers le point de dépose défini et effectuer la dépose.

Personnalisation requise

  • Définir le TCP

    tool01: modifier la valeur de tool01 dans la fenêtre d’étalonnage sur le pupitre d’enseignement pour ajuster le TCP.

  • Enseigner la position HOME

    MoveAbsJ home_point: enregistrer la position HOME dans home_point.

  • Enseigner la pose de capture d’image

    MoveL camera_capture: Enregistrer la pose de capture d’image dans camera_capture.

  • Enseigner le point de dépose

    MoveL drop: Enregistrer le point de dépose dans drop.

  • Ajouter les logiques de prise et de libération de l’objet pour l’outil

    Lorsque le robot se déplace vers les points de prise et de dépose, vous devez ajouter les logiques de commande de l’outil pour, respectivement, saisir ou relâcher l’objet.

  • Définir l’offset Z depuis le point de dépose

    • Offset Z lors de l’approche du point de dépose

      MoveL RelTool(drop,0,0,-100,0,0,0),v1000,fine,tool01

      Dans cet exemple, l’offset Z lors de l’approche du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’outil à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.

    • Offset Z lors du départ du point de dépose

      MoveL Offs(drop,0,0,100), v1000, fine, tool01

      Dans cet exemple, l’offset Z lors du départ du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’objet à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.

Obtenir le trajet planifié depuis Mech-Vision

// ****************************************************************************
// FUNCTION: Eye to Hand simple pick and place with Vision Path Planning Step
// ****************************************************************************
    LOCAL PROC Vision_Sample_3()
            AccSet 100, 100
            MoveAbsJ home_point,v3000,fine,tool0    //move robot home position
            MoveL camera_capture,v500,fine,tool0
            Pos_Num = 0

            // Set ip address of IPC
            IP_Address = "192.168.2.222"
            Server_Port = 50000
            MM_Timeout = 60
            MM_Init_Socket()
            Wait 0.1

            // Set vision recipe
            Job = 1
            Model_Number = 1
            MM_Switch_Model()

            // Run vision project
            Job = 1
            Pos_Num_Need = 0
            SendPos_Type = 1
            MM_Start_Vis()
            Wait 1

            // get planned path from {product-vis} Path Planning Step
            Job = 1
            Jps_Pos = 2
            MM_Get_VisPath()
            IF(MM_Status != 1103)
                    EXIT
            ENDIF
            robtarget _P[20]
            int _Label[20]
            int _Speed[20]
            Serial = 0
            while(Serial < Pos_Num)
                    Serial += 1
                    MM_Get_Pose()
                    _P[Serial] = MM_P
                    _Label[Serial] = MM_Label
                    _Speed[Serial] = MM_Speed
            endwhile

            // follow the planned path to pick
            int count = 0
            while(count < Pos_Num)
                    count += 1
                    MoveL _P[count],v1000,fine,tool01
                    IF(count == VisPos_Num)
                            Pause
                            // add object grasping logic here
                    ENDIF
            endwhile

            // go to drop location
            MoveL RelTool(drop,0,0,-100,0,0,0),v1000,z50,tool01
            MoveL drop,v500,fine,tool01     // drop point
            Pause

            // add object releasing logic here
            MoveL Offs(drop,0,0,100), v1000, fine, tool01
            MoveAbsJ home_point,v3000,fine,tool0
            RETURN

    ENDPROC

Logique du programme

  • Ligne 6: Déplacer le robot vers la position HOME.

  • Ligne 7: Déplacer le robot vers la pose de capture d’image.

  • Ligne 11: IP_Address spécifie l’adresse IP de l’IPC.

  • Ligne 12: Server_Port spécifie le numéro de port de l’IPC.

  • Ligne 13: MM_Timeout spécifie le délai d’attente d’expiration de la communication.

  • Ligne 14: Initialiser la communication avec MM_Init_Socket.

  • Ligne 18: Job indique l’ID du projet Mech-Vision.

  • Ligne 19: Model_Number spécifie le numéro de la recette de paramètres utilisée dans le projet Mech-Vision.

  • Ligne 20: Si des recettes de paramètres sont utilisées dans le projet Mech-Vision, MM_Switch_Model doit être appelé pour définir la recette de paramètres.

  • Ligne 24: Pos_Num_Need spécifie le nombre attendu de points de vision reçus de Mech-Vision. 0 indique que tous les points de vision seront reçus.

  • Ligne 25: SendPos_Type indique que la pose du robot sous forme des positions articulaires actuelles ainsi que la pose actuelle de la bride sera envoyée au système de vision.

  • Ligne 26: Exécuter le projet Mech-Vision avec MM_Start_Vis.

  • Ligne 27: Attendre une seconde. En configuration Eye-In-Hand, cette instruction Wait est nécessaire pour s’assurer que le robot reste immobile jusqu’à la fin de l’acquisition d’image. En configuration Eye-To-Hand, cette instruction Wait peut être remplacée par MoveL ou MoveJ.

  • Ligne 31: Jps_Pos indique que les points de passage seront renvoyés sous forme de TCP.

  • Ligne 32: Obtenir le trajet planifié à partir de l’étape « Path Planning » de Mech-Vision avec MM_Get_VisPath.

  • Ligne 33: Vérifier si le code d’état renvoyé indique une erreur. Si un code d’erreur est renvoyé, le programme est arrêté.

  • Lignes 40-46: Stocker les points de passage obtenus via MM_Get_Pose au moyen d’une boucle dans les variables correspondantes _P[20], _Label[20] et _Speed[20]. Comme les fonctions personnalisées dans la syntaxe ROKAE ne prennent pas en charge le passage de paramètres, les variables globales MM_P, MM_Label et MM_Speed sont utilisées pour stocker le résultat de MM_Get_Pose.

  • Lignes 50 -57: Déplacer le robot le long du trajet planifié avec une boucle FOR jusqu’au point de prise et effectuer la prise.

  • Ligne 61: Déplacer le robot vers le point de dépose défini et effectuer la dépose.

Personnalisation requise

  • Définir le TCP

    tool01: modifier la valeur de tool01 dans la fenêtre d’étalonnage sur le pupitre d’enseignement pour ajuster le TCP.

  • Enseigner la position HOME

    MoveAbsJ home_point: enregistrer la position HOME dans home_point.

  • Enseigner la pose de capture d’image

    MoveL camera_capture: Enregistrer la pose de capture d’image dans camera_capture.

  • Enseigner le point de dépose

    MoveL drop: Enregistrer le point de dépose dans drop.

  • Ajouter les logiques de prise et de libération de l’objet pour l’outil

    Lorsque le robot se déplace vers les points de prise et de dépose, vous devez ajouter les logiques de commande de l’outil pour, respectivement, saisir ou relâcher l’objet.

  • Définir l’offset Z depuis le point de dépose

    • Offset Z lors de l’approche du point de dépose

      MoveL RelTool(drop,0,0,-100,0,0,0),v1000,fine,tool01

      Dans cet exemple, l’offset Z lors de l’approche du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’outil à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.

    • Offset Z lors du départ du point de dépose

      MoveL Offs(drop,0,0,100), v1000, fine, tool01

      Dans cet exemple, l’offset Z lors du départ du point de dépose est fixé à 100 mm. Ce réglage déplace le robot de 100 mm le long de l’axe Z du repère de l’objet à partir du point de prise. Ajustez la valeur de l’offset Z selon vos besoins réels.

Exécuter le programme d’exemple

Avant d’exécuter le programme d’exemple, veuillez vous assurer que :

  1. Vous avez configuré la communication Standard Interface avec le robot.

  2. Vous avez terminé l’étalonnage main-œil avec le programme d’étalonnage.

  3. Vous avez créé une solution et un projet Mech-Vision, et sélectionné Autoload Project.

  4. Vous avez créé un projet Mech-Viz si le programme d’exemple « Obtenir le trajet planifié depuis Mech-Viz » est utilisé, et avez cliqué avec le bouton droit sur le nom du projet dans le panneau Resources de Mech-Viz et sélectionné Charger automatiquement le projet dans le menu contextuel.

  5. La position HOME, la pose de capture d’image, le TCP et les points de passage intermédiaires ont été enseignés.

Lorsque toutes les conditions préalables sont remplies, exécutez le programme d’exemple en vous référant à la section Exécuter le programme du robot.

Lorsque vous procédez à l’étape ci-dessous, ouvrez le commentaire dans le programme d’exemple spécifique. Par exemple, pour exécuter le premier programme d’exemple, sélectionnez “// Vision_Sample_1()”, puis sélectionnez Plus  Commenter/Décommenter.

rokae sample 1

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.