Integración de cámaras IDS NXT en sus sistemas de automatización de la producción

Integración de cámaras IDS NXT en sus sistemas de automatización de la producción

Con IDS NXT hemos creado una plataforma para una nueva generación de sistemas de visión artificial para aplicaciones industriales, que pueden utilizarse, por ejemplo, como potentes sensores de visión artificial en la automatización de la producción. En combinación con IDS NXT Experience Kit, además, el entorno de aprendizaje profundo resulta especialmente sencillo. Esta solución todo en uno incorpora todo lo necesario para transformar las cámaras IDS NXT en cámaras inferenciales muy potentes donde poder ejecutar directamente redes neuronales individuales (lo que se conoce como "edge computing"). Pasar de la captura y gestión de imágenes a una cámara inferencial plenamente operativa —con entrenamiento de la IA incluido— es ahora muy fácil. Pero, ¿a través de qué interfaces se integra la cámara inferencial en el entorno propio?

En este Consejo técnico abordamos en profundidad las posibilidades de comunicación que ofrecen las cámaras IDS NXT y le explicamos de manera sencilla cómo puede utilizar los resultados de inferencia en su entorno.

Interfaces IDS NXT

En calidad de sistemas de visión embebida compactos, las cámaras IDS NXT realizan las tareas de procesamiento de imágenes directamente en el "edge" (extremo), por lo que pueden generar resultados sin necesidad de usar ordenadores adicionales. Esto significa que se pueden utilizar como sensores de visión artificial autónomos. En cuanto a los requisitos de acceso e intercambio de datos con sistemas externos, las cámaras IDS funcionan diferente de las cámaras industriales estándar, las cuales se limitan a suministrar imágenes al ordenador para que este las procese con el programa oportuno. Las cámaras IDS NXT incorporan interfaces que posibilitan una integración fácil y flexible en escenarios basados en el Internet de las cosas (IoT).

IDS NXT cockpit

IDS NXT cockpit ofrece acceso a todos los ajustes y funciones relevantes de las cámaras industriales IDS NXT a través de su interfaz REST.
Permite además instalar y configurar aplicaciones de visión artificial.
No importa con qué interfaz trabaje luego usted: con IDS NXT cockpit dispondrá de una interfaz gráfica de usuario de fácil manejo para instalar con toda comodidad aplicaciones de cámara y configurar los parámetros runtime.

IO y RS-232

Aunque estemos en la era de la Industria 4.0, las entradas y salidas digitales y las interfaces serie basadas en UART — con los buses de campo asociados— siguen ofreciendo múltiples ventajas con respecto a sus sucesores. Incluso para verificaciones de piezas complejas y controles basados en imagen suelen ser suficientes los (aparentemente sencillos) resultados IO y NIO para controlar los productos en líneas de producción grandes y modernas. No hay ninguna interfaz que sea más fácil y más barata de implementar que las salidas y entradas digitales. Lo mismo es aplicable a la comunicación serial con RS-232. Se trata de una interfaz ampliamente utilizada por muchos fabricantes y usuarios, que cuenta además con la oferta de accesorios de eficacia probada más amplia de su clase. Es por ello que la interfaz RS-232 se encuentra todavía hoy entre los estándares de comunicación industrial utilizados.

Dotadas de interfaces IO y RS-232, las cámaras IDS NXT complementan las instalaciones existentes con soluciones de visión embebida muy potentes y compactas que no alteran la infraestructura existente.

Interfaz IDS NXT REST

A través de un servicio web REST (Representational State Transfer) las cámaras IDS NXT proporcionan una interfaz abierta estandarizada para la comunicación máquina a máquina, que además facilita enormemente la conexión en red y la modificación y consulta de parámetros y resultados de la cámara. El servicio web REST se basa en el protocolo HTTP y, por lo tanto, está disponible en la mayoría de redes.

Los métodos estándar HTTP como GET, POST, PUT, PATCH, etc. se utilizan como interfaz unificada. De este modo la interfaz IDS NXT REST no solo se puede utilizar con cualquier plataforma, sino que además es una solución muy versátil para los clientes más diversos (ordenador, teléfono móvil, tableta) gracias a la amplia difusión de los métodos HTTP. Mientras que para las aplicaciones C++ se requiere un entorno de desarrollo completamente configurado, las API REST(ful) de dispositivos compatibles con web pueden utilizarse sin software ni pasarelas adicionales. Esto no solo permite empezar a funcionar rápidamente, sino también empaquetar fácilmente en scripts tareas de configuración muy complejas.

