sistema seguidor en dos ejes y sistema de visión klaus ... · labview. palabras clave: motor,...

10
Sistema seguidor en dos ejes y sistema de visión Klaus Camarillo de la Cruz, Jaime Zúñiga Mejía, Dra. Rafaela Villalpando. ITESM Campus Laguna Paseo del Tecnológico 751 Col. Ampliación La Rosita. Torreón, Coah., México. Correo electrónico: {klaus_cam1, jimmy.zuniga}@hotmail.com Resumen Este documento trata sobre un sistema de seguimiento de un objeto mediante un mecanismo de dos ejes utilizando un sistema de visión. A través de una cámara se obtienen imágenes en tiempo real, dichas imágenes se procesan para identificar y localizar un objeto, en este caso en particular un trozo de cinta reflectiva. Después de localizar el objeto, el mecanismo intenta seguirlo también en tiempo real utilizando la plataforma Arduino Uno y una interfaz diseñada en Labview. Palabras clave: Motor, sistema de visión, cámara, sistema de seguimiento, interfaz. 1. Introducción Los métodos de instrumentación forman una parte importante en los sistemas de control, permiten obtener información del entorno en donde trabaja dicho sistema, ya sea en aplicaciones industriales o de investigación. Cabe señalar que en la naturaleza, la mayoría de los organismos del reino animal basan su orientación en el sentido de la vista. Es aquí donde radica la importancia del procesamiento de imágenes trabajando en conjunto con los sistemas de control para poder realizar tareas más complejas que utilizando otro tipo de métodos de sensado. 2. Desarrollo Se comenzó el trabajo con la construcción física del mecanismo y se seleccionaron los motores correspondientes a cada grado de libertad. Debido a la necesidad de implementar un controlador de posición para cada grado de libertad, se obtuvo el modelo de la función de transferencia ángulo con respecto a voltaje para cada motor, utilizando una tarjeta Arduino Uno como adquisitora de datos y el toolbox System Identification de Matlab. Con el fin de obtener la planta de ambos motores, que por cierto son idénticos, se conectaron físicamente ambos ejes. Uno de los motores funciona como tal y el otro funciona como generador, éste último producirá un voltaje inducido debido al efecto que se provoca de conectar los dos motores y a uno de ellos aplicarle un voltaje. Las señales de interés son el voltaje de excitación del motor y el voltaje inducido del generador. Se obtendrá la función de transferencia deseada manipulando algebraicamente la función de transferencia que se obtendrá de ambos voltajes. La figura uno muestra el resultado de la adquisición

Upload: buicong

Post on 24-May-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Sistema seguidor en dos ejes y sistema de visión

Klaus Camarillo de la Cruz, Jaime Zúñiga Mejía, Dra. Rafaela Villalpando.

ITESM Campus Laguna Paseo del Tecnológico 751 Col. Ampliación La Rosita. Torreón, Coah., México.

Correo electrónico: {klaus_cam1, jimmy.zuniga}@hotmail.com Resumen

Este documento trata sobre un sistema de seguimiento de un objeto mediante un mecanismo de dos ejes utilizando un sistema de visión. A través de una cámara se obtienen imágenes en tiempo real, dichas imágenes se procesan para identificar y localizar un objeto, en este caso en particular un trozo de cinta reflectiva. Después de localizar el objeto, el mecanismo intenta seguirlo también en tiempo real utilizando la plataforma Arduino Uno y una interfaz diseñada en Labview. Palabras clave:

Motor, sistema de visión, cámara, sistema de seguimiento, interfaz. 1. Introducción

Los métodos de instrumentación forman una parte importante en los sistemas

de control, permiten obtener información del entorno en donde trabaja dicho sistema, ya sea en aplicaciones industriales o de investigación. Cabe señalar que en la naturaleza, la mayoría de los organismos del reino animal basan su orientación en el sentido de la vista. Es aquí donde radica la importancia del procesamiento de imágenes trabajando en conjunto con los sistemas de control para poder realizar tareas más complejas que utilizando otro tipo de métodos de sensado. 2. Desarrollo

