Escuela Politécnica Nacional
Total Page:16
File Type:pdf, Size:1020Kb
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA CONSTRUCCIÓN Y PROGRAMACIÓN DE UN GRUPO DE ROBOTS MÓVILES SOBRE LA BASE DEL PRODUCTO LEGO MINDSTORMS NXT PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN ELECTRÓNICA Y CONTROL MEDARDO ÁNGEL SILVA AMORES [email protected] DIRECTORA: Ing. ANA RODAS [email protected] Quito, julio de 2011 i DECLARACIÓN Yo, Medardo Ángel Silva Amores, declaro bajo juramento que el trabajo aquí descrito es de mi autoría; que no ha sido previamente presentado para ningún grado o calificación profesional; y, que he consultado las referencias bibliográficas que se incluyen en este documento. A través de la presente declaración cedo mis derechos de propiedad intelectual correspondientes a este trabajo, a la Escuela Politécnica Nacional, según lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la normatividad institucional vigente. _______________________ Medardo Ángel Silva Amores ii CERTIFICACIÓN Certifico que el presente trabajo fue desarrollado por Medardo Ángel Silva Amores, bajo mi supervisión. _________________________ Ing. Ana Rodas B. DIRECTORA DEL PROYECTO iii AGRADECIMIENTO Mi profundo agradecimiento a la Ing. Ana Rodas, cuya ayuda y estímulo ha sido determinante para facilitar la terminación de este tan esperado proyecto. iv DEDICATORIA Mucho tiempo tomó el llegar a este momento y posiblemente la persona que más se alegrará porque finalmente se produjo es mi madre, a quien va dedicado este trabajo. v RESUMEN El presente trabajo tiene como principal objetivo el construir y programar un conjunto de robots móviles sobre la base del producto Lego Mindstorms en su versión NXT 1.0. Para ello se ha propuesto la construcción y programación de algunos prototipos que pretenden principalmente mostrar las diferentes opciones que ofrece el producto mencionado. Los prototipos diseñados usan, en conjunto, todos los sensores con los que viene equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación. Los programas desarrollados intentan aprovechar las principales características con las que puede ser programado el ladrillo programable NXT: manejo de entradas y salidas, contadores, temporizadores, subrutinas, estructuras de lazo, funciones que permiten tomar decisiones, almacenamiento de datos, generación de tonos, comunicación entre ladrillos mediante bluetooth, etc. Como lenguajes de programación se utilizan, de entre las múltiples opciones existentes en el mercado y en el ciberespacio, el lenguaje propio del fabricante, NXT-G, y otro que se encuentra dentro de la categoría de software libre y que es conocido como NXC. El lenguaje de programación NXT-G está desarrollado sobre la plataforma de Labview y tiene características gráficas que lo hacen simple de manipular, pero que resulta engorroso cuando se trata de hacer programas un poco largos o cuando se requiere de una mayor capacidad de procesamiento numérico. El segundo lenguaje presentado, el NXC (Not eXactly C), tiene mejores características frente al anterior ante los dos criterios mencionados y está desarrollado sobre una plataforma de lenguaje C. Se han desarrollado las siguientes aplicaciones: un medidor de longitud, una calculadora de área y volumen a partir de la medición de longitudes, un escorpión que reacciona ante estímulos externos, un brazo mecánico que incluye la posibilidad de reconocer colores, un auto controlado con un algoritmo PID para mantener una posición relativa hacia un objeto, un seguidor de línea y una aplicación de control remoto mediante bluetooth. vi PRESENTACIÓN El trabajo desarrollado ha sido estructurado de tal manera que se puede estudiar, de forma separada, la construcción del hardware y el diseño del software. Aún cuando los dos aspectos están siempre íntimamente relacionados, esta forma de presentación permite descubrir fácilmente las dificultades que muestra cada aspecto del diseño. En el capítulo 1 se presentan algunos conceptos básicos sobre la robótica y sus aplicaciones, colocando mayor énfasis en la parte educativa y en la investigación. Se hace una presentación del producto Lego Mindstorms y de su evolución a través del tiempo y se ofrecen también algunos ejemplos de universidades que trabajan en proyectos de investigación y lo usan como recurso principal, dada su gran versatilidad. En el capítulo 2 se realiza una descripción detallada del hardware contenido en un kit de Lego Mindstorms 8527. Se mencionan lo principios físicos y eléctricos con los que funcionan los sensores incluidos en el equipo, así como los de los servomotores existentes. Una gran parte de este capítulo está destinada a la descripción física de los prototipos diseñados en todo el trabajo. En el capítulo 3 se presentan los lenguajes de programación que van a ser utilizados durante el desarrollo de este proyecto, no sin antes mencionar las diferentes opciones que existen en el mercado y de forma libre en el ciberespacio. Los programas desarrollados para los prototipos diseñados son también detallados en este capítulo. En el capítulo 4 se muestran los resultados de algunas de las pruebas realizadas sobre los prototipos armados y se mencionan adicionalmente las dificultades mostradas por los diseños propuestos en su funcionamiento y, por tanto, sus limitaciones. vii Finalmente se presentan conclusiones válidas sobre el trabajo desarrollado y algunas recomendaciones que podrían ser tomadas en cuenta por futuros usuarios del producto y de este documento. viii CONTENIDO Página CAPÍTULO 1: Estudio de sistemas y aplicaciones robóticas 1 1.1 Robótica 1 1.2 Robótica didáctica 3 1.2.1 Campo de aplicación 5 1.3 Fabricantes de kits para la educación 6 1.4 Historia de Lego 7 1.5 Lego Mindstorms en la universidad 10 1.6 Aplicaciones a desarrollar 13 1.6.1 Medidores de varias magnitudes 13 1.6.2 Escorpión 13 1.6.3 Brazo mecánico 14 1.6.4 Vehículo con control de posición PID 14 1.6.5 Seguidor de línea 14 1.6.6 Control remoto mediante bluetooth 14 CA PÍTULO 2: Diseño e implementación de los módulos 16 2.1 Características de Lego Mindstorms NXT 16 2.1.1 Hardware (CPU) 16 2.1.1.1 Estructura interna del ladrillo NXT 19 2. 1.1.2 Puertos del ladrillo NXT 20 2.1.1.3 Manejo de energía 21 2.1.1.4 Comunicaciones 22 2.1.1.4.1 Comunicación entre ladrillos mediante bluetooth 23 2.1.1.5 Sonido 24 2.1.1.6 Botones 24 2.1.2 Sensores 25 2.1.2.1 Sensor de contacto 25 2.1.2.2 Sensor de luz 26 ix Página 2.1.2.3 Sensor de ultrasonido 27 2.1.2.4 Sensor de sonido 28 2.1.3 Los motores de Lego NXT 29 2.1.4 Conjunto de piezas 31 2.2 Desarrollo de los módulos 37 2.2.1 Medidor de variables múltiples 37 2.2.1.1 Medidor de longitudes 37 2.2.1.2 Calculadora de área y volumen 41 2.2.1.3 Medidor de sonido 42 2.2.2 Escorpión 44 2.2.3 Brazo mecánico 50 2.2.4 Vehículo controlado mediante algoritmo PID 58 2.2.5 Seguidor de línea 63 2.2.6 Aplicaciones remotas 68 CAPÍTULO 3: Desarrollo de la programación 69 3.1 Lenguajes de programación 69 3.2 Lenguaje de programación NXT-G 74 3.2.1 Entorno de programación del lenguaje NXT-G 75 3.2.2 Bloques 76 3.2.3 Controles de salida 77 3.2.4 Controles de entrada 79 3.2.5 Las comunicaciones 81 3.2.6 Flujo del programa 82 3.2.7 Otros bloques 83 3.2.8 Bloques definidos por el usuario 84 3.2.9 Variables 85 3.2.10 Operaciones matemáticas 86 3.2.11 Bloques especiales 87 3.2.12 Cables de datos 89 3.3 Lenguaje de programación NXC 90 3.3.1 Entorno de programación para el lenguaje NXC 91 x Página 3.3.2 Programación en NXC 92 3.3.2.1 Programas con NXC 93 3.3.2.2 Variables 94 3.3.2.3 Conjuntos definidos por el usuario 95 3.3.2.4 Arreglos 95 3.3.2.5 Asignaciones 95 3.3.2.6 Estructuras 96 3.3.2.7 Expresiones 97 3.3.2.8 Condiciones 98 3.3.2.9 NXC API 98 3.3.2.9.1 Funciones de temporización 98 3.3.2.9.2 Funciones de control del programa 99 3.3.2.9.3 Funciones de cadenas de caracteres 100 3.3.2.9.4 Funciones numéricas 100 3.3.2.10 Módulo de entrada 100 3.3.2.11 Módulo de salida 101 3.3.2.12 Módulo de sonido 102 3.3.2.13 Módulo de pantalla LCD 102 3.3.2.14 Módulo de comunicaciones 103 3.3.2.15 Manejo de archivos 104 3.4 Programación de los módulos desarrollados 105 3.4.1 Medidor de variables múltiples 105 3.4.1.1 Medidor de longitudes 105 3.4.1.1.1 Diagrama de flujo del medidor de longitudes 107 3.4.1.1.2 Código NXT-G del medidor de longitudes 108 3.4.1.2 Calculadora de área y volumen 110 3.4.1.2.1 Diagrama de flujo de la calculadora de áreas y volúmenes 110 3.4.1.2.2 Código NXT-G de la calculadora de áreas y volúmenes 112 3.4.1.3 Medidor de sonido 115 3.4.1.3.1 Diagrama de flujo del medidor de sonido 116 3.4.1.3.2 Código NXT-G del medidor de sonido 117 3.4.2 Escorpión 118 xi Página 3.4.2.1 Diagrama de flujo del programa del “escorpión” 118 3.4.2.2 Código NXC del programa del “escorpión” 120 3.4.3 Brazo mecánico 122 3.4.3.1 Diagrama de flujo del programa del brazo mecánico 123 3.4.3.2 Código NXC del programa del brazo mecánico 125 3.4.4 Vehículo controlado mediante un algoritmo PID 129 3.4.4.1 Diagrama de flujo del programa del controlador PID 132 3.4.4.2 Código NXC del programa del controlador PID 133 3.4.5 Seguidor de línea 137 3.4.5.1 Diagrama de flujo del seguidor de línea 139 3.4.5.2 Código NXC del programa del seguidor de línea 139 3.4.6 Aplicaciones remotas 141 3.4 .6.1 Programa del controlador (mando) 141 3.4.6.1.1 Diagrama de flujo del mando a distancia 142 3.4.6.1.2 Código NXT-G del controlador (mando) 144 3.4.6.2 Programa del vehículo controlado 145 3.4.6.2.1 Diagrama de flujo del programa del vehículo controlado 145 3.4.6.2.2 Código NXT-G del vehículo controlado 147 CAPÍTULO