Intégrer les caméras IDS NXT dans sa propre automatisation industrielle

Intégrer les caméras IDS NXT dans sa propre automatisation industrielle

Avec IDS NXT, nous avons créé une plateforme pour une nouvelle génération de systèmes de vision destinés aux applications industrielles, qui peuvent être mis en œuvre comme des capteurs de vision performants dans l'automatisation industrielle, par exemple. En association avec IDS NXT Experience Kit, l'utilisation de l'apprentissage profond est également particulièrement simple. La solution tout-en-un fournit tout le nécessaire pour convertir des caméras IDS NXT en de puissantes caméras à inférence, en exécutant des réseaux neuronaux individuels directement sur les caméras (« on the edge »). La procédure, de l'acquisition et la gestion des images à la caméra à inférence prête à fonctionner, en passant par la formation de l'intelligence artificielle, se résume à quelques étapes. Cependant, quelles interfaces intègrent la caméra à inférence dans son environnement propre ?

Cette astuce technique aborde en particulier les possibilités de communication des caméras IDS NXT et montre clairement comment utiliser les résultats d'inférence dans votre propre environnement.

Interfaces IDS NXT

En tant que systèmes de vision embarquée compacts, les caméras IDS NXT effectuent des tâches de traitement d'image directement « on the edge » et peuvent mettre à disposition des résultats sans PC supplémentaire. Elles peuvent donc être utilisées en tant que capteurs de vision autonomes. En termes d'accès et d'échange de données pour des systèmes externes, elles se distinguent nettement des caméras industrielles, qui servent principalement de fournisseurs d'images pour du traitement d'image sur PC. Nous avons donc doté nos caméras IDS NXT d'interfaces qui peuvent être utilisées de manière plus simple et flexible dans des scénarii de type Internet des objets (IdO).

IDS NXT cockpit
Le cockpit IDS NXT permet d’accéder à l’ensemble des paramètres et fonctions importants des caméras industrielles IDS NXT et repose entièrement sur l'interface REST. Vous pouvez également y installer ou configurer des applications de vision.
Peu importe l'interface avec laquelle la caméra fonctionnera par la suite, avec le cockpit IDS NXT, vous disposez d'une interface utilisateur graphique simple d'utilisation pour installer sans effort les applications de caméra et pour configurer le mode Runtime.

IO et RS-232

Même à l'époque de l'industrie 4.0, les entrées/sorties numériques et les interfaces série basées sur UART avec les bus de terrain secondaires présentent de nombreux avantages par rapport à leurs successeurs plus modernes. Pour les inspections complexes de pièces et les contrôles s'appuyant sur des images aussi, les résultats IO ou NIO, supposés simples, suffisent généralement pour guider rapidement et simplement des produits dans de grandes zones industrielles modernes. Il n'existe guère d'autre interface aussi simple et économique à implémenter que les entrées ou sorties numériques. La communication série des appareils est similaire avec RS-232. Elle est prise en charge par un grand nombre de fabricants et d'utilisateurs et aucune autre ne présente une offre en accessoires éprouvés aussi vaste. C'est la raison pour laquelle RS-232 figure toujours aujourd'hui parmi les standards de la communication industrielle.

Avec les interfaces IO et RS-232, les caméras IDS NXT complètent beaucoup d'installations existantes avec des solutions de vision embarquée compactes et performantes sans avoir à modifier l'infrastructure déjà présente.

Interface REST IDS NXT

Avec un service Web REST (Representational State Transfer), les caméras IDS NXT offrent une interface ouverte standardisée pour la communication machine-machine, qui permet une interconnexion simple. De plus, les paramètres et résultats des caméras peuvent être modifiés ou interrogés. Le service Web REST s'appuie sur le protocole HTTP et est ainsi disponible sur la plupart des réseaux.

En tant qu'interface unique, les méthodes HTTP standard telles que GET, POST, PUT, PATCH, etc. sont utilisées. L'interface REST IDS NXT est donc indépendante de la plateforme, mais aussi très polyvalente, sur des clients très divers (PC, smartphones, tablettes), du fait de la large diffusion des méthodes HTTP. Les applications C++ nécessitent un environnement de développement totalement configuré, tandis que les API REST(ful) de classes d'appareil compatibles Web peuvent être commandées sans logiciel ou passerelle supplémentaire. Cela facilite les débuts, mais permet également d'englober de nombreuses actions de configuration dans des scripts simples.

Pour la communication générique avec des capteurs de vision autonomes, l'interface REST peut donc être mise en œuvre plus simplement et avec moins d'interventions indirectes dans le monde de l'Internet des objets (IdO) tout comme dans l'Internet industriel des objets (IIoT - Industrial Internet of Things) qu'une interface PC comme GenICam. Pour les caméras IDS NXT, REST n'est pas seulement l'interface d'« exécution » pour le transfert des données et des résultats, elle intervient aussi dans la configuration (p .ex. cockpit IDS NXT) de la caméra, de ses applications et des interfaces (IO, RS232).