Se comenzó el trabajo con la construcción física del mecanismo y se seleccionaron los motores correspondientes a cada grado de libertad. Debido a la necesidad de implementar un controlador de posición para cada grado de libertad, se obtuvo el modelo de la función de transferencia ángulo con respecto a voltaje para cada motor, utilizando una tarjeta Arduino Uno como adquisitora de datos y el toolbox System Identification de Matlab.

Con el fin de obtener la planta de ambos motores, que por cierto son idénticos, se conectaron físicamente ambos ejes. Uno de los motores funciona como tal y el otro funciona como generador, éste último producirá un voltaje inducido debido al efecto que se provoca de conectar los dos motores y a uno de ellos aplicarle un voltaje. Las señales de interés son el voltaje de excitación del motor y el voltaje inducido del generador. Se obtendrá la función de transferencia deseada manipulando algebraicamente la función de transferencia que se obtendrá de ambos voltajes. La figura uno muestra el resultado de la adquisición

de datos de ambos voltajes. Cabe señalar que el voltaje de alimentación se varió de manera aleatoria.

Figura 1: Voltaje de entrada vs Voltaje inducido.

Debido a que estas señales de voltaje poseen ruido al momento de adquirir

los valores, se tienen que filtrar de manera que queden señales más limpias. Esto ayuda mucho cuando se vaya a obtener la regresión del sistema. En la figura 2 se muestran ambas señales una vez filtradas.

Figura 2: Señal filtrada de voltaje de entrada.

Una vez obtenidas las señales filtradas se importan al toolbox System

Identification de Matlab para obtener la comparación entre dichas señales y calcular una aproximación numérica de la función de transferencia. En la figura 3 se muestra la importación de datos.

Figura 3: Importación de datos.

Una vez importados, se declaran las variables de entrada, el voltaje de alimentación, y de salida, el voltaje inducido, para procesar los datos y posteriormente calcular la planta del sistema, como son mostrados en la figura 4.

Figura 4: Procesamiento de datos.

Después se importan los modelos selecciona la opción “time plot”, mostrada

en la figura 5, para desplegar el comportamiento de las señales procesadas.

Figura 5: Señales de entrada y de salida.

Una vez teniendo las señales, se obtendrá el modelo del sistema y se

determina la cantidad de polos que tendrá el mismo, así como seleccionar si tendrá un integrador libre o si tendrá ceros. Esto se muestra a continuación en la figura 6.

Figura 6: Modelo de la función de transferencia.

Este modelo genera una gráfica que se compara con la señal filtrada de

salida. Al momento de comparar hace una regresión para poder determinar los valores de K, Tp1 y Tp2. La figura 7 muestra los valores medidos y los valores estimados por la regresión.

Figura 7: Regresión de la señal de salida.

Los valores ideales para poder trabajar con el modelo procesado se

muestran en la figura 8.

𝐺 𝑠 =𝐾𝑝

(1+ 𝑇𝑝1 ∗ 𝑠)(1+ 𝑇𝑝2 ∗ 𝑠)

𝐾𝑝 = 0.64066 𝑇𝑝1 = 3.8231 𝑇𝑝2 = 0.15218

𝐺 𝑠 =0.64066

(3.82315𝑠 + 1)(0.15218𝑠 + 1)

Figura 8: Valores del modelo del sistema.

Para comprobar que estos valores pueden llegar a ser estables se hace el análisis de Root Locus en Matlab, en la figura 9 se muestra que se si puede trabajar con ellos.

Figura 9: Análisis de Root Locus.

Una vez obtenido el modelo del sistema se realiza la simulación y se

obtiene la figura 10.

𝐺 𝑠 =  0.8004

0.5818𝑠! + 3.975𝑠! + 𝑠 Figura 10: Simulación del sistema (plano de la frecuencia, s).

El sistema se tiene que hacer discreto y se realiza también la simulación del sistema. Al igual que en la simulación en el plano de la frecuencia, en el plano z se coloca un controlador PID. En la figura 11 se muestra la simulación.

𝐺 𝑧 =0.0001948𝑧! − 0.000621𝑧 + 0.0001385

𝑧! − 2.493𝑧! + 1.998𝑧 − 0.505

Figura 11: Simulación del sistema (plano z).

