UNIVERSIDAD NACIONAL DE SAN AGUSTÍN DE AREQUIPA FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA DISEÑO Y CONSTRUCCIÓN DE UN SISTEMA AUTOMÁTICO DE SEGUIMIENTO SOLAR BASADO EN VISIÓN ARTIFICIAL APLICADO A SISTEMAS FOTOVOLTAICOS TESIS PRESENTADA POR EL BACHILLER: JUAN MANUEL MAMANI HUAMANI PARA OPTAR EL TÍTULO PROFESIONAL DE: INGENIERO ELECTRÓNICO ASESOR: Dr. PABLO LIZARDO PARI PINTO AREQUIPA – PERU 2020
166
Embed
Trabajo de Investigacion - Juan Manuel Mamani Huamani
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN DE AREQUIPA
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA
DISEÑO Y CONSTRUCCIÓN DE UN SISTEMA AUTOMÁTICO DE
SEGUIMIENTO SOLAR BASADO EN VISIÓN ARTIFICIAL APLICADO A
SISTEMAS FOTOVOLTAICOS
TESIS PRESENTADA POR EL BACHILLER:
JUAN MANUEL MAMANI HUAMANI
PARA OPTAR EL TÍTULO PROFESIONAL DE:
INGENIERO ELECTRÓNICO
ASESOR:
Dr. PABLO LIZARDO PARI PINTO
AREQUIPA – PERU
2020
DEDICATORIA
A mi Padre y Madre por su amor, trabajo
y sacrificio dedicado a lo largo de mi vida.
AGRADECIMIENTOS
Primeramente, a mis padres y a mi familia por haberme apoyado en
todos mis estudios realizados, por su compresión y consejos.
Agradezco también a mi Asesor de tesis Dr. Pablo Lizardo Pari Pinto por
haberme compartido sus conocimientos desde principio a fin, quien con
su dirección, conocimientos y ayuda indispensable me permitió el
desarrollo de este trabajo.
Agradezco a la Universidad Nacional de San Agustín y docentes por
haberme brindado la mentoria única y valiosa para poder desarrollarme
profesionalmente.
RESUMEN
Los sistemas solares son uno entre muchos tipos de energía limpia y eficaz utilizados generalmente para la
depuración y desalación de aguas y en especial producción de electricidad (sistemas fotovoltaicos o sistema
térmicos). Si se desea aumentar la eficiencia de dichos sistemas en ambos casos es necesario implementar
un sistema de detección y seguimiento solar.
Existen seguidores solares que utilizan sensores foto-resistivos para estos casos, pero el sistema puede fallar
si en caso exista algún reflejo o sombra ya que estos sensores solo detectan luz más no el sol directamente.
También existen seguidores solares sin sensores, donde sus movimientos son reprogramados según las
estaciones del año o sector donde son instalados, En este proyecto se pretende independizar al sistema por
completo de las reprogramaciones en el transcurso del año, volviendo al sistema autónomo.
Para obtener la posición exacta del sol con respecto al centro del panel se utilizará visión artificial que es
una disciplina científica capaz de adquirir, procesar y analizar imágenes que nos entrega una cámara digital
en tiempo real.
Al obtener la posición exacta del sol reconociéndolo directamente, se desarrollará un sistema seguidor solar
de dos ejes en el cual estará acoplado al panel solar y así aprovechar la mayor eficiencia que nos puede
entregar el sol, los sistemas de seguimiento son muy usados en la actualidad sobre todo en paneles solares
que necesitan el calor del sol para transformar la energía térmica en eléctrica, como también en paneles
fotovoltaicos que transforma la energía solar directamente a eléctrica
El proyecto tiene como finalidad automatizar un sistema solar que sea capaz de seguir al sol directamente
superando el problema de las estaciones del año y localidad sin necesidad de reprogramaciones
establecidas, logrando así aumentar la eficiencia del sistema.
ABSTRACT
Solar systems are one of many types of clean and efficient energy generally used for the purification and
desalination of water and especially for the production of electricity (photovoltaic systems or thermal
systems). If you want to increase the efficiency of these systems in both cases it is necessary to implement
a solar detection and tracking system.
There are solar trackers that use photoresistive sensors for these cases, but the system can fail if there is
any reflection or shadow, since these sensors only detect light but not the sun directly. There are also solar
trackers without sensors, where their movements are reprogrammed according to the seasons of the year
or the sector where they are installed. In this project, the aim is to make the system completely independent
from reprogramming during the year, returning to the autonomous system.
To obtain the exact position of the sun with respect to the center of the panel, artificial vision will be used,
which is a scientific discipline capable of acquiring, processing and analyzing images that a digital camera
gives us in real time.
By obtaining the exact position of the sun by directly recognizing it, a two-axis solar tracker system will be
developed in which it will be coupled to the solar panel and thus take advantage of the greater efficiency
that the sun can give us, tracking systems are widely used today especially in solar panels that need the
sun's heat to transform thermal energy into electrical energy, as well as in photovoltaic panels that
transform solar energy directly into electrical energy.
The purpose of the project is to automate a solar system that is capable of following the sun directly,
overcoming the problem of the seasons of the year and locality without the need for established
reprogramming, thus increasing the efficiency of the system.
2 MARCO TEÓRICO .................................................................................................................................... 24
En la ecuación (7) se puede apreciar que se ha considerado un jacobiano con espacio de dimensión j , y
tendrá i filas y j columnas , sin embargo no se asegura de que sea cuadrada. El número de columnas del
jacobiano variará dependiendo de la dimensión del espacio de su tarea [24].
El jacobiano para un punto (característica visual) observado en la imagen (u, v, en el plano 2D) toma la forma
de la matriz presentada en la ecuación (8), donde Z es la distancia a la que se encuentra el punto en la
escena.
LPA*A O � ⎣⎢⎢⎡QR 0 − SR − S*Q Q5 � S5Q −*0 QR − *R − −Q5 − S5Q S*Q S ⎦⎥⎥
⎤ ×⎣⎢⎢⎢⎢⎡
&+&,&-N+N,N- ⎦⎥⎥⎥⎥⎤ (8)
El jacobiano de la imagen también toma el nombre de matriz de interacción (pues representa cómo la
cámara interactúa con el entorno), en (8) λ representa la distancia focal y u , v son las coordenadas
normalizadas de la posición de la característica de la imagen en 2D con respecto a la imagen real 3D, y las
variables &T , &U , &V , son las velocidades de translación del efector final y WT , WU , WV , sus velocidades
angulares [25].
Teniendo el jacobiano calculado según (8) , para hallar las posiciones angulares con respecto al objeto a
seguir, se considera la ley de control de la ecuación (9).
39
*X � −Y. ;<Z. �@ − @[� (9)
Donde ;<Z es la pseudoinversa del jacobiano calculado @ y @\ son las características entregadas por la
imagen y características deseadas respectivamente que al restarse forma el error de la ley de control, y por
último Y es una constante proporcional que puede ser variada para regular la velocidad y estabilidad de
respuesta del sistema.
2.5 MODELO DE CAMARA PINHOLE
Una cámara pinhole es una cámara simple que no tiene lente sino una pequeña apertura, cuando la luz
entra por la apertura se forma una imagen invertida en el plano de imagen que está ubicado en el lado
opuesto de la apertura (centro óptico) a una distancia f (distancia focal), similar al funcionamiento del ojo
humano. Mientras más pequeño sea el agujero más nítido será la imagen, pero también menos será la
intensidad de luz, por lo que mientras más definida es la imagen esta será más opaca, en las cámaras
actuales esta desventaja se corrige con el uso de lentes que intensifican la cantidad de luz que ingresa al
sensor.
El modelo de cámara pinhole describe la relación matemática que existe entre el plano real 3D y el plano
proyectado 2D en la imagen, donde la apertura de la cámara es considerada como un punto
infinitesimalmente pequeño y no se utiliza ningún tipo de lente para enfocar la luz [26].
En la Figura 17 se puede apreciar con más detenimiento como es la relación del plano real con el plano
imagen según pinhole, donde la distancia del punto real 3D "] ,con la distancia en el plano imagen 2D "C,
están separados por la distancia Zc y la distancia focal @ respectivamente [27], formando dos triángulos
rectángulos que por semejanza de ángulos se deduce la relación que se ve en la Figura 17, esta
transformación se conoce como transformación en perspectiva.
Teniendo en consideración que "] está en el plano real este será medido en metros conjuntamente con su
altura ^], y "C estará dado también en metros, por lo que será necesario una posterior conversión
píxeles/metros , dicho parámetro de conversión se obtiene en la etapa de calibración de la cámara.
40
Figura 17 Proyección perspectiva de cámara en el eje X. Fuente : [27].
El proceso descrito en la Figura 17 para la coordenada X, también sucede con la coordenada Y, obteniéndose
una ecuación matemática similar de la transformación en perspectiva, pero adaptada a la coordenada Y.
2.6 CALIBRACION DE LA CAMARA
La calibración de la cámara estima los parámetros intrínsecos y extrínsecos de la cámara a usar, es
importante realizar con mucha precisión la calibración ya que de ello se obtiene precisión métrica del mundo
3D o mundo real tales como, la profundidad, orientaciones, ubicaciones del objeto, en relación con la
cámara al capturar las escenas, como también las distorsiones geométricas de la óptica ya que al construir
una cámara siempre existirá imperfección en sus lentes y óptica mínima, es por ello que es necesario calibrar
cada cámara de forma independiente aunque estas sean de la misma marca y modelo , siempre tendrán
valores diferentes.
Existen varios métodos para realizar la calibración tales como el método de Tsay [28] y el método de ZHANG
[29], este último es el más usado en el procesamiento de imágenes debido a su flexibilidad y el uso de un
patrón de calibración plano, además que este método tiene una caja de herramientas para Matlab que
facilita dicho proceso.
2.6.1 Método de ZHANG
Zhang desarrolló un método de calibración basado en un tablero de ajedrez de 8x8 (patrón de calibración)
cuadrados donde cada cuadrado mide 30mm de lado, donde una de las esquinas es utilizada como
referencia del patrón (usualmente llamado referencia del mundo). Este método consiste en tomar múltiples
fotos del mismo tablero de ajedrez en diferentes posturas (posiciones y orientaciones) para así relacionar
los puntos 3D (conocidos) de las esquinas de los cuadrados del patrón con sus respectivas proyecciones 2D
41
en la imagen, y aplicar las propiedades de una transformación proyectiva 2D [29] así su posición, orientación,
profundidad etc., a partir de una distancia Z entre el sistema de coordenadas de la cámara y el sistema del
tablero.
Este método es muy recomendable para alguien que quiera utilizar el motor de calibración en archivos script
de Matlab.
Jean-Yves Bouguet muestra paso a paso como lograr dicha calibración usando Matlab y el toolbox de
calibración donde este recomiendo usar mínimo 25 fotos del tablero para obtener valores con más exactitud
de los parámetros intrínsecos y extrínsecos de la cámara [30].
2.6.2 PARAMETROS INTRINSECOS DE LA CÁMARA
Los parámetros intrínsecos describen la geometría de la óptica del lente que contiene una cámara en
conjunto con el sensor de adquisición de imágenes, esto nos ayuda en llevar las coordenadas capturas de
una imagen por la cámara ubicada a una distancia Z de parámetros físicos a ópticos, es decir de milímetros
(o metros) a pixeles.
Los parámetros intrínsecos están contenidos en la matriz K, denominada como la matriz de calibración o
matriz de parámetros intrínsecos (10):
_ � `@+ 0 ab0 @, cb0 0 1 d (10)
Donde @a , @c son las distancias focales en las direcciones X e Y respectivamente, cada uno de ellos es
producto de la distancia focal f y un factor de conversión pixel/mm, xo,yo son las coordenadas del centro
de la imagen [31].
2.6.3 COORDENADAS NORMALIZADAS
Las coordenadas normalizadas resultan de suponer que el plano de imagen se encuentra a una unidad
métrica del centro óptico de la cámara, de esta manera las distancias fx y fy representaría solamente la
transformación pixel/mm. Con esta suposición, y a partir de la ecuación (11), se puede despajar el vector
[un vn 1]’ y encontrar (un,vn) que representan las coordenadas de un vector unitario que apuntan del centro
óptico al punto 3D.
eac1f � `@+ 0 ab0 @, cb0 0 1 d × eSg*g1 f � _ eSg*g1 f (11)
Donde Pg y *g son las coordenadas ya normalizadas en el plano 2D medidos en pixeles.
42
2.7 PROCESAMIENTO DIGITAL DE IMÁGENES
El procesamiento de imágenes es un tema bastante extenso donde se estudia todas las características de
una imagen, las más comunes como su color, forma de objetos presentes, cantidad de objetos, tamaño,
profundidades, expresiones faciales, formas de objetos, comparación y extracción de patrones
característicos que puede ser seleccionados a criterio del programador, así esta área se vuelve muy versátil
para adaptarse a diferentes aplicaciones tales como, agricultura, medicina, seguridad, robótica, industria
alimenticia, industria espacial, etc.
Una imagen digital está compuesta por un numero finito de elementos en el plano X, Y, donde la unidad
mínima es conocido como pixel, cada uno tiene una particularidad diferente.
Uno de los parámetros más relevantes de una imagen es su resolución. La resolución de una imagen es la
cantidad de pixeles que esta contiene y es muy común relacionarlas con todos los dispositivos que se
relacionan de alguna manera con las imágenes digital, tales como computadoras, cámaras digitales,
smartphones, tablets, etc.
Las imágenes pueden ser en escala de grises, blanco o negro, o a color, por lo que el procesamiento por
computador puede transformar estos tipos de imágenes en otros si cree necesario para la actividad
deseada.
Cuando la imagen es a color, cada pixel de forma independiente tiene un color establecido que está
compuesto por los tres colores básicos que son el Rojo, Verde y Azul , o también conocido como RGB Figura
18 [32] , que en su combinación puede generar los demás colores conocidos y diferentes tonalidades Figura
19 [32].
Figura 18 Componentes RGB en una imagen a Color. Fuente: [32].
43
Figura 19 Combinación de colores en base a los primarios RGB. Fuente: [32].
2.7.1 CALCULO DEL CENTROIDE DE UN OBJETO CON EL ALGORITMO DE
MEANSHIFT
El proceso de Mean Shift es un proceso iterativo de un punto fijo que converge a un máximo local de la
densidad en una imagen donde en cada interacción se estima el gradiente normalizado de la función de
densidad en el punto correspondiente a cada paso.
Antes de realizar el algoritmo de meanshift es importante tener definido el objeto de la imagen a procesar,
por lo que se debe filtrar de tal forma que se tenga en contraste el objeto sin interferencias o ruido que
puede generar problemas en el cálculo [33].
Se seguirán los siguientes pasos :
a) Calcular el centroide �a] , c]� de la imagen actual filtrada, utilizando el momento de orden 0 �hbb)
y el momento de orden 1 �h4b� para la coordenada a] y el momento de orden 1 �hb4� para la
coordenada c] (12).
a] � h4bhbb � i+ i,aj�a, c�i+ i,j�a, c�
c] � hb4hbb � i+ i,cj�a, c�i+ i,j�a, c�
(12)
b) Establecer el centroide obtenido como nuevo centro de cada imagen capturada.
44
2.8 MOTORES DE CORRIENTE DIRECTA (DC)
Los motores de corriente directa son sistemas electro-mecánicos encargados de transformar la energía
eléctrica en energía mecánica, estos dispositivos son muy usados para el movimiento de robots, o
mecanismos automáticos donde se requiere un gran torque para lograr el movimiento de objetos pesados,
Estos motores suelen tener gran velocidad, pero poca fuerza en su eje, por lo que es necesario el acople de
sistemas de engranajes para disminuir si velocidad, pero aumentar el torque en su eje de salida.
2.8.1 SERVOMOTORES
Un servomotor generalmente es la unión de tres elementos:
El motor
Sensor de posición
Amplificador
Donde el sensor de posición es el encargado de enviar la posición mediante un disco codificado y un sensor
que cumple la función de contador, y estos dos sistemas en conjunto es llamado encoder.
El sistema de amplificación es el encargado de aumentar el voltaje y corriente proveniente de un
microcontrolador con la finalidad de poder mover el motor, cambiar su giro, variar su velocidad, y
decodificar la información entregada por el encoder.
El servomotor puede ser utilizado como control de posición, donde se controla la posición angular con
respecto a su eje, esta configuración es muy exacta sin embargo no suele ser tan flexible en la hora de variar
su velocidad de respuesta, por lo que su aportación en la robótica es limitada.
El servomotor también puede ser utilizado para el control de velocidad con la ayuda de un encoder
incorporado en su eje es posible controlar su velocidad expresada en RPM, y hasta también su posición.
Todo esto con la ayuda de controladores automáticos con el Proporcional Integral también llamado PI, o
con el Proporcional Integral Derivativo o conocido también por sus siglas PID. Estos sistemas son más
versátiles en las aplicaciones robóticas tales como, brazos robóticos, robots que cumplen tareas de
seguimiento de rutas, fajas transportadoras, control visual, tele operación, control de fuerza, etc. [34].
2.8.2 ENCODERS
Son dispositivos encargados de brindar información de la posición del motor mediante un disco rotatorio y
un sensor, usualmente los más usados son en robótica son los encoder de tipo óptico y de tipo magnético.
2.8.2.1 ENCODER OPTICO
Un encoder óptico consta de un led (generalmente de luz infrarroja) que se encuentra orientado en un disco
giratorio con ranuras donde al girar la luz pasa por las ranuras y es captada por un fotoreceptor donde este
trasforma la señal captada a un valor binario, se debe considerar que estos tipos de encoders pueden ser
afectados por la temperatura , polvo o por la luz solar, sin embargo la facilidad de construcción y precio
hace que este encoder aún se siga usando en robots o dispositivos electrónicos en ambientes ideales.
En la Figura 20 se puede apreciar un encoder óptico donde el led emisor de luz y el fotoreceptor están
ubicados frente a frente y en medio de ambos el disco con múltiples ranuras acoplado en el eje del motor.
45
Figura 20 encoder óptico. Fuente: [34].
2.8.2.2 ENCODER MAGNETICO
Los encoder magnéticos tiene la ventaja de ser inmunes a la luz solar a comparación de los encoders ópticos,
estos sensores tienen una resistencia magnética que se coloca sobre un perímetro o a un costado del disco
giratorio (que en este caso es magnético). la resistencia magnética es un transductor que trasforma el
campo magnético en corriente eléctrica, donde el valor de la resistencia varía dependiendo el campo
magnético aplicado. La resistencia magnética tiene un valor k cuando la corriente 9 fluye en dirección de la
flecha Figura 21 ,y r disminuye cuando el campo magnético l es aplicada en ángulo recto o en la dirección
de la corriente. Con esto es posible obtener una señal de salida correspondiente a la rotación del eje del
motor.
A este principio se le conoce como efecto HALL en honor a Edwin Hall quien describió este fenómeno en
1879, la desventaja de este encoder es que tiene problemas de lectura en ambientes donde existe
problemas electromecánicos o grandes flujos magnéticos [34].
46
Figura 21 encoder magnético. Fuente: [34].
2.8.3 RESOLUCION DEL ENCODER
La resolución del encoder depende de la configuración que tiene el disco giratorio y de la cantidad de
sensores que estos tengan incorporados. Ya sea en los sensores de tipo óptico o magnético comúnmente
se usa encoders de doble canal desfasados 90 grados en su respuesta, por lo que es posible saber con esta
configuración el sentido de giro del motor como su velocidad en la que va Figura 22.
Figura 22 Señal de encoder de 2 canales desfasados 90 grados. Fuente : Elaboración propia.
47
La resolución del encoder es una medida en pulsos por revolución o también conocido como PPR, es decir
el número de pulsos que cuenta un encoder por cada vuelta, donde se puede considerar el número de
flancos de subida, de bajada, estados altos, etc. hasta que se vuelta a repetir la secuencia.
La ventaja de un encoder de 2 canales es que nos puede dar 4 combinaciones de sus pulsos que se
interpretan como su resolución que se puede ver en la Tabla 2, esta precisión es importante para
aplicaciones robóticas donde se requiere exactitud.
ESTADO ANTERIOR
ACTUAL
AB 00 01 11 10
00 0 -1 e +1
01 +1 0 -1 e
11 e +1 0 -1
10 -1 e +1 0 Tabla 2 Combinaciones resolución de un encoder de dos canales.
Fuente : Elaboración propia.
En la Tabla 2 se puede apreciar que las cuatros combinaciones tienes diferentes respuestas para ser tomadas
en cuenta en la interpretación para la posición de un motor donde -1 indica que en ese momento el motor
está en sentido contrario y por lo tanto la cuenta de pulsos disminuye en 1, +1 significa que el motor va en
sentido correcto por lo que aumenta en 1, 0 significa que no existe cambio y el motor esa estático, y “e”
quiere decir que la combinación no está definida o que nunca llegara a esa combinación binaria. Es
importante saber también que el sentido correcto o sentido contrario del robot puede no depende de los
sentidos de las manecillas del reloj (horario y anti horario) puesto que esta interpretación la define el
programador según su necesidad o posición del motor.
En la ecuación (13) se muestra la formula con la cual se calcula la resolución del motor o la cantidad de
pulsos por vuelta.
1 � ml × 8 × k (13)
Donde:
R: Es la resolución del encoder para una precisión cuádruple.
mH: Es el número de cuentas por revolución del eje del motor.
s: Es el número de estados generados por los canales AB.
r: Es la relación de reducción de la caja reductora.
Teniendo en consideración la resolución del motor, para aplicaciones donde se requiera saber la posición
del motor y un control de Angulo se puede definir la fórmula que se aprecia en la (14).
48
n � : × 3601 (14)
Donde:
P: Es la posición relativa en grados.
n: Es el número de cuentas generados por el encoder.
R: Es la resolución del encoder para una precisión cuádruple.
2.9 CONTROLADOR PID
Un controlador Proporcional Integral Derivativo o por sus siglas PID es un sistema de control comúnmente
usado en procesos industriales, donde su simplicidad permite el control de las plantas satisfactoriamente.
La finalidad del control PID es calcular la desviación o error de un valor medido y un valor deseado (setpoint)
para así llegar a una respuesta estable en el tiempo mínimo que permite el sistema.
Este controlador es ampliamente usado en sistemas robóticos tales como, brazos de n grados de libertad,
control de velocidad de motores, control de posición, u otro sistema que requiere eliminar oscilaciones
provocadas por factores mecánicos, eléctricos, etc.
El controlador PID puede tener diferentes modificaciones en la industria, tales como la combinación PD, PI,
I-PD o simplemente un control P o proporcional , pero su configuración general es prácticamente la suma
de estos parámetros que responden a un error proveniente de un sensor o conjunto de sensores, donde
influirá a la respuesta de una planta Figura 23.
Figura 23 Diagrama de bloques PID. Fuente: [35].
49
El valor proporcional se encarga de llevar el error a cero con una ganancia que multiplicado con el error va
cambiando proporcionalmente desde un punto más alejado donde el valor es más grande hasta llegar a un
punto más cercano al valor cero o el mismo valor cero (donde el valor setpoint coincide con el valor
entregado en la retroalimentación). Es frecuente que este tipo de control (solo proporcional) no termine
llegando al setpoint en un sistema real, ya que si la ganancia no es suficiente, cuando el error este más
cercano a cero implicara que el actuador de la planta no tenga la energía suficiente para llegar al setpoint,
por otro lado para mejorar este problema en ocasiones se eleva el valor proporcional _o sin embargo
también trae consigo algunas respuestas no deseadas como es la oscilación para llegar al punto deseado
(setpoint).
El valor integral es el encargado de corregir las fallas del controlador proporcional el cual contribuye con
errores proporcionales a valores pasados o acumulativos. Este valor fuerza al error en estado estacionario
en presencia de una referencia escalón o posibles perturbaciones. El control Integral también es regulado
por una ganancia conocidamente generalmente como _C. El valor derivativo en si es el encargado de eliminar las oscilaciones de la respuesta del sistema producida
por el error proporcional, y esta contribuye con valores proporcionales a la razón de cambio de las acciones
de control, es un valor que tiene una reacción rápida a los cambios, que desaparece cuando existen valores
de error repetitivos o constantes. El valor derivativo puede regularse con una ganancia conocida
generalmente como _[.
La utilidad de los controladores PID se aplica de forma general en casi todos los sistemas de control,
particularmente cuando el modelo matemático de la planta no se conoce y por ende no se puede emplear
métodos de diseño analíticos es cuando los controladores PID resultan más útiles [35].
2.10 MICROCONTROLADORES
Un microcontrolador es un pequeño computador que básicamente contiene en su interior un
microprocesador, memoria, y puertos de salidas y entradas todo ello dentro de un chip pequeño el cual es
muy flexible de programar y tiene un costo bajo.
Figura 24 Esquema de un sistema programable. Fuente: Elaboración propia.
50
En la Figura 24se muestra el esquema de un sistema programable o microcontrolador donde está divido en
5 elementos fundamentales, los cuales son:
Unidad central
Memoria ROM
Memoria RAM
Buses de interconexión
Circuitos de interfaz
La presencia de estos elementos es fundamental para el funcionamiento de los microcontroladores, estos
periféricos permiten que se pueda realizar gran variedad de proyectos automáticos especialmente para la
robótica y controles industriales, tiendo aplicaciones desde el control de velocidad de motores, hasta
sistemas sofisticados de seguridad y análisis e interpretación de datos con la ayuda de las entradas y salidas
que se requieran.
El programa se almacena en la memoria ROM la cual puede constituirse de diversas formas; UVPROM
EEPROM u OTPROM, cualquiera de estas es una memoria no volátil, que significa que no borra la
información instalada aun cuando la energía de alimentación desaparezca.
Para poder trabajar normalmente y rápidamente el microcontrolador necesita de una memoria RAM, la cual
es la encargada de guardar información momentáneamente tales como valores en variables entregadas por
sensores, cálculos, etc., por lo que no necesita ser de grandes dimensiones [36].
La finalidad de un microcontrolador en si es integrar tanto como sea posible un conjunto de funciones en
un solo encapsulado como se aprecia en la Figura 24.
2.10.1 MICROCONTROLADORES ATMEL AVR
Los microcontroladores Atmel son uno de los más usados en proyectos electrónicos, ya que existe varias
placas desarrolladoras basadas en microcontroladores de esta marca de diferentes familias.
La tecnología más común de los microcontroladores Atmel es CMOS de 16 bits, con bajo consumo basados
en arquitectura RISC, esto indica que posee un reducido juego de instrucciones donde la mayor parte se
ejecutan en un ciclo de reloj. La familia AVR permite trabajar en frecuencias de 16Mghz y estas suelen ser
de dos versiones por modelo, la primera que trabaja a 2.7V que puede alcanzar velocidades de trabajo de 4
u 8Mghz y la segunda versión que es superior que trabaja en voltajes de 4 a 5.5V alcanzando velocidades de
hasta 16Mghz.
Las características típicas de la familia AVR son [37]:
Timers y contadores de 8 a 16bits flexibles con modos de comparación.
Interrupciones internas y externas.
UART serie programable.
Puertos SPI.
Reloj en tiempo real (RTC).
Two Wire Serial Interface (TWI).
Entradas y salidas digitales.
51
Temporizador Watchdog programable con oscilador interno.
Salidas PWM.
Conversor ADC.
52
Capítulo 3
3 DISEÑO E IMPLEMENTACION
3.1 Detección de Objeto Deseado
Para detección de objeto deseado (en este caso el sol) se procede a realizar un filtrado de imágenes
capturadas por una cámara.
Para el procesado de las imágenes se utilizó MatlabR2017b, ya que nos permite facilitar el procesamiento y
filtrado de imágenes con comandos establecidos por previa instalación del paquete “Image Acquisition
Toolbox” [38].
Se utilizó una cámara web de la marca Micronics y modelo Fratello- W368 Figura 25, el cual consta de las
siguientes características:
• Resolución VGA: Imágenes de gran nitidez e intensidad con alta resolución 640x480 pixeles.
• Botón para captura de imagen.
• Micrófono Integrado: Disfrute de sus conversaciones sin audífono.
• Cámara Web con clip sujetador.
• Seguimiento facial inteligente: Centra la atención en su rostro.
• Fácil instalación: En tres sencillos pasos desde el software del CD.
• Clip ideal para laptop: Se acopla firmemente a todo tipo de pantallas.
• Compatible con la mayoría de los programas de mensajería
Figura 25 Cámara Web Micronics , Fratello - W368. Fuente: Elaboración propia.
Este modelo de cámara fue seleccionada debido a su bajo costo y características suficientes para el
procesamiento de imágenes, ya que, al tomar capturas del sol, este tendrá un gran contraste con respecto
al cielo, por lo que no se necesita de una sensibilidad alta.
53
Utilizando el comando imaqhwinfo('winvideo',1) de la caja de herramientas “Image Acquisition Toolbox” Se
puede encontrar los valores establecidos de fábrica, donde los más relevantes para la generación de codigo
son la definición (Default Format) y el nombre de la cámara (Device Name) Figura 26.
Figura 26 Información de cámara web Fratello W-368. Fuente: Elaboración propia.
Se puede apreciar que el nombre del dispositivo es USB2.0, esta etapa es importante ya que con ello
podemos inicializar el objeto de imagen o video [39].
Primeramente, se tomó con la cámara seleccionada una imagen Figura 27 al sol para poder analizarla y ver
que parámetros son necesarios para el correcto filtrado y detección del sol.
Figura 27 Imagen Captada del sol con la cámara Fratello W-368. Fuente: Elaboración propia.
En la Figura 27 se puede apreciar la captura de una imagen del sol con la cámara web Fratello W-368 donde
se puede ver con claridad que el sol tiene un gran contraste con el cielo despejado.
54
Primero la imagen a color es convertida a escala de grises utilizando la fórmula
I_gray= 0.2989*R+0.587*G+0.114*B
Que es recomendada por la norma americana Rec. ITU-R BT.601-7 que también es utilizada para el cálculo
de la iluminancia de un cuerpo.
Luego se procede a segmentar la imagen por histograma, es decir binarizar, utilizando con el comando
im2bw(Imagen, Level) que nos facilita Matlab el cual se encarga de llevar una imagen a blanco y negro.
Donde la variable Level permite regular la intensidad de binarizacion que va de un valor de 0 a 1 , donde los
valores que se acercan a 1 se centra en buscar los valores de los pixeles donde el color blanco es
predominante que en este caso es el brillo que genera el sol)
Figura 28 Imagen filtrada con un valor Level = 0.2. Fuente: Elaboración propia.
En la Figura 28 se puede apreciar el filtrado de la imagen captura del sol con un valor bajo de 0.2 , en dicha
figura se puede apreciar que los destellos del sol son muy intensos en la captura por lo que no se puede
distinguir la forma del sol y su ubicación exacta.
55
Figura 29 Imagen filtrada con un valor Level = 0.98. Fuente: Elaboración propia.
En la Figura 29 se puede apreciar la imagen del sol filtrada a un valor alto de 0.98 donde se reduce el ruido
que genera el brillo del sol y se puede apreciar la forma del sol y su posición en el plano imagen.
Este mismo proceso se repitió para varias muestras de fotografías tomadas al sol con algunas formas que
puede ser capturas en la imagen y puedan generar alguna interferencia como casas, paredes u ocasos del
atardecer que puedan generar algún contraste parecido al brillo del sol Figura 30.
56
Figura 30 Imagen captura del sol frente a muros en un cielo despejado. Fuente: Elaboración propia.
De la misma forma se aplicó el mismo filtro con el mismo valor de Level = 0.98, donde se puede apreciar en
la Figura 31 que el filtro sigue obteniendo imágenes donde solo el sol es relevante y es posible ver su posición
en el plano imagen, sin importar cualquier otro objeto que esté presente en la foto.
Figura 31 Image del sol filtrada a un valor de Level=0.98 con muros presentes. Fuente: Elaboración propia.
57
La ventaja de tomar fotos al cielo es muy clara, ya que el sol siempre estará en contraste con su fondo,
siempre y cuando se mantenga el valor de 0.98 para lograr una detección estable, sin embargo, es
importante aclarar que es recomendable hacer el filtrado con imágenes despejadas y capturas sin flash por
parte de la cámara.
3.2 DETERMINACION DE POSICION
Para realizar un seguimiento del objeto en el plano imagen se procedió a calcular el centroide de un objeto
luminoso ( para simular el sol) , utilizando la fórmula de la ecuación (12) , se procedió primeramente a
calcular el momento de orden 0 �hbb) y el momento de orden 1 �h4b� para la coordenada a] y el momento
de orden 1 �hb4� para la coordenada c] . [33].
Figura 32 Detección de posición de luz filtrada. Fuente: Elaboración propia.
En la Figura 32 se puede apreciar que implementando la fórmula (12), se puede encontrar la posición del
centro de gravedad en el plano imagen cuya resolución de la imagen es de 640x480 pixeles.
Se puede ver en la Figura 32 los valores de Cx que representa la posición de pixeles del eje x en el plano y
Cy representa la posición del eje Y en el plano imagen Figura 33.
Figura 33 Posición de Luz en pixeles en el plano imagen. Fuente: Elaboración propia.
58
Figura 34 a) Imagen la luz en la esquina superior derecha b) Imagen del sol en la esquina inferior derecha. Fuente: Elaboración propia.
En la Figura 34a se puede observar la posición dela luz en el plano imagen ubicado en la esquina superior
izquierda de color rojo , como también en la Figura 34b se puede apreciar la posición de la luz en la esquina
inferior derecha, en ambas imágenes se puede visualizar un pequeño cuadrado rojo dibujado en el centroide
de la luz, este representa la ubicación exacta de su centro en la imagen , por lo que se puede decir que no
importa la forma que tenga el destello de la luz del sol, su centroide siempre caerá dentro de la imagen, y
el seguimiento de su trayectoria no se verá afectado, puesto que la forma del filtrado del destello del sol
varía según pase las horas en el día, ya sea en un cielo despejado, nublado, etc.
Figura 35 Sistemas coordenados en el plano imagen XY. Fuente: Elaboración propia.
59
Se debe tener en consideración al calcular el centroide y su ubicación en la imagen que el sistema de
coordenadas en el plano comienza con un origen de (0, 0) en la esquina superior izquierda y el valor del eje
Y varia de arriba hacia abajo y el eje X de izquierda a derecha para todas las capturas de diferentes cámaras
digitales Figura 35.
3.3 MODELAMIENTO DEL SISTEMA DE CONTROL VISUAL
En este punto del desarrollo, se experimentó con 4 diferentes de estrategias de control visual para el
seguimiento de un objeto, a fin de elegir una para la implementación final en una estructura motorizada,
con la finalidad de encontrar el mejor sistema de control que sea capaz de hacer el seguimiento, de ser
preciso y rápido según la tarea deseada (que es el seguimiento solar), estos 4 métodos analizados serán
contrastados y probados en esta tesis.
3.3.1 ALGORITMO DE SEGUIMIENTO MEDIANTE CÁLCULO ANGULAR DE MOTORES
Y MATRIZ DE ROTACIÓN.
Este método de seguimiento está basado en el paper de J.A,Corrales titulado “Diseño de una mini-cámara
motorizada para el seguimiento de objetos” [33], que a su vez se basa en una adaptación del algoritmo de
Mean-Shift [40] [41] para tratar las distribuciones de probabilidades dinámicas como cambios en su tamaño
y posición que representa el movimiento del objeto capturado.
Este proceso usa la proyección del modelo geométrico de la cámara de pinhole Figura 36, el cual describe
la relación del objeto real proyectado en el plano imagen 2D de la cámara, donde la proyección depende de
la distancia focal de la cámara, así la posición del objeto en la imagen se obtiene en términos de pixeles n ��P, *� , un factor de escalamiento horizontal y vertical pa, pc respectivamente , que también se referencian
en el sensor óptico respecto al punto principal de proyección horizontal y vertical qa, qc respectivamente
(15).
60
Figura 36 Modelo Geométrico Pinhole. Fuente: [33].
Donde la ecuación matricial (15) representa el proceso unificado de la transformación en perspectiva del
punto 3D a 2D y la conversión pixel/mm en la imagen a través de los parámetros intrínsecos, donde @
representa su distancia focal como se puede apreciar también en la Figura 17.
Para el funcionamiento del sistema se le agrego a la ecuación (15) una matriz de trasformación para obtener
según el movimiento del objeto los ángulos adecuados para el correcto seguimiento de un servomecanismo,
por lo que la matriz de trasformación seleccionada es la matriz de rotación para el eje " Y #.
( � _. Пb. n] � _. Пb. 1. n (16)
En la ecuación (16) se puede ver la forma simplificada de la ecuación de la ecuación (15) donde _ es la
matriz de parámetros intrínsecos según pinole. En el miembro derecho de la ecuación se ha reemplazado
Pc por RP que es la transformación del punto P al sistema de coordenadas de la cámara, donde también se
toma en cuenta el centroide el objeto que se encuentran en la posiciones ( � �P, *� (que son las valores
61
llevados desde el plano real 3D del objeto al plano imagen según pinhole )a los pixeles deseados (u ��Pu, *u� que en este caso es el centro de la imagen en pixeles Figura 37 .
Figura 37 Representación de coordenadas de milímetros a pixel. Fuente: [33].
La proyección del punto P sobre la imagen en el punto p está relacionada solamente por la matriz de
parámetros intrínsecos debido a que se trata del mismo sistema de coordenadas, reemplazando P por
inv(P)p en la ecuación (16), se obtiene la ecuación en (17).
(u � _. 1. _v4. ( (17)
El movimiento de la cámara está gobernado solamente por dos tipos de movimientos: panorámico (Pan) e
inclinación (Tilt), que corresponden respectivamente a movimientos en el eje X y Y del plano de imagen, por
lo que la matriz R se puede descomponer en dos ejes que están relaciones con dichos ejes " Y # del plano
imagen y sus rotaciones angulares llamados en adelante “Pan y Tilt”, estos movimientos se pueden
desacoplar y analizar en forma independiente. La rotación R en el eje X e Y se representa por las ecuaciones
(5) y (6), respectivamente, volviendo a reescribirlas para nuestra aplicación, se obtienen las ecuaciones (18)
y (19).
1owg�c] , x� � ` cos x 0 sin x0 1 0− sin x 0 cos xd
(18)
62
1MC~M�a] , �� � `1 0 00 cos � − sin �0 sin � cos � d (19)
Para simplificar el sistema se asume que las rotaciones independientes coinciden con el desplazamiento del
objeto en la imagen X, Y así se asegura que los giros “pan” se ejecutaran sobre el eje X y los giros “tilt” se
ejecutaran solo sobre el eje “Y”. Estos movimientos al estar desacoplados, cumplen con la ecuación (17) ,
reemplazando cada uno de ellos en dicha ecuación, se obtienen (20) y (21).
`Su*1 d � _. 1owg�c] , x�. _v4. eS*1f (20)
e S*u1 f � _. 1MC~M�a] , ��. _v4. eS*1f (21)
Donde, de la ecuación de la ecuación (20) se despejara cos x y de la ecuación de la ecuación (21) el cos � ,
donde se obtendrá dos soluciones como resultado en forma de una ecuación de segundo grado.
En ambos resultados se obtiene un valor negativo y positivo, donde se descarta los valores negativos ya que
estos representan giros en el tercer y cuarto cuadrante, que llevarían a giros mayores de 90 grados y se
perdería la visión de la cámara en el objeto. Finalmente aplicando el arco-coseno en ambas ecuaciones (22)
y (23) se obtendrán los ángulos que en proporción a la separación de pixeles entre el centroide del objeto y
punto deseado generara el giro de cada motor del sistema “pan” y “tilt”. Y por último se determina el signo
del Angulo para darle la información del sentido de giro que debe considerar la programación del
movimiento de los motores.
3.3.2 CONTROL VISUAL DE SEGUIMIENTO UTILIZANDO EL JACOBIANO DE LA
IMAGEN
Este método de control visual está basado en el artículo de Chaumette y Santos titulado “Tracking a moving
object by visual Servoing” [42] que realiza el seguimiento de un servomecanismo de un objeto en
movimiento usando el jacobiano de la imagen o también llamado matriz de interacción.
Ahora bien , basándonos en la teoría del capítulo 2.3.2 Jacobiano de la imagen podemos afirmar que la
ecuación (8) estima el jacobiano de una imagen en todos sus movimientos los cuales son traslaciones en
X,Y,Z y rotaciones en X,Y,Z en forma de una matriz de 2x6 pero debido a que el sistema de seguimiento solar
solo girara con movimientos pan y tilt (ejes X e Y), el jacobiano o matriz de interacción se reduce a un matriz
de 2x2 considerando solo las rotaciones X,Y , por lo que la matriz quedaría finalmente de la siguiente forma
(24).
64
�� � ⎣⎢⎢⎡ − P*λ λ5 � P5λ− −λ5 − *5λ P*λ ⎦⎥⎥
⎤ LN+N,O (24)
Donde P, * son las coordenadas normalizadas para el plano imagen de un objeto en el mundo 3D y λ la
distancia focal de la cámara que será encontrada por medio de la calibración de la cámara.
Al obtener el jacobiano de la imagen de dimensiones 2x2 se puede llegar a la ley de control donde tendría
la siguiente forma (25).
*] � −Y. ��C . �@ − @[� (25)
Donde Y es una ganancia que varía el movimiento final de los actuadores para mejorar la respuesta del
sistema y @ , @[ son los pixeles entregados por el objeto en el plano imagen en tiempo real y los pixeles
deseados que son el centro de la imagen a posicionar respectivamente.
3.3.3 CONTROL VISUAL POR ANGULO DE MOTORES Y MATRIZ DE TRASLACIÓN
Este algoritmo es realizado por mi autoría basado en el paper de J.A,Corrales titulado “Diseño de una mini-
cámara motorizada para el seguimiento de objetos” [33] y en la teoría de matrices de traslación del capítulo
2.2.1 de esta tesis.
Teniendo en cuenta que el sistema a seguir es el plano imagen de dos dimensiones, se considera que el
movimiento de un punto es una translación en ambas coordenadas donde el destino deseado siempre
estará ubicado en el centro de las dimensiones de la imagen, esto quiere decir si las imágenes dadas por la
cámara son de dimensiones �+ Y �U dados en pixeles el destino deseado se la mitad de ambas coordenadas
que serian �\+ y �\, respectivamente, o en pocas palabras si el tamaño de la imagen entregada por la
cámara es de 640x480 pixeles ( resolución de la cámara a utilizar Figura 25 y Figura 26 ), el punto deseado
seria �\+ � 320 (9a���8 y �\, � 240 (9a���8 tal y como se puede apreciar en la Figura 38.
65
Figura 38 Posicionamiento de punto deseado de control. Fuente: Elaboración propia.
Considerando el desplazamiento en el plano imagen de un punto (que es el centroide del objeto a seguir)
es posible interpretar su recorrido al punto deseado con matrices de translación vistas en la ecuación(2)
sobre el plano cartesiano de la imagen.
En la Figura 39 se puede ver la representación del movimiento de un punto en la imagen donde !a es la
distancia de separación de dichos puntos, donde cualquiera de estos puede considerarse como punto
deseado, sin embargo en la solución real el punto deseado será el pixel central en su respectivo eje como
se mencionó anteriormente.
66
Figura 39 Desplazamiento de un punto en el eje X en el plano imagen. Fuente: Elaboración propia.
En la Figura 40 se aprecia a su vez el desplazamiento de un punto en el plano imagen donde !c es la distancia
de separación de dichos puntos, de igual forma cualquiera de esos puntos puede considerarse como el
punto destino , sin embargo el punto deseado para el seguimiento solar siempre estará ubicado en el centro
de la imagen.
Figura 40 Desplazamiento de un punto en el eje Y en el plano imagen. Fuente: Elaboración propia.
67
Por lo que siguiendo la ecuación (2) se puede llegar al siguiente sistema de matrices de translación que se
puede apreciar en la ecuación (26) , donde se puede apreciar la interacción de los puntos de ambos
coordenadas ", #.
1 0 !"0 1 !#0 0 1 $ × /�+�,1 0 � �\a�\c1 $ (26)
Donde �\a �\c son los valores deseados a los cuales los puntos �a y �c deben llegar , por lo que
despejando el sistema de ecuaciones de (26), se puede hallar los valores para su desplazamiento que
vendrían siendo sus separaciones o errores en el sistema de control visual (27) y (28).
!+ � �\a − �+ (27)
!, � �\c − �, (28)
Siguiendo el proceso de encontrar los movimientos final que deben tomar los actuadores según la posición
del objeto se debe llevar los errores encontrados en las ecuaciones (27) y (28) al mundo real 3D ya que los
valores del plano imagen son relativos a la definición de la cámara (pixeles ), en pocas palabras se debe
llevar los errores en pixeles a errores en metros, para ello se utilizó el modelo de pinhole visto en la Figura
17 del capítulo 2.4 y en la Figura 41.
68
Figura 41 Proyección de una cámara según el modelo de Pinhole. Fuente : [27].
Por lo que llevando los valores vistos en (26) y (27) a la escala real 3D y siguiendo el modelo pinhole Figura
41 se consigue los siguientes resultados (29) y (30).
m!+ � ��\a − �+�. ^@+ (29)
m!, � ��\c − �,�. ^@, (30)
Donde: ^ � es la distancia entre el lente de la cámara al objeto deseado en el mundo 3D @a = es la distancia focal de la cámara para el eje X @c = es la distancia focal de la cámara para el eje Y m!a = son las coordenadas en X llevadas del plano imagen en pixeles al plano real 3D en metros m!c = son las coordenadas en Y llevadas del plano imagen en pixeles al plano real 3D en metros
En la proyección de la imagen y centro del lente de la cámara siempre estará ubicado perpendicularmente
a su vez que el movimiento en metros del punto a seguir, que en este caso es el centro de la imagen del sol
69
estará formando con el centro del lente de la cámara un triángulo rectángulo ϴ theta diferentes para cada
punto en el plano imagen X, Y.
Figura 42 Representación de movimiento solar con respecto a la visión de la cámara en el eje X. Fuente: Elaboración propia.
En la Figura 42 se puede ver la representación de cómo será el movimiento del sol frente a la visión de la
cámara, donde se aprecia que el centro del lente siempre será perpendicular a sus imágenes capturadas y
con el punto a seguir (centroide del sol) estará formando un Angulo ϴx el cual será entregado a los
actuadores de la estructura física donde la cámara girara sobre su eje mas no se desplazara.
Figura 43 Representación de movimiento solar con respecto a la visión de la cámara en el eje Y. Fuente: Elaboración propia.
70
En la Figura 43 se puede apreciar de igual manera el movimiento solar en el rango de visión de la cámara en
el eje Y de sus imágenes capturadas , donde el lente de la cámara estará perpendicularmente siempre con
respecto a sus imágenes capturadas y que conjuntamente con el movimiento del centroide del sol forman
un triángulo rectángulo con un ángulo ϴy, el cual será entregado a la estructura física para el seguimiento
real.
Por ultimo para obtener los valores de los ángulos ϴx y ϴy que definirán los movimientos para el
seguimiento solar se procede a encontrar primeramente la tangente en ambas coordenadas viendo que los
recorridos forman triángulos rectángulos (31) y (32).
tan �+ � m!+^ (31)
tan �, � m!,^ (32)
Teniendo las tangentes de las posiciones X Y (31) y (32) respectivamente, se puede ver que reemplazando m!a y m!c de la ecuación de la (29) y (30) se obtiene las siguiente expresiones (33) y (34):
tan �+ � �\a − �+@+ (33)
tan �, � �\c − �,@, (34)
Donde se puede concluir en (33) y (34) que la distancia ^ entre el objeto y el lente de la cámara no influye
en el movimiento puesto que en esencia solo se seguirá el centroide de la figura solar que puede cambiar
de forma según su brillo en el transcurso del día por lo que los ángulos de rotación no dependen de ^.
Por último, se puede encontrar los valores de los Angulo encontrando el arco tangente de ambos casos los
cuales estarán medidos en radianes (35) y (36).
71
�+ � tanv4� �\a − �+@+ � (35)
�, � tanv4� �\c − �,@, � (36)
En las ecuaciones (35) y (36) se puede apreciar que tanto el Angulo para el eje X y Y respectivamente no
dependen de la distancia entre el objeto y lente de la cámara , pero también a diferencia del paper de
J.A,Corrales titulado “Diseño de una mini-cámara motorizada para el seguimiento de objetos” [33], estos
ángulos entregaran valores negativos en ciertas posiciones de la imagen ( antes del centro de la imagen
capturada por la cámara) , los cuales serán interpretados directamente por las fórmulas (35) y (36) para el
cambio de sentido de giros de los motores, en comparación de Corrales [33] donde indica que después de
usar el algoritmo se deben reinterpretar los valores entregados por su matriz de rotación ya que estos
siempre serán positivos.
3.3.4 CONTROL VISUAL DE SEGUIMIENTO UTILIZANDO JACOBIANO DE
VELOCIDADES
Este cuarto y último método fue desarrollado por mi persona utilizando el método del punto anterior 3.3.3
“Control visual por Angulo de motores y matriz de translación” y el artículo de Chaumette y Santos titulado
“Tracking a moving object by visual Servoing” [42], donde utiliza el jacobiano de la imagen o también
llamada matriz de interacción en un servomecanismo de dos ejes, trabajando con la ley de control visual
vista en la ecuación (25) .
En este método se consideró utilizar el jacobiano de velocidades que tomaran los actuadores en la
estructura encargada de dar movimiento al sistema, por lo que utilizando ya de movimiento de las
posiciones angulares vistos en (33) y (34), se proceden a derivarlos para encontrar sus velocidades angulares
en el tiempo .
�\a � @+ . tan �+ � �+ (37)
�\c � @,. tan �, � �, (38)
72
�\aA � @+ . sec �+5 . �+A (39)
�\cA � @, . sec �,5 . �,A (40)
Donde @a c @c son las distancias focales en los ejes XY de la cámara a utilizar (37) y (38). Por lo tanto son
constantes y �a c �c son las coordenadas del centroide del objeto (sol) en la plano imagen XY
respectivamente que al ser derivado parcialmente se comportan como constantes por lo que desaparecen
en las ecuaciones (39) y (40), que reescritas en forma matricial toma la forma siguiente.
En (41) se puede apreciar la distribución matricial de las ecuaciones que se ven en (39) y (40), donde se
puede identificar el jacobiano de las velocidades angulares ; (matriz cuadrada).
Finalmente utilizando la ley de control expuesta en la ecuación (9), se tiene la siguiente expresión (42).
*] � −Y. ;Z. ��� (42)
Donde: �6 � Son las velocidades en XY que serán entregadas a los actuadores del sistema físico para el seguimiento
solar. _ � Es la ganancia que será la encargada de variar la respuesta de control visual.
73
;Z � Es la inversa del jacobiano de velocidades. � � Es el error de control definido por los puntos deseados en pixeles menos los puntos del centroide del
sol tomados en tiempo real dados también en pixeles �\a − �a y �\c − �c el plano imagen XY
respectivamente.
3.4 PROCESO CALIBRACION DE LA CAMARA
En esta sección se procede a calibrar la cámara a utilizar la cual es de la marca Micronics y modelo Fratello-
W368, donde se puede apreciar a grandes rasgos sus dimensiones Figura 44, y como se comentó
anteriormente es una cámara sencilla de 640x480 de resolución máxima, suficiente para detectar el sol en
contraste con el cielo.
Figura 44 Dimensiones de Cámara Modelo Micronics y modelo Fratello- W368. Fuente: Elaboración propia.
La calibración tendrá como finalidad encontrar las distancias focales de la cámara que son requeridas para
el control visual descritos anteriormente, por lo que es importante hacerlo para cualquier cámara que pueda
ser seleccionada o reemplazada no importa si las cámaras comparten la misma marca y modelo, ya que
internamente su estructura óptica es diferente. Basándonos en el método de Z. Zhang visto en [29] se
seguirá el toolbox de calibración que ofrece J. I. Bouguet de [30] para Matlab. Para ello se elaboró un
elemento de calibración que es un tablero de ajedrez de 8x8 cuadrados de 30x30mm cada uno Figura 45.
74
Figura 45 Tablero de ajedrez de 8x8 cuadrados para calibración por el método de Zhang. Fuente: Elaboración propia.
Se tomaron 20 muestras del tablero tomadas por la cámara a calibrar, para así obtener un patrón de
calibración teniendo en cuenta las dimensiones del tablero, también es importante considerar que se debe
tomar las 20 muestras de diferentes puntos de vista con respecto a la cámara para tener una mejor
calibración.
Al ejecutar el toolbox de Bouguet para Matlab Figura 46 en la carpeta donde se guardó las imágenes, la
herramienta es capaz de encontrar todas las imágenes que se encuentra en su carpeta Figura 47.
Figura 46 Menú para Calibración de Cámara usando el Toolbox de Bouguet para Matlab. Fuente: Elaboración propia.
75
Figura 47 Identificación de imágenes a calibrar por el Toolbox de calibración. Fuente: Elaboración propia.
Seguidamente se procede a seleccionar de forma manual cada esquina que servirá para generar el patrón
de calibración, identificando las posiciones de los cuadrados del tablero Figura 48.
Figura 48 Identificación de esquinas de tablero de ajedrez para calibración. Fuente: Elaboración propia.
76
De esta forma al proporcionar a Matlab la cantidad de cuadrados en X, Y dentro del área que se seleccionó
Matlab puede encontrar el resto de cuadrados en contraste Figura 49, también es importante indicarle el
tamaño de cada cuadrado (30x30mm) puesto que esto servirá para la ubicación y determinación de la
distancia focal de la cámara a calibrar, de esta forma también se puede identificar las esquinas internas de
los cuadrados dentro del área seleccionada Figura 50.
Figura 49 Detección de esquinas y cantidad de cuadrados dentro del área seleccionada. Fuente: Elaboración propia.
Figura 50 Identificación de esquinas internas del tablero de calibración. Fuente: Elaboración propia.
77
Este proceso se debe repetir para las 20 imágenes tomadas por la cámara. Finalmente se puede observar
las proyecciones de las 20 imágenes tomadas Figura 51, representando los parámetros extrínsecos desde el
centro del lente de la cámara.
Se puede apreciar también en la Figura 52 el error de proyección de la cámara en ambas coordenadas X, Y
que es menor a 1 pixel, por lo que se puede considerar que la calibración es buena.
Figura 51 Parámetros extrínsecos centrados en la cámara. Fuente: Elaboración propia.
Figura 52 Error de proyección en Pixeles menores a 1. Fuente: Elaboración propia.
78
Finalmente se puede ver los valores finales de calibración donde se muestran los resultados de los
parámetros intrínsecos (distancia focal, punto principal del centro óptico, etc.) Figura 53.
Figura 53 Parámetros intrínsecos de la cámara. Fuente: Elaboración propia.
La variable más relevante para el control visual es la distancia focal de la cámara @6 Figura 54, los cuales
Matlab entrega dos valores en un vector, donde el primer valor está destinado para el eje X (Fx) y el segundo
para el eje Y (Fy), esto es importante ya que nos permite integrar el modelo de la cámara según pinhole que
se puede ver en la Figura 41.
Figura 54 Distancias Focales de la cámara para XY en el plano imagen. Fuente: Elaboración propia.
3.5 IMPLEMENTACION DE LA ESTRUCTURA DE SEGUIMIENTO
Para el diseño e implementación del prototipo que será capaz de realizar el seguimiento solar, se consideró
usar celdas solares puesto que estas son ligeras y no cuentan con los armazones ni marcos que usualmente
vienen en los paneles solares comerciales (aumentando su peso considerablemente) , sin embargo, las
celdas solares tienen poca potencia, por lo que se tiene que proceder a enseriar cada una, o colocarlas en
paralelo para aumentar su potencia (de esta forma están construidos todos los paneles solares).
79
Figura 55 Panel solar policristalino 7V 100mA. Fuente: Elaboración Propia.
Se usó un pequeño panel que está compuesto de celdas solares policristalinas a 7V y 100mA, el cual está
cubierto en resina dándole gran resistencia y ligereza. Sus especificaciones técnicas se pueden ver en la
Tabla 3.
CARACTERISTICAS DE LA CELDA SOLAR
Flexibilidad No
Material Policristalino
Portatil Sí
Voc 8.4V
Imp 100mA
Espesor 2.5mm
Isc 110mA
Vmp 7V
Estructura del Producto resina epoxi+celdas+PCB
WMP 0.7W
Tamaño 110*60 Tabla 3 Características de la celda solar.
Fuente: Elaboración Propia.
Teniendo en cuenta que estos pequeños paneles entregan muy poco amperaje (100 mA) se procedió a
utilizar 10 paneles de este tipo (Figura 56) en serie para incrementar su corriente a 1A y así poder monitorear
su rendimiento con más facilidad y mejor resolución.
80
Figura 56 Paneles Solares policristalino. Fuente: Elaboración propia.
Se tomó en cuenta según los algoritmos de control visual que el panel debe girar en su propio eje ya sea en
X o Y, por lo que se llegó al diseño siguiente Figura 57.
Figura 57 Diseño de estructura de Seguidor Solar. Fuente: Elaboración propia.
81
Figura 58 Estructura Digital para seguidor Solar vista desde la parte inferior. Fuente: Elaboración propia.
Donde en la Figura 58 se puede apreciar a detalle la implementación de los actuadores para que realicen el
movimiento en el plano XY respectivamente, basándose en una base rotatoria y motores DC con encoder
para el servo movimiento.
Figura 59 Estructura de Seguidor Solar visto de perfil. Fuente: Elaboración propia.
En la Figura 59 se puede apreciar los movimientos del diseño de la estructura del seguidor solar donde el
eje representado de color rojo generara el desplazamiento en el eje X (movimiento pan) y el eje de color
82
Azul representara el movimiento en el eje Y (movimiento tilt) donde en un sistema fijo (paneles y estructura
sin movimiento ) el eje X de la Figura 59 es conocido como posición “Azimutal” e “inclinación” para el eje
Y, estos nombres conocidos para la ubicación de un sistema fijo de paneles fotovoltaicos, lo cual la
estructura para sistemas de seguimiento solar Figura 59 ira variando su posición de forma autónoma.
Se seleccionó motores DC con encoder magnético de dos canales de modelo JGY-371 Figura 60 él cual tiene
incorporado un sistema de engranajes de autobloqueo, que permite bloquear la posición de su eje aun
cuando no este energizado, por lo que su consumo es mínimo, y elevado torque.
Figura 60 Motor DC JGY-371 Autobloqueo, Fuente: Elaboración propia.
Sus características generales son las siguientes:
Voltaje: 12 V DC
Velocidad sin Carga: 90RPM A 12VDC
Torque de salida (Kg.cm): 1.3
Velocidad con Carga: 70RPM a 12VDC
Corriente de Carga: <0.2Amp
Reductora: 1:63
Pulsos por vuelta: 11 pulsos por canal
En la se puede apreciar la estructura armada con la cámara utilizar Figura 61.
83
Figura 61 Estructura de Seguimiento Solar sin Panel incorporado. Fuente: Elaboración propia.
En la Figura 61 se puede ver la estructura armada físicamente sin considerar el panel solar, y en la Figura 62
y Figura 63 se puede apreciar la estructura con los paneles solares de 7v a 100 mA colocados en serie para
llegar a una corriente de 1A, y distribuido alrededor de la cámara que debe estar ubicada en el centro del
sistema fotovoltaico .
84
Figura 62 Estructura de Seguimiento Solar con panel Fotovoltaico 7v 1A. Fuente: Elaboración propia.
Figura 63 Estructura de Seguimiento Solar con panel Fotovoltaico 7v 1A. Fuente: Elaboración propia.
85
3.6 CONTROL DE MOTORES PARA EL MOVIMIENTO DE LA ESTRUCTURA
En este trabajo se optó por el uso de motores DC descritos en la Figura 60, ya que a diferencia de otros
motores (motores paso a paso, servomotores, etc.) estos tienen un consumo pequeño de corriente y
además gracias al modelo de su caja reductora “autobloqueo” este no genera gran esfuerzo cuando trabaja
con peso. Existe diversidad de motores con este tipo de ventaja (reductora) que pueden llevar desde 1kg
hasta 60kg en su eje a más. En el caso del diseño de este prototipo se seleccionó el motor ya mencionado
Figura 60 , pues este llevara el panel solar y no representa un peso excesivo.
Sin embargo estos tipos de motores Figura 60, no cuentan con un sistema de posicionamiento angular como
otros servomotores que ya existen en el mercado, por lo que es importante que estos motores tengan
incorporados un encoder de cuadratura de dos canales AB Figura 64, para poder realizar un sistema de
control y poder controlar su velocidad, ángulo, posición, según nuestra necesidad.
Figura 64 Distribución de pines de control de Encoder. Fuente: Elaboración propia.
En la Figura 64 se puede apreciar la distribución de los pines del encoder que viene incorporado en el motor
DC , donde nos podemos dar cuenta que este es de tipo magnético y utiliza dos sensores de efectos Hall
para realizar su lectura digital.
Para el control de la posicion de motores DC primeramente se debe encontrar la resolucion del encoder por
lo que se usara la ecuacion (43) visto en el capitulo 2.7.3.
� � �� × � × � (43)
Donde R : Es la resolución del encoder para una precisión cuádruple, mH: es el número de cuentas por
revolución del eje del motor (JGY-371). en nuestro caso 11, s: es el número de estados generado por los
canales AB. En nuestro caso 4, r : es la relación de reducción de la caja reductora (ratio). En nuestro caso
63 cuentas por revolución.
Donde considerando la información siguiente para el cálculo:
86
Reductora: 1:63
Pulsos por vuelta: 11 pulsos por canal
Por lo tanto se obtiene lo siguiente (44):
� � �� × � × �� � ���� (44)
Sin embargo, se debe considerar que la estructura diseñada también cuenta con un reductora en ambos
ejes (XY), donde la relación de sus reducciones para el eje X es de 1:6.6 (en una vuelta del eje de la base de
la estructura, el eje del motor debe girar 6.6 veces), y para el eje Y la relación de su reducción es de 1:2 (por
cada vuelta que del eje de la estructura en Y, el motor debe girar dos veces).
Por lo que la resolución final se puede apreciar en (45) y (46).
�� � ���� × �. � � ��� . � (45)
�¡ � ���� × � � �� (46)
Se implementó un control PID basándose en la teoría de control que se puede apreciar en la siguiente
expresión (47) [43].
El control PID (47) se utilizó para el control angular de los motores DC, puesto que estos tienen incorporados
encoder de doble canal se puede lograr el comportamiento igual a servomotores y así poder controlar los
ángulos que serán entregados por el control visual. Donde se considera para el control angular de los
motores � como el error que es la diferencia entre el ángulo deseado y el ángulo recibido interpretado por
los encoders.
m � _]� � _¢ £ � \¤ � _¥ \�\¤ (47)
87
Figura 65 Control PID digital para el control angular de motores DC ANEXO 1. Fuente: Elaboración propia.
En la Figura 65 se muestra el control PID de la ecuación (47) llévalo a su forma digital, que será escrito como
parte del código para el control angular de motores para que posteriormente el programa sea cargado al
microcontrolador a usar, el cual servirá como interfaz entre el control visual y el control angular de los
motores en la estructura que permitirá el movimiento del panel solar.
3.6.1 MICROCONTROLADOR ATMEGA328
Para la implementación de la expresión de control en (47), se utilizó el microcontrolador Atmega328 Figura
66 que puede ser programado en el IDE Arduino, que es un entorno de programación libre y que proporciona
diferentes herramientas en su software, como facilidad de monitoreo por Serial, facilidad de programación
y depuración, etc. . el microcontrolador Atmega328p tiene las siguientes características principales:
Voltaje de operación: 5V
Entradas y Salidas Digitales: 14
Canales PWM: 6
Entradas analógicas: 8
Memoria Flash: 32 Kb
Velocidad de reloj: 16Mghz (para IDE arduino)
Figura 66 Atmega 328 AU – Atmel. Fuente: Elaboración propia.
88
La posición de los ángulos se calcularon utilizando la siguiente expresión (48) , que es el resultado de un
regla de tres simple, donde el ángulo va variando con respecto a los pulsos contados por el microcontrolador
provenientes del encoder magnético, donde se consideró las resoluciones encontradas en (45) y (46) que
equivalen a una vuelta entera, es decir 360 grados.
¦ � § × ���� (48)
Donde:
P: Es la posición relativa en grados.
n: Es el número de cuentas generados.
R: Es la resolución del encoder para una precisión cuádruple dado en cuentas por revolución. En
nuestro caso 18295.2 para el motor en X y 5544 para el motor en Y.
En la Figura 67 se puede apreciar las líneas de código correspondientes al control PID para el control de
ángulos de los motores del sistema, basando en la expresión vista en (47). Este código es independiente al
control visual, puesto que solo controla los ángulos que se le entregaran como setpoint al microcontrolador
mediante datos serial. En el ANEXO 1 se puede mostrar el código completo y a detalle.
Figura 67 Ecuación de control PID programado en el microcontrolador atmega328. Fuente: Elaboración propia.
89
Figura 68 Esquemático de conexiones para el control angular de 2 motores DC. Fuente: Elaboración propia.
En la Figura 68 se puede apreciar el diagrama de conexiones para el control de ángulo de dos motores DC ,
utilizando el microcontrolador Atmega328 de Atmel y un controlador de motores (puente H ) de código
L293D, que es un integrado compuestos de transistores BJT que permiten amplificar las señales entregadas
por el microcontrolador hacia el motor.
3.7 PRUEBAS DE FUNCIONAMIENTO DE CONTROL VISUAL
En este punto se procede a implementar los 4 sistemas de control visual visto en el punto 3.3
“MODELAMIENTO DEL SISTEMA DE CONTROL VISUAL” para comprobar el correcto funcionamiento del
sistema, y seleccionar el control que tenga mejores prestaciones y ser utilizado en las pruebas reales de
movimiento del sol.
Primeramente, se realizó la prueba con una luz artificial (linterna) para poder probar el tiempo de estabilidad
del sistema frente a movimientos aleatorios, con la finalidad de entregar movimientos bruscos o rápidos en
el sistema y así tener una mejor calibración, puesto que el movimiento solar es lento en el transcurso del
día.
El proceso se puede apreciar en la Figura 69 , donde el encargado de enviar los valores de las imágenes
tomadas es la cámara seleccionada, que posteriormente se calculará el centroide de la luz solar previamente
filtrada, seguidamente ingresa al cálculo del error de control que con la entrega del setpoint que siempre
será constante (pixeles del punto medio de la imagen ) 320X240pixeles, servirá para la aplicación del control
visual ( las 4 formas descritas en el capítulo 3.3), estos valores entregados por el sistema de control visual
implementado serán enviados a los motores de la estructura que a su vez moverá el panel solar y la cámara
digital, por lo que el bucle de control volverá a repetirse.
90
Figura 69 Diagrama de Bloques del sistema. Fuente: Elaboración propia.
3.7.1 IMPLEMENTACION DEL PRIMER METODO
Primeramente, se procede a implementar el primer sistema de control Visual basado en el paper de
J.A,Corrales titulado “Diseño de una mini-cámara motorizada para el seguimiento de objetos” [33], El cual
calcula los ángulos de movimientos de los motores a partir de la matriz de rotación y sus parámetros
deseados. El código completo de Matlab se puede ver en el ANEXO 2.
Figura 70 Respuesta de error en el eje X dado en pixeles. método 1. Fuente: Elaboración propia.
91
Figura 71 Respuesta de error en el eje Y dado en pixeles. método 1. Fuente: Elaboración propia.
Figura 72 Respuesta de error Euclidiano - método 1. Fuente: Elaboración propia.
92
En la Figura 70 y Figura 71 se muestra la respuesta al movimiento horizontal y vertical respectivamente, se
puede apreciar la respuesta del sistema dados en pixeles, donde los errores tienden a cero en un laptop no
mayor de 4 segundos, se debe tener en cuenta que dichas pruebas se hizo con luz artificial y con
movimientos rápidos y alejados del setpoint, por lo que el comportamiento en el sol será estable.
En la Figura 72 se puede apreciar también el error euclidiano, que en promedio con los dos errores
anteriores se estabiliza en cero dentro de los 3 segundos. Sin embargo, ya que el primer método de control
solo calcula los ángulos de movimientos se puede observar en la Figura 71 que el sistema permanece
estático en el valor del error =20 , esto quiere decir que para diferencias en pixeles de 20 el eje Y no genera
la fuerza necesaria para poder mover el eje, por lo que se le puede agregar una ganancia adicional con el fin
de llegar a estabilizarse. Sin embargo, no se le agrego dicha ganancia ya que se pretende analizar su
respuesta según los valores que entrega el sistema de control, además que también en los métodos
siguientes se evaluara dicho punto.
3.7.2 IMPLEMENTACION DEL SEGUNDO METODO
El segundo método se basa en el control Visual una ganancia en el sistema que, en conjunto con el error,
permitirá variar la respuesta del sistema, en este segundo método también se considera el jacobiano de la
Imagen o matriz de interacción, este método también se desarrolló en Matlab por lo que se puede apreciar
el código completo en el ANEXO 3.
Figura 73 Respuesta de error en el eje X dado en pixeles. método 2. Fuente: Elaboración propia.
93
Figura 74 Respuesta de error en el eje Y dado en pixeles. método 2. Fuente: Elaboración propia.
Figura 75 Respuesta de error Euclideano - método 2. Fuente: Elaboración propia.
94
En la Figura 73 se puede apreciar la respuesta del sistema de control visual número 2, se puede decir
entonces que el sistema se estabiliza dentro de 2 segundos para el eje X del plano imagen , en la Figura 74
a diferencia del método anterior para el eje Y Figura 71 se puede ver que el sistema genera una oscilación
pequeña en el segundo 2.5 aproximadamente de valores menores a 50 pixeles, donde finalmente logra
estabilizarse en el segundo 8, esto se debe a que este método a deferencia del primero utilizar el error de
control (pixel deseado – pixel entregado) y una ganancia multiplicada en el sistema, esto permite que los
motores de la estructura lleguen a un error cero para valores pequeños como 50 pixeles ( Figura 74) ,
alcanzando así los puntos deseados. En la Figura 75 se puede observar la respuesta del error euclidiano
donde genera un gran pulso en el segundo 2 para estabilizarse finalmente en el segundo 8.
3.7.3 IMPLEMENTACION DE TERCER METODO
El tercer método está basado en el primero donde basándonos en una matriz de trasformación se obtiene
las posiciones angulares que debe tener el sistema para coincidir el punto deseado con el punto leído dados
en pixeles (capítulo 3.3.3). En este caso se utilizó matrices de traslación y el modelo de pinhole, también se
consideró agregar una ganancia que pueda llevar al sistema a sus coordenadas deseadas. Este sistema no
tiene incorporado el error de control ya que los cálculos previstos por sus matrices lo consideran de forma
no directa. El código completo puede apreciarse en el ANEXO 4.
Figura 76 Respuesta de error en el eje X dado en pixeles. método 3. Fuente: Elaboración propia.
95
Figura 77 Respuesta de error en el eje Y dado en pixeles. método 3. Fuente: Elaboración propia.
Figura 78 Respuesta de error Euclideano - método 3. Fuente: Elaboración propia.
96
En la Figura 76 y Figura 77 se puede apreciar las respuesta del sistema de control basado en matrices de
traslación a diferencia del primer método la respuesta del error en el eje X y eje Y llegan a un error cero, lo
que significa que el sistema llega a sus valores deseados, esto se debe a que el sistema tiene incorporado
una ganancia para cada eje, lo que permite que el sistema llegue a un error cero en menos de 2 segundos
para X, y un error cero en Y dentro de 3 segundos, donde se puede apreciar una ligera oscilación que es
estable en el 10mo segundo. La respuesta del error euclidiano se puede apreciar en la Figura 78.
3.7.4 IMPLEMENTACION DEL CUARTO METODO
Por último, se tiene la implementación del cuarto método que se basa en el segundo, donde la ley de control
depende de una matriz jacobiana, el error control (posición del objeto en pixeles) y una ganancia que, al
multiplicar por el error, varia su valor de forma proporcional para poder ser interpretada por los actuadores.
En este caso se usa como matriz jacobiana las derivadas de las posiciones angulares en el plano imagen XY,
donde se obtiene sus velocidades angulares en el tiempo, las cuales permiten interactuar con los errores de
posición del objeto a seguir (sol) y su respectiva ganancia proporcional para aumentar la respuesta del
sistema de control. El código completo de este método esta también desarrollado en Matlab y se puede
apreciar en el ANEXO 5.
Figura 79 Respuesta de error en el eje X dado en pixeles. método 4. Fuente: Elaboración propia.
97
Figura 80 Respuesta de error en el eje Y dado en pixeles. método 4. Fuente: Elaboración propia.
Figura 81 Respuesta de error Euclidiano - método 4. Fuente: Elaboración propia.
98
En la Figura 79 y Figura 80 se puede apreciar la respuesta de control visual utilizando el jacobiano de
velocidades, de igual forma se puede ver que el sistema se estabiliza para para tiempo menores a dos
segundos para el eje X y menores a 3 segundos para el eje Y existiendo una ligera oscilación del sistema
para errores dentro del rango de 50 pixeles ( se debe considerar que la resolución de la cámara es de
640x320 pixeles) que termina estabilizándose en el segundo 10. En la Figura 81 se puede apreciar la
respuesta del error euclidiano
3.7.5 EVALUACION
Se tiene en cuenta que en el método 2, 3 y 4 donde se le considera una ganancia, se puede variar la forma
y velocidad de respuesta del sistema aumentando o disminuyendo esta variable, sin embargo se debe ser
muy cuidadoso con la sintonización de dicha ganancia, esta podría hacer que el sistema nunca se estabilice,
oscilando por un tiempo indeterminado ( para valores altos en la ganancia ) o el sistema demore en
estabilizarse ( para valores bajos en la ganancia ) , por lo que esto dependerá del tamaño del sistema, la
carga a soportar, los motores a utilizar, el sistema de control PID para la ubicación de los ángulos de los
motores , etc.
En este caso, todas las ganancias de control de los tres métodos mencionados fueron configuradas a un
valor de K = 0.2, para obtener las respuestas vistas en las figuras anteriores, para así obtener un movimiento
suave por parte de la estructura.
El primer método (Algoritmo de seguimiento mediante calculo angular de motores y matriz de rotación)
frente al movimiento en X la respuesta se estabiliza en el segundo 3.1 pero antes permanece un segundo
en el error de valor 40 pixeles, lo mismo ocurre para el eje Y que el error permanece un segundo en el error
de valor -40 pixeles pero a diferencia del eje X, en el eje Y el sistema se mantiene en un error de 20 , debido
a que este método no tiene ganancias que puedan mejorar la velocidad de la respuesta.
El Segundo método (Control Visual de seguimiento utilizando el jacobiano de la imagen) frente al
movimiento en X la respuesta se estabiliza en dos segundos aproximadamente para un error de 160 pixeles,
en el movimiento Y para un error de -85pixeles la respuesta en dicho tiende a oscilar desde el tercer segundo
manteniendo el error cerca de los 47pixeles por 5 segundos, para luego estabilizarse en el octavo segundo.
El tercer método (Control visual por ángulo de motores y matriz de traslación) frente al movimiento en X la
respuesta se estabiliza en 1.2 segundos para un error de 140 pixeles, en el movimiento en Y el error inicial
que es 200 pixeles disminuye hasta estabilizarse en el segundo 3 para después oscilar por un lapso de 4
segundos aproximadamente y llegar al error cero en el segundo 9.5 , a diferencia del Segundo método, el
tercer método tiene una ventaja de 1 segundo aproximadamente para el error en X
El cuarto método (Control visual de seguimiento utilizando jacobiano de velocidades) frente al movimiento
en X la respuesta se estabiliza en 1.8 segundos para un error de 110 pixeles, sin embargo, las oscilaciones
en Y son muy grandes y el control en Y demora en estabilizar hasta el segundo 10.
Teniendo en cuenta los comportamientos de cada método descritos anteriormente, las respuestas en el eje
X son muy similares, y todas están llegan a su estabilidad (error = 0) entre 1 y 2 segundos y para el eje Y
entre 8 y 10 segundos, todos ellos para una ganancia de 0.2 con excepción del método 1, que no tiene
ganancia en su ley de control. También se debe tener en cuenta que la demora de estabilidad con
oscilaciones presentes en el eje Y son causadas debido a que el eje del motor en ese punto es el que soporta
99
el mayor peso del panel solar a diferencia a el motor para el eje X que está colocado en la base con una
reductora en su base.
Por ende, existen dos sistemas que considerando el peso del panel tienen mejor respuesta los cuales son;
el segundo método (Control Visual de seguimiento utilizando el jacobiano de la imagen) el cual se estabiliza
en 2 segundos para el eje X y para el eje Y el tiempo para llegar a la estabilidad es de 8 segundos. Y el tercer
método (Control visual por ángulo de motores y matriz de traslación) que se estabiliza en 1.2 segundos para
el eje X y para el eje Y el tiempo para llegar a la estabilidad es de 9.5 segundos. Los dos métodos restantes
quedan descartados ya que el primer método no contiene ganancias en su algoritmo, y el cuarto método
presentan oscilaciones constantes para el eje Y.
Entre el segundo y tercer método analizados, se excluyó el segundo método puesto que los parámetros (
valores para el motor en X y Y) de dicho método usualmente se usan para indicar a qué velocidad deben
girar los motores para alcanzar la estabilidad o punto deseado, sin embargo considerando que este sistema
seguirá al Sol y que el Sol tiene movimientos lentos en el transcurso del día el error de la ley de control será
pequeño y esto puede ocasionar que el motor tenga puntos muertos o que no gire hasta encontrar un error
considerablemente alejado del centro del Sol en el plano imagen. Por lo que se elige el tercer método que
trabaja directamente con los ángulos del eje del motor, el cual interpretará a que ángulos deben estar los
motores dependiendo la posición del centro del Sol en el plano imagen.
100
4 RESULTADOS Para las pruebas con el sol como objeto a seguir se colocó al lente de la cámara un filtro de luz, el cual tiene
como objetivo disminuir la intensidad del destello solar que puede afectar el lente y quemar los sensores
de luz que tiene la cámara internamente, ya que el lente de la cámara estará expuesto directamente al sol
durante todo el día.
Para ello se eligió usar un filtro oscuro número 12 que son usados para soldadura por arco eléctrico, que
tienen la función de proteger los ojos de los soldadores al realizar su trabajo. Posteriormente se procedió a
extraer un sector en forma circular del filtro para adaptarlo en la cámara (Figura 82 y Figura 83).
Figura 82 Filtro de Soladura de Arco N°12. Fuente: Elaboración propia.
101
Figura 83 Cámara con filtro solar adaptado fuera del lente. Fuente: Elaboración propia.
Para encontrar la determinación de la eficiencia energética se empleó la ecuación (49) que está incluida en
la norma internacional ISO 50001 sobre sistemas de gestión de la energía que fue publicado en el 2018 [44]
Donde en la ecuación (52) PSERIE es el valor de la potencia de los módulos en serie, que para 30 módulos
es de 9600W , N°MODULOS es el número de módulos instalados en la Central Solar Intipampa, el cual tiene
una cantidad de 4604 módulos, HORAS SOLARES es el valor de las horas que aprovecha el sistema de
seguimiento de la Central Solar Intipampa, y por ultimo 365 equivale a los días del año para un cálculo anual.
Reemplazando los valores se obtiene la siguiente potencia anual: ¦³¯¨¬«ª ¬±� � ��� × ���� × �. � × �� � ��, ��®´¹/ ñ¼
Que según la Tabla 11 la potencia anual del sistema que asegura la Central Solar Intipampa es de
108,40GWh/año , el cual es un valor aproximado y está dentro del rango de las estimaciones.
Para la estimación del proyecto de seguimiento solar por visión artificial sobre la planta real “Central Solar
Intipampa” se consideró hacer las pruebas para un sistema de seguimiento de un eje, esto implica
únicamente utilizar el movimiento “tilt” y el movimiento “pan” no variará del sistema de seguimiento solar
desarrollado, con el fin de que ambos sistemas se asemejen.
Los resultados fueron los siguientes para dos días despejados.
13
6
5 D
E N
OV
IEM
BR
E 20
20 (
CIE
LO D
ESP
EJA
DO
)
HO
RA
C
OR
RIE
NTE
(A
) V
OLT
AJE
(V
) P
OTE
NC
IA (
W)
PO
TEN
CIA
CO
NSU
MID
A
EFIC
IEN
CIA
EN
ERG
ETIC
A (
%)
EFIC
IEN
CIA
E. T
OTA
L
06:
00 h
ora
s 0
0.5
3 0
0 0
0
07:
00 h
ora
s 0
.484
8
.26
3.9
978
4 1
.186
2 4
4.4
2044
444
31
.240
4444
4
08:
00 h
ora
s 0
.86
8.6
8 7
.456
909
091
1.1
862
82
.854
5454
5 6
9.6
7454
545
09:
00 h
ora
s 0
.923
636
364
8.0
6 7
.444
509
091
1.1
862
82
.716
7676
8 6
9.5
3676
768
10:
00 h
ora
s 0
.95
8.1
9 7
.773
054
545
1.1
862
86
.367
2727
3 7
3.1
8727
273
11:
00 h
ora
s 0
.957
8
.21
7.8
569
7 1
.186
2 8
7.2
9966
667
74
.119
6666
7
12:
00 h
ora
s 0
.968
181
818
8.2
4 7
.977
818
182
1.1
862
88
.642
4242
4 7
5.4
6242
424
13:
00 h
ora
s 0
.949
090
909
8.2
4 7
.820
509
091
1.1
862
86
.894
5454
5 7
3.7
1454
545
14:
00 h
ora
s 0
.932
727
273
8.3
6 7
.797
6 1
.186
2 8
6.6
4 7
3.4
6
15:
00 h
ora
s 0
.850
909
091
8.2
8 7
.045
527
273
1.1
862
78
.283
6363
6 6
5.1
0363
636
16:
00 h
ora
s 0
.877
272
727
8.4
8 7
.439
272
727
1.1
862
82
.658
5858
6 6
9.4
7858
586
17:
00 h
ora
s 0
.323
636
364
8.4
8 2
.744
436
364
1.1
862
30
.493
7373
7 1
7.3
1373
737
18:
00 h
ora
s 0
.01
0 0
0 0
0
TOTA
L:
64
.405
5097
1 5
3.2
5320
202
Tab
la 1
3 R
esu
ltad
os
de
Ren
dim
ien
to -
Sis
tem
a co
n S
egu
imie
nto
de
1 e
je 5
/11
/20
20
. Fu
ente
: Ela
bo
raci
ón
pro
pia
.
137
012345678910
0
0.2
0.4
0.6
0.81
1.2
06
:00
ho
ras
07
:00
ho
ras
08
:00
ho
ras
09
:00
ho
ras
10
:00
ho
ras
11
:00
ho
ras
12
:00
ho
ras
13
:00
ho
ras
14
:00
ho
ras
15
:00
ho
ras
16
:00
ho
ras
17
:00
ho
ras
18
:00
ho
ras
CORRIENTE (A)
VOLTAJE (V)
HO
RA
S D
EL D
IA (
H)
Gra
fica
de
ren
dim
ien
to
CO
RR
IEN
TEV
OLT
AJE
Figu
ra 1
05
Gra
fica
de
Ren
dim
ien
to -
Sis
tem
a co
n S
egu
imie
nto
de
1 e
je 5
/11
/20
20
. Fu
ente
: Ela
bo
raci
ón
pro
pia
.
13
8
0123456789
0
10
20
30
40
50
60
70
80
90
10
0
06
:00
ho
ras
07
:00
ho
ras
08
:00
ho
ras
09
:00
ho
ras
10
:00
ho
ras
11
:00
ho
ras
12
:00
ho
ras
13
:00
ho
ras
14
:00
ho
ras
15
:00
ho
ras
16
:00
ho
ras
17
:00
ho
ras
18
:00
ho
ras
POTENCIA (W)
EFICIENCIA ENERGETICA(%)
HO
RA
S D
EL D
IA (
H)
Gra
fica
de
Pote
nci
a y
Efic
ien
cia
PO
TEN
CIA
EFIC
IEN
CIA
EN
ERG
ETIC
AEF
ICIE
NC
IA E
. TO
TAL
Figu
ra 1
06
Gra
fica
de
Po
ten
cia
y Ef
icie
nci
a -
Sist
em
a co
n S
egu
imie
nto
de
1 e
je 5
/11
/20
20
. Fu
ente
: Ela
bo
raci
ón
pro
pia
.
139
6 D
E N
OV
IEM
BR
E 20
20 (
CIE
LO D
ESP
EJA
DO
)
HO
RA
C
OR
RIE
NTE
(A
) V
OLT
AJE
(V
) P
OTE
NC
IA (
W)
PO
TEN
CIA
CO
NSU
MID
A
EFIC
IEN
CIA
EN
ERG
ETIC
A (
%)
EFIC
IEN
CIA
E. T
OTA
L
06:
00 h
ora
s 0
0.5
3 0
0 0
0
07:
00 h
ora
s 0
.484
8
.26
3.9
978
4 1
.186
2 4
4.4
2044
444
31
.240
4444
4
08:
00 h
ora
s 0
.91
8.1
4 7
.407
4 1
.186
2 8
2.3
0444
444
69
.124
4444
4
09:
00 h
ora
s 0
.923
636
364
8.0
6 7
.444
509
091
1.1
862
82
.716
7676
8 6
9.5
3676
768
10:
00 h
ora
s 0
.95
8.2
4 7
.813
018
182
1.1
862
86
.811
3131
3 7
3.6
3131
313
11:
00 h
ora
s 0
.948
8
.21
7.7
830
8 1
.186
2 8
6.4
7866
667
73
.298
6666
7
12:
00 h
ora
s 0
.95
8.2
1 7
.799
5 1
.186
2 8
6.6
6111
111
73
.481
1111
1
13:
00 h
ora
s 0
.96
8.3
1 7
.977
6 1
.186
2 8
8.6
4 7
5.4
6
14:
00 h
ora
s 0
.878
181
818
8.4
3 7
.403
072
727
1.1
862
82
.256
3636
4 6
9.0
7636
364
15:
00 h
ora
s 0
.908
181
818
8.4
1 7
.637
809
091
1.1
862
84
.864
5454
5 7
1.6
8454
545
16:
00 h
ora
s 0
.797
272
727
8.4
6 6
.744
927
273
1.1
862
74
.943
6363
6 6
1.7
6363
636
17:
00 h
ora
s 0
.388
181
818
8.4
1 3
.264
609
091
1.1
862
36
.273
4343
4 2
3.0
9343
434
18:
00 h
ora
s 0
.01
0 0
0 0
0
TOTA
L:
64
.336
2097
9 5
3.1
8390
21
Tab
la 1
4 R
esu
ltad
os
de
Ren
dim
ien
to -
Sis
tem
a co
n S
egu
imie
nto
de
1 e
je 6
/11
/20
20
. Fu
ente
: Ela
bo
raci
ón
pro
pia
.
140
0123456789
0
0.2
0.4
0.6
0.81
1.2
06
:00
ho
ras
07
:00
ho
ras
08
:00
ho
ras
09
:00
ho
ras
10
:00
ho
ras
11
:00
ho
ras
12
:00
ho
ras
13
:00
ho
ras
14
:00
ho
ras
15
:00
ho
ras
16
:00
ho
ras
17
:00
ho
ras
18
:00
ho
ras
CORRIENTE (A)
VOLTAJE (V)
HO
RA
S D
EL D
IA (
H)
Gra
fica
de
ren
dim
ien
to
CO
RR
IEN
TEV
OLT
AJE
Figu
ra 1
07
Gra
fica
de
Ren
dim
ien
to -
Sis
tem
a co
n S
egu
imie
nto
de
1 e
je 6
/11
/20
20
. Fu
ente
: Ela
bo
raci
ón
pro
pia
.
141
0123456789
0
10
20
30
40
50
60
70
80
90
10
0
06
:00
ho
ras
07
:00
ho
ras
08
:00
ho
ras
09
:00
ho
ras
10
:00
ho
ras
11
:00
ho
ras
12
:00
ho
ras
13
:00
ho
ras
14
:00
ho
ras
15
:00
ho
ras
16
:00
ho
ras
17
:00
ho
ras
18
:00
ho
ras
POTENCIA (W)
EFICIENCIA ENERGETICA(%)
HO
RA
S D
EL D
IA (
H)
Gra
fica
de
Pote
nci
a y
Efic
ien
cia
PO
TEN
CIA
EFIC
IEN
CIA
EN
ERG
ETIC
AEF
ICIE
NC
IA E
. TO
TAL
Figu
ra 1
08
Gra
fica
de
Po
ten
cia
y Ef
icie
nci
a -
Sist
em
a co
n S
egu
imie
nto
de
1 e
je 6
/11
/20
20
. Fu
ente
: Ela
bo
raci
ón
pro
pia
.
142
Como se puede apreciar en la Tabla 13 y Tabla 14 ambos sistemas tienen una eficiencia energética del
6.401% y 6.34% respectivamente, y también como se muestra en la Figura 106 y Figura 108 las horas solares
donde se aprovecha la mayor cantidad de energía solar es de 9 horas (mayores al 80% de eficiencia en la
Figura 106) a diferencia de los sistemas de 2 ejes que tienen 10 horas solares donde la potencia del panel
sobrepasa en algunas horas el 80% y en otras el 90% Figura 98.
Para la comparación del sistema con la Central Solar Intipampa que cuenta con un sistema de seguimiento
de 1 eje, se toma las horas solares generadas por el sistema de seguimiento solar basado en visión artificial
para un eje, que tiene un valor de 9 horas descrito anteriormente, utilizando la ecuación (52) se obtiene: ¦³¯¨¬«ª ¬±� � ��� × ���� × × �� � �� , �®´¹/ ñ¼
SISTEMA DE SEGUIMIENTO
SOLAR
POTENCIA MODULOS
ENSERIADOS
NUMERO DE MODULOS
ENSERIADOS HORA SOLAR
APROVECHADA
DIAS DEL AÑO
POTENCIA TOTAL
GWH/HORA
Central Solar Intipampa 9600 4604 7.4 365 119.38
Seguimiento con Vision Artificial 9600 4604 9 365 145.19
Tabla 15 Comparación de potencias anuales con horas solares aprovechadas. Fuente: Elaboración propia.
En la Tabla 15 se puede apreciar la potencia anual total generada por el sistema de seguimiento de la Central
Solar Intipampa y el sistema de seguimiento por visión artificial. Donde se obtiene 25.81GWh/año extra
para 9 horas para el seguimiento por visión artificial y 119.38GWh/año para las 7.4 horas solares de la
Central Solar Intipampa, esto equivale a una ganancia del 21,62% anual aproximadamente.
143
5 CONCLUSIONES Se ha logrado implementar un sistema automático de seguimiento solar basado en la realimentación de la
información visual.
Para la realimentación visual, se implementaron y estudiaron cuatro métodos para el control visual para
lograr el movimiento dirigido siempre al sol del panel fotovoltaico. Dos de ellos de fuentes bibliográficas y
dos de autoría propia como resultado de los estudios de los dos anteriores.
Se seleccionó uno de los métodos de control visual estudiados, donde se eligió el método de control visual
por ángulo de motores y matriz de traslación, ya que éste trabajada directamente con la posición de los
ángulos del motor y tiene la respuesta más estable para movimiento lentos del punto seguir. Sin embargo,
los tres métodos restantes también pueden realizar la misma tarea, que es seguir un objeto deseado y
pueden ser empleados para distintas aplicaciones.
Las ganancias del control visual deben seleccionarse de forma cuidadosa, ya que de estas depende la
velocidad de respuesta de los motores encargados de mover el sistema, un valor mal calibrado de la
ganancia puede generar que el sistema demore demasiado en estabilizarse o también entrar en oscilaciones
constantes y no llegar a ser estable, esto puede ocasionar gastos innecesarios de potencia.
En relación a las pruebas con el sistema de seguimiento visual, el sistema con seguimiento solar con visión
artificial obtuvo eficiencias mayores con ganancias entre 57.53% y 66.87% más sobre los sistemas fijos. Las
comparaciones de ambas son evidentes en las figuras graficas vistas anteriormente.
La eficiencia del sistema de seguimiento con visión artificial es mayor aún con el cielo parcialmente nublado
a comparación de un sistema fijo con cielo despejado, esto demuestra la conveniencia de este sistema ya
que el sistema de seguimiento solar tiene mayor rendimiento aún en días con diversas nubosidades.
Es importante la implementación de un filtro físico solar, ya que éste protege al lente de la cámara al estar
expuesto directamente al sol por todo el día, además que este filtro ayuda a disminuir el brillo que genera
el sol para un mejor procesamiento de la imagen.
Los motores seleccionados para el sistema de movimiento ayudan a ahorrar una gran cantidad de potencia
eléctrica, puesto que estos al tener una reductora especial que se bloquea el eje aun cuando no está
energizado, el microcontrolador puede colocarse en modo “sleep” activándose únicamente cuando exista
movimiento del sol.
La cámara para este tipo de visión artificial no debe tener necesariamente una resolución alta, ya que solo
se procesará imágenes del sol y no se centrará en procesar patrones pequeños que requieran alta definición,
por lo que no se necesita una cámara de altas prestaciones, esto incide en el precio y la facilidad de su
adquisición.
El seguimiento solar por visión artificial tiene la ventaja de posicionarse directamente frente al centro de
masa del sol, utilizando procesamiento de imágenes y control visual, evitando movimientos innecesarios
provocados por un mal sensado o presencia de cielo nublado para mecanismos dependientes de sensores
de luz, provocando así gastos de energía extra por los motores.
144
6 Bibliografía: [1] H. Kang, T. Hong, and M. Lee, “A new approach for developing a hybrid sun-tracking method of the
intelligent photovoltaic blinds considering the weather condition using data mining technique,” Energy Build., vol. 209, Feb. 2020, doi: 10.1016/j.enbuild.2019.109708.
[2] O. Veligorskyi, R. Kosenko, and S. Stepenko, “High-efficiency solar tracker development and effectiveness estimation,” in 2014 IEEE International Conference on Intelligent Energy and Power
[3] T. P. Chang, “Output energy of a photovoltaic module mounted on a single-axis tracking system,” Appl. Energy, vol. 86, no. 10, pp. 2071–2078, Oct. 2009, doi: 10.1016/j.apenergy.2009.02.006.
[4] “Cálculo de la posición del sol en el cielo para cada lugar en cualquier momento.” https://www.sunearthtools.com/dp/tools/pos_sun.php (accessed Jul. 12, 2020).
[5] “UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA ‘DISEÑO Y CONSTRUCCIÓN DE UN SISTEMA DE SEGUIMIENTO FOTOVOLTAICO.’”
[10] Pavushetti Abhilash and Raghavan Nanda Kumar, “Solar powered water pump with single axis tracking system for irrigation purpose,” ScienceDirect, 2020, [Online]. Available: https://www.sciencedirect.com/science/article/pii/S2214785320362088#!
[11] N. AL-Rousan, N. A. Mat Isa, and M. K. Mat Desa, “Efficient single and dual axis solar tracking system controllers based on adaptive neural fuzzy inference system,” J. King Saud Univ. - Eng. Sci., vol. 32, no. 7, pp. 459–469, Nov. 2020, doi: 10.1016/j.jksues.2020.04.004.
[12] A. Awasthi et al., “Review on sun tracking technology in solar PV system,” Energy Reports, vol. 6. Elsevier Ltd, pp. 392–405, Nov. 01, 2020, doi: 10.1016/j.egyr.2020.02.004.
[13] P. J. Sequeira Gonçalves and J. R. Caldas Pinto, “Camera configurations of a visual servoing setup. for a 2 DOF planar robot,” in IFAC Proceedings Volumes (IFAC-PapersOnline), Sep. 2003, vol. 36, no. 17, pp. 171–176, doi: 10.1016/S1474-6670(17)33388-8.
[14] V. Lippiello, B. Siciliano, and L. Villani, “Position-based visual servoing in industrial multi-arm robotic
145
cells using multiple cameras,” in IFAC Proceedings Volumes (IFAC-PapersOnline), Jan. 2006, vol. 8, no. PART 1, pp. 43–48, doi: 10.3182/20060906-3-it-2910.00009.
[15] Z. Qiu, S. Hu, and X. Liang, “Disturbance observer based adaptive model predictive control for uncalibrated visual servoing in constrained environments,” ISA Trans., Aug. 2020, doi: 10.1016/j.isatra.2020.06.013.
[16] C. Diederichs, “Fast visual servoing of multiple microrobots using an FPGA-based smart camera system,” in IFAC Proceedings Volumes (IFAC-PapersOnline), Jan. 2011, vol. 44, no. 1 PART 1, pp. 14636–14641, doi: 10.3182/20110828-6-IT-1002.02465.
[17] P. Ramon-Soria, B. C. Arrue, and A. Ollero, “Grasp Planning and Visual Servoing for an Outdoors Aerial Dual Manipulator,” Engineering, vol. 6, no. 1, pp. 77–88, Feb. 2020, doi: 10.1016/j.eng.2019.11.003.
[18] “Curso de Atmosferas Estelares de Hugo Levato.” http://astro.if.ufrgs.br/levato/instrum9/estructura14.htm (accessed Jul. 15, 2020).
[20] O. University, “UO SRML: programa de cartas solares.” http://solardat.uoregon.edu/SunChartProgram.html (accessed Aug. 24, 2020).
[21] SotySolar, “Seguidores Solares: Todo lo que necesitas saber,” 2018. https://sotysolar.es/placas-solares/seguidores-solares (accessed Jul. 22, 2020).
[22] V. Greenpower, “Las Ventajas de los Seguidores Solares - Valldoreix Greenpower.” http://www.valldoreix-gp.com/las-ventajas-de-los-seguidores-solares/ (accessed Oct. 30, 2020).
[23] “Capítulo 3: Transformaciones Geométricas,” Universidad de las americas puebla, Mexico, 2009.
[24] J. Pomares, “Control visual 2D indirecto para el seguimiento intemporal de trayectorias y su aplicación a estrategias de control visual-fuerza en manipuladores,” Robotica, 2004.
[25] F. Mangkusasmito, T. H. Nugroho, B. R. Trilaksono, and T. Indriyanto, “Visual servo strategies using linear quadratic Gaussian (LQG) for Yaw-Pitch camera platform,” in 2018 International Conference
on Signals and Systems, ICSigSys 2018 - Proceedings, Jun. 2018, pp. 146–150, doi: 10.1109/ICSIGSYS.2018.8372655.
[27] Departamento CCIA, “Visión 3D Modelamiento y Calibracion,” 2011, [Online]. Available: http://www.dccia.ua.es/dccia/inf/asignaturas/Vision/.
[28] R. Y. Tsai, “A Versatile Camera Calibration Technique for High-Accuracy 3D Machine Vision Metrology Using Off-the-Shelf TV Cameras and Lenses,” IEEE J. Robot. Autom., vol. 3, no. 4, pp. 323–344, Aug. 1987, doi: 10.1109/JRA.1987.1087109.
[29] Z. Zhang, “A Flexible New Technique for Camera Calibration; a typo in Appendix B) (last updated on Aug A Flexible New Technique for Camera Calibration,” 2008. Accessed: Jul. 28, 2020. [Online]. Available: http://research.microsok.com/ z̃hanghmp://research.microsok.com/ z̃hang.
[30] “Bouguet, J.Y., (2007) ‘Camera Calibration Toolbox for Matlab’, Web:”
[31] P. Vera and J. Salas, “DETERMINACION DE LA INCERTIDUMBRE DE LOS PARAMETROS INTRINSECOS DEL MODELO DE UNA CAMARA,” Queretaro.
[32] N. Aguirre Dobernack, “IMPLEMENTACIÓN DE UN SISTEMA DE DETECCIÓN DE SEÑALES DE TRÁFICO MEDIANTE VISIÓN ARTIFICIAL BASADO EN FPGA.” http://bibing.us.es/proyectos/abreproy/12112/direccion/Documento_por_capitulos%252F (accessed Oct. 30, 2020).
[33] J. A. Corrales Ramón, P. Gil Vázquez, F. A. Candelas Herías, and F. Torres Medina, “Diseño de una mini-cámara motorizada para el seguimiento de objetos,” XXIX Jornadas Automática, p. 8, 2008, [Online]. Available: http://193.145.233.67/dspace/handle/10045/10161.
[34] F. R. Cortes, Robotica - Control de robots Manipuladores, no. 1. Mexico, 2011.
[35] K. Ogata, Ingenieria de Control Moderna, 5ta edicio. 2013.
[36] D. Bolaños, “Introduccion a los microcontroladores,” Cartagena: Universidad Politecnica de Cartagena, pp. 1–25.
[37] N. Velasco, “SISTEMA EMBEBIDO PARA LA CONEXIÓN DE UN PLC SIEMENS S7-200 A LA RED GSM.” Universidad de Sevilla, Sevilla, p. 36, Accessed: Jul. 30, 2020. [Online]. Available: http://bibing.us.es/proyectos/abreproy/11141/fichero/PFC%252F3+Microcontroladores.pdf.
[38] E. B. Merino, “Como usar la cámara en Matlab -.” https://sites.google.com/site/bustosmerino/home/como-usar-la-camara-en-matlab (accessed Jul. 30, 2020).
[39] U. P. de Madrid, “Adquisición de imágenes, calibración y entornos gráficos,” Madrid.
[40] D. Comaniciu, P. Meer, and S. Member, “Mean Shift: A Robust Approach Toward Feature Space Analysis.” Accessed: Aug. 03, 2020. [Online]. Available: https://courses.csail.mit.edu/6.869/handouts/PAMIMeanshift.pdf.
[41] J. G. Allen, R. Y. D. Xu, and J. S. Jin, “Object Tracking Using CamShift Algorithm and Multiple Quantized Feature Spaces,” Sydney, 2004. Accessed: Aug. 03, 2020. [Online]. Available: https://crpit.scem.westernsydney.edu.au/confpapers/CRPITV36Allen.pdf.
[42] F. Chaumette and A. Santos, “Tracking a Moving Object by Visual Servoing,” IFAC Proc. Vol., vol. 26, no. 2, pp. 643–648, Jul. 1993, doi: 10.1016/s1474-6670(17)48806-9.
[43] H. L. Wade, Basic and Advanced Regulatory Control: System Design and Application - Harold L. Wade
- Google Libros, 2da editio. 204AD.
[44] “ISO - ISO 50001 - Gestión energética.” https://www.iso.org/iso-50001-energy-management.html (accessed Aug. 24, 2020).
[45] “JRC Photovoltaic Geographical Information System (PVGIS) - European Commission.” https://re.jrc.ec.europa.eu/pvg_tools/es/tools.html#MR (accessed Nov. 11, 2020).
147
7 ANEXOS
7.1 ANEXO 1 Codigo.ino Control de Angulo para motores DC
if (PID > outMax) PID = outMax; else if (PID < outMin) PID = outMin;
if (PID2 > outMax) PID2 = outMax; else if (PID2 < outMin) PID2 = outMin;
if (PID < 0)
{
digitalWrite(in1,0);
digitalWrite(in2,1);
}
else if(PID==0){
digitalWrite(in1,1);
digitalWrite(in2,1);
analogWrite(ena,0);
}
else
{
digitalWrite(in1,1);
digitalWrite(in2,0);
152
}
analogWrite(ena,abs(PID));
if (PID2 < 0)
{
digitalWrite(in3,0);
digitalWrite(in4,1);
}
else
{
digitalWrite(in3,1);
digitalWrite(in4,0);
}
analogWrite(enB,abs(PID2));
errorlast=error;
errorlast2=error2;
lastTime = millis();
}
}
void encoder_1(void)
{
ant_1=act_1;
act_1=PIND & 12;
if(ant_1==4 && act_1==12) contador_1++;
if(ant_1==0 && act_1==4) contador_1++;
if(ant_1==8 && act_1==0) contador_1++;
if(ant_1==12 && act_1==8) contador_1++;
if(ant_1==12 && act_1==4) contador_1--;
153
if(ant_1==4 && act_1==0) contador_1--;
if(ant_1==0 && act_1==8) contador_1--;
if(ant_1==8 && act_1==12) contador_1--;
}
void encoder_2(void)
{
ant_2=act_2;
act_2=PIND & 48;
if(ant_2==16 && act_2==48) contador_2++;
if(ant_2==0 && act_2==16) contador_2++;
if(ant_2==32 && act_2==0) contador_2++;
if(ant_2==48 && act_2==32) contador_2++;
if(ant_2==48 && act_2==16) contador_2--;
if(ant_2==16 && act_2==0) contador_2--;
if(ant_2==0 && act_2==32) contador_2--;
if(ant_2==32 && act_2==48) contador_2--;
}
154
7.2 ANEXO 2 Código.m Control Visual por Matriz de Rotación
clear all clc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% COM='COM5'; % Port Arduino %%%%%%%%%%%%%%%%%%%%%% Comunicacion MATLAB %%%%%%%%%%%%%%%%%%%%%%% delete(instrfind({'Port'},{COM})); serialPort=serial(COM,'BaudRate',9600); fopen(serialPort); % open port pause(2); % delay 3 seconds %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% servaluex=0; servaluey=0; servalue=0; % %s=serial('COM3','BAUD',9600); % %fopen(s); posx=0; posy=0; camara=webcam('USB2.0'); fdx=64/2; fdy=48/2; Z=80; L1=55; %%distancia en mm, 55mm fc = [ 830.324149062624310 ; 826.939629764713350 ]; %%calibracion de la camara cc = [ 392.873984280643980 ; 227.666441014462860 ]; anteriorcx=320; anteriorcy=240; angulo2=0; tf=10; ts=0.1; t=0:ts:tf; Q=length(t); %while 1 for k=1:Q %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I=snapshot(camara); %figure, imshow(I); I2=rgb2gray(I); %level=graythresh(I2); bw=im2bw(I2,0.98); %para luz %bw=im2bw(I2,level); %para blanco y negro %figure, imshow(bw);
155
%disp(level) [N, M]=size(bw); for i=1:N for j=1:10 bw(i,j)=1; end end %%bw=not(bw); %para blanco y negro bw=imopen(bw, strel('disk',15)); %%antes en lugar de 50 era 9 para blanco y negro figure(1), imshow(I); M00=0; M10=0; M01=0; M20=0; M02=0; M11=0; for i=1:N for j=1:M M00=M00+bw(i,j); M10=M10+j*bw(i,j); M01=M01+i*bw(i,j); M11=M11+j*i*bw(i,j); M20=M20+j^2*bw(i,j); M02=M02+i^2*bw(i,j); end end if M00 == 0 cx=anteriorcx; cy=anteriorcy; else % if angulo2 >= 5 % cx = 640 - M10/M00; % cy=M01/M00; % else cx=M10/M00; cy=M01/M00; % end end hxe=320-cx; hye=240-cy; hxe2(k)=320-cx; hye2(k)=240-cy; eu(k)= sqrt((hxe*hxe)+(hye*hye)); aa=((cc(1)-round(cx/10))^2)+((fc(1))^2);
156
ba=-2*(cc(1)-round(cx/10))*(cc(1)-fdx); ca=((cc(1)-fdx)^2)-((fc(1))^2); cosx1=(-ba+(abs((ba^2)-4*aa*ca))^0.5)/(2*aa); posx1=acos(cosx1)*180/pi; ab=((cc(2)-round(cy/10))^2)+((fc(2))^2); bb=-2*(cc(2)-round(cy/10))*(cc(2)-fdy); cb=((cc(2)-fdy)^2)-((fc(2))^2); cosy1=(-bb+(abs((bb^2)-4*ab*cb))^0.5)/(2*ab); posy1=acos(cosy1)*180/pi; if (cx/10)<=fdx posx1=-1*posx1; else posx1=1*posx1; end if (cy/10)<=fdy posy1=1*posy1; else posy1=-1*posy1; end servaluex=servaluex+posx1; servaluey=servaluey+posy1; trama=[num2str(servaluey) ',' num2str(servaluex)]; % String data fprintf(serialPort,'%s\n',trama,'sync'); % send data (String) hold on; plot(cx,cy,'ms') text(10,45,'Cx en pixeles ','Color','cyan') text('position',[95,45],'string',round(10*posx1),'Color','cyan') text(10,60,'CY en pixeles ','Color','cyan') text('position',[95,60],'string',round(10*posy1),'Color','cyan') hold off; anteriorcx=cx; anteriorcy=cy; end figure(2) plot(t,hxe2,'r','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error hx pixeles'); % Label axis figure(3) plot(t,hye2,'b','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error hy pixeles'); figure(4) plot(t,eu,'black','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error euclideano');
157
7.3 ANEXO 3 Codigo.m Control Visual por Jacobiano de la Imagen
clear clc close all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% COM='COM5'; % Port Arduino %%%%%%%%%%%%%%%%%%%%%% Comunicacion MATLAB %%%%%%%%%%%%%%%%%%%%%%% delete(instrfind({'Port'},{COM})); serialPort=serial(COM,'BaudRate',9600); fopen(serialPort); % open port pause(2); % delay 3 seconds %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fc = [ 830.324149062624310 ; 826.939629764713350 ]; %%parametros de calibracion de la camara cc = [ 392.873984280643980 ; 227.666441014462860 ]; %%parametros de calibracion de la camara F=[fc(1) 0;0 fc(2)]; %Mcr=[0 -1 0 0 0 0;0 0 1 0 0 0;-1 0 0 0 0 0;0 0 0 0 -1 0;0 0 0 0 0 1;0 0 0 -1 0 0]; % Cámara mirando horizontalmente %Mcr=[0 0 1 0 0 0;0 1 0 0 0 0;-1 0 0 0 0 0;0 0 0 0 0 1;0 0 0 0 1 0;0 0 0 -1 0 0]; % cámara mirando arriba. K=[fc(1) 0 cc(1);0 fc(2) cc(2);0 0 1]; hxd=320; %% posicion deseada del centro del objeto en pixeles eje x ( para una definicion de 640x480) hyd=240; %% posicion deseada del centro del objeto en pixeles eje y ( para una definicion de 640x480) %Z=0.15;%m %L=0.13; %L=0.5; q2 = 1*(pi/180); %% angulo inciales del motor1 q1 = 1*(pi/180); %% angulo inciales del motor2 cam=webcam('USB2.0'); anteriorcx=320; %% variable para que cuando no exista objeto no de valores indeterminados NaN anteriorcy=240; %% variable para que cuando no exista objeto no de valores indeterminados NaN servaluex=0; %% variables donde se almancenara el angulo para motor 1 servaluey=0; %% variables donde se almancenara el angulo para motor 2 tf=10;
158
ts=0.1; t=0:ts:tf; Q=length(t); %while 1 for k=1:Q %%%PROCESO PARA CALCULAR EL CENTRO DE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%UN OBJETO LUMINOSO%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I=snapshot(cam); I2=rgb2gray(I); level=graythresh(I2); bw=im2bw(I2,0.98); %para luz %bw=im2bw(I2,level); [N, M]=size(bw); for i=1:N for j=1:10 bw(i,j)=1; end end %bw=not(bw); %para blanco y negro bw=imopen(bw, strel('disk',12)); %%antes en lugar de 12 era 9 para blanco y negro figure(1), imshow(bw); M00=0; M10=0; M01=0; M20=0; M02=0; M11=0; for i=1:N for j=1:M M00=M00+bw(i,j); M10=M10+j*bw(i,j); M01=M01+i*bw(i,j); M11=M11+j*i*bw(i,j); M20=M20+j^2*bw(i,j); M02=M02+i^2*bw(i,j); end end if M00 == 0 %% CONDICIONAL para que cuando no exista objeto no de valores indeterminados NaN cx=anteriorcx; cy=anteriorcy; else cx=M10/M00; cy=M01/M00; end
159
%%%%%%%%%%%%%%% ALGORITMO DE CONTROL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hxe=hxd-cx; %ERROR EN X EN PIXELES , CX PIXEL ENVIADO POR LA CAMARA EN TIEMPO REAL hye=hyd-cy; %ERROR EN X EN PIXELES , CY PIXEL ENVIADO POR LA CAMARA EN TIEMPO REAL hxe2(k)=hxe; hye2(k)=hye; eu(k)= sqrt((hxe*hxe)+(hye*hye)); e=[hxe hye]'; %%MATRIZ DE ERROR m=[cx cy 1]; u1=inv(K)*m'; %%COORDENADAS NORMALIZADAS J1=[u1(1)*u1(2) -(1+u1(1)*u1(1));(1+u1(2)*u1(2)) -u1(1)*u1(2)]; Jv1=F*J1; % JR=[0 0;0 L;L*sin(q2) 0;cos(q2) 0;-sin(q2) 0;0 1]; %%JACOBIANO % J=Jv1*Mcr*JR; Ji=inv(Jv1); P =[0.16 0;... 0 0.16]; Dq=P*Ji*e; %%LEY DE CONTROL error_q=[Dq(1)*180/pi Dq(2)*180/pi]; %%CONVIERTE LOS VALORES EN GRADOS servaluey=servaluey+error_q(1); %% ACUMULA LOS ANGULOS DADOS servaluex=servaluex+error_q(2); %% ACUMULA LOS ANGULOS DADOS trama=[num2str(servaluey) ',' num2str(servaluex)]; % String data fprintf(serialPort,'%s\n',trama,'sync'); % send data (String) % q2=Dq(2); %%ACTUALIZA ANGULO Q2 q1=q1+Dq(1); %%ACTUALIZA ANGULO Q1 % q2=q2+Dq(2); %%ACTUALIZA ANGULO Q2 % q1=q1+Dq(1); %%ACTUALIZA ANGULO Q1 hold on; plot(cx,cy,'ys') plot(320,240,'ms') text(10,15,'Grados ','Color','cyan') text('position',[90,15],'string',error_q(1),'Color','cyan') text(10,30,'Grados ','Color','cyan') text('position',[90,30],'string',error_q(2),'Color','cyan') hold off; anteriorcx=cx; anteriorcy=cy; end
160
figure(2) plot(t,hxe2,'r','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error hx pixeles'); % Label axis figure(3) plot(t,hye2,'b','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error hy pixeles'); figure(4) plot(t,eu,'black','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error euclideano');
161
7.4 ANEXO 4 Codigo.m Control Visual por Matriz de Traslación y Modelo Pinhole
clear clc close all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% COM='COM5'; % Port Arduino %%%%%%%%%%%%%%%%%%%%%% Comunicación MATLAB %%%%%%%%%%%%%%%%%%%%%%% delete(instrfind({'Port'},{COM})); serialPort=serial(COM,'BaudRate',9600); fopen(serialPort); % open port pause(2); % delay 3 seconds %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% cam=webcam('USB2.0'); valuex=0; %% variables donde se almancenara el angulo para motor 1 valuey=0; %% variables donde se almancenara el angulo para motor 2 anteriorcx=320; %% variable para que cuando no exista objeto no de valores indeterminados NaN anteriorcy=240; %% variable para que cuando no exista objeto no de valores indeterminados NaN fc = [ 830.324149062624310 ; 826.939629764713350 ]; tf=10; ts=0.1; t=0:ts:tf; Q=length(t); %while 1 for k=1:Q %%%PROCESO PARA CALCULAR EL CENTRO DE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%UN OBJETO LUMINOSO%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I=snapshot(cam); I2=rgb2gray(I); level=graythresh(I2); bw=im2bw(I2,0.98); %para luz %bw=im2bw(I2,level); [N, M]=size(bw); for i=1:N for j=1:10 bw(i,j)=1; end end %bw=not(bw); %para blanco y negro bw=imopen(bw, strel('disk',12)); %%antes en lugar de 12 era 9 para blanco y negro figure(1), imshow(bw); M00=0; M10=0; M01=0;
162
M20=0; M02=0; M11=0; for i=1:N for j=1:M M00=M00+bw(i,j); M10=M10+j*bw(i,j); M01=M01+i*bw(i,j); M11=M11+j*i*bw(i,j); M20=M20+j^2*bw(i,j); M02=M02+i^2*bw(i,j); end end if M00 == 0 %% CONDICIONAL para que cuando no exista objeto no de valores indeterminados NaN cx=anteriorcx; cy=anteriorcy; else cx=M10/M00; cy=M01/M00; end hxe=320-cx; hye=240-cy; hxe2(k)=hxe; hye2(k)=hye; eu(k)= sqrt((hxe*hxe)+(hye*hye)); q1=-0.2*atan(hxe/fc(1)) q2=0.2*atan(hye/fc(2)) % Separar acciones de control valuex=valuex+(180*q1/pi); valuey=valuey+(180*q2/pi); trama=[num2str(valuey) ',' num2str(valuex)]; % String data fprintf(serialPort,'%s\n',trama,'sync'); % send data (String) %%%%%%%%%%%%%%%%%%% MATLAB %%%%%%%%%%%%%%%%%%%%%%%%% hold on; plot(cx,cy,'ms') plot(320,240,'ms') text(10,15,'Grados ','Color','cyan') text('position',[90,15],'string',q1,'Color','cyan') text(10,30,'Grados ','Color','cyan') text('position',[90,30],'string',q2,'Color','cyan') hold off;
163
anteriorcx=cx; anteriorcy=cy; end figure(2) plot(t,hxe2,'r','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error hx pixeles'); % Label axis figure(3) plot(t,hye2,'b','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error hy pixeles'); figure(4) plot(t,eu,'black','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error euclideano');
164
7.5 ANEXO 5 Codigo.m Control Visual por Jacobiano de Velocidades
clear clc close all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% COM='COM5'; % Port Arduino %%%%%%%%%%%%%%%%%%%%%% Comunicacion MATLAB %%%%%%%%%%%%%%%%%%%%%%% delete(instrfind({'Port'},{COM})); serialPort=serial(COM,'BaudRate',9600); fopen(serialPort); % open port pause(2); % delay 3 seconds %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% cam=webcam('USB2.0'); q1 = 1*(pi/180); q2 = 1*(pi/180); anteriorcx=320; %% variable para que cuando no exista objeto no de valores indeterminados NaN anteriorcy=240; %% variable para que cuando no exista objeto no de valores indeterminados NaN fc = [ 830.324149062624310 ; 826.939629764713350 ]; angulo2=0; tf=10; ts=0.1; t=0:ts:tf; Q=length(t); %while 1 for k=1:Q %%%PROCESO PARA CALCULAR EL CENTRO DE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%UN OBJETO LUMINOSO%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I=snapshot(cam); I2=rgb2gray(I); level=graythresh(I2); bw=im2bw(I2,0.98); %para luz %bw=im2bw(I2,level); [N, M]=size(bw); for i=1:N for j=1:10 bw(i,j)=1; end end %bw=not(bw); %para blanco y negro bw=imopen(bw, strel('disk',12)); %%antes en lugar de 12 era 9 para blanco y negro figure(1), imshow(bw); M00=0; M10=0;
165
M01=0; M20=0; M02=0; M11=0; for i=1:N for j=1:M M00=M00+bw(i,j); M10=M10+j*bw(i,j); M01=M01+i*bw(i,j); M11=M11+j*i*bw(i,j); M20=M20+j^2*bw(i,j); M02=M02+i^2*bw(i,j); end end if M00 == 0 %% CONDICIONAL para que cuando no exista objeto no de valores indeterminados NaN cx=anteriorcx; cy=anteriorcy; else % if angulo2 >= 5 % cx = 640 - M10/M00; % cy=M01/M00; % else cx=M10/M00; cy=M01/M00; % end end hxe=320-cx; hye=240-cy; hxe2(k)=hxe; hye2(k)=hye; eu(k)= sqrt((hxe*hxe)+(hye*hye)); he=[hxe hye]'; % Jacobiano del manipulador J11 = fc(1)*(sec(q1)*sec(q1)); J12 = 0; J21 = 0; J22 =fc(2)*(sec(q2)*sec(q2)); J = [J11 J12;... J21 J22]; % Parametros de Control
166
K = [-0.2 0;... 0 0.2]; qpRef=pinv(J)*(K*he); % Separar acciones de control q1p = qpRef(1); q2p = qpRef(2); q1=q1+q1p; q2=q2+q2p; matrix=[180*q1/pi 180*q2/pi] trama=[num2str(matrix(2)) ',' num2str(matrix(1))]; % String data fprintf(serialPort,'%s\n',trama,'sync'); % send data (String) angulo2 = fscanf(serialPort, '%f\n'); % receive data (u) angulo1 = fscanf(serialPort, '%f\n'); % receive data (w) %%%%%%%%%%%%%%%%%%% MATLAB %%%%%%%%%%%%%%%%%%%%%%%%% hold on; plot(cx,cy,'ms') plot(320,240,'ms') text(10,15,'Grados ','Color','cyan') text('position',[90,15],'string',matrix(1),'Color','cyan') text(10,30,'Grados ','Color','cyan') text('position',[90,30],'string',matrix(2),'Color','cyan') hold off; anteriorcx=cx; anteriorcy=cy; end figure(2) plot(t,hxe2,'r','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error hx pixeles'); % Label axis figure(3) plot(t,hye2,'b','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error hy pixeles'); figure(4) plot(t,eu,'black','LineWidth',2), grid on, xlabel('Tiempo (s)'); ylabel('Error euclideano');