You are on page 1of 91

UNIVERSIDAD JUREZ AUTNOMA DE TABASCO

DIVISIN ACADMICA DE INFORMTICA Y SIS TEMAS

CONTROL DE UN ROBOT MOVIL UTILIZANDO UN PLANIFICADOR


Trabajo recepcional bajo la modalidad de tesis Que para obtener el grado de

Licenciado en Sistemas Computacionales


Presentan

Francisco Javier Esparza Orozco Santiago Ricrdez Hernndez


Asesor

Dra. Mara del Pilar Pozos Parra

Cuerpo Acadmico Sistemas Inteligentes

LGAC Agentes, Robtica y Visin Computacional

Cunduacn, Tabasco

Marzo 2010

ii

UNIVERSIDAD JUREZ AUTNOMA DE TABASCO


DIVISIN ACADMICA DE INFORMTICA Y SISTEMAS

CONTROL DE UN ROBOT MOVIL UTILIZANDO UN PLANIFICADOR


Trabajo recepcional bajo la modalidad de tesis Que para obtener el grado de

Licenciado en Sistemas Computacionales


Presentan

Francisco Javier Esparza Orozco Santiago Ricrdez Hernndez


Asesor

Dra. Mara del Pilar Pozos Parra


Revisores

M.C. Guillermo de los Santos Torres Robles M.S.C. Oscar Alberto Chvez Bosques M.C. Cristina Lpez Ramrez Lic. Ericsson Saldivar Correa M.C. Jos Luis Gmez Ramos

Cunduacn, Tabasco

Marzo 2010

Agradecimientos
A Dios Agradezco a mi Seor, mi Gua, mi Proveedor y mi Fin ltimo; sabes lo esencial que has sido en mi posicin firme de alcanzar esta meta, esta alegra, que si pudiera hacerla material, la hiciera para entregrtela, pero a travs de esta meta, podr siempre de tu mano alcanzar otras que espero sean para tu Gloria. A mis padres. Les agradezco por su cario, gua, amor, vida, y la ms grande herencia que puede drsele a un hijo: esto me permiti realizar unos de mis anhelos ms grandes de mi vida, en la cual ellos no se limitaron a su esfuerzo, sacrificio y gran parte de su vida, a quienes nunca podr pagar todos sus desvelos, sus desgastes por todo esto gracias. A mi asesora de tesis: Dra. Mara del Pilar Pozos Parra por su generosidad al brindarme la oportunidad de recurrir a su capacidad y experiencia cientfica en un marco de confianza, afecto y amistad, fundamentales para la concrecin de este trabajo. A mis amigos pasados y presentes: Pasados por ayudarme a crecer y madurar como persona y presentes por estar siempre conmigo apoyndome en toda las circunstancias posibles, tambin son parte de esta alegra, LOS RECUERDO. Por Fco. Esparza

iv

Agradecimiento
A Dios y a toda mi familia Por ser ellos la principal razn de lucha constante ante las adversidades y dificultades que se presentaron en el transcurso de mi carrera profesional. A mis amigos Y a todos mis amigos, quienes siempre estuvieron presentes para darme su apoyo, sus palabras de motivacin durante toda mi carrera para poder culminar una de mis metas anheladas. A mi asesora de tesis Agradezco infinitamente y de todo corazn el apoyo incondicional que recib por parte de mi asesora, la DRA. Mara Del Pilar Pozos Parra, quien como asesora de este proyecto mostr un gran inters para llevar a cabo la terminacin y presentacin del mismo. As como tambin agradecerle por su paciencia y su valiosa disponibilidad durante todo el desarrollo del proyecto.

Por Santiago Ricrdez

Tabla de Contenido

Tabla de Contenido .......................................................................................................................... 6 ndice de Figuras .............................................................................................................................. 8 ndice de Tablas ............................................................................................................................. 10 ndice de Grficas................................................................................................................... 11 1. Introduccin ........................................................................................................................... 13 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 2. 2.1. 2.1.1 2.1.2 2.1.3 2.2. 2.2.1 2.2.2 2.2.3 2.3. 2.3.1 2.3.2 2.4. Antecedentes .................................................................................................................. 13 Hiptesis o planteamiento del problema ........................................................................ 14 Objetivo general ............................................................................................................. 16 Objetivos especficos.............................................................................................. 16 Justificacin .................................................................................................................... 17 Delimitacin ................................................................................................................... 18 Metodologa a utilizar .................................................................................................... 19 Planificacin basada en lgica ....................................................................................... 22 Problemas en planificacin ........................................................................................ 22 Planificacin clsica ................................................................................................... 23 Planificacin lineal y no lineal ................................................................................... 23 La ontologa del clculo de situaciones.......................................................................... 24 Acciones y situaciones ............................................................................................... 24 Acciones en el clculo de situaciones ........................................................................ 25 Planificacin en el clculo de situaciones .................................................................. 26 Robtica ......................................................................................................................... 27 Definicin de robot y robtica ................................................................................... 27 Tipos de robots ........................................................................................................... 29 Conceptos del lenguaje Prolog (programacin lgica) .................................................. 30 vi

1.3.1.

Marco Terico ........................................................................................................................ 22

2.3.3 Robtica cognitiva (cognitive robotic) .......................................................................... 29

2.3.3 2.3.4 2.5. 2.6. 2.7. 3. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 4.

Caractersticas del lenguaje Prolog ............................................................................ 32 Otras caractersticas.................................................................................................... 32 Descripcin de Java ........................................................................................................ 33 Descripcin del API iCommand .................................................................................... 33 Descripcin del API leJOS NXJ .................................................................................... 34 Requerimientos de usuario ............................................................................................. 35 Requerimientos del programador ................................................................................... 36 Arquitectura de la interfaz mquina-robot. .................................................................... 36 Conectividad mquina-robot y ejecucin de cdigo Java .............................................. 37 Conexin Prolog-Java para la planificacin de la ruta ................................................... 40 Diseo............................................................................................................................. 44 Interfaz ................................................................................................................... 45

Aplicacin de la metodologa y desarrollo ............................................................................. 35

3.6.1. 4.1. 4.2. 5. 5.1. 5.2.

Pruebas y Resultados .............................................................................................................. 51 Pruebas utilizando la interfaz, Bluetooth, robot y planificador con cuatro acciones ..... 51 Pruebas utilizando la interfaz, Bluetooth, robot y planificador con dos acciones ......... 57 Conclusiones .................................................................................................................. 62 Trabajos futuros.............................................................................................................. 64

Conclusiones y trabajos futuros ............................................................................................. 62

Bibliografa..................................................................................................................................... 65 Glosario .......................................................................................................................................... 67 Anexo A: Instalacin del compilador de Java ................................................................................ 68 Anexo B: Instalcin del editor de Java: Jcreator ............................................................................ 72 Anexo C: Instalacin del Programa del Bluetooth ......................................................................... 78 Anexo D: Instalcin de swi-Prolog. ............................................................................................... 82 Anexo E: Robot Lego Mindstorms NXT ....................................................................................... 85

vii

ndice de Figuras

Figura 1. Estado S0 ......................................................................................................................... 25 Figura 2. Esquema general del escenario. ...................................................................................... 35 Figura 3. Arquitectura general de la interfaz mquina-robot. ........................................................ 36 Figura 4. Seleccin de tipo de conexin y el puerto de enlace. ..................................................... 43 Figura 5. Interfaz de conexin entre planificador y robot. ............................................................. 50 Figura 6. Escenario sin obstculos. ................................................................................................ 51 Figura 7. Escenario con un obstculo............................................................................................. 52 Figura 8. Escenario con dos obstculos. ........................................................................................ 53 Figura 9. Escenario con tres obstculos. ........................................................................................ 54 Figura 10. Escenario con cuatro acciones. ..................................................................................... 55 Figura 11. Escenario con cinco acciones. ...................................................................................... 56 Figura 12. Pantalla de inicio de instalacin del paquete de Java. .................................................. 68 Figura 13. Pantalla de licencia del programa Java. ........................................................................ 69 Figura 14. Pantalla de instalacin de Java jdk y sus componentes. ............................................... 69 Figura 15. Pantalla de proceso de instalacin del paquete Java. .................................................... 70 Figura 16. Pantalla de instalacin de la herramienta Java jre. ....................................................... 70 Figura 17. Pantalla de proceso de instalacin de Java. .............................................................. 71 Figura 18 Pantalla de finalizacin de instalacin del paquete de Java........................................... 71 Figura 19. Ventana de inicio de instalacin de Jcreator. ................................................................ 72 Figura 20. Licencia de Jcreator. ..................................................................................................... 73 Figura 21. Ubicacin de la ruta de instalacin de Jcreator............................................................. 73 Figura 22. Seleccin de carpeta de men inicio. ............................................................................ 74 Figura 23. Ventana de seleccin de acceso directo o rpido. ......................................................... 74 Figura 24. Ventana de resumen de opciones de instalacin. .......................................................... 75 Figura 25. Pantalla de finalizacin de instalacin de Jcreator. ...................................................... 75 Figura 26. Seleccionar el men Opciones de Jcreator. .................................................................. 76 viii

Figura 27. Seleccionar jdk profiles y dar clic en editar o edit. ....................................................... 76 Figura 28. Agregar o add las libreras y buscarlas en la carpetas de la API icomand y el paquete rxtx. ........................................................................................................................... 77 Figura 29. Visualizar las librerias agregadas y dar clic en aceptar u ok. ...................................... 77 Figura 30. Seleccin de idiomas para la instalacin de Bluetooth. ................................................ 78 Figura 31. Asistente del Proceso de la instalacin Bluetooth. ....................................................... 78 Figura 32. Pantalla de bienvenida a instalacin de Bluetooth........................................................ 79 Figura 33. Ventana que contiene licencia del programa. ............................................................... 79 Figura 34. Ventana de Seleccin de ruta de instalacin de Bluetooth. .......................................... 80 Figura 35. Inicio de proceso de instalacin. ................................................................................... 80 Figura 36. Finalizacin de instalacin de Bluetooth. ..................................................................... 81 Figura 37. Trminos y acuerdos del software de swi-Prolog. ........................................................ 82 Figura 38. Seleccin de componentes a instalar. ........................................................................... 82 Figura 39. Seleccin de carpeta de instalacion. ............................................................................. 83 Figura 40. Seleccin de extension de los archivos a ejecutarce con Prolog. ................................. 83 Figura 41. Proceso de instalacin de swi-Prolog. .......................................................................... 84 Figura 42. Finalizacin de instalacin de swi-Prolog. ................................................................... 84 Figura 43. Lego Mindstorms. (J. Ierache, 2004) ............................................................................ 86 Figura 44. Entorno LabView. (J. Ierache. 2004) ............................................................................ 90

ix

ndice de Tablas

Tabla 1. Clase Query. ..................................................................................................................... 41 Tabla 2. Mtodos ............................................................................................................................ 41 Tabla 3. Predicados. ....................................................................................................................... 42 Tabla 4. Prueba con ningn obstculo utilizando 4 acciones. ........................................................ 52 Tabla 5. Prueba con un obstculo utilizando 4 acciones. ............................................................... 53 Tabla 6. Prueba con dos obstculos utilizando 4 acciones. ............................................................ 53 Tabla 7. Prueba con tres obstculos utilizando 4 acciones. ........................................................... 54 Tabla 8. Prueba con cuatro obstculos utilizando 4 acciones. ....................................................... 55 Tabla 9. Prueba con cinco obstculos utilizando 4 acciones. ......................................................... 56 Tabla 10. Prueba sin obstculos utilizando 2 acciones. ................................................................. 57 Tabla 11. Prueba con dos obstculos utilizando 2 acciones. .......................................................... 57 Tabla 12. Prueba con tres obstculos utilizando 2 acciones. ......................................................... 57 Tabla 13. Prueba con cinco obstculos utilizando 2 acciones........................................................ 58

ndice de Grficas
Grficas 1. Comparacin de planificacin en escenario sin obstculos. ........................................ 58 Grficas 2. Comparacin de planificacin en escenario con dos obstculos. ................................ 59 Grficas 3. Comparacin de planificacin en escenario con tres obstculos. ................................ 60 Grficas 4. Comparacin de planificacin en escenario con cinco obstculos. ............................. 61

xi

Resumen
La aportacin de esta tesis consiste en el diseo e implementacin de un sistema que controla los movimientos de un robot mvil tipo Lego mediante un planificador basado en lgica de primer orden e implementado en Prolog. El sistema funciona de la siguiente manera: se describe un escenario inicial, se plantea una meta a ser alcanzada por el robot y como resultado el robot tipo Lego realiza movimientos con la finalidad de alcanzar la meta. Mediante una interfaz realizada en Java se reciben: la posicin inicial, las posiciones de los obstculos y la posicin meta, estos parmetros se envan por medio de una librera llamada jpl a Prolog para obtener el plan, es decir una secuencia de acciones que en teora permite alcanzar la meta. Una vez obtenido el plan, ste es interpretado por medio de un API de Java para obtener comandos de desplazamiento y rotacin, y se envan al robot tipo Lego a travs de una conexin inalmbrica, finalmente el robot realiza las acciones con las que pretende alcanzar su meta.

