FÁCIL, INDEPENDIENTE, COMPATIBLE

El desarrollo de software como tiene que ser

Con GenICam como interfaz de cámara estandarizada y protocolos de visión como USB3 y GigE Vision, hoy en día disponemos de componentes extremadamente útiles para el desarrollo de aplicaciones de visión artificial.

Sin embargo, aquellos que opinan que estos componentes sustituyen sin más las herramientas de desarrollo específicas del fabricante es que no conocen IDS peak.

Todo aquel que hoy en día se dedica al desarrollo de aplicaciones de visión artificial sabe que la norma es el estándar de interfaz genérica GenICam de la European Machine Vision Association (EMVA). La posibilidad de utilizar cámaras de distintos fabricantes con la misma interfaz simplifica una gran cantidad de procesos de integración y puesta en servicio en las aplicaciones de visión artificial. Al mismo tiempo permite al usuario cambiar de una cámara a otra de forma muy sencilla. Los fabricantes de cámaras industriales como IDS Imaging Development Systems GmbH también tienen claro que las interfaces de datos USB3 Vision y GigE Vision son una característica técnica imprescindible para que una cámara tenga éxito en el mercado. Estas interfaces permiten a las cámaras funcionar automáticamente con la gran mayoría de aplicaciones compatibles con GenICam, sin necesidad de instalar un software de controlador específico del fabricante. Y es que las aplicaciones de procesamiento de imágenes como HALCON de MVTec llevan ya incorporadas capas de transporte compatibles con Vision. En este contexto, ¿tiene sentido o hay espacio para un paquete de desarrollo propio del fabricante? ¿No es ya GenICam la interfaz óptima para desarrollar aplicaciones de visión artificial conformes con el estándar?

¿Cuál es la interfaz óptima de cámara?

Con el traslado de la funcionalidad a la cámara la estandarización ha dado un giro muy importante y muy necesario. Esto ha dado origen a una base de software muy variable que se puede utilizar para comunicarse con todas las cámaras de visión artificial. Todos los módulos y funciones están formulados en términos universales y son totalmente independientes de la cámara utilizada. Hoy en día es posible configurar por separado hasta el más mínimo detalle y parámetro, lo cual resulta en combinaciones prácticamente infinitas. Esto significa que la sintaxis del lenguaje estándar utilizado es extremadamente flexible, pero también muy compleja y opaca. Incluso para los procesos más simples se necesitan múltiples líneas de código y una gran cantidad de ajustes correctamente combinados, lo cual genera rápidamente una gran complejidad y, por tanto, una mayor probabilidad de error. La estricta separación y manejo diferenciado de la funcionalidad de la cámara a través de GenAPI y de la ruta de la memoria gráfica a través de la capa de transporte puede ser simple a nivel estructural, pero no en lo que al desarrollo de aplicaciones se refiere.

La API de programación de un producto es una interfaz de usuario y, por tanto, un elemento cuya calidad y utilidad se mide por lo fácil que sea de manejar. Y solo las experiencias positivas de los usuarios son capaces de afianzar el éxito de un producto. En realidad, para los desarrolladores la interfaz la constituye la cámara y sus posibilidades. En este sentido, los adjetivos que mejor describen una experiencia positiva del usuario son: simple, intuitiva, flexible, transparente, útil y con un largo recorrido tecnológico. A pesar de las múltiples y excelentes soluciones técnicas que proporciona el estándar GenICam, los fabricantes de cámaras no pueden ofrecer al usuario toda la ayuda que precisa simplemente a través de las funciones de la cámara, por lo que la experiencia de usuario se resiente.

"Hay un buen puñado de razones para que los fabricantes de cámaras opten por proporcionar al usuario un soporte integral que también incluya herramientas de software"

— Maike Strecker, directora de producto de IDS —

Lo mejor de varios mundos

A partir de las experiencias de los clientes con GenICam y con su propio IDS Software Suite, IDS ha identificado las ventajas y desventajas de ambas herramientas y ha desarrollado una nueva herramienta de soporte múltiple: IDS peak. Con GenICam como base de software estandarizada, el usuario del nuevo SDK conserva la capacidad de decidir libremente qué cámaras quiere utilizar sin tener que renunciar, por ello, a las ventajas que ofrece una interfaz de desarrollo moderna. Para garantizar una experiencia óptima de usuario, el nuevo kit de desarrollo de software IDS peak independiente de plataforma incorpora todos los componentes necesarios —desde muestras de código fuente hasta capas de transporte— para que el cliente pueda empezar a desarrollar sus aplicaciones de inmediato. Otra de las ventajas que aporta IDS peak es que los usuarios reciben soporte técnico especializado de la mano de un solo interlocutor —IDS— para todos los componentes de la aplicación.

IDS peak simplifica el estándar

IDS peak es un kit de desarrollo de software integral (SDK) que proporciona a los desarrolladores de aplicaciones todas las bibliotecas e interfaces de software que necesitan. Además, la nueva interfaz de programación orientada a objetos es bastante más sencilla de manejar que GenICam, sin limitar ni anular ninguna de sus funcionalidades.

La comunicación con el hardware de la cámara se realiza exclusivamente a través de la interfaz estandarizada y de la capa de transporte Vision, por lo que IDS peak es totalmente compatible con el estándar e independiente del hardware. Esto garantiza la intercambiabilidad y compatibilidad con todas las cámaras industriales conformes con los estándares USB3 Vision y GigE Vision. No existen limitaciones de ningún tipo por parte del fabricante e incluso se pueden operar al mismo tiempo sin problemas varias cámaras de distintos fabricantes con interfaces diferentes.

"Nuestra interfaz de programación constituye una alternativa muy práctica e intuitiva con respecto a GenTL y GenAPI. Las clases de conveniencia especiales se encargan además de reducir la cantidad de código necesario y, por tanto, las tareas de programación"

— Maike Strecker —

Para ello, IDS peak toma como referencia la jerarquía modular del estándar GenTL. El acceso a los diferentes módulos se produce a través de "descriptores", que son como tarjetas de visita de dichos módulos. Esta tarjeta de visita permite consultar determinada información sobre el módulo antes de habilitarlo y abrirlo. Por el contrario, las funcionalidades del módulo en capas inferiores solo se pueden visualizar y utilizar por medio de las llamadas "relaciones padre-hijo" cuando dicho módulo está abierto y habilitado. Este principio minimiza los errores a la hora de manejar las clases y, por consiguiente, reduce el tiempo necesario para desarrollar una aplicación.

Un ejemplo de ello es el acceso a las funciones de una cámara. Para acceder al mapa de nodos de una cámara, esta tiene que estar encendida. Solo si lo está se pueden realizar consultas detalladas y configurar parámetros especiales.

Leer el nombre del dispositivo a través del mapa de nodos de una cámara

// get nodemap of an open camera device
auto remoteNodeMap = camera->RemoteDevice()->NodeMaps().at(0);
// get DeviceModelName from cameras nodemap
auto modelName = remoteNodeMap->FindNode<StringNode>("DeviceModelName")->Value();

Las clases y funciones de conveniencia no incluidas en el estándar facilitan la gestión de procesos que se repiten, como por ejemplo el manejo del dispositivo y la memoria. El empleo de estas clases modulares reduce el código de aplicación necesario, mejorando con ello la legibilidad y estabilidad de la aplicación de cámara.

El módulo DeviceManager convierte la detección, listado y activación de las cámaras conectadas, así como la gestión de las capas de transporte e interfaces disponibles, en un juego de niños. Con un simple comando de actualización el módulo escanea todo el sistema y, con unas pocas líneas de código, se genera un árbol de dispositivos completo y/o se abre una cámara determinada. En concreto, bastan cuatro líneas de código para abrir una cámara conectada con el módulo DeviceManager de IDS peak.

Abrir una cámara con el módulo DeviceManager de IDS peak

// create a device manager object
auto deviceManager = std::make_shared<peak::DeviceManager>();
deviceManager->Update();
// get vector of device descriptors
auto devices() = deviceManager->Devices();
// select and open the first camera
auto device = deviceManager->Devices().at(0)->OpenDevice();

IDS peak se amplía constantemente para incorporar más módulos de este tipo. Así, por ejemplo, está previsto incorporar una clase de cámara simplificada y un gestor para configurar la adquisición de imágenes. Otros métodos conocidos, como el empleo de "shared pointers" para la liberación automática de recursos de memoria no utilizados o una seguridad en hilos dependiente de módulo, convierten IDS peak en una moderna interfaz de programación orientada a objetos que proporciona a los programadores una gran cantidad de ayuda y de feedback mientras trabajan.

IDS peak es un software host que mantiene su independencia con respecto a la cámara, al modelo de cámara y a la versión de firmware gracias a la base de software GenICam. Los desarrolladores de aplicaciones son libres de decidir si quieren aprovechar la comodidad, la simplificación y el soporte que ofrece IDS peak. De este modo, todas las funciones de cualquier cámara de visión artificial se pueden usar también a través de cualquier otra aplicación compatible con GenICam.

Los usuarios pueden manejar las cámaras de visión artificial de IDS a través de sus propias aplicaciones por medio de IDS peak, directamente a través de GenICam o mediante una aplicación tercera compatible con el estándar.

Nuevo concepto, nuevo software, igual de sencillo que siempre

Con IDS peak las cámaras industriales USB3 Vision y GigE Vision de IDS vienen acompañadas de un soporte de software integral. Los clientes de toda la vida que trabajan con IDS Software Suite pueden entrar fácilmente en el mundo Vision y beneficiarse de la facilidad de manejo y el soporte ilimitado que ofrece IDS peak. En calidad de ampliación del estándar GenICam, IDS peak no es tan solo un kit de desarrollo de software compatible con dicho estándar y que cuenta con una API de programación muy simple e intuitiva, sino también un software independiente para operar, configurar y programar cualquier cámara que trabaje con Vision.

Con IDS peak este fabricante de cámaras ha vuelto a hacer fácil lo difícil unificando de nuevo en un mismo paquete de software todos los productos.