Diseño y construcción de un robot móvil autónomo experimental basado en inteligencia artificial

Texto completo

(1)DISEÑO Y CONSTRUCCIÓN DE UN ROBOT MÓVIL AUTÓNOMO EXPERIMENTAL BASADO EN INTELIGENCIA ARTIFICIAL. OSCAR IVAN ROJAS BARRETO CHARLES RICHAR TORRES MORENO. UNIVERSIDAD DE IBAGUE CORUNIVERSITARIA FACULTAD DE INGENIERÍA PROGRAMA DE ELECTRÓNICA IBAGUE 2007.

(2) DISEÑO Y CONSTRUCCIÓN DE UN ROBOT MÓVIL AUTÓNOMO EXPERIMENTAL BASADO EN INTELIGENCIA ARTIFICIAL. OSCAR IVAN ROJAS BARRETO CHARLES RICHAR TORRES MORENO. Trabajo de grado presentado como requisito parcial para optar al Ingeniero Electrónico.. Título de. UNIVERSIDAD DE IBAGUE CORUNIVERSITARIA FACULTAD DE INGENIERÍA, PROGRAMA DE ELECTRÓNICA IBAGUE 2007.

(3) Nota de aceptación ____________________________ ____________________________ ____________________________ _______________. ____________________________ Nombre del presidente. ____________________________ Nombre del jurado. ____________________________ Nombre del Jurado. Ciudad y fecha (día, mes, año).

(4) DEDICATORIA. A mis padres por todo su esfuerzo.. A Diana Rocio y Daniel Alejandro por ser la fuente de inspiración de mis sueños y por el futuro que les espera.. Charles Richard Torres Moreno.

(5) DEDICATORIA. Dedico este logro a mi padre quien sin su amor, concejo, esfuerzo y paciencia este grado no sería posible. Gracias Gordo!!! Oscar Iván Rojas Barreto.

(6) AGRADECIMIENTOS. Los autores expresan sus agradecimientos a:. La Universidad de Ibagué Coruniversitaria por la oportunidad brindada.. A profesores por sus enseñanzas, al ingeniero Zósimo Arévalo director del programa de electrónica y a todas las personas que de una u otra manera intervinieron en el desarrollo de este proyecto..

(7) CONTENIDO. Pág.. INTRODUCCIÓN. 17. 1. PLANTEAMIENTO BASICO. 20. 1.1 PLANTEAMIENTO DEL PROBLEMA. 20. 1.2 OBJETIVOS. 21. 1.2.1 Objetivo general. 21. 1.2.2 Objetivos específicos. 21. 1.3 MARCO DE REFERENCIA. 22. 1.3.1 Funcionamiento de una neurona biológica. 22. 1.3.2 Redes neuronales artificiales. 23. 1.4 ANALISIS DEL ESTADO DEL ARTE. 24. 2. DESARROLLO DEL TRABAJO. 25. 2.1 ALTERNATIVAS EN DISEÑO DE LA PLATAFORMA. 25. 2.1.1 Alternativa y elección de la estructura. 25. 2.1.2 Alternativa y elección de los sensores. 26. 2.1.2.1 Sensor de contacto. 26. 2.1.2.2 Sensor de ultrasonido. 26. 2.1.2.3 Sensor infrarrojo. 27. 2.1.3 Sistema de comunicación. 27. 2.1.4 Sistema de alimentación. 27. 2.1.5 Sistema motriz y etapa de potencia. 28. 2.1.6 Sistema de procesamiento central. 28. 2.1.7 Simulación y programación de las RNA. 28. 2.2 DISEÑO Y CONSTRUCCIÓN. 28. 2.2.1 Estructura. 29.

(8) Pág.. 2.2.2 Diseño e implementación del sistema sensorial. 30. 2.2.2.1 Diseño e implementación del módulo de sensores de contacto. 30. 2.2.2.2 Diseño e implementación del módulo de sensores de ultrasonido. 32. 2.2.3 Diseño e implementación del sistema de guía del robot. 36. 2.2.3.1 Receptor infrarrojo. 36. 2.2.3.2 Lectura de señal IR de guía. 37. 2.2.3.3 Lectura de la señal IR de llegada. 38. 2.2.3.4 Transmisor infrarojo. 41. 2.2.4 Diseño e implementación del sistema de comunicación. 46. 2.2.5 Diseño e implementación del sistema de alimentación. 48. 2.2.5.1 Diseño e implementación de la fuente del robot. 48. 2.2.5.2 Diseño e implementación del cargador de baterías. 49. 2.2.6 Diseño e implementación del sistema motriz. 51. 2.2.7 Diseño e implementación del sistema de control. 53. 2.2.7.1 Módulo principal. 54. 2.2.7.2 Módulo de interrupción. 54. 2.2.8 Simulación e implementación de la RNA. 55. 2.2.8.1 Deducción de la regla de aprendizaje de la RNA. 55. 2.2.8.2 Algoritmo de aprendizaje. 59. 2.2.8.3 Clases implementadas y atributos de los objetos. 61. 3. ANÁLISIS DE RESULTADOS. 64. 4. CONCLUSIONES. 65. 5. RECOMENDACIONES. 66. BIBLIOGRAFIA. 67. ANEXOS. 68.

(9) LISTA DE TABLAS. Pág.. Tabla 2.1 Consideraciones consumo de Potencia por etapa y suministro. 49.

(10) LISTA DE FIGURAS. Pág.. Figura 1.1. Características principales de una neurona artificial.. 23. Figura 2.1. Diagrama bloques general del robot móvil basado en IA. 29. Figura 2.2. Base de la estructura de IABOT. 30. Figura 2.3. Diagrama esquemático del módulo de sensores de contactos. 31. Figura 2.4. Diagrama de flujo del módulo de sensores de contactos. 32. Figura 2.5. Diagrama esquemático del módulo de sensores de ultrasonido. 33. Figura 2.6. Señal aplicada al transductor de ultrasonido. 33. Figura 2.7. Zona de detección y comparación de pulsos de retorno. 34. Figura 2.8. Diagrama de flujo del módulo de ultrasonido. 35. Figura 2.9. Diagrama esquemático del módulo de recepción IR. 37. Figura 2.10. Diagrama de flujo para la leer la señal de guía de IABOT. 38. Figura 2.11. Diagrama de flujo principal para lectura de llegada al destino. 39. Figura 2.12. Diagrama de flujo para la leer la señal de parada. 40. Figura 2.13. Diagrama de flujo para la leer pulso IR. 41. Figura 2.14. Diagrama esquemático del módulo transmisor IR. 42. Figura 2.15. Señales generadas por el transmisor IR y entregada por el receptor IR 42 Figura 2.16. Formato de la colección de pulsos generados por el transmisor IR. 43. Figura 2.17. Diagrama de flujo para transmisión de la señal IR a 40KHz. 44. Figura 2.18. Diagrama de flujo para generar colección de pulsos. 45. Figura 2.19. Fuente de alimentación IABOT. 48. Figura 2.20. Buck converter. 50. Figura 2.21. Salida PWM y corriente de salida del buck converter. 50. Figura 2.22. Diagrama de flujo del módulo principal del sistema de control. 53. 10.

(11) Pág.. Figura 2.23. Diagrama de flujo del módulo de interrupción del sistema de control. 54. Figura 2.24. Diagrama de flujo del algoritmo de entrenamiento de la RNA. 58. Figura 2.25. Modelo base de una neurona artificial. 62. Figura 2.26. Interacción entre las diferentes neuronas. 62. Figura 2.27. Jerarquía de clases para la RNA en SoftBot. 63. 11.

(12) LISTA DE ANEXOS. Anexo A. GP1UD28YK. Anexo B. PICREF-2 Intelligent Battery Charger Reference Design. Anexo C. Duall full – Bridge driver. Anexo D. Diagramas de pines de circuitos integrados. Anexo E. Código de las clases para RNA. Anexo F. Código del robot IABOT. 12.

(13) GLOSARIO. INTELIGENCIA ARTIFICIAL: Rama de la computación que se encarga de los problemas de percepción, razonamiento y aprendizaje en relación con sistemas artificiales, y que tiene como áreas de investigación a los sistemas expertos y de conocimiento, la robótica, los lenguajes naturales, las redes neuronales y la lógica difusa.. RED NEURONAL ARTIFICIAL (RNA): Modelo computacional basado en el funcionamiento de una red neuronal biológica.. PWM: Pulse width modulation (modulación por ancho de pulso) técnica que consiste en modificar el ciclo de duración o ancho del pulso de una señal cuadrada manteniendo la frecuencia constante.. MOTORREDUCTORES: Sistema de piñones y engranajes usados para el aumento del torque exigido al eje de los motores.. SONAR: Técnica utilizada para detectar obstáculos donde un par emisor y receptor de ultrasonido emiten y reciben frecuencias de ondas sonoras de más de 20.000 ciclos por segundo.. SENSOR: Dispositivo que detecta una determinada acción física externa como temperatura, presión, etc., y la trasmite adecuadamente.. HARDWARE: Conjunto de los componentes que integran la parte material de un sistema eléctrico o electrónico.. 13.