Para obtener los valores del controlador PID se selecciona la opción “tune” para que calcule sus valores. La respuesta del sistema se muestra en la figura 12.

Figura 12: Respuesta del sistema.

También, en la figura 13, se muestra la respuesta del esfuerzo del

controlador.

Figura 13: Respuesta del esfuerzo del controlador.

Después de obtener el modelo de la planta del sistema y simular el

controlador, se diseñó una interfaz a través de Labview para probar la etapa de control. En dicha interfaz se le pueden modificar las ganancias de Kp, Ki y Kd al controlador PID. La referencia se le puede modificar con la perilla y se puede monitorear la retroalimentación, así como se muestra en la figura 14. Mediante esta interfaz se comprobaron las ganancias del controlador para su posterior uso. De igual manera en la se muestra la interfaz de comunicación.

Figura 14: Panel de control de posición del motor.

Al tratarse de un proyecto extenso, se elaboró en partes, primero se realizó

el control de posición de dos motores de cd, posteriormente se revisó lo referente al sistema de visión y finalmente se unieron ambos sistemas.

La figura 15 muestra el primer prototipo de mecanismo construido y la cámara utilizada.

Figura 15: Estructura del mecanismo.

Al momento de implementar físicamente el control se utilizó, una vez más,

la tarjeta Arduino uno para implementar el control de posición de ambos grados de libertad de la estructura. Para conocer la posición actual de ambos motores se utilizaron dos potenciómetros y dos canales de entrada analógicos del Arduino, para mover los motores, se utilizó un puente H doble (circuito integrado L293B).

Se comunicó el circuito de control con Labview y se realizó un subVI que controla la posición de los motores. La figura 16 muestra el panel frontal de control en el cual se muestra la información más relevante. Se pueden modificar las constantes del controlador, se muestran gráficamente las señales de realimentación, la referencia, el porcentaje de error instantáneo y la salida del controlador.

Figura 16. Panel frontal del subVI de control.

La figura 17 muestra el diagrama de bloques del subVI de control. Se puede

observar que para utilizar el subVI se tiene que configurar previamente la comunicación con Arduino. Dentro del subVI, se leen los canales analógicos donde se encuentran las retroalimentaciones, se leen las referencias, que en el programa terminado provienen de calcular la posición del objeto con la cámara. Con toda la información anterior se procede a calcular el valor de salida de ambos controladores PID. En dicho subVI también se limitan los valores máximo y mínimo de la señal de controlador y se manda la información a Arduino sobre la velocidad y sentido de giro de ambos motores.

Figura 17. Diagrama de bloques del subVI de control.

Se procedió después con el sistema de visión. Para el sistema de visión se

utilizó una cámara Axis 1013, que se conectó mediante Ethernet a Labview. Cabe señalar que se usaron las librerías de visión que ofrece Labview [1]. Se decidió que el objeto a detectar sería un pequeño rectángulo de cinta reflectiva.

Se elaboró también un subVI para el sistema de visión, mismo que se muestra en la figura 18. Dicho subVI muestra la imagen original y la imagen después de ser procesada, así como información relevante del objeto detectado como la distancia a la que se encuentra y las coordenadas a las que está en función del campo de visión de la cámara.

Figura 18. Panel frontal del subVI de visión.

La figura 19 muestra el diagrama de bloques del subVI de visión. El subVI

necesita como entrada la dirección IP de la cámara y que se hayan definido tres

imágenes que se irán utilizando en el subVI, la primera es la imagen original, se usa para mostrar al usuario la imagen antes de procesarla. La segunda es similar a la original solo que se cambia a escala de grises para reducir el tamaño de la imagen y la tercera es donde se guarda la imagen procesada.

Figura 19. Diagrama de bloques del subVI de visión.

El procesamiento de imagen ocurre de la siguiente manera, se toma la

imagen original en formato RGB (Red-Green-Blue) y se cambia a formato de color HSL (Hue-Saturation-Lightness). Esto se hace con el fin de facilitar el proceso de separar los pixeles correspondientes a la cinta reflectiva de los del resto de la imagen. En lugar de contar con las componentes de cada color (rojo, verde y azúl) por pixel. Se obtiene los parámetros de tono, saturación de color y luminosidad.

