PROGRAMACIÓN DE UN ROBOT AUTÓNOMO Diseño, Construcción, Programación E .

Transcription

PROGRAMACIÓN DE UN ROBOT AUTÓNOMODiseño, construcción, programación e integración de un robotautónomo en el entorno Pyro.Memòria del Projecte Fi de Carrerad’Enginyeria en Informàticarealitzat per Antonio Jesús Dávila Molinai dirigit per Ricardo Toledo MoralesBellaterra, 12 de març de 2007

Escola Tècnica Superior d’EnginyeriaEl sotasignat, Ricardo Toledo MoralesProfessor de l’Escola Tècnica Superior d’Enginyeria de la UAB,CERTIFICA:Que el treball a què correspon aquesta memòria ha estat realitzat sota laseva direcció per en Antonio Jesús Dávila MolinaI per tal que consti firma la present.Signat: .Bellaterra, 12 de març de 20072

“La suerte favorece sólo a la mente preparada.”Isaac Asimov.3

AgradecimientosComenzaré con el clásico agradecimiento y sobradamente merecido a mi familia,dado que han sido extremadamente comprensivos con todo el tiempo que permanezcoausente, tanto mientras realizaba el proyecto como en mis estudios y profesión.Quiero hacer mención especial a mi padre, que con su ejemplo motivó las ganaspor conocer y descubrir el porque de las cosas, pero además como realizarlo de formacompletamente autodidacta. Definitivamente, una de las lecciones mejor aprovechadade mi vida.A Ricardo Toledo, tutor de este proyecto, agradecer su compresión, ayuda eilusión. Ha sido un gran compañero en este viaje.Una última gratitud la dirijo al trabajo realizado por los profesionales que hancreado Pyro, Douglas Blank, Kurt Konolige, Deepak Kumar, Lisa Meeden, HollyYanco, también a Richard Barry creador del FreeRTOS, y por último a Peter Fleury, porsu librería de I2C.4

Índice:INTRODUCCIÓN . 9OBJETIVO . 9MOTIVACIÓN . 10ANÁLISIS DE REQUERIMIENTOS . 11REQUERIMIENTOS FUNCIONALES: ROBOT AUTÓNOMO . 11REQUERIMIENTOS FÍSICOS:. 12ARQUITECTURA DEL ROBOT. 14DISEÑO LÓGICO . 14DISEÑO FÍSICO . 17Locomoción. 17Sistema de energía (Alimentación) . 18Control . 18Ordenador. 18Sensores . 18DISPOSITIVOS DE CONTROL . 20OOPic . 20AVR . 22Bus I2C . 23Placa Base . 23DISPOSITIVOS DE ENTRADA . 25Ultrasonidos. 25Infrarrojos. 26Compás . 265

Termopila. 27DISPOSITIVOS DE SALIDA . 27Motores . 27Servomotores. 28DESARROLLO . 29APROXIMACIÓN INICIAL . 29Primer Obstáculo: el OOPic. 29Módulo Interfaz.30Módulo de Locomoción .31Módulo de Torreta.31Módulo de Sensores. .32Conclusiones. .32Apuesta personal, el AVR. 32UNIDAD DE CONTROL . 34Configuración Física. . 34Revisión 1. 35FreeRTOS. . 36El Núcleo.36El Gestor de Memoria .37Procesos y Threads.38Colas y Semáforos.38Detalles y Desarrollo en el proyecto: .39ARI. . 40Módulo Interfaz.41Módulo de Locomoción .426

Módulo de Servomotores .43Módulo de Sensores. .47Configuración e Inicialización. .51INTEGRACIÓN EN PYRO . 52Entorno Pyro. 52El Robot según Pyro . 53Desarrollo . 57RESULTADOS, CONCLUSIONES Y MEJORAS . 59MEJORAS . 60BIBLIOGRAFÍA Y REFERENCIAS. 61LIBROS: . 61REFERENCIAS ELECTRÓNICAS: . 61APÉNDICE I. 63ESPECIFICACIONES HARDWARE . 63Detalles de la placa de soporte. 63Prototipo:.63Revisión 1 .65Especificaciones Técnicas: . 67Motor 7.2v DC con reductora 50:1: HN-GH7.2-2414T .67Placa ETT-BASE AVR MEGA128 .68Controlador de motores MD22.70Sonar SRF08 .78Infrarrojos GP2D12.88Compás CMPS03 .90Termopila TPA81.957