(14) MPLAB: Programa que se compone de varios compiladores y sirve de interfaz para que el programador pueda escribir un programa que corra en un microcontrolador PIC.. MICROCONTROLADOR: Es un sistema cerrado que contiene un computador completo y de prestaciones limitadas que no se pueden modificar.. MULTIPLEXOR: Dispositivo electrónico que permite seleccionar varios dispositivos o señales eléctricas por un dispositivo controlador.. SOFTWARE. Instrucciones que se escriben para indicarle al microcontrolador para que ejecute acciones y tome decisiones. El software controla el hardware.. 14.

(15) RESUMEN. En los últimos años la atención de los investigadores se ha fijado en las técnicas desarrolladas en el campo de la inteligencia artificial para la solución de problemas en una gran variedad de campos: la medicina, las telecomunicaciones, desarrollo de controladores de procesos, reconocimiento de ambientes, planificadores de trayectorias, la economía, la industria, y otros.. Este trabajo describe el diseño y construcción de una plataforma móvil que interactué con el medio físico para desarrollar proyectos con inteligencia artificial.. Se describe los. métodos utilizados para la concepción práctica así como las características del hardware y software que constituyen el proyecto.. 15.

(16) ABSTRACT. To last the years the attention of the investigators has paid attention to the techniques developed in the field of the artificial intelligence for the solution of problems in a great variety of fields: the medicine, the telecommunications, development of controller of processes, atmosphere recognition, planners of trajectories, the economy, the industry, and others.. In this report describes to the process of design and construction of a movable platform to interaction with environment for develop project to artificial intelligence. One describes to the methodology used for the practical conception of the project and as well as the characteristics of the hardware and software that will have the project.. 16.

(17) INTRODUCCIÓN. La inteligencia artificial se basa en la emulación del comportamiento de los organismos biológicos inteligentes. Este proyecto no se centra en la investigación neurológica, pero se toman conceptos e ideas del campo de las ciencias neurofisiológicas para la utilización de técnicas de inteligencia artificial aplicadas a la solución de problemas pertenecientes a otras ramas de la ciencia y la ingeniería mediante la implementación de modelos computacionales ejecutados en un hardware que interactúa en un entorno real. Actualmente se encuentra disponible una gran cantidad de libros y material teórico sobre inteligencia artificial pero la falta de una herramienta que permita aplicar y facilitar la comprensión y funcionamiento de las redes neuronales ha evitado que dicho conocimiento se interiorice y asimile, perdiendo de ese modo la dimensión y trascendencia que esta tecnología puede llegar a tener en nuestro medio.. La siguiente definición de inteligencia artificial, IA, dice que es “la disciplina científica que se ocupa del estudio de las ideas que permiten ser inteligentes a los ordenadores” [1] por este motivo el proyecto plantea construir un robot como “un agente artificial, activo, cuyo entorno es el mundo físico” [1]. Con el término activo se descarta de la definición a los objetos inanimados, con el término artificial se descarta a los seres vivos, y con el término físico se descarta a los agentes constituidos únicamente por software. “Un agente es todo aquello que puede considerarse que percibe su ambiente mediante sensores y que responde o actúa en tal ambiente por medio de efectores” [1]. Un agente robótico tiene como sensores ultrasonidos e infrarrojos, y los motores le sirven como efectores. Los agentes humanos tienen ojos, olfato y otros órganos que le sirven como sensores y piernas, brazos, boca y otras partes del cuerpo que sirven como efectores.. En este proyecto se exponen conceptos teóricos básicos de redes neuronales y lógica difusa con el ánimo de ponerlos en conocimiento de los lectores, pero la real intención es. 17.

(18) suministrar una herramienta para aplicar esos conceptos en la solución de problemas reales y reducir el procedimiento a la mejor aplicación de la herramienta disponible y no al diseño de dicha herramienta.. Los computadores se utilizan como herramientas para modelar neuronas individuales, así como agrupaciones de neuronas que se denominan redes neuronales. De este modo se presenta a SOFTBOT como un completo software para la configuración, entrenamiento y control utilizando redes neuronales acoplados al sistema sensorial y al sistema motriz de IABOT (Inteligencia Artificial Robot) que es un robot móvil sin brazos mecánicos que permite la ejecución de las técnicas de inteligencia artificial. El software SOFTBOT se ha diseñado para seleccionar y controlar todos o solamente un grupo de las variables disponibles y para tal fin se han implementado redes neuronales listas para entrenamiento, configurables en su topología de acuerdo a las necesidades del problema a solucionar en dependencia del grupo de sensores a utilizar y variables a controlar.. Asimismo, la. flexibilidad de la arquitectura de SOFTBOT e IABOT podrán ser utilizados en el ámbito educativo para el aprendizaje de la robótica, inteligencia artificial y como medio de motivación para el desarrollo de investigación de nuevas aplicaciones en estos campos.. Para agilizar el proceso de desarrollo del proyecto, no es necesario tener conocimiento en lenguajes de programación de alto nivel para la simulación de grandes redes neuronales, ni conocimientos en electrónica para el diseño de un dispositivo electromecánico que suministre las señales de entrada a las redes y ejecute los resultados producto del entrenamiento previo de la red. IABOT y SOFTBOT no se centran en el desarrollo de herramientas para inteligencia artificial, son ya una herramienta desarrollada y lista para el proceso de proyectos y su aplicación práctica en la solución de problemas reales colocando a prueba su alcance. En consecuencia de lo expuesto no se incluyen metodologías para la simulación de arquitecturas de redes neuronales, se dan las arquitecturas listas para su configuración topológica, entrenamiento y utilización. Las técnicas de inteligencia artificial manejadas por el robot propuesto permitirán reducir la complejidad que presentan los algoritmos convencionales de programación y control. Para su utilización lo único que se. 18.

(19) recomienda es tener en cuenta las características del computador que se utilice para la implementación de grandes redes como consecuencia de la extremada carga de cálculos que se imponen al sistema en el momento del entrenamiento de la red.. SOFTBOT se diseñó según los algoritmos utilizados en las topologías de redes neuronales, mientras que IABOT se diseñó con sistemas sensoriales de sonar, infrarrojo y contacto como señales de entrada a las redes neuronales, sistemas de control de movimiento del robot como respuesta a la salida de las decisiones tomadas producto del entrenamiento de la red. La interfaz de comunicación entre IABOT y SOFTBOT se realiza con transmisión y recepción alámbrica por puerto serie y alimentación desde baterías recargables. Por otra parte la explicación detallada del hardware que conforma IABOT permite adaptar una etapa o parte de ella, para el desarrollo de nuevos robots de menor tamaño y mayor eficiencia diseñados para aplicaciones más específicas que impliquen una tarea especializada utilizando el mismo software con las redes neuronales debidamente configuradas y entrenadas. El problema que se presenta con la aplicación desarrollada consiste en la utilización de los dispositivos computacionales convencionales que ejecutan instrucciones en forma serial para la simulación de un procesamiento en paralelo. Esto implica mayor demora en el entrenamiento de las redes y posterior procesamiento de las señales y variables a controlar pero con los resultados propuestos.. Por último el éxito de la herramienta proporcionada por parte del lector depende del conocimiento básico de las redes neuronales que se presentan, la capacidad de aplicar las técnicas de inteligencia artificial implementadas a problemas reales y el entusiasmo por aplicar esta tecnología que actualmente ha demostrado gran capacidad en la resolución de problemas con muy buenos resultados.. 19.

(20) 1. PLANTEAMIENTO BASICO. En los años cincuenta los expertos, creyeron que durante el transcurso de un par de décadas convertirían a los robots en potentes cerebros artificiales simplemente con escribir la programación adecuada. Hoy día es evidente que este tipo de tecnologías distan mucho de ser creaciones versátiles, autónomas e inteligente. El reto al que se enfrentan los expertos en robótica, es programar ordenadores de uso general para que se comporten como el cerebro y lograr un sistema artificial suficientemente avanzado para que haga las mismas cosas que el sistema nervioso humano.. En el robot móvil se usan técnicas de inteligencia artificial en el sistema sensorial y motriz, ya que presentan muchas ventajas sobre otras formas de programación. Las técnicas de inteligencia artificial utilizadas por el robot propuesto, permitirán reducir la complejidad que presentan los algoritmos convencionales de programación. Basado en la inteligencia artificial se construirá un robot móvil apto para operar en un ambiente de laboratorio. Durante su trayectoria el robot móvil puede encontrarse con obstáculos siendo esté capaz de rodearlo, esquivarlo y llegar luego a su destino satisfactoriamente.. 1.1 PLANTEAMIENTO DEL PROBLEMA. ¿Qué sistema permite la unificación y aplicación de las técnicas de inteligencia artificial para su posterior implementación en el aprendizaje de las mismas y desarrollo de nuevas soluciones a problemas reales?. En respuesta se presenta un robot como aplicación práctica en la comprensión del funcionamiento de técnicas de inteligencia artificial como lo son las redes neuronales. La. 20.

