Source: http://magazine.teralco.com/control-visual-con-camara-fpga-basado-en-visp/
Timestamp: 2018-09-18 23:15:23+00:00

Document:
Control visual con cámara FPGA basado en ViSP - Teralco Magazine | Teralco Magazine
Control visual con cámara FPGA basado en ViSP
Inicio » I+D+i » Control visual con cámara FPGA basado en ViSP
Por Pedro Caballero en Ene 10, 2014 | 0 comentarios
En este artículo se describe un sistema de control visual que utiliza una cámara rápida con preprocesamiento de la imagen mediante una FPGA integrada en la cámara. Para el desarrollo de la plataforma software se ha partido de las librerías ViSP integrando los distintos elementos que intervienen en el sistema de control en una aplicación basada en hilos. La interfaz gráfica desarrollada en la plataforma propuesta facilita tanto el control del robot, como la configuración de la cámara sin necesidad de recompilar el software cada vez. Dentro de las configuraciones posibles del sistema que proporciona la plataforma software desarrollada, en este artículo se muestra una comparativa de tiempos que permiten validar la mejora obtenida al utilizar la cámara con FPGA integrada.
El control visual se basa en ver y reconocer el entorno mediante un sistema de visión por computador para cerrar el bucle de control y realizar el movimiento del sistema en función de la información que se haya capturado. Actualmente nos encontramos con dos tipos de control más generalizados [1].
El control visual basado en posición, cuyo funcionamiento se basa en un modelo geométrico del espacio de trabajo, de tal manera que cuando se extraen características del sistema de visión, se calcula la localización del objeto que se desea alcanzar así como la localización de la cámara. De esta manera tenemos un espacio virtual 3D con ambas posiciones, por lo que haciendo la comparación entre la posición de la cámara y del objeto se pueden obtener qué valores se deben enviar al regulador para realizar el movimiento del robot.
Por otro lado, el control visual basado en imagen es más apropiado cuando no se dispone de dicho modelo geométrico de la tarea a desarrollar. Para determinar la ley de control se utilizan las características del objeto en el sensor visual, sin necesidad de calcular su posición real, por ello este tipo de control es más robusto frente a errores de calibración [2].
Las características usadas en el control visual basado en imagen se tratan como formas geométricas elementales (por ejemplo puntos característicos o esquinas) y permiten reconocer en una imagen la proyección de un objeto. Para reconocer estas formas geométricas se suelen utilizar técnicas como el marcado de puntos característicos en el objeto sobre un fondo uniforme.
Hasta la fecha todos los proyectos de control visual basado en imagen se han desarrollado utilizando cámaras de diversos tipos [3], pero no se ha llegado a realizar un estudio profundo utilizando cámaras con hardware FPGA integrado, que es el objetivo principal de este artículo. Las FPGA son dispositivos reprogramables, que permiten realizar preprocesados de las imágenes capturadas por la cámara antes de ser obtenidas por el software, mejorando así el rendimiento, tiempo y fiabilidad durante el control visual. La mayoría de trabajos anteriores basan su funcionamiento en aplicaciones de consola [4]. En este artículo se propone la implementación de una interfaz gráfica que facilite la tarea de control y la integración de una cámara FPGA con la plataforma ViSP (Visual Servoing Platform) [5]. ViSP es un conjunto de librerías multiplataforma desarrolladas en C++, cuyo desarrollo y mantenimiento es exclusivo del Instituto de Investigación en Informática y Sistemas Aleatorios IRISA y su objetivo principal está orientado a realizar control visual, procesamientos de imágenes, visión artificial y simulaciones. Una característica principal de esta plataforma es que esta implementada de manera modular, por lo que es posible utilizar solamente las librerías que se necesiten, e incluso incorporar librerías de terceros para complementarlas.
Para la implementación del sistema de control, se dispone de un robot Mitsubishi PA10, una cámara FPGA, mostrados en la Figura 1, las librerías ViSP, y la necesidad de integrar todos estos componentes en un software que implemente la tarea del control. En este apartado se describe la aplicación software propuesta para integrar todos estos elementos y obtener un sistema altamente flexible capaz de realizar distintas pruebas de funcionamiento del control visual basado en imagen.
Mitshubisi PA10
El software de control es el eje central de la aplicación software, donde se verán integrados el robot, la cámara y las librerías de control. En la Figura 2 se puede observar tanto el diseño de la aplicación, como el patrón utilizado en los experimentos realizados.
Figura 2: Aplicación de control visual propuesta.
Desde la aplicación se tiene la posibilidad de:
– Capturar características deseadas.
– Capturar características iniciales.
– Realizar el control visual.
– Iniciar/Parar la captura de imágenes.
– Activar la consola para ver logs (la aplicación ya no se basa en consola, por lo que no es necesario utilizarla, pero se da la opción de activarla para poder depurar la tarea con ella).
– Se ha implementado la posibilidad de hacer un control visual continuo (el funcionamiento normal del control es llegar desde unas características iniciales, hasta las deseadas, pero mediante esta opción es posible que el robot este continuamente haciendo el seguimiento del patrón).
– Para poder optimizar los tiempos del control, se da la opción de no mostrar la imagen capturada de la cámara en pantalla mientras se está realizando el control.
– Se permite también seleccionar la resolución de la cámara con la que se desea trabajar, ya que con una resolución menor se realizará más rápido el control (en los experimentos que se muestran más adelante, se muestran gráficas que lo corroboran). Cuando se inicia la captura de imágenes de la cámara, el sistema detecta si la misma soporta la resolución que se haya seleccionado. En caso de no ser compatible, la aplicación establece en la cámara la resolución por defecto y, tras capturar nuevas imágenes, hace un redimensionado de las mismas por software y así es posible trabajar con todas las cámaras a todas la resoluciones (en los experimentos se observa cómo el coste de la redimensión por software se mitiga a la hora de hacer el control visual).
– La última opción de configuración disponible es la que permite elegir el tipo de imagen que se desea capturar de la FPGA (normal, gray8 y binary8).
En el apartado anterior se ha comentado la capa visual de la aplicación, pero no se ha descrito su funcionamiento interno. Se han estudiado varias formas de resolver la comunicación de los distintos agentes que intervienen en el sistema de control hasta llegar a la solución más estable, la cual implica el uso de 3 hilos diferentes para llevar a cabo el control, el esquema de dicha arquitectura se muestra en la Figura 3.
Figura 3: Arquitectura del sistema.
La aplicación se ha desarrollado como una aplicación con múltiples hilos (threads). A continuación se describe qué función tiene cada uno de estos hilos del programa:
Hilo 1 (Aplicación): Se encarga de coger la imagen procesada por el hilo de la cámara, y acto seguido calcula la ley de control visual con la información visual, con lo que obtiene una serie de velocidades que deben de ser enviadas al robot. Este será el hilo principal sobre el que funciona todo el sistema.
Hilo 2 (Cámara): Su misión es la de mantener en una variable la última imagen adquirida por la cámara. Este hilo es necesario debido a la alta frecuencia de adquisición de imágenes por parte de la cámara, ya que entre la captura de dos imágenes no da tiempo a realizar el control, así se evitan bloqueos con el hilo principal.
Hilo 3 (Mover PA10): La función principal de este hilo es enviar cada 15 ms las velocidades calculadas por el hilo principal al robot, para evitar así bloqueos. Esto se ha hecho así puesto que el PA-10 dispone de un mecanismo de seguridad que hace que este se pare si no recibe una señal en [10-300] ms, y es posible que en algún caso puntual no le llegue una velocidad en este tiempo, produciéndose así un error en el control. Por lo tanto, con este hilo evitamos ese posible error.
Al estar trabajando con diferentes hilos para cumplir un determinado objetivo, es necesario que esos hilos se comuniquen entre sí, por lo que se destacan dos problemas bastante importantes:
Como el tiempo que tarda el sistema en obtener las velocidades para enviar al robot es superior al tiempo que tarda la cámara entre la adquisición de una imagen y la siguiente, se obtienen velocidades erróneas, y por lo tanto errores en el control.
Otro problema es que si se está enviando el vector de velocidades al robot, es posible que a mitad del envío del mismo, este se refresque con los nuevos datos obtenidos de una imagen, por lo que la mitad del vector correspondería a los datos de una imagen y la otra mitad a los datos obtenidos de otra.
Ambos problemas conllevan el error en el control visual, produciendo situaciones no controladas. Para solventar estos problemas, se han implementado semáforos, de tal forma que cuando se esté procesando una imagen, no se permite que esta cambie hasta que no se haya acabado todo el proceso, y en el vector de velocidades mientras se actualiza no se envían velocidades al robot.
Para el validado del sistema se han llevado a cabo los siguientes experimentos:
1) Diferentes cálculos de la matriz de interacción (estudio del sistema calculando la matriz de interacción en la posición deseada o en la posición actual estimando la distancia entre cámara y objeto).
2) Control con ganancias diferentes (lambda).
3) Control visual con errores de calibración (introduciendo errores aleatorios para comprobar que el sistema de control es robusto ante errores en la calibración de la cámara).
4) Comparativa por resoluciones de cámara.
5) Capturas FPGA con diferentes preprocesados.
6) Control visual desde posiciones diferentes.
En este artículo se muestra la optimización de los tiempos de proceso proporcionada por los distintos preprocesados de la cámara FPGA.
PREPROCESADOS FPGA
En este experimento se trata de sacar el máximo partido a la cámara utilizada, ya que se hace uso de la FPGA integrada que lleva la misma, y así es posible estudiar qué consecuencias tiene realizar el control visual con las imágenes preprocesadas. Para ello se utiliza una resolución de imagen de 1280 x 1024, así como una ganancia de 0.2 con distintos tipos de imagen: Imagen normal, Gray 8 y Binary 8.
El tipo de imagen que se utiliza se puede elegir directamente desde la interfaz gráfica, y el programa se encarga de configurar la FPGA de la cámara para realizar la captura en dicho formato. Los preprocesados analizados han sido los mostrados en la Figura 4. La imagen normal equivale a la imagen que ofrece una cámara de alta resolución estándar. Gray 8 convierte la imagen a escala de grises con una profundidad de 8 bits, centrándose en los contornos. Finalmente, Binary 8 permite obtener una imagen binarizada con profundidad de 8 bits.
Figura 4: Preprocesados que puede proporcionar la FPGA de la cámara.
En la Figura 5 se muestran las gráficas con los tiempos obtenidos según el tipo de imagen analizada. Estos tiempos son referentes a un ciclo de control completo, el cual implica desde que la cámara captura una nueva imagen, hasta que el sistema manda las velocidades obtenidas al robot.
Figura 5: Tiempos empleados utilizando los distintos preprocesados FPGA de la cámara.
El estudio de las gráficas de la Figura 5 permite concluir que:
Imagen normal: Todos los tiempos de procesos de imagen vienen acotados por el intervalo [61,5 – 63,5] ms.
Imagen gray 8: En esta gráfica se observa una mejora en los tiempos de proceso, ya que todas las imágenes están entre [51 – 59] ms, con lo que los tiempos se han acortado entre 2 y 10 ms en tiempo de proceso, lo cual es una mejora de entre el 7% y el 17%.
Imagen binary 8: Con este tipo de imagen los tiempos están bastante bajos: [42 – 48] ms aproximadamente, lo que supone una mejora en tiempos de procesos con respecto a la imagen original de un [25% – 31%].
Con estos datos es posible afirmar que la FPGA resulta muy interesante para realizar el control visual ya que un control con el tipo de imagen binary8 va a ser hasta un 30% más óptimo que con imágenes completas proporcionadas por cámaras estándar.
En este artículo se ha presentado un sistema de control visual integrando un robot Mitsubishi PA-10, una cámara FPGA y las librerías ViSP en una aplicación MFC presentada con una interfaz gráfica. Se ha expuesto la arquitectura más óptima para realizar un control visual basado en imagen con una cámara de estas características. Además, se han mostrado las ventajas que ofrece el uso de cámaras FPGA para hacer el control visual a través de resultados empíricos.
Este trabajo ha sido financiado por el Ministerio de Economía, los fondos FEDER, el Gobierno de la comunidad Valenciana y el Vicerrectorado de Investigación, Desarrollo e Innovación de la Universidad de Alicante mediante los proyectos DPI2012-32390, PROMETEO/2013/085 y GRE12-17.
[1] Chaumette, F., Hutchinson. S. “Visual Servo Control, Part I: Basic Approaches”. IEEE Robotics and Automation Magazine, vol. 13, no. 4, pp. 82-90, Diciembre 2006.
[2] Chesi, G., Hashimoto, K. “Effects of camera calibration errors on static-eye and hand-eye visual servoing,” Advanced Robotics, vol. 17, pp. 1023-1039, 2003.
[3] Garcia, G. J., Pomares, J., Torres, F. “Control visual de robots manipuladores. Una herramienta para su diseño y aprendizaje”, Actas de las XXV Jornadas de Automática. 2004: Ciudad Real. pp. 120-127.
[4] Garcia, G. J., Gil, P., Llacer, D., Torres, F. “Guidance of robot arms using depth data from RGB-D camera”. En Proceedings de ICINCO 2013. Reikiavik (Islandia).
[5] Marchand, E., F. Spindler y F. Chaumette, (2005) “ViSP for visual servoing: a generic software platform with a wide class of robot control skills”, IEEE Robotics and Automation Magazine, vol. 12, nº 4, pp. 40-52.
Pedro Caballero, Gabriel J. García, Jorge Pomares
Carretera San Vicente del Raspeig, s/n, San Vicente del Raspeig, CP: 03690
{pcl8}@alu.ua.es, {gjgg, jpomares}.ua.es
Autor: Pedro Caballero
CRM, la solución de los líderes del sector inmobiliario Ago 28, 2018
Las apps no nativas siguen mejorando, y son la clave para tu negocio Ago 21, 2018
Premios Teralco Group HackForGood 2016 Mar 4, 2016
@teralco 15/09/2018
Un gran trabajo de nuestros compañeros de YesData. Orgullosos. #teamwork #bigdata @ICIOUMH twitter.com/ICIOUMH/status…
"El big data ha madurado, ya no es un concepto tan abstracto como antes" - YesData by Teralco Group… twitter.com/i/web/status/1…

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución