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