(21) robótica móvil se le considera un área de tecnología de avanzada, debido a que maneja problemas de alta complejidad cuyos subproductos, tanto a nivel control, programación e inteligencia artificial como de percepción e instrumentación, sirven de base para importantes avances tecnológicos en varios campos. Por tanto, un robot desarrollado en esta área genera una serie de subproductos valiosos para diversas aplicaciones como por ejemplo tarjetas de control para motores y tarjetas de información sensorial.. 1.2 OBJETIVOS. A continuación se presentan los objetivos alcanzados en el proceso de desarrollo del trabajo de grado.. 1.2.1. Objetivo general. Diseñar y construir un robot móvil, con capacidad de aprender de. patrones de entrada y salida previamente establecidos y con capacidad de dar una respuesta apropiada a patrones desconocidos en un entorno real utilizando técnicas de inteligencia artificial para su aplicación didáctica en lugares planos, pavimentados, abiertos o cerrados, sin gradas y con inclinación no superior a 30 grados.. 1.2.2. Objetivos específicos. Los objetivos específicos del presente proyecto son:. - Determinar características generales del robot móvil.. - Diseñar y construir la estructura mecánica del robot.. - Desarrollar y diseñar el sistema de percepción del robot.. - Diseñar y poner a punto la etapa de potencia para la alimentación de los actuadores, sensores y circuitos de control.. 21.

(22) - Diseñar y desarrollar el Software para PC que soporte una red neuronal artificial y tenga capacidad de transferencia de datos entre el robot y el PC.. - Diseñar y poner en marcha el Software a bordo del robot para el proceso de lectura a sensores y ejecute las órdenes recibidas de un Master (PC).. - Seleccionar y adquirir los elementos mecánicos y electrónicos que se requieren para la construcción de la estructura y módulos del robot.. - Ensamblar los módulos de control, sensores, actuadores, realización de pruebas y puesta a punto del proyecto.. - Buscar aplicaciones de ejemplo.. 1.3 MARCO DE REFERENCIA Los sistemas de computación secuénciales son fundamentales en la resolución de una gran cantidad de problemas matemáticos, científicos, en el procesamiento de textos, gráficos, video, en comunicaciones electrónicas, entre otras. En ocasiones resultan incapaces de interpretar formas visuales o distinguir distintas clases de objetos presentes en su entorno. Por este motivo los investigadores han buscado nuevas formas de interpretar la información para la solución de problemas cotidianos. Nace como una alternativa, la computación neuronal y uno de los objetivos es explorar los principios de la inteligencia natural para crear sistemas artificiales inteligentes [2].. 1.3.1 Funcionamiento de una neurona biológica. Las neuronas biológicas tienen tres componentes principales, las dendritas, el cuerpo de la célula o soma y el axón [2]. El soma o cuerpo de la célula contiene el núcleo y es el encargado de todas las actividades. 22.

(23) metabólicas de la neurona. Las dendritas son ramificaciones que parten del soma y su función es la recepción de señales de otras células por medio de conexiones sinápticas. El axón permite enviar impulsos a otras células nerviosas. La sinápsis es una conexión entre dos neuronas. Las sinápsis pueden ser excitativas o inhibitorias según el neurotransmisor que se libere. La sinápsis es química por naturaleza pero tiene efectos eléctricos [3].. Figura 1.1 Características principales de una neurona artificial. Fuente: Los autores. 1.3.2 Redes neuronales artificiales. El modelo de una neurona artificial es una imitación simplificada del funcionamiento de una neurona biológica. En la figura 1.1 se puede ver la analogía entre el modelo de una neurona biológica y una artificial. Como modelo se toman las características principales del sistema biológico exportando los elementos las entradas X1…Xn representan las señales que provienen de otras neuronas (Dendritas), los pesos W1…Wn son la intensidad de la sinápsis que conecta dos neuronas modeladas por los pesos, y θ es la función umbral que la suma de las entradas debe exceder para que la neurona se active. Las señales de entrada a una neurona artificial son continuas y pasan a través de una ganancia o peso sináptico que pueden tener un valor positivo, excitativo, o negativo, inhibitorios. El nodo realiza una sumatoria de todas las señales de entrada multiplicadas por los pesos para que sean procesadas por la función de umbral o función de transferencia. . Matemáticamente podemos expresar el proceso descrito para una neurona artificial con la siguiente función [3]: J =. n. ∑. i =1. X iW. i. Las RNA no alcanzan la complejidad del cerebro, sin embargo, cabe resaltar dos aspectos del modelo utilizado con respecto al modelo biológico. Primero las partes que conforman el. 23.

(24) modelo de una neurona artificial son sencillas y permiten una alta conectividad con las demás unidades de la red. Segundo la estructura seleccionada determina la función de la red.. 1.4 ANALISIS DEL ESTADO DEL ARTE. La tecnología de la robótica mejorará en los próximos años de manera que hará a los robots más amistosos con el usuario, más fáciles de interconectar con otro hardware y más sencillos de instalar. La robótica es una tecnología con futuro y también para el futuro.. Tomando como base el funcionamiento del cerebro, varios investigadores desde la década de los 40’s, han desarrollado la teoría de las Redes Neuronales Artificiales (RNA) como una imitación del funcionamiento de las redes neuronales biológicas. La gran ventaja que se presenta con esta estrategia es la solución de problemas reales basados en ejemplos de comportamiento típico de patrones. Esto implica de forma inmediata que la tarea a ejecutar no debe ser programada ya que la red generaliza y aprende basada en el entrenamiento y la experiencia. Las RNA han brindando una alternativa a las técnicas de computación clásica en la solución de problemas donde los métodos tradicionales han entregado resultados deficientes debido a que el conocimiento de una red neuronal no se almacena en instrucciones encontrando su fortaleza en su topología y en los valores de las conexiones (pesos) entre neuronas.. El diseño y construcción del robot móvil controlado con una RNA sirve como estímulo para la investigación y desarrollo de aplicaciones relacionadas con la robótica e inteligencia artificial en la Universidad de Ibagué por parte de otros investigadores.. 24.

(25) 2. DESARROLLO DEL TRABAJO. El capitulo inicia con las alternativas de diseño que se tuvieron en cuenta para la construcción del robot IABOT y del programa de gestión de la RNA. Se explica luego cada uno de los sistemas que componen el robot móvil y se termina presentando, a modo de síntesis cómo por medio de programación orientada a objetos se implementa el modelo de RNA teniendo en cuenta conceptos básicos del modelo backpropagation.. 2.1 ALTERNATIVAS EN DISEÑO DE LA PLATAFORMA. Para la ejecución de los algoritmos de las redes neuronales artificiales se hace necesario la implementación de un dispositivo que interactué y tenga la capacidad de desplazarse en un ambiente real. A continuación se describen las consideraciones tomadas en cuenta para diseñar los componentes necesarios y los sistemas para que IABOT desarrolle las funciones deseadas.. 2.1.1 Alternativa y elección de la estructura. Se reconoce de inmediato la necesidad de una estructura móvil compuesta por varios módulos, que sea lo más liviana posible y que tenga rigidez en los espacios más amplios para soportar una carga de 1Kg, además, de su propio peso (representado por tarjetas para los sensores, las piezas que sostienen a las ruedas) sin sufrir ningún cambio o deformación. La tarea primordial de IABOT es poder desplazarse a un lugar deseado dentro de un área específica. Por este motivo se establece que el tipo de terreno donde se quiere manejar el robot es plano, no rugoso y que los giros se producirán por medio de diferencias de velocidades entre las ruedas. Los materiales estudiados para construir la estructura fueron el acrílico, la madera y el aluminio. Finalmente se eligen (por el costo, peso, y flexibilidad) el acrílico y el aluminio.. 25.