Después de cambiar la imagen de formato se utiliza solamente el valor de la luminosidad del pixel, debido a que la cinta es altamente reflejante y debería tener los valores más altos. Teniendo en cuenta el valor de la luminosidad se filtran los pixeles que no sobrepasan un cierto umbral necesario y se elabora una máscara. Es decir, todos los pixeles que no superaron el límite son descartados.

Cabe señalar que el hecho de superar el límite de luminosidad no es suficiente criterio para decidir si se trata o no del objeto deseado ya que la luz artificial de una lámpara o el reflejo en un vidrio también podrían pasar estos rangos. Hay que entonces analizar los pixeles que quedan para separar el objetivo del ruido. Para cumplir con lo anterior se analizó la forma del objeto, se obtuvieron los valores de rectangularidad, que es un coeficiente que indica que tan cercana es una figura a un rectángulo. Se toman en cuenta también las proporciones del rectángulo y que tan sólido parece ser. Con esta información se vuelve a hacer un filtro y si se encuentra a un grupo de partículas que superen todos los límites anteriores se considera que se trata del objeto.

Una vez identificado el objeto se procede a obtener la información útil, como su posición relativa al campo de visión de la cámara y la distancia a la que se encuentra. La distancia se calcula considerando la resolución de la cámara, el número de pixeles que está abarcando el objeto y el tamaño real del objeto. De manera similar, considerando el número de pixeles que abarca el objeto, se calcula el promedio en el eje X y en el eje Y obteniendo las coordenadas del objeto en relación al campo de visión.

Para integrar el trabajo previo de control y de visión, se tuvo que hacer otro subVI encargado de traducir las coordenadas relativas del campo de visión de la cámara a dimensiones reales relativas al mecanismo de dos grados de libertad. La

figura 20 muestra el diagrama de bloques de dicho subVI. En él sólo se calculan las traslaciones y conversiones de unidades necesarias tomando en cuenta el ángulo de visión de la cámara y a distancia previamente calculada.

Figura 20. Diagrama de bloques del subVI encargado de traducir coordenadas de

la cámara en la referencia para el sistema de control.

Finalmente se juntaron todos los subVI’s en un programa principal que contaba con tres pestañas, la primera permite configurar la comunicación entre Labview, Arduino y la cámara. Así como la configuración inicial de la cámara. La figura 21 muestra el diagrama de bloques del programa terminado.

Figura 21. Diagrama de bloques del programa terminado.

Después de implementar todos los sistemas en uno solo, se procedió a la

etapa de validación y pruebas. Una vez sabiendo que los diferentes sistemas estaban trabajando de manera correcta se procedió a realizar mejoras a lo ya construido. Se mejoró la estructura del mecanismo y se elaboró un circuito impreso mostrado en la figura 22.

Figura 22: Tarjeta impresa.

Después de imprimir la tarjeta impresa, se soldaron los componentes, en la

figura 23 se muestran ambas caras de la tarjeta.

Figura 23: Ambas caras del circuito en la tarjeta impresa.

De igual manera, se hizo la mejora en el mecanismo donde se encontraban

los motores. Para esta mejora se utilizaron piezas de plástico de fácil ensamble, quedando como se muestra en la figura 24.

Figura 24: Mecanismo de seguimiento.

3. Conclusiones

Los resultados del proyecto fueron satisfactorios, se cumplió con el objetivo, el cual era ubicar el objeto y mediante el sistema de seguimiento, apuntar la localización del objeto (cinta reflectiva). Cabe señalar que el sistema de control presentaba un mínimo error de estado estable que hacía que no se apuntara directamente al centro del objeto todo el tiempo. Mediante el sistema de visión se pudo determinar distancias y ángulos de ubicación del objeto por lo cual el proyecto se facilitó. El prototipo, a pesar de funcionar de manera correcta, tenía mucho mayor error que el proyecto final, debido a los materiales utilizados, ya que estos últimos presentaban menor fricción.

4. Referencias [1] “Vision procesing” (2013) [PDF]. Recuperado el 10 de abril del 2013 de: http://wpilib.screenstepslive.com/s/3120/m/8731