Pourquoi REST ?

  • Pas de statut
    Grâce à la communication sans statut, chaque message serveur client est complet et contient toutes les informations nécessaires sur l'état actuel de l'application. Cela signifie que le service REST ne doit rien enregistrer entre les versions. Une gestion des sessions dans le serveur n'est donc pas requise, le service Web pouvant être mis à l'échelle à volonté sur le réseau. L'utilisation de REST dans l'IdO peut ainsi être idéale.
  • Uniformité et indépendance par rapport à la plateforme
    Avec REST, les systèmes proposent une interface ouverte standardisée s'appuyant sur la technologie Web, qui permet une interconnexion simple. Les données et les résultats peuvent être échangés entre tous les appareils (I)IoT sans conversion de protocole, ni passerelle.
  • Simplicité et préservation des ressources
    La structure, la transmission et, le cas échéant, le traitement de résultats d'appels simples d'API REST ne demandent généralement que peu de capacités de calcul. Les conditions techniques nécessaires pour la communication REST peuvent déjà être utilisées sur la plupart des appareils compatibles Web, sans logiciel supplémentaire, du fait de la large diffusion des méthodes HTTP standard.
  • Indépendance géographique
    Clients et serveurs peuvent fonctionner séparés les uns des autres (« système distribué »). Même s'ils sont hébergés par différents serveurs, la communication est cependant possible sur REST.
  • Compatibilité industrielle et Web
    L'accès et le transfert aisé des données sont des composantes essentielles de l'IIoT. De par sa flexibilité et sa capacité à utiliser des ressources largement disponibles, REST peut aussi simplifier l'automatisation industrielle. De nombreux systèmes et appareils peuvent être intégrés simplement et rapidement grâce à la communication sur toutes les applications et tous les appareils. La compatibilité Web ouvre la porte à une stratégie d'intégration plus complète. L'évolution et le développement de l'industrie bénéficient aussi de l'ouverture de nouveaux systèmes et technologies.

Le service Web REST IDS NXT est implémenté avec les caractéristiques suivantes :

  • Le service Web REST est actif pendant le fonctionnement régulier.
  • La sécurité d'accès est mise en œuvre par l'intermédiaire de l'authentification basique HTTP. Cela signifie qu'avec chaque demande, pour l'authentification, les données d'un utilisateur légitime doivent être saisies. Elles sont ensuite transférées encodées en Base 64.
  • Les réponses sont transférées au format JSON ou XML.

Communication IDS NXT via I/O et RS-232

Pour communiquer les résultats du traitement d'image de la caméra via les entrées/sorties numériques ou l'interface série, vous devez simplement démarrer les deux applications de vision IDS NXT « GPIO Gateway » et « RS-232 Gateway » via le cockpit IDS NXT et définir l'application de vision pour laquelle vous souhaitez émettre des résultats spécifiques. Pour cela, vous n'avez rien à programmer. Tous les réglages peuvent être effectués via l'interface utilisateur graphique du cockpit IDS NXT.

À titre d'exemple, vous pouvez configurer les sorties numériques de sorte qu'elles soient actives pendant un certain temps lorsque l'IA de la caméra (CNN manager avec « ImageNet1000 ») a classifié certains objets (p. ex. « Bon » ou « Mauvais ») Ou vous communiquez la classe d'objet identifiée et la probabilité de l'inférence comme valeurs de résultat sur la connexion série.

Communication REST IDS NXT

Le gros avantage de REST pour le développeur réside dans la compatibilité Web et donc dans la simplicité des outils requis. C'est pourquoi nous vous présentons des exemples d'utilisation des méthodes HTTP GET, POST, PUT et DELETE avec des moyens simples pour accéder aux données d'une caméra IDS NXT.

Notez que cette astuce technique n'est pas pensée comme une documentation complète d'utilisation de l'API REST. Nous souhaitons plutôt vous fournir des conseils de base pour faciliter vos débuts. Le « reste » vous regarde !

Pour bien comprendre les exemples suivants, vous avez besoin d'une caméra IDS NXT avec un accès sur un PC Windows du même réseau. Pour ne pas accéder uniquement à des paramètres stupides, nous laissons aussi la caméra faire quelque chose de pertinent. Nous utilisons l'IA de la caméra et le réseau neuronal (CNN) pré-installé « KritzelNN ». L'IA de la caméra reconnaît ainsi les dessins de personnes, de chiens, de chats et de caméras. Nous demandons via l'API REST ce qu'elle identifie sur un dessin peint par elle-même.

Scénario test « Je vois quelque chose que tu ne vois pas » :

  • Réseau avec caméra IDS NXT rio ou rome et un PC Windows
  • L'application de vision « CNN-Manager » fonctionne avec le réseau neuronal pré-installé « KritzelNN ».
  • Divers dessins d'une personne, d'une caméra, d'un chat ou d'un chien.

Appel REST avec « cURL » (ligne de commande)