(26) 2.1.2 Alternativa y elección de sensores. Son dispositivos que dotan al sistema de algunas capacidades de detección de las variables que se encuentran en el medio, logrando percibir obstáculos, intensidades luminosas y sonidos principalmente. Se buscaron varias alternativas para elegir los sensores usados por el robot IABOT. Una de las alternativas fue la de adquirir sensores que trataran las señales a detectar y entregaran una señal con niveles discretos informando sobre la variable a sensar. Esta consideración fue rápidamente desechada ya que el costo de los sensores excedía el presupuesto del proyecto. Por consiguiente se decidió diseñar y construir los sensores desde cero. Se explica brevemente entonces, los sensores que fueron implementados en el robot. 2.1.2.1 Sensor de contacto. Conmutador de dos posiciones. En estado de reposo el pin común el de reposo están en contacto permanente hasta que la presión aplicada a la palanca del sensor hace saltar la pequeña pletina acerada interior y entonces el contacto pasa de la posición de reposo a la de activo. Se usan para detección de obstáculos por contacto directo, indicando la presencia inmediata de un obstáculo. Una buena idea para este tipo de sensor, es utilizar un multiplexor para poner más microswitch de control en el robot usando el mínimo de líneas de control posibles, además de poner palancas de accionamiento que aseguren su funcionamiento óptimo, cubriendo un mayor perímetro.. 2.1.2.2. Sensor de ultrasonido. Consiste en un transductor piezoeléctrico que convierte. voltaje eléctrico en desplazamiento o en variaciones de presión, según sean las condiciones del entorno, y viceversa.. La forma moderna de generar movimiento ultrasónico es. mediante la excitación de un cristal que cambia de tamaño cuando sus caras están ubicadas dentro de un campo electrostático. Si se excita al emisor con una señal armónica, él emitirá una onda sonora a la frecuencia de excitación.. Si se coloca otro transductor en el camino de la onda emitida, éste sufrirá una variación de presión armónica que, a su vez, se convertirá en una señal eléctrica que es posible procesar para ser utilizada como una variable dentro de la lógica del robot. El ultrasonido puede ser usado para la detección de obstáculos, con muy buen alcance, permitiendo un uso. 26.

(27) satisfactorio, dentro de estos se cuenta el reflejo, dado que la dirección del reflejo, depende del ángulo de incidencia, por cuanto menor sea el ángulo, mayor es la probabilidad de perderse y producir falsas medidas de gran longitud, o por ejemplo: un robot que se acerca a una pared con muy poco ángulo puede “no verla” y por último un problema común de emisores receptores, es el problema de no poder identificar quien emite, al existir más de un emisor. Por último también son conocidos los problemas a causa del movimiento excesivo del robot, que suele introducir ruido en la medición del sensor.. 2.1.2.3. Sensor infrarojo. Son usados como sensores On-Off, es decir el receptor da. información sobre la existencia o no de la de señal del transmisor. Se aplican los sensores de infrarojo para guiar al robot IABOT a su destino. Este tipo de sensores tienen el problema de que pueden recibir interferencia del ambiente. Para evitar esto, se debe recurrir a técnicas de modulación donde el emisor transmite un tren de pulsos de determinada frecuencia (f=40Khz), de tal manera que el receptor debe sensar pulsos con la misma frecuencia del emisor.. 2.1.3 Sistema de comunicación. La plataforma inteligente debe realizar la transferencia de las señales captadas por los sensores de IABOT hacia la computadora que contiene el software SOFTBOT encargado de procesar las señales en una RNA.. El sistema de comunicación permite la transmisión de las respuestas procesadas por la RNA para ser ejecutadas en el medio que se desempeñe IABOT. La plataforma cuenta con un sistema de comunicación alámbrico que puede ser utilizado en dependencia de la tarea que se desarrolle.. 2.1.4 Sistema de alimentación. Debe entregar la corriente necesaria sin alteraciones para mantener el correcto funcionamiento de los diferentes sistemas que componen al robot. El sistema se compone de una fuente de alimentación alimentada por dos baterías de 12V a 1.2A y un cargador de baterías.. 27.

(28) 2.1.5 Sistema motriz y etapa de potencia. IABOT cuenta en su estructura con un sistema motriz capaz de desplazarlo por la superficie de prueba y un sistema que suministre la potencia necesaria para alimentar de forma eficiente los motores.. 2.1.6 Sistema de procesamiento central.. Hace referencia a la etapa encargada de. administrar y controlar todas las variables y posibles eventos que se generen en IABOT. Es también el encargado gestionar la comunicación con SOFTBOT y dar cumplimiento a las decisiones generadas por el resultado del análisis efectuado por la RNA.. 2.1.7 Simulación y programación de las RNA. Aunque las RNA son un esfuerzo por emular la capacidad de procesamiento en paralelo de las redes neuronales biológicas es necesario hacer uso de un programa que corra en un computador, que realiza un procesamiento en serie, para simular las estructuras, formas de aprendizaje y funcionamiento de las RNA. Dicho programa (SOFTBOT) debe ser fácil de manipular por medio de una interfaz gráfica. Se escoge para escribir el programa en lenguaje C++, debido a que proporciona capacidades de programación orientada a objetos, esta capacidad del lenguaje constituye una herramienta muy útil para la creación de la red neuronal artificial. Los objetos son, en esencia, componentes de programa reutilizable que simulan elementos reales. La programación orientada a objetos permite valerse de un enfoque de diseño e implementación modular que facilita un completo desarrollo del programa que soporta la RNA.. 2.2 DISEÑO Y CONSTRUCCIÓN. En el presente capítulo se describen las características, el funcionamiento y la construcción de las etapas necesarias para la integración y correcto funcionamiento de la plataforma inteligente. En la figura 2.1 se puede apreciar el diagrama de bloques completo de la plataforma diseñada con cada una de las etapas descritas en este capítulo.. El. microcontrolador 1 (PIC16F874A) verifica el estado de los sensores de infrarrojo, de. 28.

(29) ultrasonido y de tacto.. De igual forma se encarga de administrar el proceso de. comunicación alámbrica con el computador (protocolo serial RS232), controlar el PMW del motor 1, enviar ordenes de control al microcontrolador 2 (PIC16F873A). El microcontrolador 2 se encarga de la lectura de la señal IR de llegada al destino del robot y de generar la señal PWM para el motor dos.. Figura 2.1 Diagrama bloques general del robot móvil basado en IA. Fuente: Los autores.. 2.2.1 Estructura. Teniendo en cuenta que el objetivo principal es una plataforma que permita probar y ejecutar RNA para la solución de problemas reales se procedió a construir una estructura en aluminio y acrílico para soportar el peso de las baterías, actuadotes, sensores y un peso adicional de 1Kg, como se puede apreciar en la figura 2.2. Al realizar pruebas se determinó que la capacidad de los motores era suficiente para los fines propuestos.. 29.

(30) Figura 2.2. Base de la estructura de IABOT. Fuente: Los autores. 2.2.2 Diseño e implementación del sistema sensorial. De los posibles tipos de sensores que se pueden utilizar se tomó la decisión de trabajar con los siguientes tipos de sensores: •. Sensores de contacto; son de fácil instalación y muy útiles para detectar colisiones.. •. Sensores de ultrasonido;. por ser económicos, de fácil implementación y. brindan buenas características en cuanto a la detección de obstáculos.. 2.2.2.1 Diseño e implementación del módulo de sensores de contacto.. En total se. instalaron cuatro sensores de contacto sobre dos placas de acrílico para cubrir el frente y la parte posterior de IABOT.. Los cuatro sensores son multiplexados y el bus de. direccionamiento es compartido con la etapa de sensores de infrarrojo. La conexión se realiza por medio de un resistor a Vcc y un pulsador de contacto normalmente abierto conectado a tierra. En paralelo con el pulsador se coloca un condensador de 10uF para reducir el ruido por contacto mecánico del pulsador. Se instalan cuatro pulsadores de contacto y se conectan a un 74LS151 para multiplexar las señales y optimizar la cantidad de puertos del microcontrolador. También se utiliza un 74LS541 con el fin de instalar diodos led como indicadores luminosos de la activación de cada uno de los sensores de contacto. El direccionamiento del sensor a leer, lo realza el microcontrolador por los pines. 30.