Lista del Coste detallada.100APÉNDICE II . 101ESPECIFICACIONES SOFTWARE . 101Comandos de control . 101Interficie:.101Locomoción .104Control Servos.106Sensores. .110Detalles I2C y librería . 113Principio de funcionamiento: .113Librería:.113Añadir un sensor nuevo a ARI . 115Soporte en el ARI para sensores.115Ejemplos Prácticos:.118INFORMACIÓN DETALLADA DEL MÓDULO PYRO . 124Uso y configuración . 124Clases AriRobot y AriInputProcessor . 126Clase PTZDevice . 127Clase OwnDevice. 128Dispositivos. 129APÉNDICE III. 131HERRAMIENTAS . 131Instalación y configuración del entorno AVR Studio y FreeRTOS . 131Instalación de Python, Pyro y módulo de ARI. . 1358

IntroducciónSiempre ocurre que los títulos se eligen antes y los proyectos no acaban de lamisma forma que se idean, porque un diseño inicial sirve principalmente para saberporque no se lleva a cabo tal y como se ideó, cada paso es un paso para poder cambiarmuchas cosas, descubrir nuevas , o descartar ideas que parecían tremendamente sólidas.A medida que este proyecto iba cogiendo forma, también lo hacia su objetivo,pero con una premisa que siempre ha estado presente, es que el trabajo realizado sepudiese utilizar en actividades de docencia e investigación, continuar y mejorar.ObjetivoConstrucción de un robot autónomo modular con distintos tipos desensores/actuadores integrado en un entorno de programación apto para el desarrollofuturo de actividades de docencia e investigación.La idea inicial era crear un interfaz para que cualquiera pudiese usar el robotdesde su programa, y dotarla de una fuerte funcionalidad, además de crear un programade demostración capaz de hacer que se desplazara en un entorno controlado evitandoobstáculos.Dado que los primeros experimentos fueron altamente positivos en cuanto a lafactibilidad técnica de la construcción del robot, se decidió dotar a la plataforma de unnivel superior de prestaciones. Para ello se consideró importante la integración del robotdentro de un entorno de robótica que ofreciera mayores recursos.Se escogió el entorno de robótica Pyro [6], que ofrece una correcta capa deabstracción y dispone de soporte para visión, lógica borrosa y redes neuronales entreotras funcionalidades. La integración del robot en el entorno Pyro se convirtió en uno delos principales hitos.La integración en el entorno Pyro tiene dos consecuencias muy importantes.Desde el punto de vista de la docencia, facilita en aprendizaje debido a los diversosniveles de abstracción que se ofrecen. En investigación, permite abordar diversas áreas9

sin perder tiempo en construir, diseñar o programar una base para ello.MotivaciónDesde hace mucho tiempo se ha soñado siempre con autómatas que ayudasen alhombre en el trabajo pesado o peligroso, incluso sustituirlo o hacer tareas que el hombreno esta capacitado para realizar. Autómatas guerreros, exploradores o muy inteligentescapaces de razonar.La realidad es lejana de la ciencia ficción, algo sencillo e intuitivo como es para elhombre interactuar con el entorno, moverse, explorar, sentir o incluso algo tan obviocomo ver, cuando intentamos realizarlo con un ordenador se convierte en una tareacomplicada, de alto requerimiento computacional, o nuestro conocimiento no nos lopermite.Personalmente siempre he sentido atracción por la robótica, la interacción de losordenadores con el “mundo exterior”, y esta curiosidad siempre me ha llevado a entraren contacto directo con la electrónica, así que definitivamente este proyecto me atraíapor encima de otros.10

