Download desarrollo de un compilador del lenguaje acl para robots con
Document related concepts
no text concepts found
Transcript
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS UNIVERSIDAD DE SEVILLA DESARROLLO DE UN COMPILADOR DEL LENGUAJE ACL PARA ROBOTS CON VISUALIZACIÓN EN 3D PROYECTO FIN DE CARRERA Octubre 2010 Autor: Miguel Ángel Trujillo Soto Tutor: Francisco Rodríguez Rubio 1 Índice 1. 2. Introducción ................................................................................................. 11 1.1. Objeto del proyecto ............................................................................... 11 1.2. Antecedentes......................................................................................... 11 1.3. Introducción al proyecto ........................................................................ 12 Descripción e instalación de las herramientas utilizadas ............................... 15 2.1. Eclipse ................................................................................................... 15 2.1.1. Características ................................................................................ 16 2.1.2. Perspectiva Java.............................................................................. 16 2.1.3. Perspectiva C++ .............................................................................. 18 2.2. ANTLR .................................................................................................... 20 2.2.1. Introducción ................................................................................... 21 2.2.2. Lexer............................................................................................... 21 2.2.3. Parser ............................................................................................. 21 2.2.4. Instalación ...................................................................................... 22 2.2.5. Configuración ................................................................................. 24 2.2.6. Introducción a la herramienta......................................................... 25 2.3. Visualización 3D ..................................................................................... 27 2.3.1. Mingw ............................................................................................ 27 2.3.2. ODE (Open Dynamics Engine) ......................................................... 27 2.4. JVM (Máquina Virtual Java).................................................................... 28 2.4.1. 3. Instalación ...................................................................................... 29 Lenguajes ...................................................................................................... 31 3.1. Gramática ANTLR ................................................................................... 31 3 3.1.1. Introducción al lenguaje ................................................................. 31 3.1.2. Código Java insertado ..................................................................... 33 3.1.3. Intérprete gramatical ...................................................................... 34 3.1.4. Llamar al código generado en Java.................................................. 35 3.2. Java........................................................................................................ 35 3.2.1. Introducción ................................................................................... 35 3.2.2. Orientación a objetos ..................................................................... 36 3.2.3. Independencia de la plataforma ..................................................... 37 3.3. ACL ........................................................................................................ 37 3.3.1. Introducción ................................................................................... 37 3.3.2. Programa ejemplo .......................................................................... 38 3.4. C++ ........................................................................................................ 39 3.4.1. 4. Desarrollo de la aplicación ............................................................................ 41 4.1. Entorno Java .......................................................................................... 41 4.1.1. Interfaz de usuario .......................................................................... 41 4.1.2. Gramática ....................................................................................... 48 4.1.3. Ejecución del código ....................................................................... 50 4.1.4. Administración de posiciones ......................................................... 52 4.2. Entorno C++ ........................................................................................... 55 4.2.1. 4.3. 5. Introducción ................................................................................... 39 Aplicación 3D .................................................................................. 55 Resultado final (ejecutable) ................................................................... 57 Conclusión .................................................................................................... 59 4 6. Anexo ........................................................................................................... 61 6.1. Entorno Java .......................................................................................... 61 6.1.1. Interfaz de usuario .......................................................................... 61 6.1.2. Gramática Principal......................................................................... 86 6.1.3. Gramática Auxiliar ........................................................................ 108 6.1.4. Ejecución del código (Clase Multitarea) ........................................ 122 6.1.5. Ejecución del código (Clase MultitareaSub)................................... 125 6.1.6. Movimiento del robot (Clase Movimiento.java) ............................ 128 6.1.7. Añadir Posición al Buffer (AddPosition.java) ................................. 129 6.1.8. Eliminar Posición del Buffer (LessPosition.java)............................. 130 6.2. Entorno C++ ......................................................................................... 131 6.2.1. 6.3. Aplicación 3D ................................................................................ 131 Comandos soportados (Revisión de Gramática) .................................. 134 6.3.1. Comandos de Control de Ejes ....................................................... 134 6.3.2. Comandos de Control de Programa y Tiempo Real ....................... 134 6.3.3. Comandos de Manipulación y Definicion de Posicion.................... 135 6.3.4. Comandos de Manipulación y Definición de Variables .................. 135 6.3.5. Funciones Lógicas y Matemáticas ................................................. 136 6.3.6. Comandos de Flujo de Programa .................................................. 136 6.3.7. Comandos de Control I/O ............................................................. 136 6.3.8. Comandos de Manipulación de Parámetros .................................. 136 6.3.9. Comandos de Configuración ......................................................... 137 6.3.10. Comandos Informativos ................................................................ 137 6.3.11. Comandos Interfase de Usuario y Pantalla .................................... 137 5 6.3.12. Comandos de Comunicación RS232 .............................................. 138 6.4. Comandos ejecutables por el programa ............................................... 138 Bibliografía ......................................................................................................... 141 6 Índice de Ilustraciones 1.1 Robot SCORBOT ___________________________________________________ 1.2 Diagrama general de uso del compilador _______________________________ 2.1 Pantalla de inicio de Eclipse __________________________________________ 2.2 Página Web de descarga de Eclipse ____________________________________ 2.3 Creación de un proyecto Java _________________________________________ 2.4 Herramienta de instalación de sofware _________________________________ 2.5 Instalación de Software _____________________________________________ 2.6 Requisitos de ANTLR ________________________________________________ 2.7 Configuración de ANTLR. Agregar archivo .jar ____________________________ 2.8 Javadude _________________________________________________________ 2.9 ODE (Open Dynamics Engine) _________________________________________ 2.10 Ejemplo de visualización con ODE ____________________________________ 2.11 Logo de Java _____________________________________________________ 3.1 Simbología de ANTLR _______________________________________________ 3.2 Esquema de ejemplo del Intérprete de Gramática _________________________ 4.1 Interfaz de Usuario del Compilador ____________________________________ 4.2 Diagrama de conexión a la ventana 3D _________________________________ 4.3 Diagrama de Control Manual del Robot _________________________________ 4.4 Diagrama del Verificador de Gramática _________________________________ 4.5 Diagrama de Control de Programa ____________________________________ 4.6 Diagrama de Control de Velocidad de Simulación _________________________ 4.7 Diagrama de Borrado de Consola ______________________________________ 4.8 Diagrama de "RUN ALL" _____________________________________________ 4.9 Diagrama de "START” ______________________________________________ 4.10 Diagrama de "CONTINUE" __________________________________________ 4.11 Diagrama de Parada de Ejecución ____________________________________ 4.12 Diagrama de Gramatica Auxiliar _____________________________________ 4.13 Diagrama de Gramática ____________________________________________ 4.14 Diagrama de Ejecución de Código (Multitarea.java) ______________________ 4.15 Diagrama de suma de posición al Buffer _______________________________ 4.16 Diagrama. Eliminar posición del Buffer ________________________________ 4.17 Diagrama del programa Movimiento.java ______________________________ 4.18 Diagrama de la aplicación en 3D _____________________________________ 4.19 Captura de pantalla de Ventana 3D en funcionamiento ___________________ 12 13 15 16 17 18 22 23 24 26 27 28 29 32 34 41 42 43 44 45 45 46 46 47 47 48 49 49 50 52 53 54 55 56 7 Agradecimientos Me gustaría aprovechar este espacio para dar las gracias a mi familia, en especial a mis padres por el apoyo y la ayuda recibida, a Miriam y a todos mis amigos. Agradezco toda la ayuda prestada tanto por mi tutor Francisco, que me sugirió el reto de este proyecto, como por José Antonio Troyano y David Pinelo, ya que sin ellos este proyecto no hubiera sido posible. 9