(31) A-B-C (9-10-11) del circuito integrado 74LS151 y la salida Y, pin 5, se aplica al microcontrolador. Este estado es almacenado y transmitido a SoftBot para ser procesado por la red neurona artificial. Sin colisión el pulsador SW1 se encuentra abierto y se aplica un 1 lógico al D0, pin 4, del 74LS151 como también al pin A1 del 74LS541. En la salida Y1, pin 18, del 74LS541 la diferencia de potencial entre Vcc = 5V y Vy1 = 5V es de 0V y la corriente Iled = 0A. Al ocurrir una colisión el pulsador SW1 se cierra y se aplica un 0 lógico a D0. En la salida Y1 del 74LS541 se tiene: I Led =. Vcc - Vled R2. Con Vcc igual a 5V, Vled típico igual a 2.2V y R2 igual a 330Ω la corriente que circula por el led es de 8.4mA.. El microcontrolador se encarga de realizar un barrido por los cuatro sensores de contacto, almacenar la señal y transferirla a la red neuronal. El diagrama de flujo del proceso del microcontrolador se puede ver en la figura 2.4. El diagrama del circuito impreso se puede consultar en el anexo A y el esquemático del circuito anteriormente descrito se puede apreciar en la figura 2.3 Solamente se presenta una etapa, las otras cuatro etapas se conectan de igual manera al multiplexor y al buffer.. Figura 2.3. Diagrama esquemático del módulo de sensores de contactos. Fuente: Los autores.. 31.

(32) Figura 2.4. Diagrama de flujo del módulo de sensores de contactos. Fuente: Los autores.. 2.2.2.2 Diseño e implementación del módulo de sensores de ultrasonido. Los sensores de ultrasonido fueron montados como seis módulos independientes para la transmisión y recepción de la señal. Se instalaron tres pares de sensores trasmisor – receptor en la parte frontal de IABOT y tres pares en la parte posterior. Los sensores de ultrasonido funcionan emitiendo una señal generada por el microcontrolador conformada por un tren de cuatro pulsos a 24KHz. Mientras se espera su retorno se contabiliza el tiempo con el fin de determinar la presencia de un objeto y su distanc. ia. El circuito presentado en la figura. 2.5 posee la capacidad para ocho módulos de ultrasonido, es muy útil y fácil de implementar con la ventaja adicional que no es necesario utilizar filtros ya que el transductor es elemento que responde a 24KHz. En la figura 2.5 solamente se presenta una etapa, las otras seis etapas se conectan de igual manera a los multiplexores. La señal es generada por el microcontrolador, se aplica a G1, pin 6, del CI 74LS138.. El. direccionamiento realizado por el microcontrolador permite recibir la señal emitida por Y0, pin 15, al CI 74LS14. En la etapa del trasmisor se utilizó el circuito integrado 74LS14 que. 32.

(33) contiene compuertas inversoras. Como característica importante presentan poco consumo y una baja impedancia de salida lo cual es muy adecuado para conservar un buen nivel de la señal aplicada. Como se puede observar en el diagrama la salida del trasmisor se conectó de forma complementaria. Mientras el pulso aplicado en un terminal del transductor es bajo, en el otro terminal el pulso es alto para obtener como resultado una señal de tipo AC con el fin de favorecer el desempeño del transductor y evitar la producción de ciclos de histéresis que se pueden genera con señales no alternas en este tipo de dispositivos de naturaleza capacitiva figura 2.6.. Figura 2.5. Diagrama esquemático del módulo de sensores de ultrasonido. Fuente: Los autores.. Figura 2.6. Señal aplicada al transductor de ultrasonido. Fuente: Los autores.. 33.

(34) Para el receptor, en su primer etapa, se implementó un amplificador inversor con una ganancia de –R5/R6 = -10 con el circuito integrado LF353 (amplificador operacional dual). Para mejorar la respuesta simétrica del operacional se instaló un divisor de voltaje en el pin cinco, entada no inversora, conformado por R7 y R8. Esto se hace con el fin establecer una tierra virtual a 2.5V evitando la saturación del mismo y mejora el desempeño del operacional debido a que la alimentación se esta realizando con una fuente de 0V a 5V [4]. V cc * R 7 R7 + R8 C on V cc = 5V , R 7 = R 8 = 100K Ω V5 =. V 5 = 2 .5 V R5 * V in R6 Con R5 = 100KΩ y R& = 10K V s a l7 = − 1 0 * V in V s a l7 = −. En la segunda etapa la señal amplificada es comparada contra un nivel DC ajustable por R3, figura 2.7, con el fin producir una salida de nivel lógico adecuada para aplicarla a la entrada del microcontrolador. Finalmente R2, R1 y C1 se encargan de drenar corriente al operacional y eliminar el nivel DC de la señal ya que la salida del comparador es de tipo colector abierto.. Figura 2.7. Zona de detección y comparación de pulsos de retorno. Fuente: Los autores.. Con la velocidad del sonido igual a 344m/s y para una distancia de 20cm (0.2m) el tiempo máximo de espera para el retorno del tren de pulsos es: D istancia V el sonido 0.2m ts t = 344m ts/S t = 0,5814m S Y el tiem po de retorno = Tretorn o = 2 * t t =. Tretorn o = 1.176 m S. 34.

(35) Para tiempos de espera mayores a 1.176mS el microcontrolador almacena y transmite un estado de trayectoria libre de colisión. Para tiempos de retorno menores a 1.176mS la distancia al objeto se calcula por medio de la formula:. Tretorno = 2 * t Dis tan cia Vel Sonido T * Vel Sonido Dis tan cia = retorno 2 Tretorno = 2 *. Figura 2.8. Diagrama de flujo del módulo de ultrasonido. Fuente: Los autores.. Esta técnica de tratamiento de la señal en ultrasonido es conocida como detección por nivel y es muy útil para cubrir cortas distancias. La configuración descrita se calibró para cubrir. 35.

(36) una distancia de 20cm, además se seleccionó por ser fácil de implementar y por su rápida respuesta ante las señales detectadas por el transductor.. La otra técnica utilizada en. ultrasonido es la detección por frecuencia o detección por tonos con la que es posible detectar obstáculos hasta metro y medio distancia, motivo por el cual no fue necesario implementarlo en este proyecto. Los circuitos integrados 74LS138 y 74LS151 son utilizados para multiplexar las señales de las seis etapas de los transmisores y receptores ultrasónicos, además los buses de direccionamiento son compartidos con el fin de optimizar la tarea de selección del par a utilizar. En la figura 2.8 se puede observar el diagrama de flujo del programa para la etapa de ultrasonido.. 2.2.3 Diseño e implementación del sistema de guía del robot. El sistema de guía del. robot se basa de un transmisor infrarojo (IR) portátil y cuatro receptores IR instalados en el robot. La función de este sistema es la de guiar al robot hasta un destino. El sistema de guía del robot, también, se encarga de generar una señal (emitida por el transmisor IR) que indica al robot que ya llego al destino, o lugar donde se encuentra el transmisor IR. Para que el robot sea correctamente guiado por el transmisor IR se debe siempre apuntar el transmisor al robot.. 2.2.3.1 Receptor infrarrojo. El circuito diseñado de la figura 2.9 soporta hasta 4 sensores. receptores IR. Los cuatro receptores instalados en el robot tienen la función de indicar a la red neuronal el lugar donde esta el destino y cuando el robot llega al destino. El microcontrolador PIC16F874 se encarga de direccionar el sensor por medio del bus de datos compartido con la etapa de contacto usando el integrado selector/Multiplexor 74LS151 entregando a la salida el estado del sensor direccionado. El circuito detector de señal infrarojo se compone un receptor IR GP1UD28YK (Ver anexo A.) el cual entrega (cuando detecta una señal IR) una señal decodificada a una frecuencia fo = 667Hz generada por el transmisor IR, a la salida del sensor se conecta un circuito detector de frecuencia conformado por un decodificador de tonos CI LM567C, este pone un estado de bajo voltaje cuando hay detección de señal IR a la frecuencia especificada. La frecuencia central del decodificador de tonos es igual a la frecuencia del VCO del CI LM567. El calculo de la. 36.

(37) frecuencia esta dada por: fo ≅. 1 1.1 R1 C1. Donde fo = 667Hz y para C1 = 1uF, Despejando R1: R1 =. 1 ≅ 1363Ω 1.1f0C1. Como el valor R1 no es un valor comercial, se decide entonces usar resistencias variables de 10KΩ para el detector que están dentro del rango calculado.. Figura 2.9. Diagrama esquemático del módulo de recepción IR. Fuente: Los autores.. 2.2.3.2 Lectura de señal IR de guía. La lectura de la señal de guía la realiza el circuito. mostrado en la figura 2.9. El microcontrolador PIC16F874 se encarga del direccionamiento y la lectura de los cuatro sensores IR. A continuación se describe como el robot realiza la lectura del estado de la señal de guía. El programa de lectura de sensores arranca colocando el registro que almacena el e stado de cada uno de los sensores a cero y el registro usado para el direccionamiento de cada sensor. Como inicialmente el registro de direccionamiento esta a cero entonces el programa inicia a leer el estado del sensor cero, se había de descrito anteriormente que la lectura de la señal IR la hace directamente el CI LM567 (Ver figura 2.9) y que su salida es activa en bajo. Por lo tanto cuando es direccionado el sensor actual y. 37.