Análisis de RequerimientosA continuación haremos un análisis de requerimientos jerárquico, es decir cual esel requerimiento principal y que requerimientos nos aparecen dependientes de este nivelya sean funcionales, o físicos.Requerimientos funcionales: robot autónomo Ser capaz de moverse por un entorno controlado mostrandodiferentes grados de “inteligencia”. Teniendo un entorno relativamentecontrolado donde se minimizan las interferencias que pudieran anular,mermar o engañar seriamente los sensores.o Disponer de locomoción. Disponer de algún mecanismo quepermita al autómata desplazarse por el medio.o Capacidad de percepción. Es necesario que el autómata cuentecon dispositivos capaces de detectar y obtener información delmedio.o Procesar la información obtenida. Disponer de la suficientepotencia de cálculo como para poder desarrollar comportamientosinteligentes, con vistas al futuro y poder investigar en visión porcomputador. Que el proyecto sea extensible y una posible herramienta deenseñanza e investigación. Para este objetivo deberíamos alejar al alumnode los detalles complejos de implementación, y dar una interfaz sencillaque le permita solo dedicarse a aprender los detalles clave que realmenteinteresan.11

o Integración en el entorno de robótica Pyro. El entorno Pyro1 quepermite abstraer el concepto de robot independientemente de cómoeste construido o implementado, permite tener ese medio paraenseñanza, además de incorporar muchas herramientas deinteligencia artificial ya casi preparadas su uso, como lógica difusa,redes neuronales o algoritmos genéticos entre otros.o Dispositivo que centralice todo el control del hardware. Cadasensor o dispositivo hardware funciona de una manera diferente.Para poder desarrollar el módulo del Pyro, disponer de un solocamino para acceder a todos estos dispositivos de bajo caudal seriaalgo muy recomendable.Requerimientos Físicos:No podemos olvidar que el fin del proyecto es crear un robot, y esto tiene unasnecesidades de materiales dispositivos, cada uno con de ellos con una serie de requisitosde funcionamiento, por ejemplo: para poder ejecutar el Pyro necesitamos un ordenadordentro del robot, pero para que este funcione necesita energía.A continuación expondremos a grandes rasgos los principales requerimientosfísicos derivados de los funcionales, ya entraremos con más detalle en capítulosposteriores. Movimiento y Sentido: el robot necesita unos dispositivos para moverse yotros para recibir información del medio, estos dispositivos por desgraciano son fáciles de conectar al ordenador directamente y necesitan de ciertaadaptación tanto eléctrica como lógica. Para ello se ha creado la interfaz de1acrónimo de Python Robotics, software desarrollado principalmente por Douglas Blank y DeepakKumar de la universidad de Bryn Mawr, Filadelfia, , Kurt Konolige universidad de Stanford en PaloAlto, California, Lisa Meeden de la universidad de Swarthmore en Filadelfia y Holly Yanco de launiversidad de Massachussetts Lowell12

control, que no solo controla, si no que también alimenta y adaptaelectrónicamente los sensores y dispositivos de actuación. Interfaz de control: Necesita una fuente de energía para poder funcionarEsta fuente debe estar separada de la alimentación de los motores dado quela electrónica de control es muy sensible al ruido electrónico. Pyro: para poder ejecutar el entorno de robótica Pyro necesitamos unordenador PC compatible, su alimentación no es nada sencilla y requiereun cuidado especial.13