12

1. Introduccin

1.1. Antecedentes
Hoy en da el aporte de la robtica a la humanidad puede comprobarse en muchas instancias. No slo ha sido un importante foco de investigacin por las ventajas que trae a la industria en general, sino que tambin por ser una plataforma de apoyo a la docencia e investigacin en Inteligencia Artificial, Visin Computacional y Reconocimiento de Patrones. En esencia, los robots inteligentes autnomos son sistemas dinmicos que contienen un controlador electrnico. As, estas mquinas necesitan de adecuados sistemas sensoriales para percibir el entorno en donde se desenvuelven, de una precisa estructura mecnica adaptable a fin de disponer de una cierta destreza fsica de locomocin y manipulacin, de complejos sistemas efectores para ejecutar las tareas asignadas y de sofisticados sistemas de control para llevar a cabo acciones correctivas cuando sea necesario. La robtica se divide en los siguientes tipos: Robtica Situada, Robtica Basada en el Comportamiento la Conducta, Robtica Cognitiva, Robtica de Desarrollo o Epigentica, Robtica Evolutiva, Robtica Biomimtica, Biorrobtica o Robtica Inspirada Biolgicamente. (Gortaris, Nuez, 2005). Esta investigacin considera la Robtica Cognitiva, la cual se ocupa de implementar robots que perciben, razonan y actan en entornos dinmicos, desconocidos e imprevisibles. Tales robots deben tener funciones cognitivas de muy alto nivel que impliquen razonar. En pocas palabras, esta lnea de trabajo se ocupa de implementar caractersticas cognitivas en los robots, tales como percepcin, formacin de conceptos, atencin, aprendizaje, memoria a corto y largo plazo.

13

Si se consigue que los robots desarrollen por s mismos sus capacidades cognitivas, se evitara el programarlos a mano para cada tarea o contingencia concebible. Asimismo, si se logra que los robots utilicen representaciones y mecanismos de razonamiento similares a la de los humanos, se podra mejorar la interaccin hombre-mquina, as como las tareas de colaboracin. Actualmente se necesita un elevado poder de procesamiento, en especial si el robot cuenta con numerosos sensores y actuadores, y de gran cantidad de memoria para representar el espacio de estados. (Fernndez, 2004) Nuestro inters radica en implementar interfaces de planificacin utilizando la lgica como base para que el robot pueda tomar sus propias decisiones con respecto a las acciones necesarias para moverse en un ambiente. Cabe remarcar que este enfoque no consume demasiada memoria dado que no se tiene una representacin explcita del espacio de estados, en contraparte el tiempo de proceso es largo dado que los estados se van generando en el proceso de bsqueda.

1.2. Hiptesis o planteamiento del problema


La tecnologa en cuanto a la robtica es de gran inters. Quin no suea con tener a un robot-esclavo que realice las tareas arduas que cotidianamente son realizadas por nosotros mismos. Hasta el momento, se han desarrollado algunos robots, los cuales tienen un comportamiento muy bsico en cuanto a sus movimientos y su autonoma. El fundamento de estas investigaciones es la Ciencia Cognitiva. Su finalidad es la creacin de robots inteligentes y autnomos que razonen, se comporten, evolucionen y acten como las personas. La robtica inteligente autnoma es un enorme campo de estudio multidisciplinario, que se apoya principalmente en la ingeniera, mecnica, elctrica, electrnica e informtica, y las ciencias como: fsica, anatoma, psicologa, biologa, zoologa y etologa. En (Moriello, 2005), el autor menciona que son sistemas automticos de alta complejidad que presentan una estructura

14

mecnica articulada gobernada por un sistema de control electrnico y caractersticas de autonoma, fiabilidad, versatilidad y movilidad. Los robots inteligentes autnomos son sistemas dinmicos que consisten en un controlador electrnico acoplado a un cuerpo mecnico. As, estas mquinas necesitan de adecuados sistemas sensoriales para percibir el entorno en donde se desenvuelven, de una precisa estructura mecnica adaptable a fin de disponer de una cierta destreza fsica de locomocin y manipulacin, de complejos sistemas efectores para ejecutar las tareas asignadas, y de sofisticados sistemas de control para llevar a cabo acciones correctivas cuando sea necesario. En cuanto a hardware, se encuentran limitados por los diseadores. Respecto al control, en la mayora de los casos ste lo realiza un humano utilizando control remoto o transmitiendo un plan de acciones ya determinado. De tal forma que los robots necesitan ser dotados de una mayor autonoma. As la decisin de qu acciones realizar deber ser calculada por el sistema de control del robot y no depender de un humano. Tal problemtica tiene la siguiente pregunta: La hiptesis de esta investigacin es la siguiente: Utilizando un planificador basado en lgica es posible dotar a un robot de autonoma respecto a la toma de decisin referente a las acciones a ejecutar? Se considera la implementacin de un planificador basado en el clculo de situaciones.

15

1.3. Objetivo general


Automatizar la toma de decisiones respecto a las acciones que un robot debe realizar para poder desplazarse en su entorno o ambiente.

1.3.1. Objetivos especficos


Disear escenarios de desplazamientos, donde se incluirn obstculos transportables que debern ser removidos por el robot. Automatizar la toma de decisin respecto al plan a seguir por el robot, esto se realizar implementado un planificador basado en lgica. Disear una conectividad entre mquina- robot, ya sea serial o inalmbrica. Realizar una interfaz que permita transferir las acciones calculadas por el planificador hacia el robot.

16

1.4. Justificacin
Actualmente en la Divisin Acadmica de Informtica y Sistemas (DAIS), la mayora de los proyectos de titulacin estn orientados al desarrollo de software, dejando a un lado un aspecto importante de la computacin: la programacin de robots. En la actualidad el rea de robtica ocupa un lugar muy importante en la mayor parte de las universidades a nivel mundial, es por ello que la DAIS debe tener en cuenta esta situacin y fomentar el crecimiento del grupo de robtica, lo cual le permitir resolver problemticas actuales a nivel mundial. Este proyecto se enfocar a realizar la planificacin para un Robot Mindstorms NXT de la empresa Lego, la cual permitir controlar los movimientos del robot. Por otra parte, esta investigacin puede motivar a otros alumnos de la DAIS para que participen con mayor frecuencia en proyectos relacionados con el rea de robtica. En nuestros das, la robtica es un rea muy importante, la cual puede realizar actividades que son peligrosas para el ser humano o automatizar procesos repetitivos y tediosos. Esta puede remplazar al ser humano en casos donde las tareas son realizadas en espacios muy estrechos que no pueden ser accedidos por un humano y un robot puede hacer fcilmente dichas tareas, por ejemplo: explorar y llegar al lugar requerido.

Hay un rea de oportunidad al aplicar la ciencia cognitiva a la robtica.

17

1.5. Delimitacin
La total autonoma del robot no se realizar, pues an quedan muchos problemas tecnolgicos y tericos por resolver, y no se cuenta con el tiempo y recursos para incluir las tecnologas y tcnicas ms recientes. La interfaz a desarrollar ser para un robot de tipo Lego NXT, por lo que si se requiere utilizar otro tipo de robot se tendr que buscar la manera de adaptarla al procesador, formas de comunicacin, entradas y salidas. El tamao de rueda que use el robot para desplazarse es muy importante, ya que si se hace un cambio de ruedas, por ejemplo ms grandes de las que incluye el kit del robot, la potencia del motor sera insuficiente para hacer girar las ruedas. El robot para su funcionamiento hace uso de bateras, por lo que los movimientos y sensores del robot pueden verse afectados si las bateras tienen baja energa y esto conlleva a que el robot no realice bien sus movimientos. El robot se desplazar dentro de un entorno predefinido y llegar a su destino meta. En el entorno, el robot encontrar obstculos en diferentes puntos y deber retirar los obstculos o esquivarlos, para as llegar a donde se le pide. Cabe mencionar que se da por hecho que el robot conoce el entorno, as la creacin del plan se realiza en un ambiente cerrado. La autonoma no se considera autonoma del hardware, pues seguiremos dependiendo de la tecnologa existente dado los recursos disponibles. Los escenarios considerados por el planificador incluyen los obstculos del ambiente. Y en futuras investigaciones se incluir el sensado de obstculos. Por el momento, el planificador no considera acciones de sensado. El tiempo de respuesta no ser real ya que la interfaz toma tiempo para transferir la informacin del planificador hacia el robot. 18

1.6. Metodologa a utilizar


La metodologa que utilizaremos para el desarrollo del proyecto es Extreme Programming (XP), ya que es una herramienta que permite el desarrollo de sistemas de forma gradual y sin necesidad de generar inicialmente el diseo completo del sistema, este mtodo define los procesos necesarios para alcanzar nuestro objetivo. Extreme Programming es considerada una metodologa ligera de desarrollo, la cual est basada en: La simplicidad. La comunicacin. La retroalimentacin o reutilizacin del cdigo desarrollado. Esta metodologa permitir llevar a cabo un buen desarrollo e implementacin del proyecto, ya que cuenta con cuatros fases que son fundamentales para alcanzar el objetivo, y no se tenga demora de tiempos. A continuacin se describen las 4 fases a realizar: (Fernndez, 2003) Planificacin: La fase est conformada por 3 pasos que se deben realizar en forma consecutiva para poder planificar la aplicacin, los cuales son las siguientes: Creacin de historias de usuario: se realiza un historial en un leguaje no tcnico bien definido. Creacin de plan de entregas (Release planning): es una planificacin* donde los desarrolladores y usuarios establecen los tiempos de implementacin ideales de las historias de usuario, la prioridad con la que sern implementadas y las historias que sern implementadas en cada versin del programa.
*no confundir el trmino de planificacin utilizada en esta seccin con la planificacin realizada que ser hecha por el robot.

19

Creacin de versiones: cada nueva versin se liberar aproximadamente cada 3 semanas. Al comienzo de cada semana los usuarios deben seleccionar las historias de usuario definidas en el "Release planning" que sern implementadas.

Diseo: Esta fase se conforma por los siguientes pasos: Metfora del sistema: permitir mantener la coherencia de nombres de todo aquello que se va a implementar. Refactorizar: mejorar y modificar la estructura y reescritura de cdigos ya creados sin alterar su funcionalidad. Desarrollo: La fase est conformada por los siguientes pasos: Unidad de pruebas: Uno de los pilares de la metodologa XP es el uso de test para comprobar el funcionamiento de las versiones que se van implementando. Programacin por parejas: El trabajo en pareja involucra a dos programadores trabajando en la misma versin; mientras uno codifica haciendo hincapi en la calidad de la funcin o mtodo que est implementando, el otro analiza si ese mtodo o funcin es adecuado y est bien diseado. De esta forma se consigue un cdigo y diseo con gran calidad. Pruebas: Esta fase conforma los siguientes pasos: Implantacin: el cdigo ser implantado cuando supere sus correspondientes unidades de test Pruebas de aceptacin: evaluacin del usuario. 20

XP es una de las metodologas de desarrollo de software ms exitosas en la actualidad utilizada para proyectos a corto plazo. La metodologa consiste en una programacin rpida o extrema, cuya particularidad es tener como parte del equipo, al usuario final, pues es uno de los requisitos para llegar al xito del proyecto. (Fernndez, 2002).

21

2. Marco Terico

2.1. Planificacin basada en lgica


La tarea de un planificador es encontrar una secuencia de acciones que permita llegar a una meta especfica a partir de un estado inicial. El planificador permite tener un alto grado de flexibilidad porque conoce las condiciones necesarias para que una accin pueda ser ejecutada, y sabe qu acciones realizar. Los planificadores tienen una amplia gama de aplicaciones, incluyendo navegacin de robots, control de vehculos autnomos y mucho ms. La planificacin es una de las formas en las que un agente puede tomar ventaja del conocimiento que posee, y la habilidad de razonar acerca de las acciones y sus efectos en el ambiente. (Reiter, 2001)

2.1.1 Problemas en planificacin


Algunos de los problemas para realizar la planificacin son los siguientes: La primera dificultad y ms obvia es la posibilidad de que el agente pueda ser desbordado por acciones irrelevantes al problema. Consideremos la tarea de comprar un ejemplar del libro Inteligencia Artificial: un enfoque moderno en una librera online. Supongamos que tenemos una accin de compra para cada nmero ISBN de 10 dgitos y para un total de 10 billones de acciones. El algoritmo de bsqueda tendra que examinar los resultados de los 10 billones de acciones para encontrar una que satisfaga el objetivo de adquirir la copia de un libro con ISBN 0137903952. En contraposicin, un agente de planificacin razonable debera ser capaz de trabajar con expresiones de objetivos explcitas tales como Tener(1SBN 0137903952) y generar la accin Comprar(1SBN 0137903952) directamente. Para hacer esto, el agente simplemente necesita un conocimiento general del tipo Comprar(x). (Russell y Norvig, 2004)