(38) se lee un cero lógico se pone a uno la bandera correspondiente al sensor direccionado. Cuando el registro de direccionamiento es mayor a cuatro se termina la lectura del modulo de recepción IR. (para más información sobre el programa ver anexo F).. Figura 2.10. Diagrama de flujo para la leer la señal de guía de IABOT Fuente: Los autores.. 2.2.3.3 Lectura de la señal IR de llegada. La lectura de la señal de llegada la realiza el. microcontrolador PIC16F873A. La señal es leída directamente desde el sensor IR GP1UD28YK, debido a esto el microcontrolador debe realizar las funciones del CI LM567 de detectar la señal entregada con un periodo de T = 1.6mS. Mas adelante en este capitulo se describen las señales recibidas y que son emitidas por el transmisor IR. Para una lectura coherente, la señal debe pasar por tres filtros. Cada filtro tiene sus propios requerimientos.. 38.

(39) A continuación se describen cada uno de los filtros representados en sendos diagramas de flujo. En la figura 2.11 se muestra el diagrama para la lectura de la señal de llegada del robot al destino. Como se ve en la figura 2.11, no basta con que una sola lectura de la señal de parada sea positiva, se necesita de un filtro usado para confirmar realmente que el robot se encuentra en el destino. En la figura es llamado como la llegada a casa del robot IABOT. Cuando se confirma que el robot IABOT esta en casa se le indica al microcontrolador PIC16F874 que el robot ya esta en el destino colocando el bit 0 del ‘puerto A’ a uno. El microcontrolador PIC16F874 lee, entonces, el bit 2 del ‘puerto B’ para ver si ya llego al destino.. Figura 2.11. Diagrama de flujo principal para lectura de llegada al destino. Fuente: Los autores.. En la figura 2.12, se describe el segundo filtro, este confirma que la lectura de los pulsos de parada es realmente correcta. Cuando hay una posible señal de parada, se activa la confirmación de llegada de parada, se inicia el tiempo de lectura (t = 422,4mS), y se pone a cero un contador de muestras positivas de la lectura. Luego, si la lectura supera o llega a las 30 muestras antes de que el tiempo de lectura termine, se indica de inmediato que hay una. 39.

(40) señal de parada. El tiempo de lectura esta controlado para 33 llamadas de este segundo filtro. El control de tiempo base lo realiza el TMR0 del microcontrolador PIC16F873A y esta dado por un periodo T = 12.8mS. (Para detalles ver código en el anexo F). Figura 2.12. Diagrama de flujo para la leer la señal de parada. Fuente: Los autores.. El tercer filtro es mostrado en el diagrama de flujo de la figura 2.13. Este filtro usa el TMR0 del microcontrolador PIC16F873A para controlar el tiempo. En la primera lectura de sensores la rutina espera por un periodo de tiempo T = 12.8mS, para ver si algún sensor detecta la señal. Si al final del periodo no hay ninguna lectura, entonces, se indica que no hay señal de pulso a la rutina llamadora. Por otro lado, si se detecta la señal por alguno de. 40.

(41) los sensores se reinicia de nuevo el temporizador y se espera por otros T = 12.8mS, al final cuando termina el tiempo, se realiza la lectura de los cuatro sensores IR y si continua la señal, entonces, se le indica a la rutina llamadora que hay una señal positiva de IR para la llegada del robot al destino.. Figura 2.13. Diagrama de flujo para la leer pulso IR. Fuente: Los autores.. 2.2.3.4 Transmisor infrarojo. El circuito transmisor IR es un poco mas sencillo y se. compone principalmente de un microcontrolador PIC16F84A que se encarga de emitir las señales necesarias para guiar al robot. En la figura 2.14 se muestra el esquemático del modulo transmisor. En la figura 2.15 se muestra la señal generada por el circuito transmisor IR. Esta señal generada es la recomendada por el fabricante para una óptima recepción del sensor (Ver anexo A). La señal consta de una señal generada a una frecuencia central de. 41.

(42) 40KHz mezclada con una señal con una frecuencia de 667Hz que es la señal entregada por el receptor IR GP1UD28YK al decodificador de tonos CI LM567.. Figura 2.14. Diagrama esquemático del módulo transmisor IR. Fuente: Los autores.. El circuito transmisor consta de dos diodos emisores IR (Ver figura 2.14), un diodo emisor IR se encarga de transmitir la señal de guía del robot y el otro se encarga de emitir la señal que le indica al robot que ya llego al destino.. Figura 2.15. Señales generadas por el transmisor IR y entregada por el receptor IR. Fuente: Los autores.. 42.

(43) Para que el robot pueda distinguir entre las dos señales, el transmisor genera dos colecciones de pulsos (Ver figura 2.16) con una duración de tiempo de transmisión diferente.. Figura 2.16. Formato de la colección de pulsos generados por el transmisor IR. Fuente: Sharp corporation, http://www.sharpsma.com.. El fabricante recomienda calcular el tiempo promedio de cada señal emitida. El tiempo promedio es una medida que el fabricante indica para determinar una optima transmisión de la señal IR. Por lo tanto, el tiempo promedio debe ser menor que el 40% del tiempo de transmisión T. El tiempo de transmisión para la señal de guía es T = 9.6mS, y para la señal de parada es de T = 12.8mS. El periodo para cada pulso es TPULSO = 1.6mS (figura 2.15). El tiempo promedio que genera el transmisor para una señal, bien sea para guía o para indicar arribo al destino del robot, esta dada por la siguiente ecuación. nx. Dt =. ∑t n =1. n. T. * 100%. Donde - Dt es el tiempo promedio de los pulsos generados. - nx es el número de momentos activos TON. - T es tiempo de la transmisión de la señal IR.. -tn es el tiempo que dura un momento activo TON. El número de momentos activos TON para las señales de guía del robot y para la señal de llegada al destino del robot esta dada por:. 43.

(44) nx =. T TPULSO. Según la formula anterior el número de momentos activos para las señales de guía del robot y para la llegada al destino del robot es: para guía. →. para llegada →. 9.6mS =6 1.6mS 12.8mS n2 = =8 1.6mS n1 =. El tiempo activo para cada señal es TON = 600uS. Resolviendo el tiempo promedio para cada señal: nx. Dt = ∑ t n = ( n =1. t1 + t 2 + t3 + t 4 + ... + t n −1 + t n ) * 100% T. Figura 2.17. Diagrama de flujo para transmisión de la señal IR a 40KHz. Fuente: Los autores El tiempo promedio resulta ser igual para ambos casos Dt = 37.5% , por lo tanto, según el fabricante las señales generadas por el transmisor cumplen con los requerimientos establecidos. (Ver anexo A). Ahora se expone como el transmisor genera las señales a ser emitidas para la guía del robot IABOT. La transmisión de la señal a una frecuencia de f = 40KHz es generada por la rutina principal mostrada en la figura 2.17. El control de la transmisión de la señal y la salida de esta, la establece la interrupción del TMR0 del microcontrolador PIC16F84A. La salida de la señal de guía es por el bit 0 del puerto A,. 44.

(45) mientras la salida de la señal de parada es por el bit 1 del puerto A. Las dos señales no pueden ser emitidas al tiempo ya puede originar confusión en la lectura del robot.. Figura 2.18. Diagrama de flujo para generar colección de pulsos. Fuente: Los autores.. El control de la transmisión de la señal la realiza la interrupción del TMR0 (figura 2.18), para el control de los momentos de generación de las señales se usa el ‘tiempo de control’,. 45.

(46) este es cargado según el momento en que se encuentra la interrupción. El intervalo de la transmisión de las señales de guía y parada recibe el nombre de transición y esta dado por un tiempo de 4.8mS. Al terminar el momento de la transición, se carga el ‘tiempo de control’ según la señal que este activa, por ejemplo, si esta activa la señal de guía del robot, el tiempo de control se carga con 9.6mS. Continuando con el ejemplo, para el momento en que termina la transmisión de la señal de guía, esta activa la transmisión de la señal de parada y además, es activada la señal de transición. (Ver anexo A).. 2.2.4 Diseño e implementación del sistema de comunicación. El sistema de. comunicación lo usa el robot móvil para transmitir el estado de cada uno de los sensores y además, recibir las órdenes de SoftBot a ser ejecutadas. El medio de comunicación es alámbrico, y el tipo de comunicación implementado es el RS232 a 2400 baudios. (Ver anexo D). Tratar la cantidad de transferencia de datos entre SoftBot y el robot IABOT de manera improvisada puede es realmente abrumadora. Por este motivo se necesitó organizar los datos en paquetes o tramas. El paquete debe tener un formato conocido por cada uno de los dispositivos físicos que usan la línea de comunicación, en este caso el robot y el computador donde corre SoftBot.. El formato del paquete transferido es el siguiente:. El tamaño del paquete puede variar dependiendo de estado de los datos. A continuación se describe cada una de las partes del paquete.. - Inicio: Marca el inicio del paquete. Su tamaño es de 1 byte. El valor para iniciar una transferencia de un paquete es 129 decimal o 0x081 hexadecimal. - Dirección. Indica dispositivo dueño del paquete. Su tamaño es de 1 byte. - Función. Puede ser una orden o puede ser el tipo de los datos a ser transferidos en el paquete.. 46.