Arquitectura del RobotNo existe un método ni consenso para definir cual es la mejor forma de diseñarun robot, muchas veces el hombre lo define como una copia de si mismo, y eso esporque nosotros mismos somos un ejemplo claro de autómata. Somos autosuficientes,además de ser capaces de realizar tareas realmente complejas.El diseño de un autómata esta regido por los objetivos que deba cumplir. En nuestrocaso el objetivo principal es que se pueda usar para investigar robótica y visión.Partiendo de la premisa anterior, el autómata deberá ser móvil y a la vez ha de poseervarios niveles de abstracción separados entre si de forma muy clara dado que tambiénha de ser un sistema para la enseñanza, y si dispusiera de multitud de partesinterrelacionadas de forma poco clara complicaría su uso y el tiempo se malgastaría encomprender y hacer funcionar el sistema en lugar de focalizar en lo que realmenteimporte en cada actividad.Diseño LógicoSi nos miramos a nosotros mismos veremos un ejemplo de autómata muyavanzado que dispone de sus sensores, su sistema de locomoción, y su unidad deproceso, por lo que tomarnos de ejemplo nosotros mismos, es algo natural.Así se hizo para organizar este robot. Si observamos la figura 1, como el diagramaindica, disponemos de una unidad de proceso que es un ordenador PC, que haría lafunción de cerebro, luego tenemos un circuito con un microcontrolador, que se encargade unificar en una sola interfaz la gran mayoría del hardware de bajo nivel, sicontinuamos con nuestra comparación este sería nuestro cerebelo, descarga al cerebrode tareas rutinarias o de controlar al detalle otros dispositivos.Y por último tenemos el hardware (nuestro cuerpo y sus sensores) que es lo quepermite interactuar con el medio.14

CerebroPC, la única gestion dehardware es la degran volumen de datos.CerebeloCanal de ComunicaciónHardware de muy bajo nivelcon volumen moderadode datosFigura 1: Esquema Lógico.En el “cerebro” está el entorno Pyro que proporciona un medio eficaz para laconstrucción de comportamientos más o menos inteligente y su ejecución en nuestroautómata. En el “cerebelo” se sitúa nuestra unidad de control que nos permite gestionartodo el hardware de bajo volumen de datos, muy diferente entre si. El “cerebelo” tienela capacidad de gobernar los dispositivos de actuación sobre el medio como pueden serlos motores y posee un sistema que tiene por misión interrogar a los sensores según sele ordene. .El “cerebelo”, (que a partir de ahora lo llamaremos interfaz de control), estácontrolado por un sistemaoperativo el cual da unsoporte básico y nos permiteCerebeloPCRepartidoraprovechar mucho mas elmicrocontrolador. Sobre estesistema operativo se ejecutanSensoresTorretaLocomociónunas tareas (figura 2). Cadatarea o módulo, tiene ciertasresponsabilidades. PorFigura 2: Módulos del sistema de control.15

ejemplo: el módulo de interfaz serie se encarga de recibir y enviar comandos y datosdesde y hacia el Ordenador.El repartidor que forma parte de módulo interfaz reparte las órdenes según sunaturaleza a los demás módulos, estos ejecutarán la orden y pueden o no devolver unresultado, también pueden enviar datos periódicamente.16

Diseño FísicoA continuación haremos una descripción física del robot, nos basaremos en 3apartados, según su posición física, comenzaremos de abajo hacia arribaLocomociónEl diseño físico ha sido determinado por los materiales y herramientas empleados.Este robot es un vehiculo propulsado por ruedas, con una batalla muy corta que permitedescartar el uso de ruedas directrices, y permite usar el mismo método para moverse queutilizan los carros propulsados por orugas. Es decir el robot es capaz de girar en funciónde la velocidad aplicada a cada par de ruedas de cada lado. Por ejemplo si las ruedas dela derecha giran a una cierta velocidad hacia delante y las de la izquierda a la mismavelocidad hacia atrás el robot girará sobre su eje hacia la izquierda.Para poder realizar tales movimientos detrás de cada rueda hay un pequeño motorde 7.2 voltios DC provisto de una caja reductora, los dos motores de cada lado sonconectados en paralelo para trabajar como si fuesen uno, estos son vistos por el sistemacomo 2 motores uno para cada lado. Ver mas detalles en el Apéndice I17