22

La siguiente dificultad es encontrar una funcin heurstica adecuada. Supongamos que el objetivo del agente es comprar cuatro libros diferentes en una librera online. Tendremos 1040 planes formados por cuatro etapas, por lo que una bsqueda sin recurrir a la ayuda de una heurstica no puede ser ni cuestionada. Es obvio que para un humano sera una buena estimacin heurstica que el costo de un estado fuese el nmero de libros que permanecen sin ser comprados; desafortunadamente, esta visin perspicaz no es obvia para un agente que evala su objetivo como una caja negra que devuelve un valor Verdadero o Falso para cada estado. Por tanto, al agente solucionador de problemas le falta autonoma; requiere de un humano que le suministre una funcin heurstica para cada nuevo problema. Sin embargo, si un agente planificador tiene acceso a una representacin explcita del objetivo como una secuencia de sub-objetivos, puede utilizar una simple heurstica independiente de dominio: el nmero de conjunciones insatisfechas. Para el problema anterior de la compra del libro, el objetivo podra ser Tener(A) ^ Tener(B) ^ Tener(C) ^ Tener(D), y un estado conteniendo Tener(A) ^ Tener(C) podra presentar costo dos. De este modo, el agente automticamente adquiere la heurstica correcta para este problema y para otros. (Russell y Norvig, 2004)

2.1.2 Planificacin clsica


Se entiende por planificacin clsica la generacin de planes para alcanzar unas especificaciones objetivo a partir de unas especificaciones inciales, definidas ambas completamente, en situaciones en las que las particularidades ms relevantes del mundo son conocidas y en las que el xito del plan no depende de cambios en el entorno (no existen, por tanto, eventos exgenos). (Segundo, 2002)

2.1.3 Planificacin lineal y no lineal


En la planificacin lineal existe una relacin de linealidad entre la forma de ir resolviendo los subobjetivos y su posterior ejecucin. El conformado del plan se realiza en el mismo orden de su ejecucin, alcanzndose objetivos parciales para, a partir de este punto, abordar nuevos subobjetivos. 23

El resultado de la planificacin lineal es una secuencia totalmente ordenada de pasos, ejecutable por un nico agente. La bsqueda se desarrolla en un espacio de estados y conceptualmente puede ser progresiva (hacia adelante desde el estado inicial) o regresiva (hacia atrs, desde las especificaciones finales). (Segundo, 2002) En la planificacin no lineal, no existe linealidad en el orden de resolucin de subobjetivos y su orden de ejecucin. En donde la bsqueda se desarrolla en un espacio de planes, a diferencia del espacio de estado en los planificadores lineales. Cada nodo generado, posible plan solucin, se somete a crticas, generalizable a toda rutina precompilada capaz de modificar un plan y corregir defectos, y cada nuevo nodo sucesor es un plan cada vez ms refinado que finalmente converge a un plan solucin. Para su ejecucin posterior, se elige una ordenacin total de dicho plan en dominios de un solo agente, o bien se ejecutan en paralelo. (Segundo, 2002)

2.2. La ontologa del clculo de situaciones


2.2.1 Acciones y situaciones
El clculo de situaciones es una formalizacin de los conceptos de estados, acciones y efectos de las acciones sobre los estados, que est basada en el clculo de predicados. En este formalismo, nuestro conocimiento acerca de los estados y las acciones se representa mediante frmulas del clculo de predicados de primer orden, y nos permite realizar preguntas del tipo: Existe algn estado que satisfaga ciertas propiedades (meta), y, si es as, cmo se puede transformar, mediante acciones, el estado actual en ese estado? La respuesta a este tipo de preguntas nos proporciona un plan para alcanzar el estado deseado. (Nilsson, 2001) El clculo de situacin es un lenguaje de segundo orden que est diseado para representar cambios en mundos dinmicos. Todos los cambios en el mundo se producen gracias a acciones. Una historia en el mundo, es una simple secuencia de acciones, representada en

24

trminos de primer orden que son llamados situaciones. La constante S0 indica la situacin inicial, es decir la secuencia de acciones vaca. (Reiter, 2001) Las situaciones denotan posibles historias del escenario modelado. La constante S0 y el smbolo de funcin do son usados para denotar situaciones. S0 denota la situacin inicial antes de que se realice alguna accin; do(a,s) denota la situacin que resulta de realizar la accin a en la situacin s. Por ejemplo do(avanzar,S0) denota la situacin que resulta de haber ejecutado la accin avanzar estando en situacin inicial S0.

2.2.2 Acciones en el clculo de situaciones


En el clculo de situaciones, las acciones se describen por dos axiomas: un axioma de posibilidad que especifica las condiciones necesarias para que un accin pueda ser ejecutada, y un axioma de efecto que determina qu sucede cuando se ejecuta una accin posible. Este segundo axioma calcula los efectos que resultan de ejecutar una accin. Se utilizara Posible(a, s) para expresar que es posible la ejecucin de la accin a en la situacin s. los axiomas tienen la siguiente forma: AXIOMA DE POSIBILIDAD: Precondiciones Posible(a, s). AXIOMA DE EFECTO: cambios que son el resultado de ejecutar una accin. (Russell y Norvig, 2004) Un ejemplo para el clculo de situaciones es en el mundo de bloques. Supongamos que identificamos el estado que se muestra de la figura 1 como S0. Si utilizamos el clculo de predicados, podramos describir S0 mediante la siguiente frmula:
B A C Sobre (B, A) Sobre (A, C) Sobre (C, Suelo) Libre (B)

Figura 1. Estado S0 25

Sobre (B,A) ^Sobre (A,C) ^ Sobre (C,Suelo) ^Libre (B) Para poder describir este estado, y otros estados, en el clculo de situaciones, codificamos los estados; es decir, los incluimos en nuestra conceptualizacin del mundo como entidades con existencia propia. Podemos tener cualquier nmero de estados, esto se suele denotar mediante smbolos de constantes (tales como S0, S1, S2,), mediante variables o mediante expresiones funcionales. Cambiaremos nuestras frmulas atmicas de forma que incluyan un trmino que denote el estado en el que se verifica una relacin. Un cambio similar se debe realizar en nuestra interpretacin de estas frmulas atmicas ahora, estas frmulas denotan relaciones sobre estados y son denominadas fluentes. Expresamos un enunciado acerca de lo que es cierto en el estado S0 mediante la frmula: Sobre (B,A,S0) ^Sobre (B,C,S0) ^ Sobre (c,Suelo, S0) ^Libre (B,S0). (Nilsson, 2001)

El lenguaje considera dos tipos de trminos de primer orden: acciones y situaciones. Las acciones tienen la forma jump, kick(x), y put(r,x,y). Las constantes y smbolos de funcin para acciones son completamente dependientes de la aplicacin en el caso del robot tenemos las acciones: avanzar, retroceder, eliminar_obstaculo(x) y agregar_obstaculo(x).

2.2.3 Planificacin en el clculo de situaciones


El planificador utilizado en este trabajo est basado al clculo de situaciones, en este formalismo, los cambios de estado son calculados despus haber sido efectuada una accin. La planificacin genera un comportamiento inteligente usando lo que sabe el agente para encontrar una secuencia de accin que satisfaga alguna meta planteada. Puesto que se usa para representar cambios en escenarios, el clculo de situaciones es un candidato potencial para soportar la planificacin.

26

La tarea de planificar puede ser formulada en el lenguaje del clculo de situaciones como sigue: dada una frmula meta(s) del clculo de situaciones con una variable libre s, encontrar una secuencia de acciones, a =(a1 ,..., an ), tal que Teora meta (do(a,s0)) ^Legal(do(a,S0 ))