(47) - Numero de datos a transferir. Informa al receptor del paquete el número de datos a ser transferidos. Su tamaño es de 1 byte. - Datos. Es la información de interés para el receptor del paquete y su tamaño puede variar de 2 bytes a 0 bytes. - Fin. Marca el final del paquete transferido. Su tamaño es de 1byte. El valor para terminar la transferencia de un paquete es 216 decimal o 0x0D8 en hexadecimal.. Las funciones y órdenes establecidas para la comunicación entre SoftBot y el robot móvil IABOT se pueden ver en el código del programa el anexo F.. El valor de la velocidad del protocolo RS232 es de 2400 baudios. Para generar la frecuencia requerida el USART del microcontrolador dispone de un generador de frecuencia en baudios, llamado BRG, cuyo valor es controlado por el contenido del registro SPBRG del microcontrolador. Además del valor cargado en el registro la frecuencia generada depende, también, del bit BRGH del registro TXSTA. En el caso de que BRGH = 0 la comunicación trabaja a baja velocidad y si BRGH = 1 se trabaja a alta velocidad. Según este bit se obtiene el valor de la constante K necesaria en la determinación de la frecuencia de funcionamiento. La siguiente ecuación es usada para hallar el valor del registro SPBRG (representado por X) que determina la frecuencia en baudios [5]. FBAUDIOS =. FOSC K ( x + 1). Para la ecuación anterior ‘Fosc’ representa la frecuencia de oscilación empleada por el microcontrolador, ‘K’ es la constante que determina la frecuencia de funcionamiento y ‘x’ es el valor a cargar en el registro SPBRG. Si se escoge una comunicación a alta velocidad y despejando a ‘x’ se obtiene la siguiente nueva ecuación [5]: x=. FOSC −1 K FBAUDIOS. Para Fosc = 4MHz; FBAUDIOS = 2400 Baudios; K =16. Entonces: SPBRG = X = 103.16 SPBRG = 103. 47.

(48) 2.2.5 Diseño e implementación del sistema de alimentación. El sistema de alimentación. se encarga de suministrar la potencia necesaria al robot móvil IABOT, por esta razón es importante tener en cuenta el consumo de potencia de cada componente del robot. Además, el sistema de alimentación dispone de un cargador de baterías, de fácil conexión y operación. (Ver manual del usuario capitulo 2).. 2.2.5.1 Diseño e implementación de la fuente del robot. El sistema de alimentación de. IABOT se puede ver en la figura 2.19. El circuito resulta ser una fuente de poder con un regulador 7805 alimentado por dos baterías de 12VDC conectadas en paralelo. La salida de 5v del regulador los módulos de sensores, comunicación y control, mientras el voltaje de 12v alimenta la etapa de potencia de IABOT. Se observa también, los terminales de carga del robot donde no importa la posición del interruptor se puede iniciar la carga de las baterías y además, la estación puede servir de fuente de poder auxiliar para IABOT.. Figura 2.19. Fuente de alimentación IABOT. Fuente: Los autores.. Las consideraciones para la fuente de alimentación de IABOT se calcularon, teniendo en cuenta las características eléctricas de los dispositivos y circuitos integrados de cada etapa y se pueden apreciar en la tabla 2.1.. 48.

(49) Tabla 2.1 Consideraciones consumo de Potencia por etapa y suministro.. Fuente: Los autores.. 2.2.5.2 Diseño e implementación del cargador de baterías. Es una fuente conmutada. encargada de alimentar la plataforma móvil (si es necesario) y de realizar la recarga de las baterías. El circuito mostrado en la figura 2.20 es un circuito buck converter, se encarga de generar un nivel de voltaje de carga estable al robot. Se trata de un circuito convertidor DCDC sencillo de implementar, y de alta eficiencia. Con la frecuencia y el ancho del pulso de una señal generada por el microcontrolador PIC16F874, se puede controlar la salida de voltaje de salida del circuito buck converter (Ver anexo B). Para el caso del proyecto solo se necesita cargar baterías de 12 V a 1.2A/h.. 49.

(50) Figura 2.20. Buck converter. Fuente: Microchip Technology Inc.. Las variables para calcular la salida de carga del circuito son: PWM:. Entrada del PWM generado por el microcontrolador. Vi:. Voltaje de entrada suministrado por el regulador de voltaje.. Vout:. Voltaje de salida.. Figura 2.21. Salida PWM y corriente de salida del buck converter. Fuente: Microchip Technology Inc.. La relación entre la salida del PWM y el voltaje de salida es:. tOn (Vo + VD ) = T (Vi − Vsat + VD ) Donde: Ton T Vi Vo Vsat VD. = = = = = =. Semiciclo en alto del PWM Periodo del PWM Voltaje de entrada Voltaje de salida Voltaje de saturación del transistor Forward voltage drop del diodo. 50.

(51) La ecuación es valida para el intervalo de tiempo 0< ton < T. Para VD, Vi, Vsat, Vo y T constantes, se puede determinar ton.. Por lo tanto, como diferentes baterías requieren. diferentes voltajes de carga, dicho voltaje de salida se puede controlar variando Ton. Por otra parte, se recomienda el uso de un diodo de recuperación rápida por proveer el voltaje de forward necesario y alta velocidad de conmutación. (Ver anexo B) Despejando Vo se tiene la ecuación siguiente:. tOn =. (Vo + VD )T (Vi − Vsat + VD ). Los valores constantes empleados en el proyecto son los siguientes: Vo = 13.2 V. VD = 1.3V a 3A.. Vi = 18V. Vsat = 0.2V. Entonces el valor de ton es:. tOn = 645.3 µS. T = 850uS. Hallado el valor ton, se puede hallar el valor del inductor necesario para terminar el diseño del circuito. Con la siguiente formula podemos hallar el valor de la bobina:. L=. (Vi − Vsat + VD )tOn I pk. Con Ipk = 3A el valor de L es: L = 4.108mH 2.2.6 Diseño e implementación del sistema motriz. El sistema motriz se encarga del. desplazamiento del robot IABOT, controlando los motores de corriente directa (DC). Otra tarea del sistema motriz es la de asegurar que la potencia se suministre de forma equitativa para ambos motores DC. Para asegurar que la potencia se distribuya correctamente el sistema cuenta con dos señales PWM generadas por los dos microcontroladores PIC dispuestos en el sistema de control. El sistema motriz está conformado, además, por dos motores DC y la caja de reducción encargada de transferir el movimiento a las ruedas. Este sistema motriz se diseñó e implementó en el chasis de la estructura en forma de “oruga” y consta de dos motoreductores acoplados mediante engranes a la rueda y por medio de una. 51.

(52) banda se transfiere el torque a la otra rueda lateral. Para control de los motores y entregar la corriente consumida por estos, el sistema usa el circuito integrado LM298 el cual esta conformado por un puente H dual con una capacidad de 2A por canal. (Ver anexo C).. La transferencia de potencia en cada motor se representa en el movimiento del robot IABOT, si el movimiento no es uniforme el robot presenta una transferencia de potencia ineficiente. Esto es debido a que los motores presentan un desbalance mecánico y es claro que se necesita de un medio para ser corregido. El medio elegido es usar una señal de PWM diferente para cada motor. Para determinar el PWM para cada motor fue necesario realizar un procedimiento de prueba - error y se determinó para corregir el desbalance mecánico que el PWM para el motor derecho este al 65% y para el motor izquierdo este en un 70%. El cálculo del Periodo de la señal de PWM se realiza mediante la siguiente formula [5]:. T = 4(PR 2 + 1)Tosc DIVTMR 2 La anchura del pulso se obtiene con [6]:. Ton = CPPR (Tosc DIVTMR 2 ) El periodo de la señal se elige de manera arbitraria y que este en el rango donde se pueda emplear con el motor. Entonces, el periodo elegido es T = 4mS, de la ecuación para el cálculo del periodo se despeja PR2:. PR 2 =. T Fosc −1 4 DIVTMR 2. La frecuencia de oscilación es de 4MHz, y el divisor del TMR2 a 16, entonces el valor para PR2 es: PR2 = 249. Ahora se procede a calcular el valor de CCP para cada motor, entonces de la ecuación para la anchura del pulso se despeja CCPR:. CCPR =. Ton Fosc DIVTMR 2. Para el motor derecho con un ancho de pulso al 65% se tiene CCPR = 650. Para el motor izquierdo con un ancho de pulso al 70% se tiene CCPR = 700.. 52.