cURL est un outil de lignes de commande pour transférer des données sur des URL, que vous pouvez exécuter simplement dans l'invite de commande (également cmd.exe). Pour accéder au résultat d'inférence (KritzelNN) de la dernière image de caméra, nous envoyons une requête 'GET' avec la ressource souhaitée '/vapps/cnnmanager/resultsources/last'.

Image de caméra :

C:\Users\ids>curl -sX GET http://192.168.2.102/vapps/cnnmanager/resultsources/last --user admin:ids
{
    "inference": {
        "Top1": "person",
        "Top2": "camera",
        "Top3": "cat",
        "Top4": "dog"
    },
    "inference_propability": {
        "Top1": "0.99",
        "Top2": "0.01",
        "Top3": "0.00",
        "Top4": "0.00"
    },
    "inferencetime": {
        "Content": "43"
    }
}
C:\Users\ids>curl -sX GET http://192.168.2.102/vapps/cnnmanager/resultsources/last --user admin:ids | jq ".inference.Top1, .inference_propability.Top1"
"person"
"0.95"

À des fins de test, présentez maintenant devant l'objectif de la caméra différents dessins et accédez aux résultats d'inférence correspondants.

Appel REST dans le navigateur

Directement via la barre d'adresse

La requête d'inférence est accessible très aisément avec le navigateur Web (p. ex. Firefox ou Google Chrome). Saisissez pour cela l'URL suivante dans la barre d'adresse:
http://admin:ids@192.168.188.21/vapps/cnnmanager/resultsources/last
Les informations de connexion sont transférées dans l'en-tête d'autorisation HTTP standard.

Malheureusement, pour des questions de sécurité, les navigateurs (p. ex. IE) ne prennent plus tous en charge les informations de connexion intégrées à l'URL !

Avec plugins de navigateur

Plugins de navigateur d'API Rest
Il existe également une série de très bons plugins de navigateur qui vous aide avec des interfaces utilisateur graphiques très claires lors des tests des appels REST.

Interface GUI conviviale pour la communication REST directement dans le navigateur
Interface GUI conviviale pour la communication REST directement dans le navigateur
Postman est un environnement de développement et de test pour les API Rest
Postman est un environnement de développement et de test pour les API Rest

Les données que vous réutilisez sans cesse peuvent ainsi être mises à votre disposition confortablement dans des variables. Mais la fonction sans doute la plus importante de Postman est la création de code. D'une pression de bouton, le client crée à partir de vos appels REST testés et enregistrés des codes snippets entièrement exploitables pour de nombreux langages de programmation courants et d'autres clients, tels que cURL, C, C#, Python, Java ou Swift.

Les codes snippets de Postman vous fournissent une bonne base pour intégrer des caméras IDS NXT dans des applications programmées par vos soins.

Intégration d'API REST dans des applications programmées

Bien que pour les caméras IDS NXT, aucun kit de développement logiciel ne soit fourni, pour des applications C++ par exemple, cela ne signifie pas qu'une intégration programmatique des caméras ne soit pas possible. Dans la plupart des langages de programmation, l'utilisation des connexions REST ou HTTP est possible sans logiciel supplémentaire de l'éditeur. C'est la raison pour laquelle, pour un client REST comme Postman, il est même possible de vous fournir des codes snippets entièrement fonctionnels que vous pouvez utiliser directement.

À l'exemple de notre résultat de caméra à IA, nous vous montrons ici à titre indicatif pour Python comment programmer l'appel REST.

Appel REST avec Python

import http.client
import mimetypes
conn = http.client.HTTPSConnection("192.168.188.21")
payload = ''
headers = {
  'Authorization': 'Basic YWRtaW46aWRz'
}
conn.request("GET", "/vapps/cnnmanager/resultsources/last", payload, headers)
res = conn.getresponse()
data = res.read()
# output camera response
print(data.decode("utf-8"))

Python constitue un langage de programmation très usuel dans l'IdO. Voilà pourquoi nous souhaitons vous expliquer plus en détail l'intégration de nos caméras IDS NXT dans l'automatisation industrielle.

1. Connexion et transfert d'image (connect_and_get_image.ipynb)
Dans le premier exemple, vous apprendrez comment utiliser la commande GET pour vous accorder une autorisation et appeler une image de votre caméra IDS NXT.

2. Modification du temps d'exposition (change_exposure.ipynb)
Le deuxième exemple montre comment interroger des paramètres de caméra et les modifier. Pour cela, nous modifierons la valeur d'exposition avec l'aide de la commande PATCH.

3. Déclenchement de prise de vue (trigger_image_acquisition.ipynb)
Avec la commande POST, nous montrerons dans le troisième exemple comment déclencher une acquisition d'image pour accéder au contenu de l'image d'une scène modifiée.

4. Configuration d'une passerelle d'E/S (set_gpio_gateway.ipynb)
Dans le quatrième exemple, nous vous montrerons comment basculer les sorties numériques de la caméra en fonction des résultats de l'application de vision CNN manager.