RECONOCIMIENTO DE OBJETOS PARA ROBÓTICA MÓVIL
JOHANN FACCELO OSMA CRUZ
UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE ELÉCTRICA
Y ELECTRÓNICA BOGOTÁ
RECONOCIMIENTO DE OBJETOS PARA ROBÓTICA MÓVIL
JOHANN FACCELO OSMA CRUZ
TESIS
Asesor: Antonio García Rozo
Ing. Electrónico
UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE ELÉCTRICA
Y ELECTRÓNICA BOGOTÁ
Nota de Aceptación
____________________
Firma del Asesor
Antonio García Rozo
Ing. Electrónico
____________________
Firma del Jurado
Fredy E. Segura
Ing. Electrónico
DEDICATORIA
Quiero dedicar este trabajo a mis padres, quienes han estado apoyándome en cada momento de mi vida y en especial, este último periodo de mi vida que ha sido tan enriquecedor para mi. Espero que este trabajo sea un reflejo de todos los valores y enseñanzas que me han dado a través de mi vida. No me queda más que decir gracias.
AGRADECIMIENTOS
Este proyecto no hubiese sido realidad sin el apoyo de muchas personas que estuvieron conmigo durante estos últimos meses de mi carrera y que me sirvieron de pilar para seguir adelante y nunca desfallecer, sin embargo quiero agradecer profundamente a mis padres y a mi hermana por toda la confianza que depositaron en mi y por enseñarme lo más valioso de mi vida.
De igual forma quiero agradecer a Antonio García y a Fredy Segura por su apoyo técnico y humano durante este periodo, además por la experiencia y consejos que me brindaron para hacer de este trabajo una realidad.
Finalmente quiero agradecer muy personalmente a Alvaro Varela, Sergio Cruz, Nathaly Gaitán y a muchos más, por estar ahí en los momentos decisivos y porque de una u otra forma fueron participes de este trabajo.
1 CONTENIDO
Pag.
1 CONTENIDO 6
2 RESUMEN 7
3 INTRODUCCIÓN 8
4 PROCEDIMIENTO DEL PROYECTO 10
5 ÁREA FÍSICA Y MECÁNICA 12
5.1.1 Mapa eléctrico de las manos. 15
5.1.2 Mapa físico de las manos. 16
6 ETAPA LÓGICA Y DE ALGORITMOS 26
6.1.1 La red neuronal. 30
7 MONTAJE ELECTRÓNICO 39
8 APLICACIONES 50
8.1.1 Utilización en la industria. 53
8.1.2 Utilización en exploración. 54
8.1.3 Utilización familiar o casera. 56
9 RESULTADOS 58
9.1.1 Nuevos modelos para el reconocimiento de patrones. 59
9.2.1 Tiempos de respuesta. 62
10 CONCLUSIONES 64
11 BIBLIOGRAFÍA 68
2 RESUMEN
Las redes neuronales y la lógica difusa han sido utilizadas constantemente para el reconocimiento de patrones en varios sectores de investigación e industria. Para este trabajo se intentó aplicar estos algoritmos para lograr un reconocimiento de objetos a través de mediciones físicas como lo son: la forma bidimensional, el ancho, los cromas característicos y la temperatura; para ser utilizado en aplicaciones de robótica móvil de bajo costo.
Estas señales permiten que no sean necesarias mediciones de otra índole como lo son el uso de cámaras de video o digitales para lograr este mismo propósito pero que incrementan la complejidad de los equipos, tanto software como hardware, del dispositivo; así mismo como el costo del proyecto.
La utilización de lecturas de este tipo de señales permite una nueva disposición de ideas, teorías y argumentos para optimizar procesos de reconocimiento, así mismo como procesos de aprendizaje elemental basados en condiciones no intrínsecas de juicio para robótica.
Palabras claves: robótica, reconocimiento de objetos, aprendizaje no determinístico, reconocimiento bidimensional, redes neuronales, lógica difusa.
3 INTRODUCCIÓN
Hoy en día el reconocimiento de objetos es un proceso fundamental en muchas áreas de la industria como lo es el control de calidad o la exploración de recursos. Sin embargo la mayoría de las aplicaciones existentes, se basan en un proceso de identificación de imagen con extensos y/o complejos algoritmos implementados casi en su totalidad con potentes procesadores o en grandes equipos, como lo es un computador, lo que los hace no aptos para ser trasladados con facilidad o simplemente con limitaciones de espacio físico.
Una alternativa que empieza a fomentarse en el mundo, es la inclusión de otro tipo de señales para lograr un reconocimiento más versátil de objetos en un medio conocido o semidesconocido para así obtener identificadores de bajo costo, fácil adaptación al medio de trabajo y con mayores posibilidades de ser implementados en pequeños y sencillos dispositivos.
Se pretende en este trabajo, basado en esa nueva tendencia, la implementación y estudio de un dispositivo móvil que posea sensores capaces de alimentar redes neuronales y algoritmos de lógica difusa para el aprendizaje e identificación de objetos. Este dispositivo móvil llamado TA®EA, debe contar con limitaciones en su costo de implementación, así mismo debe poseer limitaciones físicas para los objetos reconocibles, como lo son unas dimensiones, una consistencia y un peso mínimo y máximo.
Con este dispositivo se pretende generar una nueva alternativa para el reconocimiento de objetos pequeños, que posean diversas formas, colores, dimensiones y que permita además algunas características más complejas como lo es la temperatura del objeto que puede diferir en el tiempo. Teniendo en cuenta estas características el dispositivo debe estar en
capacidad de crear una base de datos de objetos conocidos que es incrementada con la interacción, para así en un futuro, tomar decisiones dependiendo de las características del objeto.
4 PROCEDIMIENTO DEL PROYECTO
El reconocimiento de patrones físicos, químicos o eléctricos para una posterior clasificación, es un procedimiento difícil, en muchos casos subjetivo y que requiere de un trabajo largo de investigación para determinar con certeza una escala o segmentos de escala apropiados para lograr una distribución apropiada para la medición. Conociendo un poco esto, se diseñó un plan de trabajo que abarcara distintas áreas involucradas para el desarrollo de este proyecto, como lo son, mecánica, probabilística y por supuesto electrónica.
El objetivo de este proyecto es el de obtener un módulo capaz de medir y sensar algunas características físicas de los objetos, para así, con ayuda de algoritmos extraídos de disciplinas como las redes neuronales, los sistemas de comparación por espacios vectoriales y las teorías de probabilidad, clasificarlos por sus características y almacenarlos en memoria para su posterior comparación con nuevos objetos encontrados.
Este objetivo fue dividido en tres grandes áreas para poder afrontar el problema de forma ordenada y así evitar problemas posteriores. La primera de estas grande áreas comprende la parte física del montaje y por tanto esta regido principalmente por leyes de la física y mecánica para su desenvolvimiento. Esta área consiste principalmente en la fabricación de un módulo capaz de mover los sensores de medición hasta un objeto en reposo que debe encontrarse cerca de la estructura. Este sistema debe ser accionado por señales eléctricas y debe permitir la evaluación de objetos con distintas características, como lo son, alto, ancho, forma, entre otros.
La segunda área de trabajo la constituye la evaluación de algoritmos capaces de llevar a cabo una clasificación de las características dependientes de la medición obtenida por los
diversos sensores. En esta área se evalúan distintas alternativas que permitan una mejor clasificación de cada característica, debido a esto, se usan distintas técnicas para los distintos sensores.
La tercera área comprende el montaje electrónico, es decir, la escogencia de dispositivos electrónicos apropiados para llevar estos algoritmos a operación, así mismo la interfaz entre la parte mecánica y los algoritmos que se deben operar para realizar la tarea de reconocimiento y almacenamiento de información. Esta tercera área es muy dependiente de la segunda área, por tanto es uno de los últimos procesos que se llevan a cabo, pero a su vez, sus limitaciones deben ser planteadas desde el principio del diseño.
5 ÁREA FÍSICA Y MECÁNICA
Es un reto grande el poder diseñar un sistema mecánico apropiado y seguro para una persona cuya área del conocimiento se centra en el diseño de sistemas electrónicos, sin embargo, con la colaboración indicada este hecho puede ser bien resuelto. A pesar de esto, esta etapa del trabajo depende mucho del ensayo y error, por un lado debido a la inexperiencia en trabajos mecánicos, que conlleva a una falta de calidad en los primeros intentos, y por otro lado debido a la falta de documentación existente para la fabricación y uso de sensores físicos para medición de objetos pequeños.
El primer paso que se llevó a cabo en esta etapa fue la elaboración de un boceto de mediciones que se querían realizar. Por un lado se pretendía la medición de la forma lateral del objeto, es decir se quería una imagen bidimensional del objeto usando únicamente sensores físicos. Esta medida fue tomada debido a una de las limitantes iniciales del proyecto que consistía en el no uso de sistemas de video dentro de los sensores. La idea de no usar sistemas de video incorporados buscaba aminorar los costos del sistema de reconocimiento y además plantear nuevas alternativas para el desarrollo de sistemas capaces de reconocer objetos en reposo. En la actualidad, una gran mayoría de los sistemas de reconocimiento de objetos, utilizan videocámaras o fotografías junto con algoritmos de tratamiento de imágenes para establecer las características de los objetos; sin embargo en algunos casos es imposible utilizar estos dispositivos debido a las inconveniencias del medio, por ejemplo, el uso de estos en aguas profundas; por esto es aún necesario el uso de personal humano para llevar a cabo funciones de reconocimiento que deberían ser automatizadas. Con el fin de suplir este tipo de necesidades, se pretende demostrar que con otro tipo de sensores se puede llegar a un resultado similar.
En este proceso, utilizando la información obtenida por un grupo de investigadores que trabajan en robótica y reconocimiento de objetos, se tuvo la idea de probar con un sistema de cinco sensores retráctiles, capaces de hormar el objeto por cada lado y así tener la posibilidad de obtener una imagen bidimensional del objeto. Así mismo, este robot está en capacidad de tomar otra clase de medidas físicas para poderlas tener en cuenta como patrones de clasificación de los distintos objetos, generando así un vector de características que posea el objeto. Entre estas características están la temperatura, el ancho y los colores del objeto, además de la ya mencionada estructura bidimensional.
5.1 LAS MANOS
En este punto empezaremos a asemejar ciertas características humanas con la morfología de el sistema, en primer lugar definiremos las manos del robot. Al igual que los distintos animales, este robot debe estar en capacidad de manipular los objetos de forma tal que sea capaz de obtener ciertas características de este. En muchos animales terrestres, este proceso se lleva a cabo con las extremidades anteriores, para el caso de los primates, las manos cumplen esta función. Teniendo este gran ejemplo de la naturaleza, el robot tuvo su primer diseño en esta parte, las manos.
Las manos del robot están ligadas a un sistema que sea capaz de desplazarlas hasta el objeto. Independientemente de cómo sea este sistema, las manos deben contar con los sensores precisos para poder tomar una cantidad de datos suficientes para la clasificación de la forma bidimensional. Para esto, se decidió por un sistema de cinco dedos, llamados así porque sobresalen de la mano, que tuvieran un movimiento rectilíneo y retráctil para envolver el objeto. El número de dedos a utilizar se determinó por la experiencia adquirida en procesos de reconocimiento de caracteres con algoritmos de redes neuronales.
Si se quieren diferenciar las principales formas bidimensionales de un objeto se necesitaría por lo menos una referencia central y los dos extremos de esta. Con estos tres datos, podríamos diferenciar una línea recta vertical, una diagonal hacia la izquierda, una diagonal hacia la derecha y curvas convexas y cóncavas. Si por el contrario usáramos menos de tres mediciones por cada lado del objeto, a duras penas podríamos diferencias algunas formas. Por otro lado, con un número mayor de mediciones, podríamos mejorar la información del sistema y así podríamos distinguir curvas redondeadas, de curvas fuertes. Pero para este propósito es necesario un mayor procesamiento de información y de esta forma el número de variables a evaluar crece aumentando la complejidad de los algoritmos.
Encontramos un compromiso entre calidad en la identificación y la complejidad de los algoritmos. Si usáramos cuatro sensores por cada lado, el centro de referencia se encontraría tácito, eso suponiendo una distribución equidistante de los sensores, pero si por el contrario utilizáramos cinco sensores por cada lado del objeto, esto supondría un centro medible, dos extremos, y una señal entre el centro y cada extremo. Con este número, que fue evaluado para el uso de algoritmos de reconocimiento por redes neuronales, se determinó el diseño de la mano del robot.
Ya conociendo el número de sensores que entrarían en contacto con el objeto para hormarlo, solo bastaba con presentar un diseño que permitiera tener sensores de bajo costo, fácilmente reparables, debido que en sistemas como estos es frecuente que se presenten fallas mecánicas, y que tuvieran como salida una señal análoga que representara la posición actual del sensor con respecto a su posición inicial. Este diseño se llevó a cabo simulando un poco los procesos de agarre de algunas máquinas que cuentan con partes móviles para mejorar el agarre de los objetos.
La mano era esencialmente una caja donde se encontraban los distintos dispositivos y conexiones para la transformación de un proceso mecánico como lo era el movimiento en una señal eléctrica. Por otro lado, la caja en uno de sus lados debía tener los cinco dedos
retráctiles para hormar de la mejor manera el objeto. Se determinó el largo de los dedos mirando la disponibilidad del mercado de dispositivos que variaran sus características eléctricas con el desplazamiento. Se encontraron unas resistencias variables de movimiento rectilíneo que se ajustaban muy bien a estas condiciones y con estas se realizó el primer mapa eléctrico del circuito correspondiente de la mano.
5.1.1 Mapa eléctrico de las manos. El circuito es de una complejidad mínima y se basa en el movimiento del puntero de la resistencia variable para la obtención de un valor acorde con la distancia de desplazamiento. Estas resistencias variables no son lineales, pero su comportamiento, que tampoco es logarítmico, permiten trabajar con una buena aproximación a una relación proporcional de distancia por ohms.
Figura 1. mano izquierda del robot mostrando las resistencias variables.
Estas resistencias variables fueron escogidas porque contaban con cuatro conexiones, dos de ellas correspondían a las resistencia de punta a punta, es decir de 100KΩ, una tercera conexión correspondiente al valor de la resistencia que varía con el desplazamiento, y un cuarto terminal que no tiene influencia en la resistencia. Este cuatro terminal fue utilizado
para la obtención de una señal que indique cuando alguno de los cinco dedos llega al final de su recorrido, es decir, cuando el objeto ya esta hormado.
Se puede apreciar la forma y diseño de la resistencia variable, así mismo, la disposición que existe para la creación de la mano. En este circuito, cada extremo de la resistencia total es conectado, bien sea a un voltaje de alimentación o la referencia, la tercera conexión corresponde al valor sensado que se haya entre el voltaje de alimentación y cero voltios, y una ultima terminal adaptada para entrar en contacto con la alimentación cuando la resistencia haya llegado al final del trayecto (Ver Figura 1).
Este diseño se cumple para los cinco sensores correspondientes a los cinco dedos de la mano, obteniendo una carga aproximada de 20KΩ, que corresponde al resultado de cinco resistencias de 100KΩ en paralelo. Las señales de final de trayectoria están unidas por conexión, es decir se tiene un OR cableado de todas las señales de fin de trayectoria, que indica cuando alguno de los dedos ha llegado a su extremo, cuando esta señal sea activa podemos hacer la medición con la certeza de tener hormado el objeto.
5.1.2 Mapa físico de las manos. Conociendo un poco el circuito que se desprendía de los sensores, se pudo determinar un tamaño adecuado para la caja que contenía todo este sistema. Se determinó que un área de diez (10) centímetros por diez (10) centímetros era suficiente. La altura de la estructura se vio definida por el alto de los dedos, que en este caso fueron fabricados con balso por su peso, costo y fácil manejo.
Teniendo en cuenta que las manos debían ser desplazadas por un sistema de brazos, el material escogido para ser usado como soporte fue el acrílico. Este material cuenta con características importantes en el diseño, por un lado es un material ligero, esto da una ventaja frente a materiales de gran peso como puede ser la madera o algunos metales. Por otro lado, es un material firme, que puede ser fácilmente trabajable y que no se desgasta de manera sencilla, ventaja sobre la madera, y finalmente es un material no conductor, que es
una clara ventaja frente a materiales como el aluminio. Este última característica es importante ya que desconocemos los objetos que puedan llegar a ser sensados y por tanto no sabemos si estos pueden producir cambios en los sensores. Esta misma razón fue aplicada al material de los dedos, sin embargo encontramos que el acrílico era muy frágil para ser expuesto a continuas presiones en los dedos.
Figura 2. vista posterior de las manos del robot, se puede apreciar el circuito impreso.
Ya determinados estos materiales, acrílico para las tapas y balso para los dedos, el resto consistía en realizar un circuito que no ocupara tanto espacio, que no tuviera problemas en sus conexiones previstas por los continuos movimientos de los dedos y obviamente que fuera lo más ligero posible. Por ello, se determinó realizar un circuito impreso para cada mano. Este circuito mide aproximadamente 7.5 por 7.5 centímetros y cabe perfectamente en la caja, dejando espacio para la fabricación de un bus capaz de trasportar nuestras señales desde las manos hasta el lugar de procesamiento de información. (Ver Figura 2).
El espacio sobrante en el diseño de las manos se dejó libre para la inserción de algún otro tipo de sensor de ser necesaria. Más adelante se discutirá este tema, en la sección
correspondiente al sensor de temperatura. Debido a esto, la fabricación de las manos no fue llevada a cabo en este punto, sin embargo su estructura externa ya esta formada para poder continuar con el diseño de las otras partes.
5.2 LOS BRAZOS
Para poder posicionar las manos y poderlas desplazar, era necesaria la construcción de brazos capaces de mover un gran peso en un tiempo mínimo sin llegar a dañar el objeto que se quería reconocer. Para este trabajo se resolvió colocar las manos a una distancia pertinente del robot para facilitar su movimiento y para permitir agarrar objetos de cierto ancho.
La primera idea de diseño consistió en un par de pinzas que se cierran, cada una dependiente de un eje de rotación. Este diseño contemplaba un par de rotores, uno para cada brazo que movilizara la mano en una trayectoria semicircular hasta que ambas manos se encontraran. Este diseño no llego a ser implementado ya que este tipo de trayectoria no facilitaba el reconocimiento de la forma bidimensional del objeto. Usando esta trayectoria era posible que dos objetos de forma similar, pero dimensiones de ancho distintas, fueran tomados en partes diferentes y así se alterara el reconocimiento. Por ejemplo, si tuviésemos un cubo de ancho X, es posible que sea hormado muy cerca de su media, es decir dando como resultado dos líneas verticales rectas como prueba de su forma bidimensional. Sin embargo si tomamos un cubo parecido al anterior, pero de ancho X + Y, es posible que los sensores no alcancen los dos extremos laterales del cubo y la forma sensada sea distinta debido al ángulo de incidencia de las manos.
Un segundo diseño se planteó para solucionar este problema, si podíamos cambiar el trayecto de las manos por un desplazamiento en línea recta, el ángulo de incidencia sería igual, o por lo menos con poca variación. Usando un diseño de brazo articulado, copiado de los sistemas de cierre y apertura de puertas, se lograba un desplazamiento casi rectilíneo de las manos, manteniendo un eje independiente para cada brazo manejado por un rotor, y un eje móvil encadenado a un riel para mantener un desplazamiento rectilíneo de la parte extrema del brazo. Este diseño fue resuelto primero en una maqueta utilizando fichas de LEGO1 para su fabricación. El sistema funcionaba, sin embargo la maqueta difería considerablemente en el peso de las partes que en verdad se utilizaban.
Al intentar construir este sistema de movimiento con partes del mercado que soportaran el peso real de las manos y se pudieran acoplar por medio de tornillos, el sistema falló, debido principalmente al rozamiento producido por los ejes móviles con el riel. En ese momento se replantearon las ideas para la fabricación de un sistema capaz de movilizar las manos en una trayectoria rectilínea evitando al máximo el rozamiento.
Observando con mucho detenimiento el movimiento de una puerta corrediza, se decidió copiar el sistema de rieles de una puerta, esta vez utilizando dos rieles, uno arriba y otro abajo, un sistema con rodamientos, utilizados en carpintería para cajones y similares, y un sistema de tracción en ambos sentido producido por un solo motor para cada brazo. Este diseño tuvo mucho éxito ya que permite mover con facilidad el brazo, que no es articulado ni tiene un eje, simplemente lo desplaza por los rieles halando de una cuerda. El reto en ese momento fue el de usar un solo motor para halar en ambas direcciones, para eso, se trabajó un sistema de polea mixta que enrolla a la vez que desenrolla dos cuerdas y dependiendo del sentido de giro el brazo es halado en algún sentido.
Este sistema posee una especie de carro que esta atado por medio de una extensión metálica a la mano. Este carro, esta sujeto por dos cuerdas, una en cada dirección de movimiento que llegan a un solo eje movido por un rotor por medio de un cuidadoso juego de poleas. Una
1
de las cuerdas enrolla en sentido de las manecillas del reloj y la otra lo hace en sentido contrario. De esta manera, cuando el rotor gira en un sentido el brazo se abre y cuando gira en el otro sentido el brazo se cierra.
Figura 3. vista superior del robot sin tapa, se puede apreciar el sistema de poleas.
El sistema de poleas es necesario por varios motivos, el primero de ellos trata la fuerza de los motores. Siendo pequeños motores DC, estos no cuentan con un torque suficiente para desplazar el peso de los brazos y las manos, así que se provee de una relación de piñones para disminuir la velocidad de desplazamiento y aumentar la fuerza. En segundo lugar, se debe tener en cuenta que es importante darle grados de libertad al rotor en caso que la mano haya llegado a su límite, es decir, el rotor debe poder seguir girando sin dañar la estructura de las manos o los rieles, para esto se utiliza una banda elástica como conector entre el rotor y el eje (Ver Figura 3).
Este último diseño tuvo éxito y es el que actualmente se está utilizando, con motores DC alimentados con un potencial de 7.5 Voltios aproximadamente, las manos tienen la posibilidad de moverse hasta hormar el objeto sin dañarlo debido a su baja velocidad y su fuerza limitada. Es importante recalcar que se le quitó algo de fuerza al sistema para que no
se presentaran daños en la estructura de los objetos, sobre todo aquellos objetos de vidrio que se pretenden usar como ejemplares para identificación.
Los materiales utilizados en la fabricación de los brazos varían bastante. Por un lado, para mantener la uniformidad con las manos, la estructura del robot se ha trabajado en acrílico, así mismo los rieles y los soportes de motores y ejes. Los rodamientos utilizados para los carros de los rieles son de metal, al igual que las escuadras utilizadas como extensiones de los brazos para soportar las manos. Las partes metálicas utilizadas son principalmente utilizados en carpintería, así que su bajo peso, alta rigidez y bajo costo son ideales. Por otro lado, las cuerdas utilizadas son de Nylon de diferentes calibres dependiendo del sentido de giro.
5.3 LA CARA
Al igual que los animales, el robot posee una cara que le permite sensar otras características de los objetos al quererlos reconocer. Una de esas características es el color de los objetos, es decir sus características cromáticas. Para seguir con las analogías entre animales y el proyecto, los ojos son los encargados de la visión, pero el robot no desea ver, solo quiere distinguir los colores de lo que tiene enfrente, para esto se diseño un sistema similar a unos ojos capaces de distinguir ciertas frecuencias de luz.
Usando algunas teorías de la física óptica, se plantearon soluciones para lograr sensar esta característica. La primera de estas teorías, es la reflexión de la luz, para poder ver de que color es el objeto es necesario exponerlo a la luz y ver que frecuencias son reflejadas en mayor medida. Para lograr este cometido, se le pusieron dos ojos activos al robot que se componen de una bombilla de luz blanca para cada ojo, que permite iluminar de forma casi
igual a cualquier objeto puesto enfrente del robot, con esto se pretende desvincular las mediciones de cromas a las luz ambiente. Por otro lado tenemos tres ojos pasivos, que estén compuestos por fotorresistencias recubiertas por distintos colores para aumentar el rechazo o aceptación de rangos de frecuencias (Ver Figura 4).
Figura 4. se aprecia la cara del robot, distinguiéndose los ojos pasivos y activos.
Cada ojo pasivo esta recubierto por un color, los cuales son Verde, Amarillo y Azul-Violeta. Estos tres colores permiten una distinción en la medición de los distintos colores en objetos. Estos colores fueron escogidos usando referencias de artistas, diseñadores y por supuesto de tratamiento de imágenes, pero fue después de varias pruebas que fueron escogidos como los colores de filtros a utilizar. Los ojos pasivos se encuentran protegidos de las luz ambiente por la misma estructura física del robot y esto aumenta la independencia con la luz ambiente.
Los ojos del robot se encuentran en la cara, con una disposición triangular para los ojos pasivos, que se encuentran en la parte inferior de la cara, mientras los ojos activos se
encuentran en la parte alta y equidistantes de la mitad. Esta distribución se hizo así para poder exponer al objeto a la mayor cantidad de luz, y de igual forma poder sensar la mayor cantidad de luz reflejada por este.
La localización de la cara debía ser lo más cercana posible al objeto y que no interfiriera con el movimiento de los brazos. Para esto se creó una extensión del robot hacia adelante que permitió localizar la cara con un pequeño ángulo de inclinación muy cerca del objeto. Esta localización ayuda a que la luz ambiente sea menos incidente en los ojos pasivos ya que el mismo objeto trabaja como barrera para esta.
5.4 LA ALIMENTACIÓN
Siendo un robot con autonomía propia para poder identificar objetos, sería poco oportuno que el montaje no contara con su propia fuente de alimentación y por tanto este se viera limitado por una conexión eléctrica a alguna fuente de poder externa. Esta razón que es de gran peso si hablamos de robótica móvil se ve resuelta si portamos nuestra propia fuente de alimentación. Esta fuente de alimentación debe cumplir con un número de características que la hagan útil para el robot.
La primera de estas características consiste en su salida, esta debe ser un voltaje D.C. que permita operar de manera sencilla los circuitos eléctricos y electrónicos que posee el robot, al igual que sus actuadores como bombillos y motores. Se definió una fuente de 12 Voltios D.C. como potencial requerido. De esta forma se pueden operar los motores hasta su capacidad máxima (que son 12 V), y se puede distribuir una fuente de 5 Voltios para los circuitos.
Por otro lado, los motores D.C. de apertura de los brazos necesitan un amperaje suficiente para su buen funcionamiento. Este amperaje ha sido calculado de manera experimental dependiendo de las distintas situaciones a las que se ve el robot expuesto al hormar un objeto. En el peor de los casos, cada motor requiere un máximo de 0.7 Amperios para poder desplazar las manos de manera satisfactoria, si la resistencia del objeto lo permite. Teniendo en cuenta que el robot nunca tomaría un objeto estando en movimiento, solo dos motores actuarían a la vez, (esto teniendo en cuenta futuras mejoras al robot, como motores propios para el desplazamiento), es por esto que la fuente de alimentación debe contar con un suministro de corriente superior a 1.5 A/h. Además de esto, hay que contar con las exigencias de corriente de los circuitos, aunque esta sea mucho menor que la antes mencionada. En total, una fuente de 2.0 A/h es suficiente para cubrir las necesidades de corriente del robot.
Otro aspecto importante es el tamaño de la batería a utilizar, a parte de contar con las características eléctricas antes mencionadas, la batería debe poderse colocar dentro del robot para que haga parte del mismo y no se convierta en un módulo anexo de este. Para lograr este fin se analizaron algunas alternativas del mercado que permitieran definir que formato de batería era la más adecuada. Finalmente se decidió por una batería con una altura inferior a los diez centímetros y que fuera rectangular para poder optimizar el espacio interno del robot dispuesto para la fuente de alimentación y circuitos.
Un último requerimiento era la duración de la batería, si este robot se llevara a un proceso industrial debería por lo menos durar una jornada de trabajo completa, es decir debería soportar prácticamente un día laboral completo para no entorpecer las acciones. Contando con este y todos los requerimientos antes mencionados se decidió por una batería PANASONIC de 12 V, 2.2 A/h y una duración de carga completa de veinte (20) horas. Esta batería esta localizada en la parte posterior del robot, lo que permite una mejor distribución de peso ya que los brazos y motores se encuentran en la parte frontal.
Para lograr que esta fuente provea de energía a cada etapa del robot, se utilizaron dos reguladores de voltaje, uno que permite tener una salida constante de 5.0 voltios para alimentar los circuitos y un segundo controlador que alimenta a los motores con 7.5 voltios y una salida de corriente de 1.5 A, que es la máxima exigida por ambos motores. Finalmente cabe destacar que esta batería es recargable y que tiene una vida útil de varios años (Ver Figura 5).
6 ETAPA LÓGICA Y DE ALGORITMOS
Teniendo ya caracterizada la parte mecánica y física del robot, es importante definir los algoritmos y rutinas que se deben llevar a cabo para el manejo de la información. Este flujo de información va desde una medición física hasta un resultado que informa el número del objeto que se ha identificado, o en caso de ser uno nuevo, la asignación de un número para este objeto. Estas definiciones son importantes para poder repartir este gran proceso de identificación y aprendizaje en pequeñas rutinas de fácil manejo y mantenimiento para lograr un desarrollo óptimo.
Al pretender desenvolver un gran algoritmo en pequeñas partes, se debe empezar no solo por mirar el problema sino por definir una comunicación adecuada para que estos pequeños procesos puedan actuar en conjunto. La primera definición que se utilizó, fue la determinación del uso de 5.0 Voltios como alimentación de todos los circuitos eléctricos, esto incluye además sensores. Con esta definición, se incluyó además una característica importante en los valores que iban a tener las señales que se iban a sensar.
Todos los sensores del robot deben operar en un rango de cero (cinco) a cero (0) Voltios, para poder lograr esto es necesario la inclusión de etapas de amplificación para el caso del sensor de temperatura, y de manejo de impedancias para el resto de sensores. Con estos datos físicos obtenidos de las distintas pruebas se alimentaban los algoritmos y programas de simulación para poder analizar sus alcances antes de ser montadas.
Con el fin de mantener una uniformidad entre la información física obtenida y la información procesada, se estableció que toda señal análoga de cero a cinco voltios, que
manejaba la salida de cada sensor, iba a ser discretizada y normalizada en el mismo formato, es decir con un valor mínimo de 0.0 y un valor máximo de 5.0.
Teniendo esta premisa sobre los posibles valores de los datos que alimentarían los distintos algoritmos, se diseñaron estrategias para afrontar cada etapa de reconocimiento de patrones requerida. La primera de estas etapas consistió en el reconocimiento de la forma bidimensional de los objetos, se escogió esta como la primera etapa a trabajar debido a su importancia y la complejidad de la misma, que exigía un tiempo mayor de desarrollo y pruebas que el resto de etapas.
6.1 RECONOCIMIENTO DE FORMA
El reconocimiento de forma bidimensional pretende tener una aproximación del relieve del objeto si se mira de lado. Debido que las posibles formas de un objeto son infinitas, era abrupto establecer un número de formas posibles y limitar el proceso a identificar la más parecida a la real.
Este proceso sesgado quería superarse de la mejor manera y es por esto que se resolvió presentar una serie de formas comunes de los objetos, y desarrollar un algoritmo que fuera capaz de decidir cuales de esas formas se parecían en gran medida a la anatomía del objeto, en otras palabras era posible que un objeto presentara varias de las formas comunes antes mencionadas.
Se empezó definiendo cada una de las formas básicas con las cuales se podía caracterizar la forma del objeto. Se estableció un número de ocho posibles formas básicas que debían incluir curvas, rectas, diagonales entre otras. Teniendo en cuenta las limitantes físicas del
robot, los objetos que iban a querer ser identificados no deben poseer un ancho superior a diez centímetros, así que las copas y vasos podían ser una fuente de inspiración para analizar el tipo de objeto que se podían medir. Gracias a esto, se establecieron las formas más apropiadas para esta clase de objetos que se adaptan muy bien a otra clase de objetos.
Figura 6. formas básicas para el reconocimiento de forma.
En la Figura 6 se pueden observar las formas básicas. Se definieron dos tipos de líneas rectas, una vertical y una horizontal. La primera de ellas es para representar los objetos que poseen un lado plano es decir como un libro o un cubo. La segunda línea recta es la horizontal y es representante de formas en las que el objeto presenta un alto menor a la distancia entre los dedos superior e inferior de la mano y por tanto solo algunos de los sensores son deslazados y algunos de los extremos quedan total o parcialmente extendidos. En este caso aparecen cubos con un alto menor como se ve en el ejemplo. Este caso es bastante global ya que puede ser que el objeto se encuentre localizado en la mitad pero no este ejerciendo presión sobre todos los dedos centrales (Ver Figura 7).
Los dos casos siguientes pertenecen a las curvas y estas están definidas como cóncavas o convexas. Debido a la generalidad de las curvas, están deben ser identificadas a pesar del diámetro del circulo o la altura a la que se presentan con relación a las manos del robot. Es importante recalcar que uno se puede presentar a una curva en la parte media de esta o en la parte superior o inferior, dando así una forma diferente para cada caso, sin embargo el algoritmo debe estar en capacidad de asociar todas estas posibilidades con la forma curva correspondiente a su sentido, es decir cóncava o convexa, como se muestra en las figuras. Estas son las formas básicas con mayor complejidad en cuanto a patrones de reconocimiento se refiere (Ver Figura 8).
Figura 8. ejemplos de horma para curvas cóncava y convexa
Finalmente las últimas cuatro opciones son las definidas como diagonales con cambio, es decir objetos que presentan dos zonas fácilmente diferenciables. Ya que existen figuras con la parte superior en mayor relieve que la inferior o viceversa, se decidió determinar dos tipos de formas para señalar estos cambios, estas son las formas básicas quinta y sexta. Finalmente están las diagonales que son fáciles de diferencia debido a su naturaleza progresiva de disminución de relieve tanto en sentido superior o inferior. Estas dos figuras
corresponden a las últimas dos formas básicas con las que se pretende asociar la forma real del objeto (Ver Figura 9).
Figura 9. ejemplos de horma para diagonales y cambios.
Teniendo ya definidas las formas básicas con las que se pretende trabajar, se plantearon varias opciones como alternativas para el algoritmo. La primera alternativa era generar tablas para identificar los patrones que se presentan en cada forma y asociarlos de manera subjetiva para poder definir quien pertenecía a una forma determinada. Por otro lado se quería intentar un reconocimiento por medio de redes neuronales que permitiera generar varios espacios vectoriales con las distintas características de cada forma básica y después agrupar estas características para decidir que forma podía asociarse mejor con alguna forma básica. Después de algunos intentos para establecer subjetivamente los patrones más comunes de cada forma, se decidió abandonar esta alternativa para concentrarnos en un trabajo con redes neuronales.
6.1.1 La red neuronal. La red neuronal que se utilizó para este proceso es una red neuronal de arquitectura Feed-Forward. Se escogió este tipo de red neuronal ya que poseemos información suficiente para generar nuestra propia base de datos completa, además por la experiencia previa que se tiene trabajando con este tipo de redes.
Para el entrenamiento de esta red neuronal se realizó una base de datos con más de diez ejemplos por cada una de las formas básicas, de los cuales solo se utilizaron 800 de estos ejemplares para el proceso de entrenamiento y el resto se utilizó como validación. Para la red se utilizaron programas de mi propiedad que fueron desarrollados hace un año durante la clase de Redes Neuronales que tienen la capacidad de entrenar redes con métodos de
Back Propagation o Full Propagation, y que cuentan con una sigmoide como función de
activación. Esta sigmoide es idéntica a la utilizada en proyectos pasados basados en reconocimiento de patrones y se determinó con anterioridad dados los buenos resultados que ha tenido en casos anteriores. Debido a esto, se sugirió el uso de la misma sigmoide y se estableció un umbral de 0.6 para la segunda capa de neuronas, con el fin de activar alguna de las salidas.
La red neuronal, después de varios intentos de entrenamiento se estableció con un tamaño de cinco neuronas en la capa intermedia y ocho para la capa de salida, sonde cada una de las neuronas de salida correspondía a una de las formas básicas preestablecidas. Para el entrenamiento de la red se desarrollo un simulador del movimiento de los dedos de una mano. Este simulador da un valor correspondiente al movimiento de cada dedo que va desde cero hasta cinco, imitando el funcionamiento real de una mano. El simulador fue diseñado usando el programa de animación Flash2 que permite una interacción sencilla para el movimiento de los dedos.
Usando este simulador se generó la base de datos que se utilizó en otro programa, desarrollado en C, para el entrenamiento de la red. Posterior a esto, se realizó un último programa que conjugaba el simulador de movimiento de los dedos de la mano para permitir conocer el valor que entregarían los sensores, y entrando estos valores en campos de texto, se calcula la salida y se entrega la respuesta correspondiente para una forma dada. Este último programa fue realizado en JAVAScript para ser utilizado en cualquier navegador sin
2
problemas y para poder operar con una animación de FLASH y la implementación de una red neuronal en JAVA. Este último programa fue realizado con el fin de validar en casos inhóspitos el comportamiento de la red, gracias esto se pudo comprobar que la red tiene un gran factor de apreciación con diferentes formas, incluso con formas a veces incoherentes para un objeto normal.
Finalmente se decidió operar dos veces esta misma red neuronal, la primera vez con la información proveniente de la mano izquierda y la segunda vez con la información proveniente de la mano derecha del robot. La información resultante se almacena en dos palabras de ocho bits, donde cada palabra es el resultado de la información de forma de cada lado del objeto. Cada bit de estas palabras representa una forma básica con la que puede ser catalogada la forma real del objeto. Debido que la forma real de un objeto puede ser asociada a varias formas básicas se decidió este sistema no codificado de información que permite una lectura y comparación posterior de la información de una manera sencilla y no tenemos que complicarnos observando que formas se pueden asociar entre sí y que formas nunca serán asociadas a una misma forma real.
6.2 RECONOCIMIENTO DE CROMAS
El reconocimiento de cormas o colores es un proceso bastante subjetivo donde es necesario predefinir y seleccionar ejemplo de los colores para establecer una base de datos fidedigna. Esto es realmente complicado ya que no siempre un mismo color se es identificado con el mismo nombre por varias personas, en muchos casos es difícil diferenciar un verde de un azul o un rojo y un naranja. Por esta razón se busco la opinión de varias personas para seleccionar objetos con colores “puros” para la generación de la base de datos.
Conociendo un poco la teoría de composición del color, que puede ser utilizada con tres únicos colores para la composición de cualquier otro color, como lo es el caso de los tres colores primarios utilizados en pintura (amarillo, azul y rojo), los tres colores utilizados en las pantallas (Rojo, Verde y Azul) o muchos otros, se decidió utilizar tres sensores para la detección de intensidad de luz con distintos filtros de colores que permitieran una lectura similar a la que se hace en una pantalla de computador.
En un área tan diferente a la electrónica como lo es el Diseño Industrial, encontramos una solución al problema mirando la forma como ellos trabajaban con filtros de colores para producir efectos ópticos. Los tres colores que ellos utilizan son denominados: Amarillo, Verde y Azul-Violeta. Con estos tres colores descomponen la luz y producen distintas mezclas de luz que suelen ser interesantes. Con esta misma concepción cada sensor, que para este caso es una fotorresistencia, fue cubierto por una capa de estos colores.
Teniendo un sensor con un filtro Amarillo, otro con un filtro Verde y un último sensor con un filtro Azul-Violeta, obtenemos la información cromática de un objeto que tengamos enfrente. Estos tres sensores entregan un valor entre cero y cinco voltios que es discretizado y normalizado en valor de 0.0 a 5.0 para su operación. Resueltos los problemas físicos referentes a este caso, como lo es la luz ambiente, se obtuvo una base de datos observando los valores que entregaba cada uno de los tres sensores. Con estos valores se lleno una tabla para tener una identificación previa de los ocho colores escogidos.
Al igual que en el caso anterior de formas, se definieron ocho colores básicos que corresponden a: el blanco, el negro, los tres colores primarios y los tres colores secundarios. Con esta definición se realizaron dos procesos distintos para el procesamiento de la información. El primer método consistió en probar con varios objetos de distintos colores y comparar la información obtenida con la tabla ya establecida de colores. Esta tabla fue renovándose con esa información, hasta que finalmente la tabla predecía con gran éxito el color más determinante de un objeto. Posterior a este proceso, se realizaron algunas
modificaciones a los valores extremos de cada color para permitir la inclusión de colores intermedios a los referidos en las formas básicas para que de esta forma fuera posible que un objeto fuera catalogado como una mezcla de dos o más colores, por ejemplo, un objeto podía ser rojo y naranja.
El segundo método utilizado fue el entrenamiento de una red neuronal con la misma arquitectura de la utilizada en el reconocimiento de forma. El resultado de este proceso se ve en una red de cuatro neuronas intermedias y ocho de salida. Sin embargo los resultados obtenidos no fueron del todo satisfactorios ya que la diferencia entre un valor positivo y uno negativo para un color básico, solo difiere en unas pocas décimas en la respuesta. El umbral para este caso fue de 0.30 y aunque se aproximaba bastante a la realidad, la cercanía de las salidas por encima y por debajo del umbral no permitía que en el caso real la respuesta no fuese equivocada. Finalmente se trabajó con un red un poco más grande, que poseía una neurona más en la capa intermedia pero el resultado fue similar y se perdió precisión entre los colores amarillo y naranja.
La razones para que el entrenamiento con redes neuronales de este proceso no hayan sido del todo satisfactorias son debidas a las limitantes físicas del robot, cuyos sensores no proveen un gran rango de valores en las respuestas y que no se contó con una base de datos del tamaño deseado para un buen estudio de varias tipos de bases de datos.
Se optó entonces por el primer método en el cual se diseñaron regiones vectoriales tridimensionales, ya que son tres entradas, en las cuales se ubican cada unos de los ocho colores básicos. Estos espacios vectoriales se entrelazan unos a otros para que el cambio de un color a otro no sea abrupto como se ve en la Figura 10. La información obtenida por este algoritmo de reconocimiento, en el cual se compara el valor de cada sensor con los rangos de valores de cada espacio vectorial para determinar su pertenencia o no, es entregada en una palabra de ocho bits, donde cada bit representa un color básico. Se mantiene el mismo formato de almacenamiento que se tiene para el reconocimiento de formas debido a su facilidad para comparaciones directas bit a bit a pesar que es más factible encontrar los posibles cromas que podrían asociarse a un solo objeto ya que conocemos las zonas de superposición de los espacios vectoriales.
El reconocimiento de ancho y temperatura de un objeto puede diferir en gran medida del algoritmo que se utilice, sin embargo en este caso tenemos un rango no muy amplio de valores posibles para el ancho y la temperatura de los objetos. Para el caso del ancho, las limitantes físicas del desplazamiento de las manos y el largo de los dedos juegan un papel determinante para establecer un rango fijo de operación. Este rango es de aproximadamente tres milímetros a diez centímetros de ancho.
Aprovechando un poco la manera como trabaja la apertura de las manos en el robot, que consiste en el movimiento de dos motores que por medio de unas poleas halan los carros que mantienen las manos en un riel, es posible tomar una medida sencilla del desplazamiento que han cubierto ambas manos hasta tener un dato del ancho del objeto. Para estos datos, se incluyeron resistencias variables que se movieran junto con las poleas de tracción de los brazos y de esta forma obtener una señal eléctrica dependiente del ancho del objeto.
Los dos valores obtenidos por estos dos sensores, cada uno dispuesto sobre una de las poleas de tracción de cada mano, están en el rango de cero a cinco voltios, para mantener la hegemonía en el robot. Posterior a la obtención del dato, que se hace de manera totalmente mecánica, se discretizan ambos datos, se normalizan de 0.0 a 5.0 y se suman para obtener un dato que represente una medida del ancho del objeto, es decir una magnitud proporcional al movimiento de ambos brazos hacia el objeto, a mayor desplazamiento de los brazos, menor será el ancho del objeto.
Para el caso de la temperatura, este dato es proporcionado por un sensor comercial de temperatura que presenta características lineales para temperaturas cercanas a las ambiente, es decir para rango de temperatura entre 0 ºC y 50 ºC. Este sensor entrega un valor de voltaje bajo que representa cada temperatura, por ejemplo en unas condiciones de 34ºC, el sensor entregará un valor de 0.34 voltios. Para poder mantener la hegemonía en el robot, se
ha decidido amplificar la señal del sensor en un factor de diez por medio de un amplificador operacional. Este amplificador con una configuración de amplificación no inversora, entrega un valor entre los cero y cinco voltios, dada que la polarización del amplificador es de cinco voltios. Esto permite trabajar con una señal análoga con un mayor rango de operación que además es un buen rango de funcionamiento.
Es importante notar que el robot tiene limitantes físicas con respecto a la temperatura que puede soportar, es decir, una temperatura por debajo de cero puede provocar fallas en las manos ya que puede obstruir el libre movimiento de los dedos. Por otro lado, la zona que entra en contacto con los objetos esta hecha de caucho, lo que limita las altas temperaturas. Por esta razón una zona de operación para la temperatura entre los 0 ºC y los 50 ºC es suficiente para nosotros dadas las condiciones de el robot. Este dato al igual que los otros es discretizado y normalizado en un rango de 0.0 a 5.0 para poder ser operado dentro de los algoritmos.
El proceso de clasificación de las características de ancho y temperatura para los objetos, son llevados a cabo por un simple algoritmo que contiene zonas de decisión difusas. En otras palabras, comparando la magnitud del valor obtenido de cada característica, se analiza si se encuentra en alguna de las dos zonas provistas para caracterizar estas dos propiedades físicas de los objetos. Se puede ver en la Figura 11 la manera como se muestran estas zonas cuyos limites fueron estipulados teniendo en cuenta eventos equiprobables para estos valores.
Figura 11. zonas de decisión difusas para temperatura y ancho. El eje vertical corresponde a la respuesta y el horizontal al valor de la entrada
Como se puede apreciar en la figura, existen dos zonas que dependen del valor de la señal discretizada y normalizada de los sensores. En caso que el valor pertenezca a la primera zona, será caracterizado como delgado, para el caso del ancho, o frío, para el caso de la temperatura. Si se encuentra en la zona final, será caracterizado como ancho, para el primer caso, o caliente para el segundo. Sin embargo existe una zona intermedia donde las zonas se cruzan y el robot decidirá que el objeto no es muy ancho ni muy delgado, o para el caso de la temperatura, que el objeto no es muy frío ni muy caliente, es decir que esta en una temperatura media (Ver Figura 11).
La información proveniente del resultado de este sencillo algoritmo de comparación de magnitudes, es almacenado en cuatro bits, dos que corresponden a las características referentes al ancho y dos que corresponden a la temperatura. Cada bit representa, para el caso de la temperatura, la condición fría y caliente, es decir si están ambas activadas significará que el objeto esta en la zona intermedia de temperatura.
7 MONTAJE ELECTRÓNICO
El área correspondiente al montaje electrónico incluye también la elección de los dispositivos a utilizar, así mismo como las técnicas para llevar a cabo la operación de los algoritmos en los dispositivos. A pesar que esta es la última etapa de desarrollo, en la cual se utiliza el montaje mecánico, los programas con la información necesaria para llevar a cabo los distintos algoritmos, fue necesario colocar restricciones eléctricas y físicas al montaje.
La primera limitante existente es la alimentación, sabíamos de antemano que solo contábamos con una alimentación de 5.0 voltios para los circuitos, es decir no contábamos con fuente negativas y esto obligaba a usar únicamente cierto tipo de dispositivos comerciales. Entre los requerimientos para todo el proceso, existía una etapa de tratamiento de señales análogas, que debían ser convertidas en señales digitales para su tratamiento en algoritmos matemáticos complejos. Por otro lado necesitábamos memoria para poder almacenar la información que se obtenía del objeto sensado, además de la memoria necesaria para guardar la información de los objetos conocidos. Finalmente necesitábamos alguna clase de unidad matemática o procesador que se encargara de realizar operaciones, comparaciones y demás partes de los distintos algoritmos. Debido a todas estas razones, se busco en primera instancia las alternativas que se encontraban disponibles.
Era predecible que el robot necesitaría de un “cerebro” que manejara y administrara los distintos algoritmos ya descritos. Para este fin se evaluaron varias alternativas que contemplaban distintos dispositivos de distintas familias. El primero dispositivo que se observó fue un DSP de la Texas Instrument3, se evaluó esta alternativa debido que los DSP’s cuentan con una gran velocidad para llevar a cabo operaciones matemáticas complejas. En este mismo nivel se evaluó un DSP de la familia MOTOROLA4 que contaba con menos capacidad que su contraparte de la TI.
Desafortunadamente para el diseño, los DSP’s fueron evaluados con los procesadores de 8 bits, esto hacía que se dificultara el trabajo y que las ventajas que estos ofrecían en velocidad frente a otro tipo de procesadores disminuyera considerablemente. Otro punto desfavorable para estos dispositivos es su montaje físico, ya que están dispuestos en tarjetas de desarrollo que sobrepasan el espacio interno del robot destinado para los circuitos.
Se analizaron también otras dos alternativas que comprenden un microprocesador de la familia MOTOROLA, y un PIC de la familia Microchip5. El primero de ellos, un procesador de bajo costo, arquitectura SISC de 8 bit. El segundo un procesador con arquitectura RISC de 8 bit. A pesar de las ventajas que ofrece la primera arquitectura, el segundo microprocesador contaba con un conversor análogo digital con ocho líneas de entrada multiplexadas, con un grado de operación de 10 bit para la conversión, 8K de memoria Flash para el programa, una velocidad de operación de 20Mhz y una condición que lo hizo el elegido, la capacidad para sobrescribir su programa en modo operación.
Estas facultades hicieron que el dispositivo elegido para ser el cerebro de el robot fuera el PIC16F877 de la familia Microchip. Se determinó que se utilizaría aproximadamente 4K de la memoria Flash del dispositivo para operar los algoritmos y la otra mitad de la memoria sería destinada para el almacenamiento de la información de los objetos ya conocidos. El tiempo de operación del dispositivo no debería ser muy alto ya que a partir de una orden
3 T.I. Texas Instrument.®.
4 MOTOROLA. Marca Registrada MOTOROLA Porducts. 5
para reconocer, el cerebro debería dar el número del objeto en menos de un par de segundos.
Se utilizó el conversor análogo digital del dispositivo para realizar la conversión de los dieciséis datos provenientes de los sensores, y por medio de una sencilla operación matemática eran normalizados de 0.0 a 5.0. Por otra parte, era necesario estandarizar el tipo de datos que se iban a utilizar en el dispositivo. A pesar que este es un procesador de 8 bit, se utilizó un formato de 24 bit para flotantes que permite trabajar con una gran autonomía los algoritmos propuestos a nivel software y que además dan una gran precisión hasta aproximadamente el cuarto decimal en todas las operaciones, comparándolo con los valores resultantes en un computador con procesador Pentium III.
Para poder utilizar este formato de números, fue necesario la inclusión de una librería con operaciones matemáticas básicas para estos números. Parte de esta librería puede ser vista y obtenida de manera gratuita en el portal de la empresa productora del dispositivo. Ahora que se contaba con una limitante en el número de instrucciones disponibles para ejecutar los algoritmos, se decidió que todo el código sería trabajado en lenguaje Assembler, que permite tener un control total de los recursos del dispositivo, así como del uso de la memoria RAM del mismo. Por esta razón, fue necesario rescribir parte de la librería que se encontraba en lenguaje C, para poder tener una completa librería para flotantes de 24 bit en código Assembler. El resultado de este proceso se encuentra en aproximadamente 1.500 operaciones que permiten sumar, restar, multiplicar, dividir y comparar magnitudes de dos números flotantes, así mismo se realizó una operación matemática compleja necesaria en las redes neuronales, la exponencial.
El formato de 24 bit esta representado en dos partes, la primera de ellas consiste en un exponente de dos que permite saber la potencia a la que es elevado el número de la base. La base es un conjunto de potencias negativas de dos que da como resultado un número entre 1.0 y 2.0 para representar todos los números en un rango muy amplio. Para un mejor tratamiento de este formato, se desarrollaron dos pequeños programas en C que permiten
pasar del formato binario de 24 bit para flotantes a un número decimal y viceversa. El número en esta representación incluye además su signo, lo que lo hace útil para nuestras operaciones.
7.2 FORMATO DE 24 BIT PARA FLOTANTES
El formato de 24 bit que se utilizó es planteado por un grupo de desarrollo de programas en PIC´s de la misma compañía que los produce. El formato de la IEEE de 32 bit para flotantes es muy efectivo pero debido a su tamaño, el procesamiento requerido para una simple operación es mucho más complejo que el de 24. Por otro lado, el formato de 24 bit da una aproximación idéntica hasta el cuarto decimal del número y esto asegura un buen manejo de los datos sin tener una pérdida significativa de información. Estos dos formatos son compatibles y en caso de ser necesario se podría pasar de un formato al otro con la misma librería implementada.
Figura 12. formato decimal de 24 bits.
Para describir un poco el formato, se expondrá un ejemplo de una de las constantes utilizadas en el programa. El número de 24 bit está repartido en una palabra de 8 bit que representa la potencia de dos a la que debe ser elevada la base del número. Esta potencia esta referencia con el número 7Fh, es decir si el exponente es 80h, la base será multiplicada por dos a la 80h – 7Fh, es decir por dos a la uno. La base del número está representada con las potencias negativas de dos. Esta base comprende dos palabras de 8 bit, en total, desde la
potencia -1, hasta la potencia -15 de dos. El primer bit de la base representa el signo del número.
Analicemos el número 844910h que se encuentra en formato de 24 bit. El exponente del número corresponde al número 84h. Este número debe ser restado con el número 7Fh para ver la potencia del número. El resultado es 5, es decir la base del número será multiplicada por dos a la cinco, 32. La base del número corresponde a 4910h y representa las potencias negativas de dos. En este caso, (Ver Figura 12), las potencias negativas de dos que son activadas son: -1,-4,-7 y -11. Por condición del formato, siempre se suma uno al resultado de la base, es decir la menor base es uno y la mayor es aproximadamente dos.
El resultado de la base corresponde a la suma de estas potencias de dos, dando un resultado de 1.57080078125 en decimal. Este número multiplicado por dos elevado a la cinco da el resultado final que corresponde a 50.265625 en decimal. (Ver Figura 13).
7.3 EL ALGORITMO PRINCIPAL
A pesar que el proceso fue distribuido en pequeñas rutinas, capaces de operar de manera independiente pero que cuentan con un formato de comunicación establecido, existe un gran algoritmo que comprende a los demás y que determina el flujo de datos y control del robot. Este algoritmo trató de diseñarse de la manera más sencilla para facilitar el acople de las distintas rutinas, simplificando el trabajo de unión y pruebas. Por último es importante tener en cuenta que el robot puede operar en varios modos, uno de las cuales está a cargo de este algoritmo y comprende la función de reconocimiento (Ver Figura 14).
Figura 14. modos de operación del robot.
La secuencia para el reconocimiento de un objeto está dividida en varias partes. Inicia con un proceso de espera a una señal de activación, operada por el usuario desde el teclado, que inicia la conversión análoga digital de los dieciséis datos provenientes de los sensores. Estos dieciséis datos están representados en cinco sensores en cada mano, tres
fotoresistores, un sensor de temperatura y dos resistencias variables que determinan el ancho (Ver Figura 15).
Figura 15. flujo de control para el modo de reconocimiento.
El proceso de reconocimiento avanza con el uso de una red neuronal para el reconocimiento de la forma bidimensional del objeto. La primera operación de esta se realiza con los datos normalizados provenientes de la mano izquierda, y posterior a esto se alimenta de nuevo esta red con los datos de la mano derecha. Cuando este resultado está completo, se procede
a la utilización de los datos cromáticos. Estos tres datos son comparados y son clasificados en un espacio vectorial definido, para determinar cuales son los colores más representativos del objeto.
Posterior a este proceso se realiza la comparación de magnitudes para los datos de temperatura y ancho en espacios difusos. Con estos dos últimos procesos terminados, se tiene un vector de veintiocho bits con la información del objeto. Esta información es comparada con la información almacenada en la base de datos de objetos del robot, con una proporción del 96.5% de parentesco para identificar el objeto actual como uno ya conocido.
Este porcentaje se deduce de la relación de un bit distinto de los veintiocho que componen el vector de información. Es decir, si dos objetos comparten veintisiete o más bits iguales del vector, se consideran objetos iguales. Este porcentaje se consideró necesario debido a los cambios que se pueden presentar en las mediciones del objeto, cambios debido a luminosidad, temperatura ambiente, etc.
Finalmente si no se encuentra un objeto que cumpla con las características antes mencionadas, se concluye que el objeto es desconocido y su información se almacena en el primer campo de la base de datos vacío. Esta información es almacenada de forma permanente y se le informa al usuario que el objeto ha sido catalogado como nuevo, informándole además el número que le fue asignado dentro de la base de datos. En caso que el espacio de memoria de la base de datos haya terminado, el objeto no es almacenado y se muestra el número de objeto FFFh.
El procesamiento de los datos se realiza en varias etapas que comprenden desde la obtención de una señal mecánica o física, hasta el resultado que es visible para el usuario y la información almacenada que es invisible para este mismo, pero que puede ser obtenida leyendo la información contenida en la memoria del dispositivo.
El primer paso en el procesamiento de los datos consiste en la transformación de señales mecánicas y físicas, como lo son desplazamiento, intensidad de la luz y temperatura, en señales eléctricas. Cumplida esta etapa, que es explicada con mayor detalle en cada uno de los sensores, se procede a una conversión análoga digital. La conversión se realiza por medio de un ADC incorporado en el microprocesador utilizado, que cuenta con un reloj de 20 MHz, y una característica de conversión de diez bits para voltajes que oscilan entre la alimentación del dispositivo (5V) y la referencia (Gnd). El ADC del dispositivo cuenta con ocho entradas análogas y un único conversor para estas ocho líneas, por lo que cuenta con un multiplexor interno para seleccionar cada línea. Este proceso se lleva de forma iterativa convirtiendo las cinco entradas provenientes de la mano izquierda y las tres correspondientes a los fotoresistores en la primera ronda de conversión.
Como el robot cuenta con dieciséis señales provenientes de los sensores, se realiza una segunda ronda de lectura. Estas rondas se diferencian utilizando multiplexores análogos externos al microprocesador, que son manejados por una señal de salida de este último. La segunda ronda está compuesta por la lectura de los cinco sensores provenientes de la mano derecha, los dos sensores que miden el ancho y la señal correspondiente a la temperatura.
A medida que cada dato es convertido a un valor digital, este es considerado un entero de 16 bits (añadiendo los cinco bits más significativos como ceros), y es convertido a un número decimal en formato de 24 bits, que es el utilizado en nuestro algoritmo gracias a la librería de operaciones de flotantes de 24 bits. Ya en este formato, el número que oscila entre un valor de 0 y 1028, es normalizado en valores entre cero y cinco para mantener una hegemonía entre el valor obtenido por el sensor y el dato a procesar.
Posterior a esta normalización, los dieciséis datos son almacenados en la memoria RAM del microprocesador para ser utilizados en los distintos algoritmos de comparación y reconocimiento. El resultado de estos procesos de reconocimiento es almacenado en una memoria tipo FLASH, también interna del microprocesador, para hacer parte de la base de datos de objetos del robot. Este último resultado es invisible para el usuario quien
desconoce las características asignadas al objeto, pero si es conocido el número del campo de ese objeto, es decir el número con el cual se asocia ese tipo de objetos en la base de datos. Este dato se encuentra en un formato tipo vector de 28 bits. Finalmente el dato mostrado al usuario es un número hexa que corresponde al número del objeto dentro de la base de datos (Ver Figura 16)..
Figura 16. flujo de datos del modo de reconocimiento.
Si por ejemplo el objeto a reconocer es una pelota de ocho centímetros de diámetro, de color rojo, las posibles características asociadas al objeto serán: para la mano derecha un objeto cóncavo, para la mano izquierda un objeto cóncavo, en cromas un objeto rojo, en anchura un objeto ancho y en temperatura un objeto tibio. Esto se puede ver representado
en el formato de 28 bits que está dividido en dos palabras de ocho bits y dos palabras de seis bits (Ver Figura 17).
Figura 17. formato de 28 bits para representación de un objeto.
La primera palabra del formato la conforma la palabra de seis bits correspondiente a los seis primero cromas. Esta palabra se denomina OBJ0. La segunda palabra del formato está constituida por la información de la forma bidimensional de la mano izquierda, a este palabra se le llama OBJ1. La palabra OBJ2 corresponde a otra palabra de seis bits que contiene los colores blanco y negro, y los datos de anchura y temperatura. Por último la palabra OBJ3 corresponde a la información de forma bidimensional, proveniente de la mano derecha del robot.
Para el caso de la pelota roja tendríamos una información como la siguiente: OBJ0 = 04h, OBJ1 = 10h, OBJ2 = 0Bh y OBJ3 = 10h. Es decir se tendría una forma bidimensional cóncava para cada mano, un color rojo, una temperatura media y el objeto sería ancho. En resumen, cada bit del vector de 28 bits corresponde a una característica específica y al momento de una comparación, todas las características son equivalentes en importancia.
8 APLICACIONES
Un producto no tiene ninguna razón de ser, sino está encaminado a la utilización posterior en el mercado, es decir, toda investigación debe estar referenciada a un desarrollo posible para algún área del mercado donde pueda generar beneficios. A priori es a veces difícil saber con certeza en que circunstancias puede ser o no utilizado un producto, sobre todo cuando este se encuentra en un estado de desarrollo e investigación, sin embargo es posible describir algunos escenarios donde la nueva alternativa pueda contribuir con avances.
8.1 CAMPOS DE ACCIÓN EN EL MERCADO
Un sistema con capacidad para identificar algunas características físicas de cualquier objeto, teniendo en cuenta las limitaciones físicas del mismo, tiene un sin número de posibles aplicaciones, tanto en el mercado, como en situaciones de la vida cotidiana. Pero es en áreas laborales donde es posible encontrar un mejor uso de estos servicios, que de pronto por su tamaño y forma de operación, esté un poco más limitado en oficios no empresariales.
Un primer aspecto que es importante recalcar, es el precio de fabricación de este dispositivo. Para el prototipo, que se presenta junto con este documento, no se ha invertido una gran cantidad de dinero, sin embargo si ha tenido un costo importante en horas hombre, no de producción, sino en diseño, tanto física, mecánica, estética y electrónica. Para esto es