Para la comunicación genérica con sensores de visión artificial autónomos, REST se puede utilizar tanto en entornos IoT (Internet de las cosas) como en entornos IIoT (Internet industrial de las cosas) de forma más sencilla y con menos recursos implicados que con una interfaz basada en ordenador, como GenICam. Por ello, para las cámaras IDS NXT la interfaz REST no es solo la interfaz runtime para la transferencia de datos y resultados, sino también la interfaz para la configuración (p. ej. IDS NXT cockpit) de la cámara, sus aplicaciones y sus interfaces (IO, RS232).

¿Por qué REST?

  • Sin estado
    La comunicación sin estado implica que todos los mensajes cliente-servidor son autocontenidos y que cada mensaje contiene toda la información necesaria sobre el estado actual de la aplicación. Esto significa que entre ejecución y ejecución el servicio REST no tiene que almacenar nada y que, por tanto, no es necesario administrar la sesión en el servidor, lo cual permite escalar el servicio web en la red como se desee. Por todo ello, REST es ideal para entornos IoT.
  • Unificado e independiente de plataforma
    Con REST, los sistemas ofrecen una interfaz abierta y estandarizada que se basa en tecnología web y que posibilita un conexión en red muy sencilla. Todos los dispositivos (I)IoT conectados pueden intercambiar datos y resultados sin conversiones de protocolo ni pasarelas.
  • Fácil y con bajo consumo de recursos
    La estructuración, la transmisión y, si procede, el procesamiento de resultados de llamadas sencillas a la API REST requieren, en la mayoría de los casos, muy poca capacidad de cálculo. Por otro lado, gracias a la amplia utilización de los métodos estándar HTTP, los requisitos técnicos necesarios para la comunicación REST están presentes sin software adicional en la mayoría de dispositivos compatibles con web.
  • Independiente del lugar
    Los clientes y el servidor pueden operarse por separado ("sistema distribuido"). Incluso si están hospedados en distintos servidores, la comunicación a través de REST es posible.
  • Compatible con IIoT
    La facilidad de acceso y transferencia de datos es parte esencial del Internet industrial de las cosas (IIoT). Gracias a su flexibilidad y a la capacidad de aprovechar ampliamente los recursos existentes, REST puede simplificar los procesos de automatización industrial. La comunicación transversal entre aplicaciones y dispositivos permite integrar de forma fácil y rápida muchos sistemas y equipos. La compatibilidad web es, en este sentido, una puerta abierta a la implementación de estrategias de integración más amplias. El desarrollo y el progreso de la industria se ve favorecido por la apertura a nuevos sistemas y tecnologías.

El servicio web IDS NXT REST incluye las siguientes características:

  • El servicio web REST permanece siempre activo durante el funcionamiento ordinario.
  • La seguridad de acceso está implementada a través de la autenticación básica HTTP. Esto significa que cada petición requiere para la autenticación los datos de usuario de un usuario autorizado, los cuales se transmiten codificados en Base64.
  • Las respuestas se transmiten en formato JSON o XML.

Comunicación IDS NXT a través de I/O y RS-232

Para transmitir resultados del procesamiento de imágenes de la cámara a través de las salidas y entradas digitales o de la interfaz serie, solo tiene que ejecutar las dos apps de visión artificial de IDS NXT "GPIO Gateway" y "RS-232 Gateway" en IDS NXT cockpit y definir la app que tiene que emitir resultados específicos. No es necesario programar nada: todos los ajustes se pueden realizar desde la interfaz IDS NXT cockpit.

A modo de ejemplo, puede configurar las salidas digitales de manera que cada una esté activa durante un tiempo determinado cada vez que la inteligencia artificial (IA) de la cámara (CNN Manager con "ImageNet1000") clasifique determinados objetos (p. ej. "Bien" o "Mal"). También puede comunicar la clase de objeto detectada y la probabilidad de la inferencia como valores de resultado a través de la conexión serial.

Comunicación IDS NXT REST

La gran ventaja de REST para los desarrolladores radica en su compatibilidad web y, por tanto, en la facilidad de manejo de las herramientas necesarias. Por ello, queremos proporcionarle algunos ejemplos de cómo puede utilizar fácilmente los métodos HTTP GET, POST, PUT y DELETE para recuperar datos de una cámara IDS NXT.

Tenga en cuenta que este Consejo técnico no está pensado como un manual de uso exhaustivo de la API REST, sino como una serie de recomendaciones para que pueda empezar a usarla de forma fácil y rápida. El "resto" es cosa suya.

