Autres interfaces

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 guide présente d’autres interfaces d’Adapter, comme indiqué ci-dessous.

Service Notify

Lorsqu’un projet Mech-Viz atteint une branche ou une étape particulière et qu’une fonction correspondante du programme Adapter doit être appelée, vous pouvez ajouter une étape Notify dans le projet Mech-Viz.

Exemple

Par exemple, une fonction est écrite dans le programme Adapter pour incrémenter le nombre d’objets dépalletisés. Nous pouvons alors ajouter une étape Notify après la dernière étape du processus de dépalletisation. Lorsque le projet s’exécute jusqu’à l’étape Notify, Adapter peut être déclenché pour appeler la fonction. La fonction d’exemple est présentée ci-dessous.

  1. Créez une classe qui hérite de la classe parente NotifyService.

    from interface.services import NotifyService, register_service
    
    class NotifyService(NotifyService):
        service_type = "notify"
        service_name = "FANUC_M410IC_185_COMPACT"
    
        def __init__(self, update_success_num, update_fail_num):
            self.update_success_num = update_success_num
            self.update_fail_num = update_fail_num
    
        def handle_message(self, msg):
            if msg == "Success":
                self.update_success_num()
            elif msg == "Fail":
                self.update_fail_num()

    Lorsque Mech-Viz exécute l’étape Notify et qu’un message “Success” est envoyé, Adapter appellera la fonction update_success_num(); tandis qu’un message “Fail” déclenchera l’appel par Adapter de la fonction update_fail_num().

  2. Instanciez la classe NotifyService et enregistrez le service dans la classe qui contrôle le programme principal de Mech-Viz.

    class MyClient(TcpClientAdapter):
    
         def __init__(self, host_address):
             super().__init__(host_address)
             self._register_service()
    
         def _register_service(self):
             self.robot_service = NotifyService(self.update_success_num, self.update_fail_num)
             self.server, port = register_service(self.hub_caller, self.robot_service)
    
         def update_success_num(self):
             # the num of unstack successfully plus 1
             self.success_num += 1
    
         def update_fail_num(self):
             # the num of unstack fiplus 1
             self.fail_num += 1
  3. Ajoutez une étape Notify à un emplacement approprié dans le flux de travail de Mech-Viz.

    Notez que les paramètres Adapter Name et Message de l’étape “Notify” correspondent aux attributs “service_name” et “msg” de la classe NotifyService. Assurez-vous que les valeurs des paramètres sont identiques à celles des attributs.

    Une fois le projet exécuté, si le service Notify est correctement enregistré, “service_type” et “service_name” s’afficheront dans l’onglet Console du panneau des journaux de Mech-Vision.

Service VisionWatcher

Après l’exécution de Mech-Vision, certains résultats sont produits, par exemple vision result: False, ‘function’: ‘posesFound’, ‘vision_name’: ‘TJTvision-3’}. En cas de problème, Adapter peut envoyer des messages d’erreur via le service VisionWatcher.

Exemple

  1. Créez une classe qui hérite de la classe VisionResultSelectedAtService.

    from interface.services import VisionResultSelectedAtService, register_service
    
    class VisionWatcher(VisionResultSelectedAtService):
        def __init__(self, send_err_no_cloud):
            super().__init__()
            self.send_err_no_cloud = send_err_no_cloud
    
        def poses_found(self,result):
            has_cloud_in_roi = not result.get("noCloudInRoi", False)
    
            if not has_cloud_in_roi:
                time.sleep(2)
                self.send_err_no_cloud()

    La classe fille VisionWatcher doit surcharger la fonction poses_found() de la classe parente, de sorte que la logique d’appel de la fonction send_err_no_cloud() qui envoie les messages d’erreur dans Adapter soit modifiée dans poses_found(). Pendant l’exécution, la valeur des points de vision retournée par Mech-Vision sera transmise au paramètre result de poses_found().

  2. Instanciez VisionWatcher dans la classe qui contrôle le programme principal de Mech-Viz.

    class MyClient(TcpClientAdapter):
        def __init__(self, host_address):
            super().__init__(host_address)
            self._register_service()
        def _register_service(self):
            self.robot_service = VisionWatcher(self.send_err_no_cloud)
            self.server, port = register_service(self.hub_caller, self.robot_service)
    
        def send_err_no_cloud(self):
            # send no cloud error message
            self.send("12,NoCloudErr,done".encode())

    Lors de l’instanciation de la classe VisionWatcher, la fonction send_err_no_cloud() est transmise à VisionWatcher() en tant que paramètre. En l’absence de nuages de points, conformément à la logique de poses_found(), la fonction d’envoi des messages d’erreur sera appelée.

    Après le démarrage du projet, si le service VisionWatcher est correctement enregistré par Adapter, il s’affichera dans l’onglet Console du panneau des journaux de Mech-Vision.

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.