donde do(a,s0) significa do(an ,do(an-1 ,..., do(a1, S0 )...)) y Legal(do(a,S0 )) significa =1n Poss (ai, do((a1,...,ai-1 ), S0 )) En otras palabras, dada una frmula meta, se desea encontrar una secuencia de acciones a =(a1 ,..., an) tales que stas se deriven del conocimiento previo que se posee, es decir la Teora. Esta teora est constituida por los axiomas de efecto o de estado sucesor, de precondiciones de acciones y de estado inicial. la accin es satisfecha). cabe remarcar que el fluente Legal define la propiedad de posibilidad de ejecucin de cada accin en la situacin apropiada (esto es, cada precondicin de

2.3. Robtica
2.3.1 Definicin de robot y robtica
Robot: El trmino robot tiene diversas definiciones, aqu se citan algunas: Un robot es un manipulador multifuncional y reprogramable, diseado para mover materiales, piezas, herramientas o dispositivos especiales, mediante movimientos programados y variables que permiten llevar a cabo diversas tareas. La palabra robot viene de 'robotnik' o 'robota', que se podra traducir como 'trabajo tedioso' en checo. Lo emple por vez primera, en 1917, el dramaturgo checoslovaco Karel Capek en su obra Opilek. Pero fue el escritor Isaac Asimov quien populariz el concepto con sus muchos relatos de ciencia ficcin, dotndolo de un componente romntico del que en realidad carecen estos artefactos. (Moriello, 2004) 27

En conclusin, un robot es una mquina que hace algo automticamente en repuesta a su entorno, por medio de motores, sensores, sonidos y sus partes mviles que estn controladas por un programa realizado en un lenguaje de programacin. (Bergren, 2003)

Robtica: El trmino "Robtica" fue acuado por Isaac Asimov para describir la tecnologa de los robots. El trmino robtica puede ser definido desde diversos puntos de vista:

La Robtica es la conexin inteligente de la percepcin a la accin. La Robtica consiste en el diseo de sistemas, actuadores de locomocin, manipuladores, sistemas de control, sensores, fuentes de energa y software de calidad--todos estos subsistemas tienen que ser diseados para trabajar conjuntamente en la consecucin de la tarea del robot. (Jones, 2002)

La Robtica describe todas las tecnologas asociadas con los robots. La robtica es la ciencia encaminada a disear y construir aparatos y sistemas capaces de

realizar tareas propias de un ser humano. Un robot autnomo es un dispositivo capaz de operar por s mismo, en la robtica de servicio es donde ms se estn necesitando los robots autnomos. En qu tipo de situaciones puede ser interesante que un robot que sea completamente autnomo? Por ejemplo en entornos hostiles: Conflictos blicos Exploracin espacial Exploracin submarina Rescate en catstrofes. (J. Ierache, 2004) 28

2.3.2 Tipos de robots


Hay dos grades familias de los robots, las cuales se describen a continuacin:

Robots industriales. Los hay de varios tipos segn su utilidad:

Manipuladores. Aquellos que sueldan, pintan, taladran, trabajan con productos peligrosos. El 54% de los robots espaoles se dedican a la soldadura.

De control remoto. Se utilizan para localizar gente sepultada, desactivar explosivos o minas, tender cables en el fondo del mar, tomar muestras de minerales en la luna. Los hay terrestres, submarinos, areos y espaciales.

Prtesis y asistentes. Aquellos que sustituyen miembros humanos (manos, piernas, brazos) y los que prestan asistencia a personas minusvlidas.

De uso domstico. En constante aumento. Son los que ayudan en tareas domsticas como aspirando el polvo o cortando el csped.

Robots experimentales. Desarrollados normalmente por universidades, empresas e instituciones con el propsito de investigar campos concretos de la robtica. Estas dos ltimas divisiones tienden a solaparse en ocasiones. Algunos han llegado a popularizarse como Asimo de Honda, e incluso se vendan al pblico como los perritos Aibo de Sony. (J. Ierache, 2004)

2.3.3 Robtica cognitiva (cognitive robotic)


Este enfoque utiliza tcnicas provenientes del campo de las Ciencias Cognitivas. Se ocupa de implementar robots que perciben, razonan y actan en entornos dinmicos, desconocidos e imprevisibles. Tales robots deben tener funciones cognitivas de muy alto nivel que impliquen

29

razonar, por ejemplo, acerca de las metas, las acciones, el tiempo, los estados cognitivos de otros robots, cundo y qu percibir, aprender de la experiencia, etc. Para eso, deben poseer un modelo simblico e interno de su entorno local, y la suficiente capacidad de razonamiento lgico para tomar decisiones y para ejecutar las tareas necesarias a fin de alcanzar sus objetivos. En pocas palabras, esta lnea de trabajo se ocupa de implementar caractersticas cognitivas en los robots, tales como percepcin, formacin de conceptos, atencin, aprendizaje, memoria a corto y largo plazo, etc. (Bogner, 2004) Si se consigue que los robots desarrollen por s mismos sus capacidades cognitivas, se evitara el programarlos a mano para cada tarea o contingencia concebible. Asimismo, si se logra que los robots utilicen representaciones y mecanismos de razonamiento similares a la de los humanos, se podra mejorar la interaccin hombre-mquina, as como las tareas de colaboracin. Sin embargo, se necesita un elevado poder de procesamiento en especial si el robot cuenta con numerosos sensores y actuadotes, y de gran cantidad memoria para representar el espacio de estados. (Kovcs, 2004).

2.4. Conceptos del lenguaje Prolog (programacin lgica)


La historia de Prolog inicia as con sus creadores que fueron Robert Kowalski (1970 en la parte terica), Maarten van Emden (en la demostracin experimental) de Edimburgo y Alain Colmerauer de Marsella (en la implementacin). Japn lo incluye en sus proyectos de ordenadores de 5a generacin. Y Estados Unidos lo incorpora en sus proyectos. Hoy en da es aceptado como uno de los mejores lenguajes de la inteligencia artificial. Prolog est basado en la lgica de primer orden, es aquella que resuelve problemas formulados con una serie de objetos y relaciones entre ellos en base de un conocimiento del problema.

30

Es un lenguaje de programacin semi-interpretado. Su funcionamiento es muy similar a Java. El cdigo fuente se compila a un cdigo de byte. Un entorno de desarrollo Prolog se compone de:

Un compilador. Transforma el cdigo fuente en cdigo de byte. A diferencia de Java, no existe un estndar al respecto. Por eso, el cdigo de byte generado por un entorno de desarrollo no tiene que funcionar en el intrprete de otro entorno.

Un intrprete. Ejecuta el cdigo de byte. Un shell o top-level. Se trata de una utilidad que permite probar los programas, depurarlos, etc. Su funcionamiento es similar a los interfaces de lnea de comando de los sistemas operativos.

Una biblioteca de utilidades. Estas bibliotecas son, en general, muy amplias. Muchos entornos incluyen (afortunadamente) unas bibliotecas standard-ISO que permiten funcionalidades bsicas como manipular cadenas, entrada/salida. (Fernndez. 2001)

Es un lenguaje de programacin que se utiliza para resolver problemas en los que existen objetos y relaciones entre objetos. La programacin en Prolog consiste simplemente en: Declarar hechos sobre los objetos y sus relaciones, Definir reglas sobre dichos objetos y relaciones, y Hacer preguntas. Es un lenguaje de programacin declarativa, lo cual quiere decir que el ordenador y el programador sostienen una especie de conversacin. Prolog esperara a que se introduzcan los hechos y las reglas que definen el problema a resolver. Posteriormente, si se hacen las preguntas adecuadas, Prolog buscar las respuestas y las presentar en la pantalla.

31

Prolog est orientado a la resolucin de problemas mediante el clculo de predicados, basado en: Preguntas a la base de datos. Pruebas matemticas. El programa Prolog especfica cmo debe ser la solucin, en vez de dar el algoritmo para su resolucin. La solucin se obtiene mediante bsqueda aplicando la lgica de predicados. (Jimnez, 2002)

2.3.3 Caractersticas del lenguaje Prolog

El programa Prolog se compone de hechos (datos) y un conjunto de reglas, es decir, relaciones entre objetos de la base de datos.

La ejecucin del programa cargado en memoria consiste en realizar preguntas de forma interactiva: el intrprete generar por inferencia los resultados que se deducen a partir del contenido de la base de datos.

Prolog tiene una sintaxis y semntica simples. Slo busca relaciones entre los objetos creados, las variables y las listas, que son sus estructuras bsicas.

Los comentarios se definen entre /* y */. (Aedo. 2003)

2.3.4 Otras caractersticas


Basado en la lgica y programacin declarativa. Produce estilo de programacin orientado a metas. No se especifica cmo debe hacerse sino qu debe lograrse (alto nivel). El programador se concentra ms en el conocimiento que en lo algoritmos, o Qu es conocido? (hechos y relaciones) o Qu preguntar? (cmo resolverlo). 32

Unas de las ventajas de la programacin en Prolog es que los programas son generales, ligeros y cortos en cdigo. En dicho programa se pueden realizar las siguientes aplicaciones: pruebas matemticas demostracin de teoremas, inteligencia artificial sistema expertos y consultas a bases de datos permitir inferir relaciones no especificadas.

2.5. Descripcin de Java


Java es un lenguaje de programacin de alto nivel, orientado a objetos, ste fue desarrollado por Sun Microsystems a principios de los aos 90. Este lenguaje tiene diversos APIs (Application Program Interface). En este proyecto nos enfocaremos a dos APIs, los que son utilizados para realizar programas para controlar robots tipo Lego. Una interfaz de programacin de aplicaciones (Application Programming Interface) un grupo de rutinas que conforman una interfaz y que son provedas por un sistema operativo, una aplicacin o una biblioteca, stas definen cmo invocar desde un programa un servicio disponible. En pocas palabras, una API representa un interfaz de comunicacin entre componentes y software. A continuacin se describen conceptos importantes de las APIs utilizadas:

2.6. Descripcin del API iCommand


Este es un API de Java libre y completo, aunque la conectividad y las herramientas que se utilizan todava no estn bien desarrolladas o no son tan exactas como el lenguaje del kit del Lego que se programa por medio de bloques. iCommand es un paquete de Java para controlar el ladrillo NXT sobre ms de una conexin Bluetooth. Utiliza el estndar Lego NXT firmware para recibir comandos de cdigo Java en su ordenador (Windows, Linux, el Macintosh o Windows mobile). iCommand fue liberado en 2006 con la finalidad de permitir a la gente programar el NXT en Java, en tanto leJOS

33

NXJ estaba en desarrollo. Incluso aunque leJOS NXJ est ahora disponible, hay motivos todava vlidos para usar iCommand.

2.7. Descripcin del API leJOS NXJ


Es un nuevo firmware para NXT y para RCX, ste sustituye el firmware oficial del Lego, LeJOS NXJ funciona tanto para Windows como para Linux. Poco a poco se va completando e incorporando nuevos servicios. Algunas caractersticas Es un nuevo firmware alternativo para el NXT. Permite realizar programas en Java para controlar robots. Funciona en entorno Windows y Linux y permite comunicarse con el NXT va USB. La versin Alpha 0.2 contiene soporte preliminar para Bluetooth, soporte para sensor de ultrasonido (I2C) y soporte para el sonido.

34

3. Aplicacin de la metodologa y desarrollo

En este captulo se describe el diseo y el anlisis de acuerdo al mtodo Extreme Programming (XP), como se menciona en el Captulo 1. A continuacin se muestra el desarrollo del proyecto que lleva implcito el plan de entrega y creacin de historias de usuario.

3.1. Requerimientos de usuario


El escenario que se utiliz est constituido por un camino lineal que tendr de 0 a 5 obstculos, un robot colocado en una posicin inicial, y se especifica una posicin final (meta) del robot.

Inicio

10

Meta

Figura 2. Esquema general del escenario. El sistema tiene que planificar la ruta que el robot tendr que seguir para ir de la posicin inicial a la meta, y as tener una autonoma de decisin y accin, es decir no ser una inteligencia humana la que decidir la ruta a seguir. La planificacin se realiz con la conjuncin Java-Prolog. La planificacin la realiza Prolog, ya que este lenguaje est basado en lgica se facilita esta tarea.

35

3.2. Requerimientos del programador


Para describir cules son los requerimientos se tiene que conocer las problemticas a solucionar antes de realizar el diseo. Se necesita saber qu tipos de lenguajes de programacin existen para la conexin inalmbrica y hacer un anlisis para seleccionar el que mejor se adapte al kit del Lego. Es necesario conocer los elementos requeridos para hacer la conexin de la mquina y el robot. Una vez seleccionado el lenguaje de programacin, es necesario estudiar el uso del lenguaje y el uso de un API que se utiliza para la conexin con el robot.

3.3. Arquitectura de la interfaz mquina-robot.


Java API ICommand
Conexin inalmbrica

Librera JPL Brick del robot Interprete Swi-Prolog Motores Algoritmo de planificacin

Figura 3. Arquitectura general de la interfaz mquina-robot.

36

En este apartado se explica de manera general cmo funcionan los componentes de la arquitectura y las partes que se utilizaran para realizar la planeacin de la trayectoria que debe realizar el robot Lego. A continuacin se describen los flujos de comandos etiquetados con sus respectivos nmeros: 1. Java: es la plataforma donde se realiza la interfaz y desde all se mandan las preguntas necesarias para que Prolog realice la planificacin, la informacin que se recibe del usuario son las posiciones de los obstculos, la posicin inicial del robot y la posicin meta a donde tiene que llegar el robot, todo estos parmetros se trasfieren por medio de la librera JPL. 2. Swi-Prolog: una vez que recibe los parmetros provenientes de Java, busca la mejor trayectoria utilizando el algoritmo de planificacin, las secuencias de acciones obtenidas se envan a Java para que el API iCommand convierta las acciones en comandos o funciones que se utilizan para mover el robot. 3. Conexin inalmbrica: se utiliza la tecnologa Bluetooth. 4. Brick del robot: recibe los comandos y los procesa para realizar las acciones especificadas en la trayectoria planeada, es decir pretende alcanzar la meta. Cabe mencionar que la meta no siempre es alcanzada debido a la imprecisin del robot.

3.4. Conectividad mquina-robot y ejecucin de cdigo Java


Para realizar el sistema se utiliz Java, ste tiene la ventaja de ser un software de plataforma libre y fcil de instalar en mquinas con diferentes sistemas operativos como Windows y Linux, entre otros. Para satisfacer parte de los objetivos, en particular los relativos a la conectividad y ejecucin de comandos por el robot se realizaron los siguientes pasos: 37

Paso 1. Instalacin de Java en la mquina


Una vez revisada la bibliografa referente a Java y localizados los requerimientos para conectividad, se necesita instalar y copiar el siguiente software y paquetes: Java jdk Java(TM) SE (incluido en el Java jdk) API iCommand. Paquete rxtx. Editor Jcreator. El Java jdk, el Java(MT) SE y editor Jcreator se tienen que instalar en la computadora, refirase al anexo A para conocer los detalles de instalacin. La API iCommand fue descargado de la pgina http://lejos.sourceforge.net/iCommanddownloads.php. En dicha pgina tambin se encuentran tutoriales, y la API Lejos, los que tambin son software libre. La API iCommand necesita un paquete llamado rxtx que se utiliza para la conexin y que tambin es software libre, el cual se descargo de la siguiente pgina http://users.frii.com/jarvi/rxtx/download.html, en la pgina tambin se encuentran otros paquetes, as como una descripcin de ellos (consultar la pgina antes mencionada para conocer el uso de los otros paquetes). Despus de instalar Java y sus herramientas, se tienen que descomprimir el API iCommand y el paquete rxtx, al descomprimir el API iCommand, se genera la carpeta API iCommand, la cual contiene las siguientes carpetas y archivos: La carpeta dist, en ella se encuentran las libreras del API, el archivo iCommand.properties y otros archivos.

38

La caparpeta docs, en sta se encuentra toda la informacin referente al API, es de gran ayuda para la utilizacin de los comandos. La carpeta samples, aqu estn algunos ejemplos de cdigos Java, mostrando el uso de los diferentes dispositivos del robot. Otros archivos: los requeridos por el sistema. Al momento de descomprimir el paquete rxtx se genera la carpeta rxtx, la cual contiene las siguientes carpetas y archivos: El archivo de la librera de dicho paquete para la conexin del API iCommand. Las carpetas que indican cmo utilizar el paquete en los sistemas operativos que lo soportan, los cuales son Windows, Linux, Mac OS X y Solaris. Los archivos que indican cmo realizar la instalacin y utilizacin.

Paso 2. Copiar archivos requeridos para la conexin


Una vez instalado el software y descomprimido los archivos, se necesita copiar los siguientes archivos de la carpeta del paquete rxtx en la subcarpeta llamada Windows. Hay otra subcarpeta llamada i368-mingw32, en sta se encuentran dos archivos que se tienen que copiar en la carpeta bin de Java, los cuales son: rxtx parallel.dll y rxtx serial.dll. Esto se realiza para llevar a cabo la conexin. Para poder realizar y utilizar los componentes o herramientas para el cdigo del Lego, se copian las libreras del API y del paquete rxtx en la carpeta jdk profiles del editor de Java, en este caso es Jcreator. A continuacin se explica cmo agregar las libreras: abrir el editor Jcreator, ir a men configuracin o configure y seleccionar opciones o options, despus seleccione la opcin jdk 39

profiles, seleccione la opcin jdk versin 1.6.0, de clic en el botn editar o edit, despus en la pestaa clases o class, de clic en el botn agregar o add y posteriormente buscar el archivo llamado iCommand.jar que se encuentra en la carpeta de API iCommand ubicada en la subcarpeta dist y seleccionar el archivo llamado iCommand.jar. La librera del paquete rxtx se encuentra en la carpeta rxtx-2.1-7-bins-r2 y el archivo se llama RXTX comm.jar, por ltimo de clic en el botn aceptar u ok para realizar la configuracin del jdk de Java.

Paso 3. Instalacin del software de Bluetooth


Esta parte es muy sencilla de instalar, el Bluetooth trae un software llamado bluesoleil que es soportado en el sistema operativo Windows 98/98SE/ME/2000/XP, en el apartado de anexo C se describe en forma ms detallada la instalacin, la cual no necesita de configuracin para la conexin.

3.5. Conexin Prolog-Java para la planificacin de la ruta


Despus de instalar Java, se procede a instalar Prolog utilizando el instalador llamado swi-Prolog.exe, el cual es un software libre. Para ms informacin y detalles de instalacin ver el anexo D. Una vez instalado Prolog se deben realizar las siguientes configuraciones: El archivo jpl.jar que se encuentra en la siguiente ruta: C:\Archivos de programa\pl\lib, se debe copiar en la ruta: C:\Archivos de programa\Java\jdk1.5.0_09\jre\lib\ext. Se abre la ventana de propiedades del sistema, y se da clic en la pestaa de opciones avanzadas, se elige el botn de variables de entorno, y posteriormente se modifica la variable del sistema llamada path, agregando la siguiente ruta: C:\Archivos de programa\pl\lib. Finalmente se aceptan las modificaciones dando clic en los botones de aceptar correspondientes. Despus de realizar las acciones descritas anteriormente, se tiene configurada la conexin Prolog-Java, esto con la finalidad de mandar desde Java a Prolog las posiciones en donde se encuentran los obstculos, la posicin inicial del robot y la pregunta especificando la meta, para que Prolog planifique la ruta que realizar el robot Lego. 40

A continuacin se describe la manera en que se conectan el intrprete Prolog y Java: Java utiliza una clase llamada Query con algunos de sus mtodos para poder enviar a Prolog la posicin inicial del robot, las posiciones de los obstculos y la posicin a la que deber llegar, a continuacin se describe la clase y sus mtodos:

CLASE Query Prolog.

DESCRIPCION Esta clase se utiliza para hacer una consulta al archivo de

Tabla 1. Clase Query.

MTODO HasSolution()

DESCRIPCIN El mtodo sirve para preguntar a Prolog si tiene soluciones el Query enviado por Java.

OneSolution() AllSolutions() NextSolution() HasMoreSolutions()

Este mtodo se utiliza para encontrar una solucin al Query enviado. Este mtodo sirve para obtener todas las posibles soluciones al Query enviado. Muestra la siguiente solucin si existe. Este mtodo pregunta si hay ms soluciones al Query enviado.

Tabla 2. Mtodos Para construir los Querys se requieren predicados predefinidos en Prolog, a continuacin se muestran los predicados empleados en la conexin y la descripcin de stos. 41

PRECICADO consult('robot2.pl')

DESCRIPCIN Abre el archivo especificado como parmetro, en este ejemplo se abre el archivo robot2.pl. Este predicado inserta una clausula al archivo abierto. En este ejemplo se inserta la posicin inicial del robot cuyo valor es 5 y s0 indica el instante inicial. Este predicado inserta una clausula al archivo abierto. En este ejemplo se inserta la posicin del obstculo cuyo valor es 7 y s0 indica el instante inicial. Despus de insertar las clusulas de posicin inicial y de la posicin del obstculo, se enva esta pregunta constituida por tres predicados, donde se requiere obtener una solucin legal que deber ser almacenada en la variable S y que adems deber contener la ruta a seguir para que el robot se encuentre en la posicin final, en este ejemplo en la posicin 8. Dado que el formato de S no es conveniente para enviar las ordenes al robot se requieren de la conversin de S a formato de lista, la solucin con este nuevo formato ser almacenado en la variable L y para ello se utiliza el predicado conviertealista.

assert(position(5,s0))

assert(obstacle(7,s0))

legal(S),position(8,S),conviertealista(S,L)

Tabla 3. Predicados. 42

Paso 4. Robot Lego


El robot no se configura y tampoco se instala ningn firmware distinto al que trae de fbrica, lo nico que se hace es aceptar una contrasea. Cuando el software del Bluetooth encuentra al robot Lego, ste solicita una contrasea, la cual es proporcionada por el usuario y posteriormente el robot Lego muestra la contrasea que debe de ser aceptada para poder realizar el vinculo. La contrasea es requerida solo la primera vez que se conecta el robot con la mquina y despus se pueden realizar varias consultas bajo esta conexin sin necesidad de dar una nueva contrasea. Una vez que se tiene instalado y configurado el software requerido, se procede a disear o a crear el cdigo Java e implementar el planificador de trayectoria, pero antes, en la carpeta donde se van a guardar las clases y los cdigos Java se debe guardar un archivo llamado iCommand.properties, el cual se encuentra en la carpeta de iCommand que est en la subcarpeta dist, ste servir para seleccionar el tipo de comunicacin, y en el archivo se elimina el smbolo de comentario # en la lnea nxtcomm.type=rxtx, pues esta lnea es requerida para la conexin, y tambin este procedimiento se realiza en la lnea nxtcomm=COM4, dependiendo del puerto a utilizar se coloca el COM correspondiente a la conexin. A continuacin se muestra parte del archivo iCommand.properties.

Figura 4. Seleccin de tipo de conexin y el puerto de enlace. 43

3.6. Diseo
Antes de realizar la creacin de la interfaz se codifica el algoritmo de la planeacin que se implementa en Prolog, se muestra a continuacin el cdigo del algoritmo:
:-dynamic obstacle/2. :-dynamic position/2.

/*___________Preconditions for Primitive Actions ______________*/ poss(advance,S):- position(X,S), Y is X +1, \+obstacle(Y,S). poss(remove_obs(X),S):- position(Y,S), (X is Y-1; X is Y+1), obstacle(X,S). /*eliminar este comentario cuando se requiera utilizar las cuatro acciones poss(reverse,S):- position(X,S), Y is X -1, \+obstacle(Y,S). poss(add_obs(X),S):- position(Y,S), (X is Y-1; X is Y+1), \+obstacle(X,S). */ legal(s0). legal(do(A,S)):-legal(S),poss(A,S). conviertealista(s0, []). conviertealista(do(A, S), L):-conviertealista(S, L1), append(L1, [A], L).

/* _________________Primitive Control Actions__________________________ */ primitive_action(advance). /* eliminar este comentario cuando se requiera utilizar las cuatro acciones primitive_action(reverse). primitive_action(add_obs(X)). */ primitive_action(remove_obs(X)).

/* __________________Successor State Axioms for Primitive Fluents_________ */ position(X,do(A,S)):- position(Y,S), (

44

(A=advance,X is Y + 1) ; (A=reverse,X is Y - 1) ); ( position(X,S), \+A=advance, \+A=reverse ) . obstacle(X,do(A,S)):- A=add_obs(X); obstacle(X,S),\+A=remove_obs(X).

El hecho de no incluir las cuatro acciones, ver lneas entre los smbolos de comentarios /*
y */

en el cdigo del planificador, permiti optimizar el tiempo de respuesta del planificador,

ver seccin de pruebas y resultados.

3.6.1. Interfaz
Para poder realizar la interfaz lo que se realiz antes fueron unas pruebas de las funciones del robot con algunos mtodos que se utilizan para hacer las rotaciones de los motores que el robot Lego tiene, son 3 motores que trae el kit, stos tienen como nombre: motor A, motor B y motor C, para mover el robot ya sea para atrs o para adelante en nuestro caso se utilizan los motores B y C, pero en general se pueden utilizar cualquiera de dos de estos motores. Para mover un objeto en nuestro caso se utiliza el motor A. Para avanzar a una posicin deseada se utiliz el siguiente cdigo en Java:
private void Avanza(){ if (contador== 1) { Motor.B.forward(); Motor.C.forward(); try { Thread.sleep(tiempoAvanza); }catch (Exception ex) {} Motor.B.stop(); contador +=1; Motor.C.stop(); } else { Motor.C.forward();

45

Motor.B.forward(); try { Thread.sleep(tiempoAvanza); }catch (Exception ex) {} Motor.C.stop(); Motor.B.stop(); contador=1; } }

Para remover un obstculo se utiliz el siguiente cdigo en Java:


private void Remueve(){ //1. Inicio de sujetar obstaculo Motor.A.backward(); try { Thread.sleep(300); //Ojo aqui. obstculo. }catch (Exception ex) {} Motor.A.stop(); //1. Fin de sujetar obstaculo.

Calcular

cuando

ya

tenga

sujeto

el

//2. Inicio de girar robot. Motor.B.backward(); try { Thread.sleep(1150); //Ojo aqui. Calcular el tiempo de giro para quedar en aprox. 90 grados. }catch (Exception ex) {} Motor.B.stop(); //2. Fin de girar robot. //3. Inicio de avanzar el robot para no tropezar despus remover el obstaculo. Avanza(); //3. Fin de avanzar el robot. //4. Inicio de liberar obstaculo. Motor.A.forward(); try { Thread.sleep(300); //Ojo. Puede ser el mismo nmero de sujetar. }catch (Exception ex){} Motor.A.stop(); //4. Fin de liberar obstaculo. //5. Inicio de retroceder robot. Motor.C.backward(); Motor.B.backward(); try { Thread.sleep(tiempoAvanza);

46

}catch (Exception ex) {} Motor.C.stop(); Motor.B.stop(); //5. Fin de retroceder robot. //6. Inicio de girar el robot. Posicion original. Motor.B.forward(); try { Thread.sleep(1150); //Ojo. Igual que el primer giro. }catch (Exception ex) {} Motor.B.stop(); //6. Fin de girar el robot. Posicion original. } }

Despus de observar el comportamiento del robot con sus respectivos motores y acciones, se prosigui a realizar una interfaz en la cual se utiliz el mismo cdigo para las acciones de avanzar y remover obstculos y se agreg el modulo para obtener la planificacin de trayectoria. A continuacin se describen los cdigos que envan y reciben la informacin de Prolog. Para enviarle al planificador la posicin inicial, la posicin de los obstculos, la meta y abrir el archivo de Prolog, se utilizaron los siguientes cdigos: Para abrir el archivo del planificador desde Java se utiliza el siguiente cdigo.
String t1 = "consult('" + file + "')"; Query q1 = new Query(t1); try { q1.hasSolution(); } catch (Exception e) { System.out.println("No se abri archivo " + file + "\nCausa:"); e.printStackTrace(); } finally {

Ya abierto el archivo del planificador se le enva la posicin inicial donde se encuentra el robot, esto se realiz con el siguiente cdigo: 47

q1.close(); String t2 = "assert(position(" + pos_inicial + ",s0))"; Query q2 = new Query(t2); try { q2.hasSolution(); } catch (Exception e) { System.out.println("Ocurri un error ejecutando: " + t2 + "\nCausa:"); e.printStackTrace(); return false; } finally { System.out.println(t2); q2.close(); }

Posteriormente se le enva al planificador la posicin del obstculo lo cual se realiza por medio del siguiente cdigo.
for (Integer posObstaculo: obstaculos) { String t3 = "assert(obstacle(" + posObstaculo + ",s0))"; Query q3 = new Query(t3); try { q3.hasSolution(); } catch (Exception e) { System.out.println("Ocurri un error ejecutando: " + t3 + "\nCausa:"); e.printStackTrace(); return false; } finally { System.out.println( t3 + " is " +(q3.hasSolution() ? "provable" : "not provable") ); q3.close(); } }

Finalmente para enviarle la posicin meta y al mismo tiempo solicitar un plan que permita llegar a dicha posicin meta, se utiliza el siguiente cdigo.
String t4 = "legal(S),position(" + pos_final + ",S),conviertealista(S,L)"; Query q4 = new Query(t4);

48

try { q4.hasSolution(); } catch (Exception e) { System.out.println("Ocurri un error ejecutando: " + t4 + "\nCausa:"); e.printStackTrace(); return false; } finally { System.out.println( "first solution of "+t4+":X =" +q4.oneSolution().get("L")); Compound c = (Compound) q4.oneSolution().get("L"); pasos = c.toString(); q4.close(); }

Para enviar estos datos al planificador se realiz la siguiente interfaz en la se solicitan los siguientes datos, los cuales son enviados al cdigo Java para que enve los datos al planificador y que ste realice la planeacin, una vez realizada la planeacin Java la recibe y enva las instrucciones al robot, el cual las interpreta y a su vez las ejecuta. Para proporcionar los datos requeridos por Java, es decir: la posicin inicial del robot, las posiciones de los obstculos y la posicin meta, se utiliza una pequea ventana en la que se escriben palabras clave de la siguiente manera. -inicia: sta sirve para indicar la posicin inicial de robot en la trayectoria. Ejemplo: -inicia 1 Debe haber un espacio despus de inicia y despus del nmero que indica la posicin. -obstculos: sta se utiliza para indicar las posiciones de los obstculos que se desean tener. Ejemplo: -obstculos 3 4 Tambin debe haber un espacio despus de obstculos y despus de cada nmero que indica la posicin del obstculo. -meta: sta se usa para identificar la posicin meta, es decir la posicin a la que llegar el robot. Ejemplo meta 6 De la misma manera, se debe dar un espacio despus de meta.

49

En la ventana se deben introducir los datos en la misma lnea de comando, siguiendo el ejemplo, la lnea queda de la siguiente manera: -inicia 1 obstculos 3 4 meta 6

Figura 5. Interfaz de conexin entre planificador y robot.

50

4. Pruebas y Resultados
A continuacin se describen diversos escenarios, cada escenario incrementa la dificultad de clculo del plan, adems cada vez se va haciendo ms compleja la trayectoria del robot, debido a que en cada escenario va aumentando la cantidad de obstculos en el camino. Aunque en cada escenario la solucin se torna ms compleja, cabe mencionar que el cdigo que se ejecuta para la planificacin siempre es el mismo. Se describen las pruebas realizadas con un planificador, ver seccin 3.6.1, que incluye cuatro acciones: avanzar, retroceder, eliminar obstculo y agregar obstculo, stas se utilizan en la planificacin de la trayectoria. En estas pruebas se utilizo una computadora marca Gateway con un procesador intel centrino duo, sistema operativo Windows xp y memoria ram de 1G. Una de las cosas que hemos analizado es que para Windows Vista an no puede ejecutarse el API, debido al driver y programa del Bluetooth, el que se encuentra disponible es compatible con XP y el utilizado por Windows Vista no es un software libre.

4.1. Pruebas utilizando la interfaz, Bluetooth, robot y planificador con cuatro acciones
En esta primera prueba se emplea un escenario que tiene un inicio en donde est posicionado el robot y se desea que el robot llegue a una posicin final (meta) sin ningn obstculo intermediario.

Inicio

Meta

10

Figura 6. Escenario sin obstculos. 51

Se calcular el tiempo de realizar la planeacin y la transmisin de actividades a realizar por robot utilizando Bluetooth, se muestran los resultados en la siguiente tabla.

Inicial Obstculo Meta Tiempo

1 2

1 3

1 4

1 5

1 6

1 7

1 8

1 9

1 10

18.73 18.55 18.71 19.77 19.77 19.77 19.80 26.80 78.50 Seg. Seg. Seg. Seg. Seg. Seg. Seg. Seg. Seg. Tabla 4. Prueba con ningn obstculo utilizando 4 acciones.

Como se puede observar el tiempo de transmisin de las actividades que realiza el robot tiene tiempos entre 18.00 seg. y 79.00 seg. Con la posicin meta del robot de 2 a 8 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posicin meta del 9 en adelante incrementa considerablemente el tiempo de respuesta. Una vez que se realizaron las pruebas sin ningn obstculo, se procede a efectuar otro conjunto de pruebas, en la que se tiene en la trayectoria del robot un obstculo, con la finalidad de que el robot lo esquive y llegue a la meta.

Inicio

Meta

10

Figura 7. Escenario con un obstculo.

52

Inicial Obstculo Meta Tiempo

1 6 2

1 6 3

1 6 4

1 6 5

1 6 6

1 6 7

1 6 8

1 6 9

1 6 10 428.55 Seg.

18.20 18.22 18.37 18.34 18.70 19.20 27.15 80.70 Seg. Seg. Seg. Seg. Seg. Seg. Seg. Seg. Tabla 5. Prueba con un obstculo utilizando 4 acciones.

Como se puede observar el tiempo de transmisin de las actividades que realiza el robot tiene tiempos entre 18.00 seg. y 429 seg. Con la posicin meta del robot de 2 a 7 la diferencia de tiempo de respuesta es, al igual que en el caso anterior, de 1seg, mientras que si se tiene la posicin meta del 8 en adelante incrementa considerablemente el tiempo de respuesta. En este tercer escenario se cuenta con un inicio, dos obstculos y una meta, tambin se tiene que planificar para esquivar los dos obstculos y que el robot llegue a su meta.

Inicio

Meta

10

Figura 8. Escenario con dos obstculos.

Inicial Obstculos Meta Tiempo

1 3, 7 2

1 3, 7 3

1 3, 7 4

1 3, 7 5

1 3, 7 6

1 3, 7 7

1 3, 7 8

1 3, 7 9

1 3, 7 10

18.64 18.68 18.35 19.10 19.36 36.55 139.67 Seg. Seg. Seg. Seg. Seg. Seg. Seg Tabla 6. Prueba con dos obstculos utilizando 4 acciones.

53

Como se puede observar el tiempo de transmisin de las actividades que realiza el robot tiene tiempos de 18.00 seg. a 140 seg, se omiten los resultados cuando el tiempo es mayor pues no es conveniente dado que la demora de la respuesta no satisface las expectativas del diseador. Con la posicin meta del robot de 2 a 6 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posicin meta del 7 en adelante incrementa considerablemente el tiempo de respuesta, como se puede ver no se colocaron los tiempos de la posicin meta de 9 y 10 pues el tiempo de respuesta es muy largo y se necesita una respuesta rpida. Como se puede observar en este cuarto escenario, el robot se encuentra en la posicin de inicio, y para llegar al final (meta), necesita esquivar tres obstculos en su recorrido, las acciones se planificaran para esquivarlos y lograr el objetivo.

Inicio

Meta

10

Figura 9. Escenario con tres obstculos.

Inicial Obstculos Meta Tiempo

1 3,6,9 2

1 3,6,9 3

1 3,6,9 4

1 3,6,9 5

1 3,6,9 6

1 3,6,9 7

1 3,6,9 8

1 3,6,9 9

1 3,6,9 10 412.00 Seg.

18.70 18.02 19.13 19.17 21.70 36.78 139.71 200.10 Seg. Seg. Seg. Seg. Seg. Seg. Seg. Seg. Tabla 7. Prueba con tres obstculos utilizando 4 acciones.

Como se puede observar el tiempo de transmisin de las actividades que realiza el robot tiene tiempos de 18.00 seg. a 140 seg, se omiten los resultados cuando el tiempo es mayor pues no es 54

conveniente dado que la demora de la respuesta no satisface las expectativas del diseador. Con la posicin meta del robot de 2 a 5 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posicin meta del 6 en adelante incrementa considerablemente el tiempo de respuesta, como se puede ver no se colocaron los tiempos de la posicin meta de 9 y 10 pues el tiempo de respuesta es muy largo y se necesita una respuesta rpida. En este quinto escenario, se planifica para que el robot esquive cuatro obstculos y contine con su trayectoria y as poder llegar a la meta.

Inicio

Meta

10

Figura 10. Escenario con cuatro acciones.

Inicial Obstculos Meta Tiempo

1 2,4,6, 9 2 18.19 Seg.

1 2,4,6, 9 3 18.21 Seg.

1 2,4,6, 9 4 19.74 Seg.

1 2,4,6, 9 5 20.00 Seg.

1 2,4,6, 9 6 57.42 Seg.

1 2,4,6,9 7 278.71 Seg

1 2,4,6,9 8 370.01 Seg.

1 2,4,6,9 9

1 2,4,6,9 10

430.11 550.23 Seg. Seg.

Tabla 8. Prueba con cuatro obstculos utilizando 4 acciones.

Como se puede observar el tiempo de transmisin de las actividades que realiza el robot tiene tiempos de 18.00 seg. a 279 seg, se omiten los resultados cuando el tiempo es mayor pues no es conveniente dado que la demora de la respuesta no satisface las expectativas del diseador. Con la posicin meta del robot de 2 a 4 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posicin meta del 5 en adelante incrementa considerablemente el tiempo de 55

respuesta, como se puede ver no se colocaron los tiempos de la posicin meta de 8, 9 y 10 pues el tiempo de respuesta es muy largo y se necesita una respuesta rpida. Se realiza la planificacin en un ltimo escenario, en el cual el robot logra esquivar 5 obstculos que se encuentran consecutivamente, y poder continuar con su trayectoria para llegar a la posicin meta.

Inicio

10

Meta

Figura 11. Escenario con cinco acciones.

Inicial Obstculos Meta Tiempo

1 2,3,5,6 ,9 2 18.00 Seg.

1 2,3,5,6 ,9 3 18.09 Seg.

1 2,3,5,6 ,9 4 18.16 Seg.

1 2,3,5, 6,9 5 23.04 Seg.

1 2,3,5,6 ,9 6 321.83 Seg

1 2,3,5,6 ,9 7 415.20 Seg.

1 2,3,5,6, 9 8 655.00 Seg.

1 2,3,5,6 ,9 9 735.05 Seg.

1 2,3,5,6 ,9 10 838.03 Seg.

Tabla 9. Prueba con cinco obstculos utilizando 4 acciones.

Como se puede observar el tiempo de transmisin de las actividades que realiza el robot tiene tiempos de 18.00 seg. a 322 seg, se omiten los resultados cuando el tiempo es mayor pues no es conveniente dado que la demora de la respuesta no satisface las expectativas del diseador. Con la posicin meta del robot de 2 a 4 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posicin meta del 5 en adelante incrementa considerablemente el tiempo de respuesta, como se puede ver no se colocaron los tiempos de la posicin meta de 7, 8, 9 y 10 pues el tiempo de respuesta es muy largo y se necesita una respuesta rpida.

56

4.2. Pruebas utilizando la interfaz, Bluetooth, robot y planificador con dos acciones
Se realizaron otras pruebas eliminando las acciones no requeridas del planificador: retroceder y agregar obstculo. Lo cual mejor considerablemente el tiempo de respuesta del planificador como se muestra a continuacin:
Inicial Obstculos Meta Tiempo 2 19.07 Seg. 3 18.00 Seg. 4 18.20 Seg. 5 18.71 Seg. 6 18.75 Seg 7 18.33 Seg. 8 18.30 Seg. 9 18.80 Seg. 10 18.08 Seg. 1 1 1 1 1 1 1 1 1

Tabla 10. Prueba sin obstculos utilizando 2 acciones. Como se puede observar el tiempo de transmisin de las actividades que realiza el robot est entre 18.00 seg. y 19.00 seg. Con la posicin meta del robot de 2 a 10 la diferencia de tiempo de respuesta es de 1seg, como se puede observar mejor la respuesta con respecto al tiempo.
Inicial Obstculos Meta Tiempo 1 2,4 2 18.21 Seg. 1 2,4 3 19.09 Seg. 1 2,4 4 18.77 Seg. 1 2,4 5 19.22 Seg. 1 2,4 6 18.75 Seg. 1 2,4 7 18.08 Seg. 1 2,4 8 18.06 Seg. 1 2,4 9 19.30 Seg. 1 2,4 10 18.06 Seg.

Tabla 11. Prueba con dos obstculos utilizando 2 acciones.

Inicial Obstculo Meta Tiempo

1 2,4,6 2 18.67 Seg.

1 2,4,6 3 18.58 Seg.

1 2,4,6 4 18.00 Seg.

1 2,4,6 5 19.18 Seg.

1 2,4,6 6 18.70 Seg.

1 2,4,6 7 17.07 Seg.

1 2,4,6 8 18.79 Seg.

1 2,4,6 9 19.32 Seg.

1 2,4,6 10 19.00 Seg.

Tabla 12. Prueba con tres obstculos utilizando 2 acciones. 57

Inicial Obstculo s Meta Tiempo

1 2,3,5,6, 9 2 17.93 Seg.

1 2,3,5,6, 9 3 18.75 Seg.

1 2,3,5,6, 9 4 17.33 Seg.

1 2,3,5,6, 9 5 18.66 Seg.

1 2,3,5,6, 9 6 17.95 Seg

1 2,3,5,6 ,9 7 19.07 Seg.

1 2,3,5,6, 9 8 19.54 Seg.

1 2,3,5,6, 9 9 20.44 Seg.

1 2,3,5,7, 8 10 25.06 Seg.

Tabla 13. Prueba con cinco obstculos utilizando 2 acciones.

Como se observa en las grficas siguientes, el tiempo de respuesta con cuatro acciones se dispara hacia rangos no satisfactorios, en cambio el tiempo de respuesta con dos acciones tiene rangos en la mayora de las pruebas que varan de 1seg a 8seg.

Tiempo (seg.)

4 acciones 2 acciones

10

Grficas 1. Comparacin de planificacin en escenario sin obstculos. 58

Tiempo (seg.)

4 acciones 2 acciones

10

Grficas 2. Comparacin de planificacin en escenario con dos obstculos.

59

Tiempo (seg.)

4 acciones 2 acciones

10

Grficas 3. Comparacin de planificacin en escenario con tres obstculos.

60

Tiempo (seg.)

4 acciones 2 acciones

10

Grficas 4. Comparacin de planificacin en escenario con cinco obstculos.

61

5. Conclusiones y trabajos futuros

5.1. Conclusiones

A partir de las pruebas realizadas con el robot y los programas utilizados, se logran obtener una planificacin adecuada respecto a la meta especificada y una buena transmisin de datos al robot con respecto a su entorno, cuyo resultado final fue que el robot alcanzara siempre su meta salvo que hay pequeas desviaciones debido a imperfecciones en el hardware del robot. Dado que el tpico es nuevo en la DAIS se abre una nueva lnea de investigacin a seguir por estudiantes y profesores que estn interesados en las investigaciones relacionadas a planificacin basada en lgica y ejecucin de acciones por un robot mvil. En este documento se describen temas de robtica con la finalidad de facilitar la introduccin del tpico. As una de las aportaciones que se realizan es la descripcin detallada de los procedimientos a seguir para poner a funcionar un robot tipo Lego. Se describen las herramientas, los lenguajes de programacin, cmo se realiza la planificacin, cmo y qu se utiliza para la conexin. Cabe mencionar que la mayora de lo que se utiliza son software libres. Al concluir esta tesis se da como resultado un prembulo en la realizacin de investigacin de tpicos relacionados con la inteligencia artificial dentro de la Divisin Acadmica de Informtica y Sistemas. Despus de haber obtenido la informacin necesaria para la conexin y transmisin de datos para la planificacin de la trayectoria del robot con el lenguaje de programacin Java y Prolog, haciendo uso de un transmisor, en este caso Bluetooth, se pueden hacer las siguientes observaciones: 62

Se necesit conocer los fundamentos bsicos del lenguaje de programacin Prolog, para realizar la planificacin de la trayectoria del robot y enlazar ste con Java, en base a esto se lograron correctamente la configuracin para la transmisin de datos de Java a Prolog y viceversa, con esto se obtuvo la autonoma del robot pues no se requiere a un ser humano para especificar lo que el robot debe hacer.

La conexin de Java con el robot se realiz por medio inalmbrico, esto se logr con un API de Java llamado iCommand para lo cual se necesit conocer el funcionamiento del robot y qu mtodos se utilizaban para su movimiento, con esto se logra conectar por Bluetooth la mquina con el robot.

Se realizaron pruebas en las cuales se observ que entre ms obstculos tenga el robot en su trayectoria se llevara ms tiempo la planificacin de su ruta.

Se observ que cuando el planificador considera cuatro acciones el tiempo de respuesta no es satisfactorio para escenarios que consideran ms de dos obstculos, en cambio cuando el planificador tiene dos acciones se mejora el tiempo de respuesta.

Se observ que el movimiento y las acciones del robot son un poco imprecisas ya sea en el avanzar o remover el obstculo.

63

5.2. Trabajos futuros


Se espera que la realizacin de esta tesis motive el inters para realizar otros proyectos o tesis relacionados con el tema de robtica y automatizacin. Se debe analizar el planificador para implementar uno que mejore los tiempos de respuesta y as obtener tiempos satisfactorios sobre todo cuando se trata de resolver problemas en tiempo real. Mejorar la conectividad y la transmisin de datos de mquina a robot. Implementar ya sea con una palm o una PDA colocada directamente al robot para as no estar limitados a la distancia mxima de transmisin de datos del Bluetooth. Desarrollar estas pruebas con otro robot ms sofisticado y preciso, pues durante las pruebas se pudo observar que el comportamiento del robot Lego no es determinstico. Desarrollar alcances hacia ambientes distintos y dinmicos. En este proyecto se trato con un solo ambiente que era una lnea recta, se requiere lograr que el robot interactu con todo lo que tiene a su alrededor.

64

Bibliografa

Aedo Contreras, Guillermo. Que es Prolog. 2003. URL: http://www.desarrolloweb.com/manuales, Fecha de ltimo acceso: 10/Noviembre/2007. Alonso Jimnez. Jos, A. Gutierres, N. Miguel, A. Introduccin a Prolog. Universidad de Sevilla. 2002. Arntegui, Javier. y Javier y LEGO MINDSTORMS. 2001. URL: http://members.es.tripod.de/Legomindstomrs/inicio.html Fecha de ultimo acceso: 9 / Nov/2007. Barandiaran, Fernandez, Xabier. autonoma e informacin en sistemas cognitivos naturales y artificiales. 2003. Bogner, M.; Maletic, J. y Franklin, S. ConAg: A Reusable Framework for Developing Conscious Software Agents. 2000 Brachman, R. Levesque, H. Knowledge Representation And Reasoning, Morgan Faufmann (2004) 285297. Correa, F. Jess. Programacin lgica Prolog. Universidad politcnica de Madrid. 2002. 17/julio/2002. Demolombe R. Pozos P. Theories Of Intentions In The Framework Of Situation Calculus, SpringerVerlag Berlin Heidelberg 2005. Fernndez, Escribano Gerardo. Introduccin a Extreme Programming. 2002. 9 / Dic/2003. Fernndez, Len J. Robtica Evolutiva y la prxima generacin de robots autnomos. WCAFR 2004. (Workshop del II Campeonato Argentino de Ftbol de Robots). 9-11 de junio. Fernndez, P. ngel. Tutorial bsico de programacin en Prolog. 2001. URL: www.programacioencastellano/tutorialbasicodeprogramacionenProlog.com Fecha de acceso: 6 Noviembre 2007.

65

Gortaris, Nez Carlos. A. Mtodos y Software Open Source en Robtica. 2005. Computer Workshop. 16 /Nov / 2005. Hernndez. Teodoro. Lenguajes de programacin Introduccin a Prolog. Universidad de Valladolid. 2003. 12-Noviembre-2003. J. Ierache. M, Bruno. N, Mazza. Experiencia de laboratorio en Robtica: De las Tortugas Simuladas a los Robots y Juguetes Autnomos una Oportunidad Para la Enseanza de Programacin. 2004. J. Ierache. M, Bruno. Mazza. Interaccin de Agentes Robots Autnomos en Ambientes Dinmicos Distribuidos. 2004. Kovcs, A. y Ueno, H. (2005): Cognitive Substrates: What They Are and What They Learn. Pgina personal del autor. 4 de marzo. L. Jones. Joseph. M. Flynn, Anita. Mobile robots: Inspirations to implementation. 2002. A K Peters Ltd. Lego Corporation. 2005. URL: http://Mindstorms.Lego.com/MeetMDP/SteveH.aspx M. Bergren. Charles, Anatomy of a robot. 2003. mcgraw-hill. Moriello, S. Inteligencia Natural y Sinttica. Buenos Aires. 2005 Editorial Nueva Librera. Moriello, S. Nuevos enfoques en el estudio de la mente. 2005. Revista Tendencias Cientficas. 19 de junio de 2005. Nilsson, Nils J. Inteligencia Artificial: una nueva sntesis. 2001. McGraw-Hill. Reiter R. Knowledge in Action, Logical Foundations for Describing and Implementing Dynamical System, Technical Report University of Toronto, 2001. Russell S, Norvig P. Inteligencia Artificial: Un Enfoque Moderno, Pearson (2004). Segundo C. Pablo san. Ontologa para planificacin lineal, universidad politcnica de Madrid, 2002. The LEGO Group. Lego Mindstorms. 2007. URL: http://Mindstorms.Lego.com/ Fecha de ultimo acceso: 4 / Nov/ 07 URL:www.engadget.com/2006/01/05/Lego-mindstorm-nxt-robots-are-smarter-andstronger-than-ever/ 66

Glosario

Prolog : Lenguaje de programacin de tipo lgico e interpretado. Utilizado especialmente en investigaciones sobre Inteligencia Artificial. El lenguaje de programacin Prolog pertenece al paradigma lgico. API: (Application Programming Interface - Interfaz de Programacin de Aplicaciones). Grupo de rutinas conformando una interfaz que provee un sistema operativo, una aplicacin o una biblioteca, que definen cmo invocar desde un programa un servicio que stos prestan. En otras palabras, una API representa un interfaz de comunicacin entre componentes software. Robtica: Ciencia que se ocupa bsicamente de todo lo concerniente a los robots, lo cual incluye el control de motores, mecanismos automticos, neumticos, sensores, sistemas de cmputos, etc. De esta definicin podemos concluir que en la robtica se anan para un fin varias disciplinas concluyentes, pero diferentes, como son: la mecnica, la electrnica, la automtica y la informtica.

67

Anexo A: Instalacin del compilador de Java

Este apartado mostrar cmo se realiza la instalacin de Java con sus herramientas. Al momento de ejecutar el instalador Java(TM) SE se visualiza la pantalla de inicio de instalacin, entonces se debe dar clic en el botn siguiente o next.

Figura 12. Pantalla de inicio de instalacin del paquete de Java.

Posteriormente se muestra la pantalla donde se especifica los trminos y condiciones del uso de Java, as como informacin del fabricante, en este caso SUN. Se debe aceptar estas condiciones dando clic en el botn aceptar o accept.

68

Figura 13. Pantalla de licencia del programa Java.

Despus de dar clic en aceptar, se muestra la pantalla con los componentes a instalar, as como la ruta donde se va almacenar los componentes de Java.

Figura 14. Pantalla de instalacin de Java jdk y sus componentes.

El usuario puede desactivar los elementos que no se requieran de Java, y tambin se puede cambiar la ruta de instalacin, pero es recomendable que se deje la que trae por defecto. Una vez realizado los cambios dar clic en el botn siguiente o next. 69

Posteriormente aparece la pantalla que muestra el proceso de instalacin, y se debe esperar que el proceso termine para personalizar la instalacin.

Figura 15. Pantalla de proceso de instalacin del paquete Java.

Despus se prosigue a instalar la herramienta del ambiente de ejecucin jre, al igual en el caso precedente, el usuario tiene la opcin de desactivar algunos elementos y la ruta de instalacin. Se recomienda que se deje la ruta que trae por defecto. Una vez hechos los cambios, el usuario debe dar clic en el botn siguiente o next.

Figura 16. Pantalla de instalacin de la herramienta Java jre.

70

Nuevamente aparecer una pantalla que muestra el avance del proceso de instalacin. El usuario debe esperar que el proceso termine.

Figura 17. Pantalla de proceso de instalacin de Java.

Una vez que el proceso a concluido satisfactoriamente, se muestra la pantalla que indica este hecho, y el usuario debe dar clic en el botn finalizar o finish. Si el usuario desea leer informacin general, antes de finalizar debe seleccionar la casilla referente al archivo readme.

Figura 18 Pantalla de finalizacin de instalacin del paquete de Java. 71

Anexo B: Instalcin del editor de Java: Jcreator

Este apartado describe los pasos para la instalacion del editor de Java Jcreator. Ejecutar el archivo Jcreator.exe, el cual mostrar la siguiente pantalla de inicio de instalacion, el usuario debe dar clic en el boton siguiente o next.

Figura 19. Ventana de inicio de instalacin de Jcreator.

Despus mostrar la siguiente pantalla donde muestra los trminos y condiciones del uso del editor. El usuario debe seleccionar la opcin acepto los trminos y condiciones o I accept the agreement, y posteriormente dar clic en el botn siguiente o next.

72

Figura 20. Licencia de Jcreator.

A continuacin mostrar otra pantalla que visualiza la ruta en donde se guardar el Jcreator, en esta pantalla aparece una ruta por defecto, pero el usuario puede introducir o seleccionar otra ruta auxilindose del botn buscar o browser, una vez definida la ruta, se debe dar clic en el botn siguiente o next.

Figura 21. Ubicacin de la ruta de instalacin de Jcreator.

73

Una vez seleccionada la ruta, el usuario debe colocar el nombre de la carpeta que se va a mostrar en el men inicio del sistema Windows. Se puede cambiar el nombre de la carpeta, pero se recomienda mantener el nombre por defecto. Posteriormente se debe dar clic en el botn siguiente o next.

Figura 22. Seleccin de carpeta de men inicio.

La ventana siguiente muestra las opciones de creacin de acceso directo, en la que se puede seleccionar una o las dos, una es para un acceso directo en el escritorio y la otra de inicio rpido en la barra de herramientas. Una vez seleccionadas, se debe dar clic en el botn siguiente o next.

Figura 23. Ventana de seleccin de acceso directo o rpido. 74

Despus se muestra un informe de las opciones elegidas previamente y se solicita el permiso para iniciar la instalacin. Si se da clic en el botn instalar o install, la instalacin iniciar.

Figura 24. Ventana de resumen de opciones de instalacin.

Se muestra la siguiente ventana que indica que la instalacin finaliz y pregunta si desea ejecutar el editor, para finalizar se debe dar clic en el botn finalizar o finish.

Figura 25. Pantalla de finalizacin de instalacin de Jcreator. 75

En las siguientes imgenes se muestra cmo agregar las libreras del API iCommand y del paquete rxtx en el editor de Java Jcreator.

Figura 26. Seleccionar el men Opciones de Jcreator.

Figura 27. Seleccionar jdk profiles y dar clic en editar o edit.

76

Figura 28. Agregar o add las libreras y buscarlas en la carpetas de la API icomand y el paquete rxtx.

Figura 29. Visualizar las librerias agregadas y dar clic en aceptar u ok.

77

Anexo C: Instalacin del Programa del Bluetooth

Se ejecuta el instalador de Bluetooth que muestra la siguiente ventana, en ella se debe seleccionar el idioma que desea utilizar para la instalacin.

Figura 30. Seleccin de idiomas para la instalacin de Bluetooth.

Una vez seleccionado el idioma, se muestra la siguiente ventana que indica la preparacin del asistente del proceso de instalacin.

Figura 31. Asistente del Proceso de la instalacin Bluetooth.

Una vez finalizada la preparacin del asistente, se muestra la pantalla de bienvenida a la instalacin, en donde se debe dar un clic en el botn siguiente. 78

Figura 32. Pantalla de bienvenida a instalacin de Bluetooth.

Despus se muestra la ventana que contiene la licencia del programa que incluye algunas reglas de uso y descripcin del fabricante.

Figura 33. Ventana que contiene licencia del programa.

79

Posteriormente se visualiza una ventana que contiene la ruta donde se instalara el programa del Bluetooth llamado bluesoleil, se recomienda dejar la ruta que trae por defecto, despus se debe dar clic en el botn siguiente.

Figura 34. Ventana de Seleccin de ruta de instalacin de Bluetooth.

Una vez seleccionada la ruta de instalacin, se muestra la siguiente ventana que indica el porcentaje de instalacin, se debe esperar que termine el proceso.

Figura 35. Inicio de proceso de instalacin. 80

Una vez concluida la instalacin se muestra una ltima ventana donde se solicita la confirmacin para reiniciar la pc, es recomendable reiniciarla para as tener un buen funcionamiento del programa bluesoleil, se debe dar clic en el botn finalizar.

Figura 36. Finalizacin de instalacin de Bluetooth.

81

Anexo D: Instalcin de swi-Prolog.

Se ejecuta el software llamado swi-Prolog.exe, ste visuliza la siguiente pantalla.

Figura 37. Trminos y acuerdos del software de swi-Prolog.

La pantalla muestra la licencia, la versin del software, posteriormente se debe dar un clic en el boton I Agree. Despus que se le haya dado clic, se visualizar la siguiente pantalla.

Figura 38. Seleccin de componentes a instalar. 82

La pantalla muestra los componentes que se pueden seleccionar para la instalacin junto con el swi-Prolog, una vez seleccionados los componentes a utilizar se debe dar un clic en el botn next, lo que permite visualizar la pantalla de seleccin de la carpeta donde se instalar swi-Prolog, se muestra tambin el espacio requerido y el espacio que hay disponible en disco.

Figura 39. Seleccin de carpeta de instalacion.

Se recomienda que se deje el directorio que se muestra por default, despus se debe dar un clic en next. Ya seleccionada la carpeta de instalacin, se visualiza la siguiente pantalla.

Figura 40. Seleccin de extension de los archivos a ejecutarce con Prolog. 83

Donde se debe seleccionar la extensin default de los archivos utilizados por swi-Prolog, posteriormente se debe dar clic en el botn install. A continuacin se muestra el proceso de instalacin, se debe esperar unos minutos para que se instale por completo swi-Prolog.

Figura 41. Proceso de instalacin de swi-Prolog.

Ya terminada la instalacin se debe dar clic en el botn finished, para finalizar la instalacin.

Figura 42. Finalizacin de instalacin de swi-Prolog. 84

Anexo E: Robot Lego Mindstorms NXT

El robot Lego Mindstorms es el que se est utilizando (Mindstorms NXT 2006). La ltima versin, totalmente renovada incluye el brick procesador llamado NXT y es al menos 10 veces ms potente que el antiguo RCX, adems la tecnologa de transmisin utilizada es Bluetooth. Otra caracterstica es que los motores tienen servos integrados por lo que conocen su posicin y su movimiento. Esta caracterstica es un salto evolutivo. Tiene tres puertos para motores y cuatro puertos para sensores. Micro-controlador La parte principal de kit es el NXT, del tamao de un iPod con un altavoz, un LCD monocromo, teclas de navegacin en la parte frontal. Este es el controlador del robot, su cerebro. Tiene 3 puertos en la parte superior para conectar los servos, y 4 puertos en la parte inferior para conectar 4 sensores diferentes: tacto, luz, sonido y ultrasonidos. El nuevo ladrillo inteligente NXT, el "cerebro" de tu robot, dispone de un poderoso microprocesador de 32-bit y ms memoria, adems de soporte USB 2.0, Bluetooth y flash.

1.

El NXT: el cerebro controlado por ordenador del robot Mindstorms.

2. Sensor de tacto: permite al robot sentir y reaccionar al entorno. 3. Sensor de sonido: permite al robot reaccionar al sonido. 4. Sensor de luz: puede detectar luz y color. 5. Sensor de ultrasonidos: permite al robot medir distancias y reaccionar al movimiento. 6. Servo motores: asegura los movimientos del robot con precisin controlada. Entradas y salidas Como medio de entradas posee tres conectores que permite capturar la informacin que proviene del los distintos sensores. Las entradas se conforman por un bloque de 2x2, y sus 85

cabezas se encuentran rodeadas de un material conductor que permite la lectura del sensor. Las entradas se ubican en la parte superior de la pantalla de LCD. Pantalla LCD La pantalla de LCD que posee el Lego Mindstorms permite visualizar tres corridas de datos: Superior, deteccin en las entradas de los sensores y el nivel de carga de las bateras. Central, zona alfanumrica que permite ver el contador, temporizador o valores registrados por un sensor. Inferior, indica el sentido de movimiento de los motores. Lateral izquierdo, muestra si hay conexin inalmbrica mediante el puerto infrarrojo. En su modo de operacin, la pantalla de LCD posee un contador de ejecucin en el que muestra las veces y el tiempo que se ha ejecutado el programa, indica el nmero del programa que se est ejecutando y muestra la imagen de una persona que se encuentra de dos posibles formas: en estado de detencin, la representacin de la persona est detenida, y cuando se est ejecutando un programa, sta se encuentra en movimiento

Figura 43. Lego Mindstorms. (J. Ierache, 2004)

86

Alimentacin elctrica La alimentacin elctrica del bloque es mediante 6 bateras AA de 1,5 volts, las cuales se conectan en la parte posterior del bloque. Las bateras se conectan en paralelo y proporcionan energa tanto al bloque como a los motores que se conectan al mismo bloque. Una advertencia que se realiza en el manual de Lego Mindstorms respecto al reemplazo de las bateras es que la demora no debe ser mayor a un minuto. Pues las bateras alimentan a la pila que se encuentra dentro del bloque, permitiendo almacenar los distintos programas y el firmware bsico. Si el reemplazo demora ms de 1 minuto, la informacin almacenada se pierde. Otra advertencia que se realiza a los usuarios es la de evitar utilizar bateras recargables debido a que entregan menor o mayor potencia al bloque, produciendo que el sistema elctrico sea susceptible a fallos. Los motores desmontables son alimentados mediante cables que poseen conductores elctricos que transmiten la energa a los inductores. Como son motores paso a paso, el sentido de conexin no entrega la misma direccin de movimiento. El modelo NXT usa servo motores, los cuales permiten la deteccin de giros de la rueda, indicando los giros completos o medios giros, lo cual es controlado por el software. (Lego corporation.2005) Piezas mviles Las piezas mviles que dispone Lego Mindstorms se centran principalmente en el sistema de rotacin de bloque, para lograr que las ruedas se muevan en un movimiento circular con respecto al bloque completo. Estas piezas mviles se pueden clasificar en dos: 1. Pieza de rotacin: 87

Permite rotar un bloque de Lego con respecto a otro, siendo hueco en el centro del mismo, y con las patas de conexin; lo cual permite aadir ms piezas en la parte superior del bloque de rotacin. 2. Pieza de giro: A diferencia de la pieza de rotacin, la pieza de giro permite girar un bloque en el espacio, permitiendo una simulacin de ojos de un robot. Esta pieza no posee una utilidad real, pero sirve de adorno para el robot. Piezas flexibles Las piezas flexibles permiten recrear una articulacin de un sistema articulado, donde se requiere que el robot deba realizar un movimiento no rgido en forma especfica, como el brazo robot o el brazo clasificador de piezas. Las piezas flexibles por lo general son tubos de plstico capaces de conectarse con dos bloques que se encuentren separados a una distancia menor de 4cm. Piezas de fijacin Las piezas de fijacin, son aquellas que sirven para fijar los ejes de rotacin producidos por las piezas de rotacin, lo cual implica que son usadas en el centro de las ruedas que posee el Lego. Por lo general, son tubos de 0.5mm de dimetro el cual se puede poner en la punta de una barra que acta como eje central de la rueda, ajustando la misma para que no se salga durante la ejecucin de un programa. Comunicaciones El bloque de NXT puede comunicarse con el computador mediante la interfaz de USB que posee, la cual ya viene en la versin 2.0. Adems, para comunicarse con otros robots en las cercanas posee una interfaz Bluetooth que es compatible con la Clase II v 2.0. Esta conectividad 88

Bluetooth no tan slo permite conectarse con otros bloques, sino tambin con computadores, palms, telfonos mviles, y otros aparatos con esta interfaz de comunicacin. (Arntegui, 2001) Dentro de las posibilidades de conexin se encuentran: Conectar hasta tres dispositivos distintos. Buscar y conectarse a otros dispositivos que posean Bluetooth. Recordar dispositivos con los cuales se ha conectado anteriormente para conectarse ms rpidamente. Establecer el bloque NXT como visible o invisible para el resto de los dispositivos. Firmware El firmware del Lego Mindstorms consta de las instrucciones bsicas que posee el bloque para hacer las distintas tareas que se le pueden programar en el bloque RCX. El firmware viene en el CD-ROM que se adjunta en el empaque original y debe ser cargado todas las veces que el robot se inicialice o se cambien las bateras y la memoria se borre. Si no se carga el firmware, el robot queda en modo de arranque, lo cual permite que se pueda acceder a un programa que viene en forma nativa dentro del ladrillo. Para cargar el firmware debe ejecutarse el programa adjunto al kit y esperar aproximadamente 3 minutos para que se cargue completamente el firmware bsico. Sensores y Motores Contiene 4 sensores que permiten realizar operaciones de acuerdo a las caractersticas de cada una que a continuacin se describen: 1. Sensor de luz: este percibe luz de acuerdo a los colores bases que hay cada uno de ellos tienen un parmetro para que el sensor los pueda detectar. 2. Sensor de sonido: tiene dos modos de configuraciones: 89

Para detectar sonidos perceptibles por el odo humano. Para detectar adems los sonidos no perceptibles por el odo humano (como ultrasonidos). 3. Sensor ultrasnico: este acta como un radar permitiendo la deteccin de objetos. Se lo puede configurar para detectar objetos lejanos o cercanos. Detecta objetos entre 0 y 255cm con una precisin de +- 3 cm. 4. Sensor de tacto: este puede detectar tres estados que son presionado, libre y rebote. Contiene tambin tres servomotores, mejorados con respecto a la versin RCX, ya que tienen integrados sensores de rotacin. De este modo se pueden lograr movimientos mucho ms precisos y controlados, adems los tres motores se puedan sincronizar perfectamente. Otra caracterstica: tiene 1 parlante de alta fidelidad, mejorado. Las conexiones para sensores y servomotores son RJ11 Estos agentes robots son programables en entornos grficos nativos, LabView es el entorno para el robot Lego Mindstorms NXT. En cuanto a LabView cabe destacar que fue desarrollado por National Instruments y utilizado por la NASA, para monitorear y controlar al robot Sojourner Rover, en la misin de exploracin de la superficie de Marte. (The Lego group, 2007)

Figura 44. Entorno LabView. (J. Ierache. 2004)

Entorno grfico para Lego Mindstorms A continuacin se describe brevemente el entorno grfico que trae el robot Lego para programarlo por medio de bloques ya estructurados: Entorno nativo para programar al NXT. Viene incluido en el kit NXT. 90

Utiliza un lenguaje de icnicos de programacin, muy intuitivo. Se baja el programa de la PC al bloque NXT utilizando un cable USB o Bluetooth. Se pueden crear bloques propios. Comunicacin con Bluetooth: el firmware del NXT permite una configuracin de tipo Amo-Esclavo para la comunicacin con Bluetooth. Se pueden comunicar hasta 3 ladrillos NXT con Bluetooth. Estos entornos utilizan bloques que se ensamblan para formar un programa completo.

Estos bloques incluyen control de motores (avance, retroceso, encendido y apagado), ciclos repetitivos (while, repeat), estructuras de control (if else), adquisicin de datos de los sensores, utilizacin de variables, constantes y timers. Adems de estos entornos grficos, existen una serie de programas que permiten la programacin del control de un NXT en cdigos ms conocidos, por ejemplo Java. Para utilizar Java se requiere de una interfase, se puede utilizar el paquete iCommand para NXT como interfaz. Uno de los programas ms utilizados y que aumenta enormemente las posibilidades de programacin es el NQC de Dave Baum. Para el NXT, existe un programa llamado RoboC, que es mucho ms completo que el NQC del RCX, y adems incluye un firmware propio, que lo hace muy potente. Se proporciona una lista donde se enumeran las caractersticas ms importantes de las principales herramientas de programacin. (J. Ierache, 2004)

91