Para poder comprender los ejemplos que le facilitamos, necesitará una cámara IDS NXT con acceso a través de un ordenador con Windows en la misma red. Para no consultar solo parámetros "tontos", haremos que la cámara haga cosas que tengan sentido. Utilizaremos la IA de la cámara y el CNN preinstalado "KritzelNN". La IA de la cámara reconocerá dibujos de personas, perros, gatos y cámaras. A través de la API REST preguntaremos qué reconoce de un dibujo hecho por nosotros mismos.

Escenario de prueba "Veo algo que tú no ves":

  • Red con una cámara IDS NXT rio o rome y un PC con Windows
  • La app de visión artificial "CNN Manager" se ejecuta con la red neuronal preinstalada "KritzelNN".
  • Varios dibujos de una persona, una cámara, un gato o un perro.

Llamada a REST con "cURL" (línea de comandos)

cURL es una herramienta de línea de comandos para la transferencia de datos a través de URLs, que puede ejecutar fácilmente en el símbolo del sistema (o cmd.exe). Para solicitar el resultado de inferencia (KritzelNN) de la última imagen de la cámara enviamos una solicitud 'GET' con el recurso deseado ‚/vapps/cnnmanager/resultsources/last'.

Imagen de la cámara:

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"

A continuación, coloque para probar diferentes dibujos delante de la lente de la cámara y solicite el resultado de inferencia correspondiente.

Llamada a REST en el navegador

Directamente a través de la línea de dirección

La solicitud de inferencia se puede realizar también muy fácilmente a través del navegador web (p. ej. Firefox o Google Chrome). Introduzca para ello la siguiente URL en la línea de dirección:
http://admin:ids@192.168.188.21/vapps/cnnmanager/resultsources/last
Las credenciales del usuario se transfieren en la cabecera de autorización HTTP estándar.

Desafortunadamente, por motivos de seguridad no todos los navegadores (p. ej. IE) soportan hoy credenciales introducidas en la URL.

Con plugins de navegador

Plugins de navegador API REST
Hay asimismo disponibles una serie de plugins de navegador —muy buenos y con interfaces gráficas de usuario muy intuitivas— que le pueden ser muy útiles a la hora de practicar llamadas REST.

Práctica interfaz gráfica de usuario para la comunicación REST directamente en el navegador
Práctica interfaz gráfica de usuario para la comunicación REST directamente en el navegador
Postman es un entorno de desarrollo y pruebas para APIs REST
Postman es un entorno de desarrollo y pruebas para APIs REST

Los datos que utiliza a menudo pueden estar disponibles en forma de prácticas variables. La función más importante de Postman es, sin embargo, la generación de códigos. Con tan solo pulsar un botón, el cliente le proporciona a partir de las llamadas REST probadas y guardadas snippets de código para muchos de los lenguajes de programación más habituales y otros clientes, como cURL, C, C#, Python, Java o Swift.

Los snippets de código de Postman le proporcionan una buena base para integrar cámaras IDS NXT en aplicaciones programadas por usted.

Integración de API REST en aplicaciones programadas

Aunque las cámaras IDS NXT no incluyen ningún paquete de desarrollo de software para, por ejemplo, aplicaciones C++, esto no significa que no sea posible una integración programada de la cámara. En la mayoría de los lenguajes de programación se pueden utilizar conexiones REST o HTTP sin necesidad de software adicional por parte del fabricante. Por eso un cliente REST como Postman puede proporcionarle snippets de código plenamente operativos para su empleo directo.

Tomando como ejemplo el resultado de nuestra cámara IA le mostramos cómo programar la llamada REST en Python.

Llamada REST con 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"))

El lenguaje de programación Python se utiliza ampliamente en el Internet de las cosas (IoT). Por ello nos gustaría explicarle con más detalle cómo integrar nuestras cámaras IDS NXT en un sistema de automatización de la producción usando Python.

1. Conectar y obtener imagen (connect_and_get_image.ipynb)
En el primer ejemplo le explicamos cómo se utiliza el comando GET para obtener autorización y recuperar una imagen de su cámara IDS NXT.

2. Cambiar el tiempo de exposición (change_exposure.ipynb)
El segundo ejemplo muestra cómo consultar y modificar parámetros de la cámara. En este caso cambiaremos el valor del tiempo de exposición con ayuda del comando PATCH.

3. Activar captura de imagen (trigger_image_acquisition.ipynb)
En el tercer ejemplo le mostramos cómo activar la captura de imagen con ayuda del comando POST para recuperar el contenido de imagen de una escena cambiada.

4. Configurar la pasarela IO (set_gpio_gateway.ipynb)
En el cuarto ejemplo le explicamos cómo activar las salidas digitales de la cámara en función de los resultados de la app de visión artificial CNN Manager.