(53) 2.2.7 Diseño e implementación del sistema de control. El sistema de control esta. constituido por dos microcontroladores encargados de administrar y controlar todas las variables y procesos presentes en IABOT como el control de los motores, verificar el estado de los sensores, establecer la comunicación con el computador y ejecutar las ordenes enviadas como resultado del procesamiento de la RNA desde el computador. Este sistema se encarga de controlar los otros sistemas. Teniendo la libertad de llamar partes especializadas de los otros sistemas. La manera en que el sistema de control se comunica con los otros sistemas es por medio de registros que informan con banderas el estado de cada una de las áreas para las que estos se especializan. (Ver anexo F) Para facilitar la gestión del control, el sistema se divide en dos, el módulo principal y el módulo de interrupción.. Figura 2.22 Diagrama de flujo del módulo principal del sistema de control. Fuente: Los autores.. 53.

(54) 2.2.7.1 Módulo principal. Este módulo del sistema de control se encarga de inicializar el. robot, inicializar los otros sistemas, preguntar por el estado de los sensores de ultrasonido al sistema sensorial, pedir al sistema de guía que le indique si el robot ya esta en el lugar de destino, informar al sistema motriz que acción tomar, consultarle al sistema de comunicación si hay llegada de ordenes o de alguna petición de SoftBot, y procesar las ordenes recibidas. Este módulo del sistema de control tiene varias tareas que realizar, pero debido a que los otros sistemas se especializan en su respectiva área, la carga al módulo no es evidente. El la figura 2.22 se representa en un diagrama de flujo este módulo.. 2.2.7.2 Módulo de interrupción. Este módulo tiene la tarea de verificar la interrupción. generada por el sistema de comunicación, y con un temporizador que se dispara periódicamente generando una interrupción para indicar el momento de lectura de los sensores IR, de lectura de los sensores de tacto, mostrar el estado del hardware y activar funciones del sistema motriz si hay orden de SoftBot. En el diagrama de flujo de la figura 2.23 se puede ver en detalle la función de este módulo dentro del sistema de control.. Figura 2.23. Diagrama de flujo del módulo de interrupción del sistema de control. Fuente: Los autores.. 54.

(55) 2.2.8 Simulación e implementación de la RNA. Para el diseño de la red neuronal. artificial se usaron técnicas de programación orientada a objetos usando el lenguaje de programación C++ [6]. Se inicia con la deducción de la regla de aprendizaje de la RNA, acto seguido se describe el algoritmo de entrenamiento de la RNA, luego se determina las clases necesarias para implementar el sistema, los atributos que necesitan tener los objetos de estas clases, y luego se especifica la manera en que interactúan los objetos para lograr que funcione la red neuronal.. 2.2.8.1 Deducción de la regla de aprendizaje de la RNA. Para implementar el modelo. RNA se debe deducir la regla con que la red va a aprender los diferentes parámetros que comandaran al robot IABOT. Cuando a la red se le presenta algún parámetro a la entrada en el momento de aprendizaje se representa una superficie que indica el error que produce la RNA para ciertos valores de pesos de la misma. Es claro que la superficie del error depende del valor cargado en los pesos para cada iteración de aprendizaje. Por lo tanto, se determina que el incremento de un peso wji de la red en una iteración, al procesar un patrón pi, es proporcional al cambio del error ep respecto a ese peso en una constante negativa [2]. w kji +1 = w kji − α ( ∆w ji = − α (. ∂ep ∂w ij. ∂ep ∂w ij. ). ). La respuesta a la salida yi de cada célula j esta dada por: Donde. y i = f (Net j ). Net j = ∑ w ji y i. Para la ecuación anterior Netj representa la sumatoria de cada producto entre la salida de la neurona i con el valor de la conexión entre la neurona j y la neurona i. En la fase de entrenamiento se presentan parejas de. valores (Xp y Dp) para que se realicen las. asociaciones internas necesarias. Se sabe que cuando a la red se le presenta a la entrada un vector de valores Xp = (xp1, xp2, …,xpn), la salida deseada debe ser Dp = (dp1, dp2, …,dpn). Pero al recibir la entrada Xp, la red tendrá como respuesta en la capa de salida Yp= (yp1, yp2, …,ypn).. El error resulta comparando la salida deseada con la salida obtenida por la red [3].. 55.

(56) 1 M (d pk − y pk )2 ∑ 2 k =1. ep =. Donde k es el índice de las neuronas de la última capa. El error total esta dado por [3]: p. ∑e. p. p =1. e=. P. Siendo p el índice de los patrones a ser aprendidos por la red y P el numero total de patrones. Aplicando la regla de la cadena y remplazando resulta la salida de la neurona para un patrón p. ∆w ji = − α ( ∂e p. =. ∂w ij. ∂Net j ∂w ij. ∂e p ∂w ij. ∂e p ∂Net j. .. ). ∂Net j ∂w ij. ∂ ∑ w ji y pj. =. i. = y pi. i. ∂w ij. Si el error para una neurona lo llamamos como - δpj se obtiene la siguiente ecuación: ∂ep ∂Net j ∂ep ∂w ij. = −δ pj. = −δ pj y pi. Por lo tanto se puede obtener la proporción con que cambian un peso dependiendo del error a la salida de la neurona siguiente [3]: ∆w ji = −α δ pj y pi. En la ecuación α es una constante de proporcionalidad. Se aplica, ahora, la regla de la cadena para calcular el valor de delta [3].. δ pj = − ∂y pj ∂Net j. ∂ep ∂Net j =. = −(. ∂ep. 56. ∂y pj. ∂y pj ∂Net j. ∂(f (Net j )) ∂Net j. .. ). = f ' (Net j ).

(57) Como existen básicamente dos tipos de neuronas. Las neuronas de salida y las que no son de salida (las de entrada y las ocultas). Para una neurona j de salida se obtiene la proporción de cambio para el peso conectado entre la neurona j y la neurona i: ∂. ∂ep. =. ∂y pj. 1 (d pj − y pj )2 ∑ 2 j = −(d pj − y pj ) ∂y pj. ∆w ji = α (d pj − y pj ).f ' (Net j ).y pi. Ahora se debe calcular la proporción de cambio para el error de una neurona j que no es una de salida, donde k denota a las neuronas de la capa siguiente a la que pertenece la neurona j. Se debe usar de nuevo la regla de la cadena. Entonces [3]: ∂ep ∂y pj ∂ep ∂y pj ∂ep ∂y pj. =∑ k. ∂ep ∂Netk. = ∑( k. .. ∂ep ∂Netk. ∂Net k ∂y pj ∂ ∑ (w kj y pj ) .. j. ∂y pj. ) = ∑( k. ∂ep ∂Net k. .w kj ). = ∑ ( −δ pk w kj ) = −∑ (δ pk w kj ) k. k. Ahora conociendo la ecuación para el error de la neurona j, se puede hallar la ecuación para el incremento del peso de la neurona. Con la ecuación para la corrección del valor del peso de la neurona según el error:. ∆w ji = −α δ pj y pi y. δ pj = −∑ (δ pk w kj ) k. Se tiene que el cambio para el peso de una neurona j esta dado por [3]:. ∆w ji = α. ∑ (δ. pk. w kj ).f ' (Net j ).y pi. k. Para el proyecto se implemento como función de transferencia sigmoidal [3]:. 1 1+ e− x 1 1 yi = = − Net − ∑ w ji y i 1+ e 1+ e. f (x) =. 57.

(58) La derivada de f(x) es: f '(x) =. e− x 1 e− x = = (1 + e − x )2 (1 + e − x ) (1 + e − x ). e− x + 1− 1 1+ e− x 1 f (x) = f (x) − = −x −x (1 + e ) 1+ e (1 + e − x ) f ( x ) (1 − f ( x ) ). Por lo tanto. f ' (Net j ) = f (Net j ) (1 − f (Net j ) ) = y j (1 − y j ). El incremento para el peso conectado entre la neurona j y la neurona i esta dado por [3]: ∆w ji = α (d pj − y pj )y pj (1 − y pj )y pi. Conociendo los términos importantes que hacen que la red neuronal con propagación del error hacia atrás aprenda del error, se llevó a cabo la implementación del modelo en el proyecto.. Figura 2.24. Diagrama de flujo del algoritmo de entrenamiento de la RNA. Fuente: Los autores.. 58.

Figure

Actualización...

Referencias

Actualización...