Sistema de energía (Alimentación)Para alimentar el robot se utilizan dos baterías, una destinada a alimentar elordenador, la electrónica de control y los sensores, y otra destinada a alimentar a losmotores. Para alimentar el ordenador se utiliza una batería universal para portátil, es unabatería de litio de gran capacidad que permite mantener encendido el ordenador y laelectrónica de control entre 60 y 100 minutos.Para alimentar los motores se ha optado por una batería de 6 células que da 7.2voltios, este tipo de unidad es muy común en el hobby de automovilismo de radiocontrol eléctrico. Permite alimentar los motores como mínimo tanto como la otra bateríaalimenta el ordenador.Las baterías están alojadas en el compartimiento inferior junto con la placa decontrol, dado que son los elementos que más pesan, nos permite tener un centro degravedad lo más bajo posible, que contribuye a la estabilidad del robot.ControlLos motores y los sensores son gobernados por la unidad de control (“cerebelo”),la cual se comunica con el ordenador central mediante una comunicación serie.Hablaremos con mucho mas detalle de ella mas adelante.OrdenadorEl ordenador se encarga de dotar de la potencia suficiente al robot como parapoder realizar un mínimo de comportamiento inteligente y poder incorporar cámaraspara dotar al robot de visión por computador.SensoresEl robot dispone de la mayoría sus sensores distribuidos encima de una torreta ounidad de pan & tilt2, esta unidad es accionada por dos servomotores y gobernada por la2Termino muy utilizado en robótica, que se refiere al conjunto mecánico que permite mover unsensor o grupo de estos como si de una cabeza se tratara, es decir horizontalmente y verticalmente.18

unidad de control. En la torreta disponemos de varios tipos de sensores como: sonares,infrarrojos, una termopila que permite obtener imágenes térmicas muy sencillas. En unapróxima etapa se incorporará a la torreta un par de cámaras.Otros sensores se encuentran fuera de la torreta. Por ejemplo el compás magnéticoque nos proporciona información acerca de norte magnético. En apartados posterioresentraremos en más detalles con los sensores.Los números 1, 2,3 son sensores de distancia mediante infrarrojos. 4,5 y 6 son sensoresde distancia e iluminación mediante ultrasonidos (o sonares) y fotorresistencia, y elnumero 7 es una termo pila que dispone de un vector vertical de 8 sensores detemperatura.19

Dispositivos de ControlUnos de los módulos más importantes del proyecto es la Unidad de Control quepermite unificar en una sola unidad todos los sensores de bajo volumen de datos y elcontrol de los dispositivos de actuación.Durante el desarrollo del proyecto se han probado dos opciones:1. Utilizar una placa de propósito general ya creada y de sencilla programación2. Construir nuestra propia placa. A continuación explicaremos los dosdispositivos por separado.OOPicLa OOPic [7] (del Ingles: Object OrientedPIC3), es una placa desarrollada por la empresaamericana Savage Innovations, es una placa decontrol diseñada específicamente para robótica,muy flexible en el conexionado y que se puedeprogramar con sintaxis del estilo Basic, C o Java,pero solo la sintaxis, el código generado esconvertido a un pseudo código que es interpretadoen el hardware final.Figura 3: OOPic-RLa programación orientada a objetos delOOPic es muy fácil y muy rápida de aprender, toda su potencia reside en su bibliotecade objetos, en esta disponemos de una larga colección de objetos para controlar multitudde hardware diferente, desde sensores de infrarrojos o sonars incluido específicos paraalgunos fabricantes de sensores.3PIC es un microcontrolador diseñado y construido por la empresa Microchip, tiene un rotundoéxito entre los aficionados a la robótica y electrónica por su fácil programación y la gran cantidad derecursos que existen en Internet.20

En la figura 3 podemos apreciar como el OOPic es un entorno cerrado, muysimplificado y orientado al aficionado que no tiene excesivos conocimientos, esto haceque sus prestaciones no sean muy altas. Aunque el microcontrolador de 20 Mhzdisponga de una potencia respetable, el programa del usuario en pseudo código se grabaen una memoria externa (el interprete se encuentra grabado en la memoria interna delmicrocontrolador), con acceso mediante una comunicación serie (a como máximo 400Khz.). Según las especificaciones de Savage se ejecutan 2000 instrucciones de pseudocódigo por segundo, con este primer dato ya podemos descartar cualquier intento derealizar tareas que

No existe un método ni consenso para definir cual es la mejor forma de diseñar un robot, muchas veces el hombre lo define como una copia de si mismo, y eso es porque nosotros mismos somos un ejemplo claro de autómata. Somos autosuficientes, además de ser capaces de realizar tareas realmente complejas. El diseño de un autómata esta regido .