You are on page 1of 91

UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO

DIVISIÓN ACADÉMICA DE INFORMÁTICA 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 Ricárdez Hernández
Asesor

Dra. María del Pilar Pozos Parra

Cuerpo Académico Sistemas Inteligentes

LGAC Agentes, Robótica y Visión Computacional

Cunduacán, Tabasco

Marzo 2010

ii

UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO
DIVISIÓN ACADÉMICA DE INFORMÁTICA 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 Ricárdez Hernández
Asesor

Dra. María del Pilar Pozos Parra
Revisores

M.C. Guillermo de los Santos Torres Robles M.S.C. Oscar Alberto Chávez Bosques M.C. Cristina López Ramírez Lic. Ericsson Saldivar Correa M.C. José Luis Gómez Ramos

Cunduacán, Tabasco

Marzo 2010

afecto y amistad. en la cual ellos no se limitaron a su esfuerzo. mi Proveedor y mi Fin último. sabes lo esencial que has sido en mi posición firme de alcanzar esta meta. a quienes nunca podré pagar todos sus desvelos. vida. A mis amigos pasados y presentes: Pasados por ayudarme a crecer y madurar como persona y presentes por estar siempre conmigo apoyándome en toda las circunstancias posibles. guía. LOS RECUERDO. Por Fco. María del Pilar Pozos Parra por su generosidad al brindarme la oportunidad de recurrir a su capacidad y experiencia científica en un marco de confianza. y la más grande herencia que puede dársele a un hijo: esto me permitió realizar unos de mis anhelos más grandes de mi vida. también son parte de esta alegría. fundamentales para la concreción de este trabajo. Les agradezco por su cariño. sus desgastes por todo esto gracias. la hiciera para entregártela. esta alegría. mi Guía. que si pudiera hacerla material. A mis padres. Esparza iv . podré siempre de tu mano alcanzar otras que espero sean para tu Gloria. pero a través de esta meta. sacrificio y gran parte de su vida.Agradecimientos A Dios Agradezco a mi Señor. A mi asesora de tesis: Dra. amor.

sus palabras de motivación durante toda mi carrera para poder culminar una de mis metas anheladas. A mi asesora de tesis Agradezco infinitamente y de todo corazón el apoyo incondicional que recibí por parte de mi asesora. María Del Pilar Pozos Parra. Así como también agradecerle por su paciencia y su valiosa disponibilidad durante todo el desarrollo del proyecto. A mis amigos Y a todos mis amigos. quienes siempre estuvieron presentes para darme su apoyo. quien como asesora de este proyecto mostró un gran interés para llevar a cabo la terminación y presentación del mismo. la DRA. Por Santiago Ricárdez v .Agradecimiento A Dios y a toda mi familia Por ser ellos la principal razón de lucha constante ante las adversidades y dificultades que se presentaron en el transcurso de mi carrera profesional.

..................................3.........2............................. Marco Teórico ...........1...........................................................................................1............................................................. 23 La ontología del cálculo de situaciones..................3..... 1.............................................................................................. 1.........4...........1 2... 25 Planificación en el cálculo de situaciones .............2...................................... 29 Conceptos del lenguaje Prolog (programación lógica) ..........................2...................4................................................. 22 2...................1 2.................................. 17 Delimitación ............................................... Antecedentes ............................................................ 27 Definición de robot y robótica ...................................................................................................... 8 Índice de Tablas ...................................................................... 16 Justificación ............. 2.................................................................................................................................................................................................................2 2........................... 2.............................................................3...... 1................2...........3 2................3 Robótica cognitiva (cognitive robotic) ............... 13 Hipótesis o planteamiento del problema ................................................................................ 1.............................................................................................................................. 24 Acciones en el cálculo de situaciones .......... 14 Objetivo general ...............................2 2............... 11 1................1 2....................................................... 26 Robótica ........... 27 Tipos de robots .............. 16 Objetivos específicos......... 2...... 29 ...............................................................................2 2...... 24 Acciones y situaciones ..................... 23 Planificación lineal y no lineal ...........................3........................ 22 Problemas en planificación .....2................................... 2...........1............................. 30 vi 1.................3......................................................................................... 13 1.................................................................................................................................................................................5.............................................................1................................................... 19 Planificación basada en lógica ...... 18 Metodología a utilizar . 10 Índice de Gráficas......................................................................Tabla de Contenido Tabla de Contenido . 2...... 22 Planificación clásica .................................3...................... Introducción ........ 1................................................................1.................................6.......................................3 2...................................... 6 Índice de Figuras ..............................1............

................................................................2....................................................... 64 Conclusiones y trabajos futuros ........................1.................................................................. 44 Interfaz ................................7................... 40 Diseño......................6.................. 82 Anexo E: Robot Lego Mindstorms NXT ....................... 33 Descripción del API leJOS NXJ ....3..........1..........2................................................. 3........................................................................3...... Bluetooth................................................... 65 Glosario ................. 4........................................6.......... 36 Arquitectura de la interfaz máquina-robot...... 45 Aplicación de la metodología y desarrollo ....................................... 72 Anexo C: Instalación del Programa del Bluetooth .... robot y planificador con cuatro acciones ............................................................................................................................................... 51 Pruebas utilizando la interfaz........... 3................... 5.............................4 2.............................................. 3....................................................................................................................... 2....................................5.............. 2..................... 3...................... 3..................... 68 Anexo B: Instalción del editor de Java: Jcreator ..... robot y planificador con dos acciones ...... Características del lenguaje Prolog ................................ 35 Requerimientos del programador ............. 32 Otras características.......... 85 vii .......................................... Pruebas y Resultados .................1................................................. .... 33 Descripción del API iCommand ..... 51 Pruebas utilizando la interfaz............. 57 Conclusiones .........................................................................2..............................................3..........................................................1.............. 36 Conectividad máquina-robot y ejecución de código Java ............................................. .................. 35 3.......... 37 Conexión Prolog-Java para la planificación de la ruta .................................................. 4.......... 62 Bibliografía............................2.......... 78 Anexo D: Instalción de swi-Prolog.................................................... 67 Anexo A: Instalación del compilador de Java ................ 34 Requerimientos de usuario .............................................................3 2.......................................................................... 5..................................................................................................... 3.. 4.........5.................. Bluetooth............................................ 32 Descripción de Java .............. 5.........................................6...........................................................................4.................................... 62 Trabajos futuros........................ 3.........................

................................................................................... ................................................................................................. 56 Figura 12..... 52 Figura 8...... .......... 55 Figura 11.......... 72 Figura 20............... 36 Figura 4..................................................... Escenario con cinco acciones..................... 70 Figura 17..................... 35 Figura 3...................................................... Pantalla de instalación de Java jdk y sus componentes......... Ventana de selección de acceso directo o rápido........ ......................................................... ............................................ ....................................... ............................... Pantalla de licencia del programa Java........ 43 Figura 5....................................... .... Esquema general del escenario........ Estado S0 .................. ............................................................... Pantalla de inicio de instalación del paquete de Java.......................... 70 Figura 16....................... ............ 51 Figura 7.. Ventana de resumen de opciones de instalación......... Ubicación de la ruta de instalación de Jcreator........ ................ Arquitectura general de la interfaz máquina-robot.... 69 Figura 15...................... Escenario con un obstáculo.................................................................. 68 Figura 13................................................... 71 Figura 19.............................. ......... ... 25 Figura 2..... 53 Figura 9... . Selección de carpeta de menú inicio....................................... Escenario con tres obstáculos..... 69 Figura 14..................................... 76 viii ..................... Pantalla de instalación de la herramienta Java jre....... 75 Figura 25.................... ....... 50 Figura 6........ ...... ................ 73 Figura 22..... Selección de tipo de conexión y el puerto de enlace......... Interfaz de conexión entre planificador y robot....... 74 Figura 24... Licencia de Jcreator................................. Escenario con cuatro acciones............... ....................................................................................... 71 Figura 18 Pantalla de finalización de instalación del paquete de Java..............................Índice de Figuras Figura 1..................................................................................................................................... ........................................ Pantalla de proceso de instalación del paquete Java................................................ Pantalla de proceso de instalación de Java™.................... ......................................................................................... ............. Escenario sin obstáculos.................................................... Seleccionar el menú Opciones de Jcreator........ Ventana de inicio de instalación de Jcreator................. Pantalla de finalización de instalación de Jcreator...... .......... 74 Figura 23................ Escenario con dos obstáculos.......... 54 Figura 10... ............................................ 75 Figura 26.............. 73 Figura 21........

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

............................................................................ Prueba con cinco obstáculos utilizando 4 acciones................ 52 Tabla 5.... .. Prueba con cinco obstáculos utilizando 2 acciones...................... ............................ Clase Query.......................... ....................... 54 Tabla 8........ Prueba con un obstáculo utilizando 4 acciones...... Prueba con dos obstáculos utilizando 2 acciones.... .................... .......................................... ..................................... ........ 58 x .. Prueba con ningún obstáculo utilizando 4 acciones............................................................................. 57 Tabla 11....................... 41 Tabla 2................. 57 Tabla 12..................................................Índice de Tablas Tabla 1............. Prueba con tres obstáculos utilizando 2 acciones........... 55 Tabla 9................................ Predicados...................... 56 Tabla 10................. .............. Prueba con tres obstáculos utilizando 4 acciones. ....................... Métodos ................................................................................... Prueba con cuatro obstáculos utilizando 4 acciones.. ................... 53 Tabla 7.......................... Prueba con dos obstáculos utilizando 4 acciones.......................................... ............. 57 Tabla 13...................... 42 Tabla 4............. 53 Tabla 6........................................... 41 Tabla 3.................. Prueba sin obstáculos utilizando 2 acciones..................................................................

............................. 60 Gráficas 4..... Comparación de planificación en escenario sin obstáculos.......... Comparación de planificación en escenario con dos obstáculos. 59 Gráficas 3............ Comparación de planificación en escenario con tres obstáculos....... 61 xi ..... ........... Comparación de planificación en escenario con cinco obstáculos....... 58 Gráficas 2........Índice de Gráficas Gráficas 1.................... ............ ...............

estos parámetros se envían por medio de una librería llamada jpl a Prolog para obtener el plan. éste es interpretado por medio de un API de Java para obtener comandos de desplazamiento y rotación. 12 . Una vez obtenido el plan. y se envían al robot tipo Lego a través de una conexión inalámbrica.Resumen La aportación de esta tesis consiste en el diseño e implementación de un sistema que controla los movimientos de un robot móvil tipo Lego mediante un planificador basado en lógica de primer orden e implementado en Prolog. las posiciones de los obstáculos y la posición meta. 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. es decir una secuencia de acciones que en teoría permite alcanzar la meta. El sistema funciona de la siguiente manera: se describe un escenario inicial. Mediante una interfaz realizada en Java se reciben: la posición inicial. finalmente el robot realiza las acciones con las que pretende alcanzar su meta.

esta línea de trabajo se ocupa de implementar características cognitivas en los robots.1. de complejos sistemas efectores para ejecutar las tareas asignadas y de sofisticados sistemas de control para llevar a cabo acciones correctivas cuando sea necesario. No sólo ha sido un importante foco de investigación por las ventajas que trae a la industria en general. Robótica Basada en el Comportamiento ó la Conducta. Visión Computacional y Reconocimiento de Patrones. la cual se ocupa de implementar robots que perciben. Introducción 1. Esta investigación considera la Robótica Cognitiva. atención. Así. razonan y actúan en entornos dinámicos. Antecedentes Hoy en día el aporte de la robótica a la humanidad puede comprobarse en muchas instancias. Tales robots deben tener funciones cognitivas de muy alto nivel que impliquen razonar. 13 . Robótica Evolutiva. Biorrobótica o Robótica Inspirada Biológicamente. Robótica Biomimética. La robótica se divide en los siguientes tipos: Robótica Situada. Robótica Cognitiva. de una precisa estructura mecánica adaptable a fin de disponer de una cierta destreza física de locomoción y manipulación. memoria a corto y largo plazo. los “robots inteligentes autónomos” son sistemas dinámicos que contienen un controlador electrónico. Robótica de Desarrollo o Epigenética. desconocidos e imprevisibles. (Gortaris. Nuñez. estas máquinas necesitan de adecuados sistemas sensoriales para percibir el entorno en donde se desenvuelven. tales como percepción. sino que también por ser una plataforma de apoyo a la docencia e investigación en Inteligencia Artificial. 2005).1. formación de conceptos. En pocas palabras. En esencia. aprendizaje.

y de gran cantidad de memoria para representar el espacio de estados. en especial si el robot cuenta con numerosos sensores y actuadores. así como las tareas de colaboración. Actualmente se necesita un elevado poder de procesamiento. 2004) Nuestro interés radica en implementar interfaces de planificación utilizando la lógica como base para que el robot pueda tomar sus propias decisiones con respecto a las acciones necesarias para moverse en un ambiente. se podría mejorar la interacción hombre-máquina. Su finalidad es la creación de robots inteligentes y autónomos que razonen. Cabe remarcar que este enfoque no consume demasiada memoria dado que no se tiene una representación explícita del espacio de estados.2. zoología y etología. eléctrica.Si se consigue que los robots desarrollen por sí mismos sus capacidades cognitivas. se comporten. y las ciencias como: física. 2005). (Fernández. Asimismo. se han desarrollado algunos robots. el autor menciona que son sistemas automáticos de alta complejidad que presentan una estructura 14 . En (Moriello. Hipótesis o planteamiento del problema La tecnología en cuanto a la robótica es de gran interés. Quién no sueña con tener a un robot-esclavo que realice las tareas arduas que cotidianamente son realizadas por nosotros mismos. anatomía. 1. evolucionen y actúen como las personas. El fundamento de estas investigaciones es la Ciencia Cognitiva. que se apoya principalmente en la ingeniería. si se logra que los robots utilicen representaciones y mecanismos de razonamiento similares a la de los humanos. La robótica inteligente autónoma es un enorme campo de estudio multidisciplinario. electrónica e informática. Hasta el momento. los cuales tienen un comportamiento muy básico en cuanto a sus movimientos y su autonomía. en contraparte el tiempo de proceso es largo dado que los estados se van generando en el proceso de búsqueda. mecánica. biología. se evitaría el programarlos “a mano” para cada tarea o contingencia concebible. psicología.

se encuentran limitados por los diseñadores. fiabilidad. Los “robots inteligentes autónomos” son sistemas dinámicos que consisten en un controlador electrónico acoplado a un cuerpo mecánico. Así la decisión de qué acciones realizar deberá ser calculada por el sistema de control del robot y no depender de un humano. de una precisa estructura mecánica adaptable a fin de disponer de una cierta destreza física de locomoción y manipulación. en la mayoría de los casos éste lo realiza un humano utilizando control remoto o transmitiendo un plan de acciones ya determinado. 15 . Tal problemática tiene la siguiente pregunta: La hipótesis de esta investigación es la siguiente: ¿Utilizando un planificador basado en lógica es posible dotar a un robot de autonomía respecto a la toma de decisión referente a las acciones a ejecutar? Se considera la implementación de un planificador basado en el cálculo de situaciones. y de sofisticados sistemas de control para llevar a cabo acciones correctivas cuando sea necesario. De tal forma que los robots necesitan ser dotados de una mayor autonomía. de complejos sistemas efectores para ejecutar las tareas asignadas. estas máquinas necesitan de adecuados sistemas sensoriales para percibir el entorno en donde se desenvuelven. Respecto al control. En cuanto a hardware.mecánica articulada –gobernada por un sistema de control electrónico y características de autonomía. Así. versatilidad y movilidad.

robot. ya sea serial o inalámbrica.1.3.1. Objetivos específicos • Diseñar escenarios de desplazamientos.3. donde se incluirán obstáculos transportables que deberán ser removidos por el robot. Realizar una interfaz que permita transferir las acciones calculadas por el planificador hacia el robot. • • • Automatizar la toma de decisión respecto al plan a seguir por el robot. esto se realizará implementado un planificador basado en lógica. 16 . Diseñar una conectividad entre máquina. 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.

1. Por otra parte. 17 . lo cual le permitirá resolver problemáticas actuales a nivel mundial. la mayoría de los proyectos de titulación están orientados al desarrollo de software. la robótica es un área muy importante. la cual permitirá controlar los movimientos del robot. dejando a un lado un aspecto importante de la computación: la programación de robots. Hay un área de oportunidad al aplicar la ciencia cognitiva a la robótica. esta investigación puede motivar a otros alumnos de la DAIS para que participen con mayor frecuencia en proyectos relacionados con el área de robótica. En nuestros días.4. es por ello que la DAIS debe tener en cuenta esta situación y fomentar el crecimiento del grupo de robótica. En la actualidad el área de robótica ocupa un lugar muy importante en la mayor parte de las universidades a nivel mundial. la cual puede realizar actividades que son peligrosas para el ser humano o automatizar procesos repetitivos y tediosos. por ejemplo: explorar y llegar al lugar requerido. Justificación Actualmente en la División Académica de Informática y Sistemas (DAIS). Este proyecto se enfocará a realizar la planificación para un Robot Mindstorms NXT de la empresa Lego. 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 fácilmente dichas tareas.

el planificador no considera acciones de sensado. Y en futuras investigaciones se incluirá el sensado de obstáculos. la potencia del motor sería insuficiente para hacer girar las ruedas. por lo que los movimientos y sensores del robot pueden verse afectados si las baterías tienen baja energía y esto conlleva a que el robot no realice bien sus movimientos. y no se cuenta con el tiempo y recursos para incluir las tecnologías y técnicas más recientes. así la creación del plan se realiza en un ambiente cerrado.1.5. el robot encontrará obstáculos en diferentes puntos y deberá retirar los obstáculos o esquivarlos. para así llegar a donde se le pide. El tiempo de respuesta no será real ya que la interfaz toma tiempo para transferir la información del planificador hacia el robot. El robot para su funcionamiento hace uso de baterías. entradas y salidas. por ejemplo más grandes de las que incluye el kit del robot. Cabe mencionar que se da por hecho que el robot conoce el entorno. por lo que si se requiere utilizar otro tipo de robot se tendrá que buscar la manera de adaptarla al procesador. pues aún quedan muchos problemas tecnológicos y teóricos por resolver. ya que si se hace un cambio de ruedas. Por el momento. Los escenarios considerados por el planificador incluyen los obstáculos del ambiente. pues seguiremos dependiendo de la tecnología existente dado los recursos disponibles. En el entorno. La interfaz a desarrollar será para un robot de tipo Lego NXT. formas de comunicación. El robot se desplazará dentro de un entorno predefinido y llegará a su destino ó meta. La autonomía no se considera autonomía del hardware. El tamaño de rueda que use el robot para desplazarse es muy importante. Delimitación La total autonomía del robot no se realizará. 18 .

este método define los procesos necesarios para alcanzar nuestro objetivo. la cual está basada en: • • • La simplicidad. *no confundir el término de planificación utilizada en esta sección con la planificación realizada que será hecha por el robot. Extreme Programming es considerada una metodología ligera de desarrollo. ya que cuenta con cuatros fases que son fundamentales para alcanzar el objetivo. Esta metodología permitirá llevar a cabo un buen desarrollo e implementación del proyecto. Creación de plan de entregas (Release planning): es una planificación* donde los desarrolladores y usuarios establecen los tiempos de implementación ideales de las historias de usuario. La comunicación. y no se tenga demora de tiempos. Metodología a utilizar La metodología que utilizaremos para el desarrollo del proyecto es Extreme Programming (XP). los cuales son las siguientes: • Creación de historias de usuario: se realiza un historial en un leguaje no técnico bien definido. A continuación se describen las 4 fases a realizar: (Fernández.1. • 19 .6. La retroalimentación o reutilización del código desarrollado. ya que es una herramienta que permite el desarrollo de sistemas de forma gradual y sin necesidad de generar inicialmente el diseño completo del sistema. 2003) Planificación: La fase está conformada por 3 pasos que se deben realizar en forma consecutiva para poder planificar la aplicación. la prioridad con la que serán implementadas y las historias que serán implementadas en cada versión del programa.

Diseño: Esta fase se conforma por los siguientes pasos: • Metáfora del sistema: permitirá mantener la coherencia de nombres de todo aquello que se va a implementar. Desarrollo: La fase está conformada por los siguientes pasos: • Unidad de pruebas: Uno de los pilares de la metodología XP es el uso de “test” para comprobar el funcionamiento de las versiones que se van implementando. Pruebas: Esta fase conforma los siguientes pasos: • • Implantación: el código será implantado cuando supere sus correspondientes unidades de test Pruebas de aceptación: evaluación del usuario. • Programación por parejas: El trabajo en pareja involucra a dos programadores trabajando en la misma versión. Al comienzo de cada semana los usuarios deben seleccionar las historias de usuario definidas en el "Release planning" que serán implementadas. De esta forma se consigue un código y diseño con gran calidad. mientras uno codifica haciendo hincapié en la calidad de la función o método que está implementando. 20 • . el otro analiza si ese método o función es adecuado y está bien diseñado. Refactorizar: mejorar y modificar la estructura y reescritura de códigos ya creados sin alterar su funcionalidad.• Creación de versiones: cada nueva versión se liberará aproximadamente cada 3 semanas.

pues es uno de los requisitos para llegar al éxito del proyecto.XP es una de las metodologías de desarrollo de software más exitosas en la actualidad utilizada para proyectos a corto plazo. (Fernández. cuya particularidad es tener como parte del equipo. 21 . al usuario final. La metodología consiste en una programación rápida o extrema. 2002).

y sabe qué acciones realizar. (Russell y Norvig. el agente simplemente necesita un conocimiento general del tipo Comprar(x). Los planificadores tienen una amplia gama de aplicaciones.1 Problemas en planificación Algunos de los problemas para realizar la planificación son los siguientes: La primera dificultad y más obvia es la posibilidad de que el agente pueda ser desbordado por acciones irrelevantes al problema. 2001) 2. (Reiter. Para hacer esto. El planificador permite tener un alto grado de flexibilidad porque conoce las condiciones necesarias para que una acción pueda ser ejecutada.2. 2004) 22 . Marco Teórico 2. El algoritmo de búsqueda tendría 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.1. Supongamos que tenemos una acción de compra para cada número ISBN de 10 dígitos y para un total de 10 billones de acciones. control de vehículos autónomos y mucho más. y la habilidad de razonar acerca de las acciones y sus efectos en el ambiente. incluyendo navegación de robots. Planificación basada en lógica La tarea de un planificador es encontrar una secuencia de acciones que permita llegar a una meta específica a partir de un estado inicial.1. En contraposición. un agente de planificación razonable debería ser capaz de trabajar con expresiones de objetivos explícitas tales como Tener(1SBN 0137903952) y generar la acción Comprar(1SBN 0137903952) directamente. La planificación es una de las formas en las que un agente puede tomar ventaja del conocimiento que posee. Consideremos la tarea de comprar un ejemplar del libro «Inteligencia Artificial: un enfoque moderno» en una librería online.

1. por tanto. esta visión perspicaz no es obvia para un agente que evalúa su objetivo como una caja negra que devuelve un valor Verdadero o Falso para cada estado. Tendremos 1040 planes formados por cuatro etapas. desafortunadamente. 2002) 2. Sin embargo.La siguiente dificultad es encontrar una función heurística adecuada. al agente solucionador de problemas le falta autonomía. si un agente planificador tiene acceso a una representación explícita del objetivo como una secuencia de sub-objetivos. a partir de este punto. el objetivo podría ser Tener(A) ^ Tener(B) ^ Tener(C) ^ Tener(D). por lo que una búsqueda sin recurrir a la ayuda de una heurística no puede ser ni cuestionada. puede utilizar una simple heurística independiente de dominio: el número de conjunciones insatisfechas. y un estado conteniendo Tener(A) ^ Tener(C) podría presentar costo dos. eventos exógenos). 2004) 2. definidas ambas completamente. 23 . Supongamos que el objetivo del agente es comprar cuatro libros diferentes en una librería online. El conformado del plan se realiza en el mismo orden de su ejecución. alcanzándose objetivos parciales para. (Russell y Norvig.1. Por tanto. en situaciones en las que las particularidades más relevantes del mundo son conocidas y en las que el éxito del plan no depende de cambios en el entorno (no existen.3 Planificación lineal y no lineal En la planificación lineal existe una relación de linealidad entre la forma de ir resolviendo los subobjetivos y su posterior ejecución. el agente automáticamente adquiere la heurística correcta para este problema y para otros. De este modo. abordar nuevos subobjetivos. Es obvio que para un humano sería una buena estimación heurística que el costo de un estado fuese el número de libros que permanecen sin ser comprados.2 Planificación clásica Se entiende por planificación clásica la generación de planes para alcanzar unas especificaciones objetivo a partir de unas especificaciones iníciales. (Segundo. Para el problema anterior de la compra del libro. requiere de un humano que le suministre una función heurística para cada nuevo problema.

y. En este formalismo. o bien se ejecutan en paralelo.1 Acciones y situaciones El cálculo de situaciones es una formalización de los conceptos de estados. La ontología del cálculo de situaciones 2. posible plan solución. 2002) 2. que está basada en el cálculo de predicados. (Segundo. si es así. (Nilsson. mediante acciones. se elige una ordenación total de dicho plan en dominios de un solo agente. generalizable a toda rutina precompilada capaz de modificar un plan y corregir defectos. ¿cómo se puede transformar. 2001) El cálculo de situación es un lenguaje de segundo orden que está diseñado para representar cambios en mundos dinámicos. nuestro conocimiento acerca de los estados y las acciones se representa mediante fórmulas del cálculo de predicados de primer orden. La búsqueda se desarrolla en un espacio de estados y conceptualmente puede ser progresiva (hacia adelante desde el estado inicial) o regresiva (hacia atrás. acciones y efectos de las acciones sobre los estados. a diferencia del espacio de estado en los planificadores lineales. desde las especificaciones finales). no existe linealidad en el orden de resolución de subobjetivos y su orden de ejecución.2. Para su ejecución posterior. representada en 24 . 2002) En la planificación no lineal. (Segundo. Todos los cambios en el mundo se producen gracias a acciones. es una simple secuencia de acciones. y cada nuevo nodo sucesor es un plan cada vez más refinado que finalmente converge a un plan solución. Una historia en el mundo. el estado actual en ese estado? La respuesta a este tipo de preguntas nos proporciona un plan para alcanzar el estado deseado.2.El resultado de la planificación lineal es una secuencia totalmente ordenada de pasos. Cada nodo generado. se somete a críticas. ejecutable por un único agente. En donde la búsqueda se desarrolla en un espacio de planes. y nos permite realizar preguntas del tipo: ¿Existe algún estado que satisfaga ciertas propiedades (meta).

es decir la secuencia de acciones vacía. Supongamos que identificamos el estado que se muestra de la figura 1 como S0. Estado S0 25 .2. s). 2004) Un ejemplo para el cálculo de situaciones es en el mundo de bloques.términos de primer orden que son llamados situaciones. 2001) Las situaciones denotan posibles historias del escenario modelado. las acciones se describen por dos axiomas: un axioma de posibilidad que especifica las condiciones necesarias para que un acción pueda ser ejecutada. Este segundo axioma calcula los efectos que resultan de ejecutar una acción. Suelo) Libre (B) Figura 1. s) para expresar que es posible la ejecución de la acción a en la situación s. los axiomas tienen la siguiente forma: AXIOMA DE POSIBILIDAD: Precondiciones ⇒ Posible(a. Se utilizara Posible(a. 2. S0 denota la situación inicial antes de que se realice alguna acción. A) Sobre (A. La constante S0 y el símbolo de función do son usados para denotar situaciones.S0) denota la situación que resulta de haber ejecutado la acción avanzar estando en situación inicial S0. C) Sobre (C.s) denota la situación que resulta de realizar la acción a en la situación s. (Russell y Norvig. Si utilizamos el cálculo de predicados. (Reiter. Por ejemplo do(avanzar. y un axioma de efecto que determina qué sucede cuando se ejecuta una acción posible.2 Acciones en el cálculo de situaciones En el cálculo de situaciones. do(a. AXIOMA DE EFECTO: cambios que son el resultado de ejecutar una acción. La constante S0 indica la situación inicial. podríamos describir S0 mediante la siguiente fórmula: B A C Sobre (B.

C.Suelo. y otros estados. mediante variables o mediante expresiones funcionales. codificamos los estados. S1.C) ^ Sobre (C. Las acciones tienen la forma jump. Un cambio similar se debe realizar en nuestra interpretación de estas fórmulas atómicas ahora. y put(r.Suelo) ^Libre (B) Para poder describir este estado.S0) ^Sobre (B. Expresamos un enunciado acerca de lo que es cierto en el estado S0 mediante la fórmula: Sobre (B.Sobre (B. Cambiaremos nuestras fórmulas atómicas de forma que incluyan un término que denote el estado en el que se verifica una relación. eliminar_obstaculo(x) y agregar_obstaculo(x).3 Planificación en el cálculo de situaciones El planificador utilizado en este trabajo está basado al cálculo de situaciones.2. retroceder. 26 . kick(x). 2001) El lenguaje considera dos tipos de términos de primer orden: acciones y situaciones.S0). estas fórmulas denotan relaciones sobre estados y son denominadas fluentes. esto se suele denotar mediante símbolos de constantes (tales como S0. en este formalismo.A) ^Sobre (A.A. La planificación genera un comportamiento inteligente usando lo que sabe el agente para encontrar una secuencia de acción que satisfaga alguna meta planteada. Las constantes y símbolos de función para acciones son completamente dependientes de la aplicación en el caso del robot tenemos las acciones: avanzar.S0) ^ Sobre (c.x. los cambios de estado son calculados después haber sido efectuada una acción. Puesto que se usa para representar cambios en escenarios. (Nilsson. es decir. 2. el cálculo de situaciones es un candidato potencial para soportar la planificación. Podemos tener cualquier número de estados. en el cálculo de situaciones. S2.y). los incluimos en nuestra conceptualización del mundo como entidades con existencia propia. S0) ^Libre (B.…).

S0 )) donde do(a. S0 )) En otras palabras. que se podría traducir como 'trabajo tedioso' en checo... S0 ). el dramaturgo checoslovaco Karel Capek en su obra Opilek. aquí se citan algunas: Un robot es un manipulador multifuncional y reprogramable. Robótica 2. La palabra robot viene de 'robotnik' o 'robota'. an ). an) tales que éstas se deriven del conocimiento previo que se posee..s0)) ^Legal(do(a.. do(a1.La tarea de planificar puede ser formulada en el lenguaje del cálculo de situaciones como sigue: dada una fórmula meta(s) del cálculo de situaciones con una variable libre s. de precondiciones de acciones y de estado inicial. cabe remarcar que el fluente Legal define la propiedad de posibilidad de ejecución de cada acción en la situación apropiada (esto es... encontrar una secuencia de acciones... piezas.. mediante movimientos programados y variables que permiten llevar a cabo diversas tareas.. se desea encontrar una secuencia de acciones a =(a1 . herramientas o dispositivos especiales.. Lo empleó por vez primera. Pero fue el escritor Isaac Asimov quien popularizó el concepto con sus muchos relatos de ciencia ficción. diseñado para mover materiales.do(an-1 ..)) y Legal(do(a. cada precondición de 2. en 1917.1 Definición de robot y robótica Robot: El término robot tiene diversas definiciones.3. dada una fórmula meta. Esta teoría está constituida por los axiomas de efecto o de estado sucesor.. tal que Teoría meta (do(a. 2004) 27 . la acción es satisfecha)...ai-1 ).S0 )) significa ∀ί=1…n Poss (ai.3. es decir la Teoría... a =(a1 .s0) significa do(an . do((a1.. dotándolo de un componente romántico del que en realidad carecen estos artefactos. (Moriello.

por medio de motores. sonidos y sus partes móviles que están controladas por un programa realizado en un lenguaje de programación. un robot es una máquina que hace algo automáticamente en repuesta a su entorno. actuadores de locomoción. fuentes de energía y software de calidad--todos estos subsistemas tienen que ser diseñados para trabajar conjuntamente en la consecución de la tarea del robot. La robótica es la ciencia encaminada a diseñar y construir aparatos y sistemas capaces de realizar tareas propias de un ser humano.En conclusión. sensores. (Bergren. La Robótica consiste en el diseño de sistemas. 2004) 28 • • • • . manipuladores. 2003) Robótica: El término "Robótica" fue acuñado por Isaac Asimov para describir la tecnología de los robots. 2002) • • La Robótica describe todas las tecnologías asociadas con los robots. El término robótica puede ser definido desde diversos puntos de vista: • La Robótica es la conexión inteligente de la percepción a la acción. sistemas de control. (J. Un robot autónomo es un dispositivo capaz de operar por sí mismo. en la robótica de servicio es donde más se están necesitando los robots autónomos. ¿En qué tipo de situaciones puede ser interesante que un robot que sea completamente autónomo? Por ejemplo en entornos hostiles: Conflictos bélicos Exploración espacial Exploración submarina Rescate en catástrofes. Ierache. (Jones. sensores.

e incluso se vendían al público como los perritos Aibo de Sony. Los hay de varios tipos según su utilidad: • Manipuladores. Aquellos que sustituyen miembros humanos (manos. taladran.2. tender cables en el fondo del mar. Ierache. Algunos han llegado a popularizarse como Asimo de Honda. Robots experimentales. Los hay terrestres. (J. las cuales se describen a continuación: Robots industriales.3. Tales robots deben tener funciones cognitivas de muy alto nivel que impliquen 29 . Se ocupa de implementar robots que perciben. razonan y actúan en entornos dinámicos. tomar muestras de minerales en la luna. empresas e instituciones con el propósito de investigar campos concretos de la robótica. Estas dos últimas divisiones tienden a solaparse en ocasiones. • De control remoto. trabajan con productos peligrosos. 2004) 2. pintan. submarinos. • De uso doméstico. Aquellos que sueldan. aéreos y espaciales.2 Tipos de robots Hay dos grades familias de los robots. • Prótesis y asistentes.3 Robótica cognitiva (cognitive robotic) Este enfoque utiliza técnicas provenientes del campo de las Ciencias Cognitivas. desactivar explosivos o minas. brazos) y los que prestan asistencia a personas minusválidas. Desarrollados normalmente por universidades. piernas. desconocidos e imprevisibles. Son los que ayudan en tareas domésticas como aspirando el polvo o cortando el césped. El 54% de los robots españoles se dedican a la soldadura.3. Se utilizan para localizar gente sepultada. En constante aumento.

el tiempo. se necesita un elevado poder de procesamiento en especial si el robot cuenta con numerosos sensores y actuadotes. Y Estados Unidos lo incorpora en sus proyectos. Maarten van Emden (en la demostración experimental) de Edimburgo y Alain Colmerauer de Marsella (en la implementación). etc. atención. así como las tareas de colaboración. 2. En pocas palabras. (Kovács. Para eso. 30 . acerca de las metas. por ejemplo. se podría mejorar la interacción hombre-máquina. las acciones.razonar. memoria a corto y largo plazo. y de gran cantidad memoria para representar el espacio de estados. esta línea de trabajo se ocupa de implementar características cognitivas en los robots. si se logra que los robots utilicen representaciones y mecanismos de razonamiento similares a la de los humanos. 2004). Sin embargo. Prolog está basado en la lógica de primer orden.4. deben poseer un modelo simbólico e interno de su entorno local. se evitaría el programarlos “a mano” para cada tarea o contingencia concebible. formación de conceptos. aprender de la experiencia. (Bogner. los estados cognitivos de otros robots. Hoy en día es aceptado como uno de los mejores lenguajes de la inteligencia artificial. Japón lo incluye en sus proyectos de ordenadores de 5a generación. Asimismo. 2004) Si se consigue que los robots desarrollen por sí mismos sus capacidades cognitivas. Conceptos del lenguaje Prolog (programación lógica) La historia de Prolog inicia así con sus creadores que fueron Robert Kowalski (1970 en la parte teórica). etc. es aquella que resuelve problemas formulados con una serie de objetos y relaciones entre ellos en base de un conocimiento del problema. y la suficiente capacidad de razonamiento lógico para tomar decisiones y para ejecutar las tareas necesarias a fin de alcanzar sus objetivos. tales como percepción. cuándo y qué percibir. aprendizaje.

El código fuente se compila a un código de byte. Su funcionamiento es muy similar a Java. A diferencia de Java. Definir reglas sobre dichos objetos y relaciones. Prolog esperara a que se introduzcan los hechos y las reglas que definen el problema a resolver. Posteriormente. Un entorno de desarrollo Prolog se compone de: • Un compilador. Prolog buscará las respuestas y las presentará en la pantalla. Por eso. La programación en Prolog consiste simplemente en: • • • Declarar hechos sobre los objetos y sus relaciones. depurarlos.Es un lenguaje de programación semi-interpretado. 31 . lo cual quiere decir que el ordenador y el programador sostienen una especie de conversación. y Hacer preguntas. muy amplias. el código de byte generado por un entorno de desarrollo no tiene que funcionar en el intérprete de otro entorno. • • Un intérprete. en general. Transforma el código fuente en código de byte. etc. 2001) Es un lenguaje de programación que se utiliza para resolver problemas en los que existen objetos y relaciones entre objetos. Se trata de una utilidad que permite probar los programas. Es un lenguaje de programación declarativa. no existe un estándar al respecto. entrada/salida. Un shell o top-level. Ejecuta el código de byte. • Una biblioteca de utilidades. Estas bibliotecas son. (Fernández. si se hacen las preguntas adecuadas. Muchos entornos incluyen (afortunadamente) unas bibliotecas standard-ISO que permiten funcionalidades básicas como manipular cadenas. Su funcionamiento es similar a los interfaces de línea de comando de los sistemas operativos.

basado en: Preguntas a la base de datos. • Prolog tiene una sintaxis y semántica simples. El programador se concentra más en el conocimiento que en lo algoritmos.3 Características del lenguaje Prolog • El programa Prolog se compone de hechos (datos) y un conjunto de reglas.Prolog está orientado a la resolución de problemas mediante el cálculo de predicados. • Los comentarios se definen entre /* y */.3. es decir. Pruebas matemáticas. El programa Prolog específica cómo debe ser la solución.4 Otras características • • • • Basado en la lógica y programación declarativa. o ¿Qué es conocido? (hechos y relaciones) o ¿Qué preguntar? (cómo resolverlo). (Jiménez. 2002) 2. las variables y las listas.3. 2003) 2. (Aedo. 32 . La solución se obtiene mediante búsqueda aplicando la lógica de predicados. que son sus estructuras básicas. relaciones entre objetos de la base de datos. No se especifica “cómo” debe hacerse sino “qué” debe lograrse (alto nivel). Produce estilo de programación orientado a metas. Sólo busca relaciones entre los objetos creados. • La ejecución del programa cargado en memoria consiste en realizar preguntas de forma interactiva: el intérprete generará por inferencia los resultados que se deducen a partir del contenido de la base de datos. en vez de dar el algoritmo para su resolución.

Unas de las ventajas de la programación en Prolog es que los programas son generales. En este proyecto nos enfocaremos a dos APIs. Este lenguaje tiene diversos APIs (Application Program Interface). iCommand fue liberado en 2006 con la finalidad de permitir a la gente programar el NXT en Java. el Macintosh o Windows mobile). En dicho programa se pueden realizar las siguientes aplicaciones: pruebas matemáticas “demostración de teoremas”. en tanto leJOS 33 . 2. ligeros y cortos en código. A continuación se describen conceptos importantes de las APIs utilizadas: 2. inteligencia artificial “sistema expertos” y consultas a bases de datos “permitir inferir relaciones no especificadas”. Linux. iCommand es un paquete de Java para controlar el ladrillo NXT sobre más de una conexión Bluetooth. En pocas palabras. una aplicación o una biblioteca. éstas definen cómo invocar desde un programa un servicio disponible. Utiliza el estándar Lego NXT firmware para recibir comandos de código Java en su ordenador (Windows. aunque la conectividad y las herramientas que se utilizan todavía no están bien desarrolladas o no son tan exactas como el lenguaje del kit del Lego que se programa por medio de bloques. una API representa un interfaz de comunicación entre componentes y software. los que son utilizados para realizar programas para controlar robots tipo Lego. orientado a objetos. éste fue desarrollado por Sun Microsystems a principios de los años 90.5. Descripción de Java Java es un lenguaje de programación de alto nivel. Una interfaz de programación de aplicaciones (Application Programming Interface) un grupo de rutinas que conforman una interfaz y que son proveídas por un sistema operativo.6. Descripción del API iCommand Este es un API de Java libre y completo.

hay motivos todavía válidos para usar iCommand. Funciona en entorno Windows y Linux y permite comunicarse con el NXT vía USB. Permite realizar programas en Java para controlar robots. Algunas características • • • • Es un nuevo firmware alternativo para el NXT. Descripción del API leJOS NXJ Es un nuevo firmware para NXT y para RCX. La versión Alpha 0.NXJ estaba en desarrollo. Poco a poco se va completando e incorporando nuevos servicios. Incluso aunque leJOS NXJ esté ahora disponible. LeJOS NXJ funciona tanto para Windows como para Linux.7. éste sustituye el firmware oficial del Lego. 2.2 contiene soporte preliminar para Bluetooth. 34 . soporte para sensor de ultrasonido (I2C) y soporte para el sonido.

La planificación la realiza Prolog. y así tener una autonomía de decisión y acción. como se menciona en el Capítulo 1. A continuación se muestra el desarrollo del proyecto que lleva implícito el plan de entrega y creación de historias de usuario. un robot colocado en una posición inicial. • El sistema tiene que planificar la ruta que el robot tendrá que seguir para ir de la posición inicial a la meta. Inicio 1 2 3 4 5 6 7 8 9 10 Meta Figura 2. Esquema general del escenario.1. La planificación se realizó con la conjunción Java-Prolog. Requerimientos de usuario • El escenario que se utilizó está constituido por un camino lineal que tendrá de 0 a 5 obstáculos.3. 35 . y se especifica una posición final (meta) del robot. es decir no será una inteligencia humana la que decidirá la ruta a seguir. ya que este lenguaje está basado en lógica se facilita esta tarea. Aplicación de la metodología y desarrollo En este capítulo se describe el diseño y el análisis de acuerdo al método Extreme Programming (XP). 3.

3. • Se necesita saber qué tipos de lenguajes de programación existen para la conexión inalámbrica y hacer un análisis para seleccionar el que mejor se adapte al kit del Lego. • Una vez seleccionado el lenguaje de programación. Arquitectura de la interfaz máquina-robot.2. es necesario estudiar el uso del lenguaje y el uso de un API que se utiliza para la conexión con el robot. 3.3. 36 . • Es necesario conocer los elementos requeridos para hacer la conexión de la máquina y el robot. Arquitectura general de la interfaz máquina-robot. Java API ICommand Conexión inalámbrica Librería JPL Brick del robot Interprete Swi-Prolog Motores Algoritmo de planificación Figura 3. Requerimientos del programador Para describir cuáles son los requerimientos se tiene que conocer las problemáticas a solucionar antes de realizar el diseño.

la información que se recibe del usuario son las posiciones de los obstáculos. las secuencias de acciones obtenidas se envían a Java para que el API iCommand convierta las acciones en comandos o funciones que se utilizan para mover el robot. Conectividad máquina-robot y ejecución de código Java Para realizar el sistema se utilizó Java. la posición inicial del robot y la posición meta a donde tiene que llegar el robot. en particular los relativos a la conectividad y ejecución de comandos por el robot se realizaron los siguientes pasos: 37 . 3. Cabe mencionar que la meta no siempre es alcanzada debido a la imprecisión del robot.4. Swi-Prolog: una vez que recibe los parámetros provenientes de Java. 4. Para satisfacer parte de los objetivos. todo estos parámetros se trasfieren por medio de la librería JPL. Conexión inalámbrica: se utiliza la tecnología Bluetooth. Java: es la plataforma donde se realiza la interfaz y desde allí se mandan las preguntas necesarias para que Prolog realice la planificación.En este apartado se explica de manera general cómo funcionan los componentes de la arquitectura y las partes que se utilizaran para realizar la planeación de la trayectoria que debe realizar el robot Lego. es decir pretende alcanzar la meta. 2. busca la mejor trayectoria utilizando el algoritmo de planificación. entre otros. éste tiene la ventaja de ser un software de plataforma libre y fácil de instalar en máquinas con diferentes sistemas operativos como Windows y Linux. Brick del robot: recibe los comandos y los procesa para realizar las acciones especificadas en la trayectoria planeada. 3. A continuación se describen los flujos de comandos etiquetados con sus respectivos números: 1.

properties y otros archivos. Después de instalar Java y sus herramientas. se genera la carpeta API iCommand. en ella se encuentran las librerías del API. así como una descripción de ellos (consultar la página antes mencionada para conocer el uso de los otros paquetes). La API iCommand fue descargado de la página http://lejos. La API iCommand necesita un paquete llamado “rxtx” que se utiliza para la conexión y que también es software libre.sourceforge. refiérase al anexo A para conocer los detalles de instalación. se necesita instalar y copiar el siguiente software y paquetes: • Java jdk • Java(TM) SE (incluido en el Java jdk) • API iCommand. El Java jdk. 38 . el archivo iCommand.net/iCommanddownloads. y la API Lejos.Paso 1. el Java(MT) SE y editor Jcreator se tienen que instalar en la computadora. • Editor Jcreator. al descomprimir el API iCommand. se tienen que descomprimir el API iCommand y el paquete rxtx. Instalación de Java en la máquina Una vez revisada la bibliografía referente a Java y localizados los requerimientos para conectividad.php.frii. los que también son software libre. En dicha página también se encuentran tutoriales. • Paquete rxtx. el cual se descargo de la siguiente página http://users. la cual contiene las siguientes carpetas y archivos: • La carpeta “dist”.html. en la página también se encuentran otros paquetes.com/jarvi/rxtx/download.

• La caparpeta “docs”. A continuación se explica cómo agregar las librerías: abrir el editor Jcreator. se copian las librerías del API y del paquete rxtx en la carpeta jdk profiles del editor de Java. aquí están algunos ejemplos de códigos Java. los cuales son: rxtx parallel. Esto se realiza para llevar a cabo la conexión. es de gran ayuda para la utilización de los comandos. se necesita copiar los siguientes archivos de la carpeta del paquete rxtx en la subcarpeta llamada Windows. • Las carpetas que indican cómo utilizar el paquete en los sistemas operativos que lo soportan. Copiar archivos requeridos para la conexión Una vez instalado el software y descomprimido los archivos. Mac OS X y Solaris. la cual contiene las siguientes carpetas y archivos: • El archivo de la librería de dicho paquete para la conexión del API iCommand. Al momento de descomprimir el paquete rxtx se genera la carpeta rxtx. en este caso es Jcreator. • La carpeta “samples”. mostrando el uso de los diferentes dispositivos del robot. los cuales son Windows. Paso 2. en ésta se encuentra toda la información referente al API. • Otros archivos: los requeridos por el sistema. Para poder realizar y utilizar los componentes o herramientas para el código del Lego. después seleccione la opción jdk 39 .dll. en ésta se encuentran dos archivos que se tienen que copiar en la carpeta “bin” de Java. • Los archivos que indican cómo realizar la instalación y utilización. Linux. Hay otra subcarpeta llamada i368-mingw32. ir a menú configuración o configure y seleccionar opciones o options.dll y rxtx serial.

en el apartado de anexo C se describe en forma más detallada la instalación. la cual no necesita de configuración para la conexión.0_09\jre\lib\ext. por último de clic en el botón aceptar u ok para realizar la configuración del jdk de Java. el cual es un software libre. de clic en el botón editar o edit. se elige el botón de “variables de entorno”. se debe copiar en la ruta: C:\Archivos de programa\Java\jdk1.6.jar que se encuentra en la carpeta de API iCommand ubicada en la subcarpeta “dist” y seleccionar el archivo llamado “iCommand. • Se abre la ventana de “propiedades del sistema”. La librería del paquete rxtx se encuentra en la carpeta “rxtx-2. Para más información y detalles de instalación ver el anexo D. esto con la finalidad de mandar desde Java a Prolog las posiciones en donde se encuentran los obstáculos. Paso 3. el Bluetooth trae un software llamado bluesoleil que es soportado en el sistema operativo Windows 98/98SE/ME/2000/XP.0.jar que se encuentra en la siguiente ruta: C:\Archivos de programa\pl\lib.jar”. y se da clic en la pestaña de “opciones avanzadas”. 40 . después en la pestaña clases o class. se procede a instalar Prolog utilizando el instalador llamado “swi-Prolog. agregando la siguiente ruta: C:\Archivos de programa\pl\lib.5. se tiene configurada la conexión Prolog-Java. Conexión Prolog-Java para la planificación de la ruta Después de instalar Java. Una vez instalado Prolog se deben realizar las siguientes configuraciones: • El archivo jpl. la posición inicial del robot y la pregunta especificando la meta.exe”.1-7-bins-r2” y el archivo se llama “RXTX comm. seleccione la opción jdk versión 1. 3. Finalmente se aceptan las modificaciones dando clic en los botones de aceptar correspondientes. Después de realizar las acciones descritas anteriormente. Instalación del software de Bluetooth Esta parte es muy sencilla de instalar.jar”. de clic en el botón agregar o add y posteriormente buscar el archivo llamado iCommand. y posteriormente se modifica la variable del sistema llamada “path”. para que Prolog planifique la ruta que realizará el robot Lego.profiles.5.

a continuación se muestran los predicados empleados en la conexión y la descripción de éstos. Muestra la siguiente solución si existe. OneSolution() AllSolutions() NextSolution() HasMoreSolutions() Este método se utiliza para encontrar una solución al Query enviado. DESCRIPCION Esta clase se utiliza para hacer una consulta al archivo de Tabla 1.A continuación se describe la manera en que se conectan el intérprete Prolog y Java: Java utiliza una clase llamada Query con algunos de sus métodos para poder enviar a Prolog la posición inicial del robot. las posiciones de los obstáculos y la posición a la que deberá llegar. Tabla 2. a continuación se describe la clase y sus métodos: CLASE Query Prolog. 41 . Este método sirve para obtener todas las posibles soluciones al Query enviado. MÉTODO HasSolution() DESCRIPCIÓN El método sirve para preguntar a Prolog si tiene soluciones el Query enviado por Java. Métodos Para construir los Querys se requieren predicados predefinidos en Prolog. Clase Query. Este método pregunta si hay más soluciones al Query enviado.

s0)) legal(S).conviertealista(S.pl. Predicados. en este ejemplo en la posición 8. la solución con este nuevo formato será almacenado en la variable L y para ello se utiliza el predicado conviertealista. Después de insertar las cláusulas de posición inicial y de la posición del obstáculo. 42 .S). donde se requiere obtener una solución legal que deberá ser almacenada en la variable S y que además deberá contener la ruta a seguir para que el robot se encuentre en la posición final. Este predicado inserta una clausula al archivo abierto. En este ejemplo se inserta la posición del obstáculo cuyo valor es 7 y s0 indica el instante inicial.PRECICADO consult('robot2. En este ejemplo se inserta la posición inicial del robot cuyo valor es 5 y s0 indica el instante inicial.position(8. assert(position(5. se envía esta pregunta constituida por tres predicados.L) Tabla 3. Este predicado inserta una clausula al archivo abierto. en este ejemplo se abre el archivo robot2.pl') DESCRIPCIÓN Abre el archivo especificado como parámetro.s0)) assert(obstacle(7. Dado que el formato de S no es conveniente para enviar las ordenes al robot se requieren de la conversión de S a formato de lista.

Selección de tipo de conexión y el puerto de enlace. La contraseña es requerida solo la primera vez que se conecta el robot con la máquina y después se pueden realizar varias consultas bajo esta conexión sin necesidad de dar una nueva contraseña. la cual es proporcionada por el usuario y posteriormente el robot Lego muestra la contraseña que debe de ser aceptada para poder realizar el vinculo. éste solicita una contraseña. pues esta línea es requerida para la conexión. A continuación se muestra parte del archivo iCommand. pero antes. éste servirá para seleccionar el tipo de comunicación.properties. Una vez que se tiene instalado y configurado el software requerido. el cual se encuentra en la carpeta de iCommand que está en la subcarpeta “dist”. se procede a diseñar o a crear el código Java e implementar el planificador de trayectoria.type=rxtx. 43 . y también este procedimiento se realiza en la línea nxtcomm=COM4. Cuando el software del Bluetooth encuentra al robot Lego. y en el archivo se elimina el símbolo de comentario # en la línea nxtcomm.properties.Paso 4. Robot Lego El robot no se configura y tampoco se instala ningún firmware distinto al que trae de fábrica. Figura 4. en la carpeta donde se van a guardar las clases y los códigos Java se debe guardar un archivo llamado iCommand. lo único que se hace es aceptar una contraseña. dependiendo del puerto a utilizar se coloca el COM correspondiente a la conexión.

S). legal(do(A.S):.S).S). */ legal(s0). \+obstacle(Y. (X is Y-1.S).S).6.S). L). conviertealista(do(A.position(X. /* _________________Primitive Control Actions__________________________ */ primitive_action(advance). (X is Y-1.S):. se muestra a continuación el código del algoritmo: :-dynamic obstacle/2. Y is X +1. */ primitive_action(remove_obs(X)).S).S):. L):-conviertealista(S. conviertealista(s0. /* __________________Successor State Axioms for Primitive Fluents_________ */ position(X.do(A. L1). append(L1. S).position(Y. \+obstacle(Y. obstacle(X.S). poss(remove_obs(X).position(X.S)):-legal(S). poss(add_obs(X). []). X is Y+1). /* eliminar este comentario cuando se requiera utilizar las cuatro acciones primitive_action(reverse). Diseño Antes de realizar la creación de la interfaz se codifica el algoritmo de la planeación que se implementa en Prolog. /*___________Preconditions for Primitive Actions ______________*/ poss(advance. :-dynamic position/2.S)):.S).S). X is Y+1).position(Y. [A]. /*eliminar este comentario cuando se requiera utilizar las cuatro acciones poss(reverse.S):. Y is X -1.3. \+obstacle(X.poss(A. primitive_action(add_obs(X)).position(Y. ( 44 .

A=add_obs(X).forward().S). ( position(X.1) ).\+A=remove_obs(X).1.sleep(tiempoAvanza).C.B. \+A=advance.S). 45 .6. El hecho de no incluir las cuatro acciones.S)):.C. Interfaz Para poder realizar la interfaz lo que se realizó antes fueron unas pruebas de las funciones del robot con algunos métodos que se utilizan para hacer las rotaciones de los motores que el robot Lego tiene. pero en general se pueden utilizar cualquiera de dos de estos motores. obstacle(X. Para avanzar a una posición deseada se utilizó el siguiente código en Java: private void Avanza(){ if (contador== 1) { Motor.X is Y + 1) .do(A. 3. try { Thread.B. } else { Motor.(A=advance.forward(). son 3 motores que trae el kit. para mover el robot ya sea para atrás o para adelante en nuestro caso se utilizan los motores B y C. contador +=1.forward(). motor B y motor C.C.X is Y . (A=reverse. permitió optimizar el tiempo de respuesta del planificador. obstacle(X. ver líneas entre los símbolos de comentarios /* y */ en el código del planificador.stop(). Para mover un objeto en nuestro caso se utiliza el motor A. \+A=reverse ) . Motor. éstos tienen como nombre: motor A. ver sección de pruebas y resultados. }catch (Exception ex) {} Motor.stop(). Motor.

sleep(300). Fin de liberar obstaculo.A. 90 grados. Motor. obstáculo. }catch (Exception ex){} Motor. //Ojo.A.forward(). Inicio de avanzar el robot para no tropezar después remover el obstaculo.backward().stop(). //4. try { Thread.B.stop(). Fin de girar robot. Calcular el tiempo de giro para quedar en aprox.B. //3. try { Thread. Inicio de retroceder robot. }catch (Exception ex) {} Motor.stop(). contador=1. }catch (Exception ex) {} Motor.B.Motor.stop(). } } Para remover un obstáculo se utilizó el siguiente código en Java: private void Remueve(){ //1.B. //4. //2.forward(). //Ojo aqui. Fin de sujetar obstaculo. Avanza(). Motor. Calcular cuando ya tenga sujeto el //2. }catch (Exception ex) {} Motor.backward(). //5.C.stop(). 46 . Inicio de girar robot.sleep(1150). Puede ser el mismo número de sujetar.C. Inicio de sujetar obstaculo Motor. Fin de avanzar el robot. Inicio de liberar obstaculo.backward(). try { Thread.sleep(300). try { Thread.A.sleep(tiempoAvanza). //3.B.A.backward(). Motor. Motor. Motor. try { Thread. //Ojo aqui. //1.sleep(tiempoAvanza).

la meta y abrir el archivo de Prolog. A continuación se describen los códigos que envían y reciben la información de Prolog. Query q1 = new Query(t1). la posición de los obstáculos. Igual que el primer giro. } catch (Exception e) { System. Para enviarle al planificador la posición inicial. //6. try { q1. Inicio de girar el robot.stop().sleep(1150).hasSolution(). String t1 = "consult('" + file + "')".printStackTrace().C. e.forward().stop().}catch (Exception ex) {} Motor. Motor. } } Después de observar el comportamiento del robot con sus respectivos motores y acciones.B. }catch (Exception ex) {} Motor.println("No se abrió archivo " + file + "\nCausa:"). } finally { Ya abierto el archivo del planificador se le envía la posición inicial donde se encuentra el robot. Fin de girar el robot. //5. se prosiguió a realizar una interfaz en la cual se utilizó el mismo código para las acciones de avanzar y remover obstáculos y se agregó el modulo para obtener la planificación de trayectoria. Motor.B.stop(). //6. Posicion original. se utilizaron los siguientes códigos: Para abrir el archivo del planificador desde Java se utiliza el siguiente código. Posicion original.B. Fin de retroceder robot. try { Thread.out. esto se realizó con el siguiente código: 47 . //Ojo.

out. for (Integer posObstaculo: obstaculos) { String t3 = "assert(obstacle(" + posObstaculo + ". q3.s0))".S). String t2 = "assert(position(" + pos_inicial + ". Query q3 = new Query(t3).hasSolution().printStackTrace().s0))".hasSolution().q1. } catch (Exception e) { System.hasSolution() ? "provable" : "not provable") ).close(). e. e. } finally { System. return false.L)".out. } Posteriormente se le envía al planificador la posición del obstáculo lo cual se realiza por medio del siguiente código.println("Ocurri un error ejecutando: " + t2 + "\nCausa:").close(). } } Finalmente para enviarle la posición meta y al mismo tiempo solicitar un plan que permita llegar a dicha posición meta. String t4 = "legal(S). } catch (Exception e) { System.println(t2).println( t3 + " is " +(q3. } finally { System. 48 . try { q3. q2. try { q2.close().out.println("Ocurri un error ejecutando: " + t3 + "\nCausa:").out. se utiliza el siguiente código.printStackTrace(). Query q2 = new Query(t2). return false.conviertealista(S.position(" + pos_final + ". Query q4 = new Query(t4).

get("L")). -obstáculos: ésta se utiliza para indicar las posiciones de los obstáculos que se desean tener. return false. se debe dar un espacio después de meta.try { q4. Para proporcionar los datos requeridos por Java. los cuales son enviados al código Java para que envíe los datos al planificador y que éste realice la planeación. } catch (Exception e) { System.out.printStackTrace(). } finally { System. Compound c = (Compound) q4.println( "first solution of "+t4+":X =" +q4.get("L"). -meta: ésta se usa para identificar la posición meta. es decir la posición a la que llegará el robot. e. Ejemplo –meta 6 De la misma manera. se utiliza una pequeña ventana en la que se escriben palabras clave de la siguiente manera.close(). q4.toString(). es decir: la posición inicial del robot. las posiciones de los obstáculos y la posición meta.out. Ejemplo: -obstáculos 3 4 También debe haber un espacio después de obstáculos y después de cada número que indica la posición del obstáculo. -inicia: ésta sirve para indicar la posición inicial de robot en la trayectoria.println("Ocurri un error ejecutando: " + t4 + "\nCausa:").hasSolution(). el cual las interpreta y a su vez las ejecuta.oneSolution(). pasos = c.oneSolution(). Ejemplo: -inicia 1 Debe haber un espacio después de inicia y después del número que indica la posición. } Para enviar estos datos al planificador se realizó la siguiente interfaz en la se solicitan los siguientes datos. 49 . una vez realizada la planeación Java la recibe y envía las instrucciones al robot.

En la ventana se deben introducir los datos en la misma línea de comando, siguiendo el ejemplo, la línea queda de la siguiente manera: -inicia 1 –obstáculos 3 4 –meta 6

Figura 5. Interfaz de conexión entre planificador y robot.

50

4. Pruebas y Resultados
A continuación se describen diversos escenarios, cada escenario incrementa la dificultad de cálculo del plan, además cada vez se va haciendo más compleja la trayectoria del robot, debido a que en cada escenario va aumentando la cantidad de obstáculos en el camino. Aunque en cada escenario la solución se torna más compleja, cabe mencionar que el código que se ejecuta para la planificación siempre es el mismo. Se describen las pruebas realizadas con un planificador, ver sección 3.6.1, que incluye cuatro acciones: avanzar, retroceder, eliminar obstáculo y agregar obstáculo, éstas se utilizan en la planificación 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 aún 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 posición final (meta) sin ningún obstáculo intermediario.

Inicio

Meta

1

2

3

4

5

6

7

8

9

10

Figura 6. Escenario sin obstáculos. 51

Se calculará el tiempo de realizar la planeación y la transmisión de actividades a realizar por robot utilizando Bluetooth, se muestran los resultados en la siguiente tabla.

Inicial Obstáculo 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 ningún obstáculo utilizando 4 acciones.

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

Inicio

Meta

1

2

3

4

5

6

7

8

9

10

Figura 7. Escenario con un obstáculo.

52

Como se puede observar el tiempo de transmisión de las actividades que realiza el robot tiene tiempos entre 18.36 36.70 Seg. Seg.34 18. Seg.22 18.55 139. Seg. de 1seg. al igual que en el caso anterior. 7 4 1 3. Seg.00 seg. y 429 seg. Seg. Con la posición meta del robot de 2 a 7 la diferencia de tiempo de respuesta es. 7 2 1 3. 53 . Escenario con dos obstáculos. 7 9 1 3.70 19.37 18.68 18.Inicial Obstáculo 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.15 80. 7 3 1 3. Seg. Tabla 5. 7 6 1 3. mientras que si se tiene la posición meta del 8 en adelante incrementa considerablemente el tiempo de respuesta. Seg. 7 10 18.55 Seg.67 Seg.64 18.20 27.20 18. Prueba con dos obstáculos utilizando 4 acciones. Seg. 7 7 1 3. Seg. 7 5 1 3. En este tercer escenario se cuenta con un inicio. 18. Seg Tabla 6. Seg. Seg. Inicial Obstáculos Meta Tiempo 1 3. Seg. 7 8 1 3.35 19. Prueba con un obstáculo utilizando 4 acciones.10 19. Inicio Meta 1 2 3 4 5 6 7 8 9 10 Figura 8. también se tiene que planificar para esquivar los dos obstáculos y que el robot llegue a su meta. dos obstáculos y una meta.

Como se puede observar el tiempo de transmisión 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 diseñador. Con la posición meta del robot de 2 a 6 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posición meta del 7 en adelante incrementa considerablemente el tiempo de respuesta, como se puede ver no se colocaron los tiempos de la posición meta de 9 y 10 pues el tiempo de respuesta es muy largo y se necesita una respuesta “rápida”. Como se puede observar en este cuarto escenario, el robot se encuentra en la posición de inicio, y para llegar al final (meta), necesita esquivar tres obstáculos en su recorrido, las acciones se planificaran para esquivarlos y lograr el objetivo.

Inicio

Meta

1

2

3

4

5

6

7

8

9

10

Figura 9. Escenario con tres obstáculos.

Inicial Obstáculos 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 obstáculos utilizando 4 acciones.

Como se puede observar el tiempo de transmisión 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 diseñador. Con la posición meta del robot de 2 a 5 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posición meta del 6 en adelante incrementa considerablemente el tiempo de respuesta, como se puede ver no se colocaron los tiempos de la posición meta de 9 y 10 pues el tiempo de respuesta es muy largo y se necesita una respuesta “rápida”. En este quinto escenario, se planifica para que el robot esquive cuatro obstáculos y continúe con su trayectoria y así poder llegar a la meta.

Inicio

Meta

1

2

3

4

5

6

7

8

9

10

Figura 10. Escenario con cuatro acciones.

Inicial Obstáculos 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 obstáculos utilizando 4 acciones.

Como se puede observar el tiempo de transmisión 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 diseñador. Con la posición meta del robot de 2 a 4 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posición meta del 5 en adelante incrementa considerablemente el tiempo de 55

respuesta, como se puede ver no se colocaron los tiempos de la posición meta de 8, 9 y 10 pues el tiempo de respuesta es muy largo y se necesita una respuesta “rápida”. Se realiza la planificación en un último escenario, en el cual el robot logra esquivar 5 obstáculos que se encuentran consecutivamente, y poder continuar con su trayectoria para llegar a la posición meta.

Inicio

1

2

3

4

5

6

7

8

9

10

Meta

Figura 11. Escenario con cinco acciones.

Inicial Obstáculos 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 obstáculos utilizando 4 acciones.

Como se puede observar el tiempo de transmisión 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 diseñador. Con la posición meta del robot de 2 a 4 la diferencia de tiempo de respuesta es de 1seg, mientras que si se tiene la posición meta del 5 en adelante incrementa considerablemente el tiempo de respuesta, como se puede ver no se colocaron los tiempos de la posición meta de 7, 8, 9 y 10 pues el tiempo de respuesta es muy largo y se necesita una respuesta “rápida”.

56

5 18.08 Seg.30 Seg.22 Seg.06 Seg. 1 2.4 8 18.75 Seg 7 18.18 Seg.6 5 19.58 Seg.4. 6 18.77 Seg.4. Bluetooth. y 19.06 Seg. Tabla 12. 1 2. 10 18. 1 2. Inicial Obstáculos Meta Tiempo 1 2. Inicial Obstáculo Meta Tiempo 1 2.6 3 18. 4 18.6 7 17. Prueba con tres obstáculos utilizando 2 acciones. 1 2.75 Seg.4.80 Seg.4 6 18.2. Lo cual mejoró considerablemente el tiempo de respuesta del planificador como se muestra a continuación: Inicial Obstáculos Meta Tiempo 2 19.33 Seg. Prueba con dos obstáculos utilizando 2 acciones.79 Seg. 1 2.4.00 seg.07 Seg.67 Seg.4. Como se puede observar el tiempo de transmisión de las actividades que realiza el robot está entre 18.21 Seg.4 5 19.00 Seg.4 10 18.4.4 7 18.6 9 19.4 9 19. 1 2.4 4 18.4.00 seg. Pruebas utilizando la interfaz.07 Seg.20 Seg.70 Seg. robot y planificador con dos acciones Se realizaron otras pruebas eliminando las acciones no requeridas del planificador: retroceder y agregar obstáculo. 1 2.4.6 4 18.00 Seg.08 Seg. 1 2. 3 18.4.00 Seg. 57 .71 Seg. Tabla 11. Con la posición 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.6 6 18. 1 2.09 Seg. 1 2.6 8 18. 1 2. 8 18.4 2 18.30 Seg. Prueba sin obstáculos utilizando 2 acciones. 1 1 1 1 1 1 1 1 1 Tabla 10. 1 2.4.6 2 18.4 3 19.32 Seg. 1 2. 9 18. 1 2.6 10 19. 1 2. 1 2.

3.75 Seg.7.66 Seg. 9 2 17. Como se observa en las gráficas siguientes.Inicial Obstáculo s Meta Tiempo 1 2.3.5.5. 1 2.3.93 Seg. 9 4 17. 58 . 9 6 17. 1 2. Tabla 13.07 Seg.6. Tiempo (seg. 9 5 18.3. en cambio el tiempo de respuesta con dos acciones tiene rangos en la mayoría de las pruebas que varían de 1seg a 8seg. Prueba con cinco obstáculos utilizando 2 acciones. Comparación de planificación en escenario sin obstáculos.5. 1 2. 8 10 25.5. el tiempo de respuesta con cuatro acciones se dispara hacia rangos no satisfactorios.3.6. 1 2. 1 2.3.5.6. 9 8 19.44 Seg.5. 9 3 18.6.3.6.54 Seg.9 7 19. 9 9 20.6.33 Seg.06 Seg. 1 2.5. 1 2.6 .) 4 acciones 2 acciones 2 3 4 5 6 7 8 9 10 Gráficas 1.6.3.95 Seg 1 2.3.5.5.

59 . Comparación de planificación en escenario con dos obstáculos.Tiempo (seg.) 4 acciones 2 acciones 2 3 4 5 6 7 8 9 10 Gráficas 2.

) 4 acciones 2 acciones 2 3 4 5 6 7 8 9 10 Gráficas 3.Tiempo (seg. 60 . Comparación de planificación en escenario con tres obstáculos.

Comparación de planificación en escenario con cinco obstáculos. 61 .) 4 acciones 2 acciones 2 3 4 5 6 7 8 9 10 Gráficas 4.Tiempo (seg.

Conclusiones y trabajos futuros 5. Dado que el tópico es nuevo en la DAIS se abre una nueva línea de investigación a seguir por estudiantes y profesores que están interesados en las investigaciones relacionadas a planificación basada en lógica y ejecución de acciones por un robot móvil. Así una de las aportaciones que se realizan es la descripción detallada de los procedimientos a seguir para poner a funcionar un robot tipo Lego. cómo se realiza la planificación. cuyo resultado final fue que el robot alcanzara siempre su meta salvo que hay pequeñas desviaciones debido a imperfecciones en el hardware del robot. Cabe mencionar que la mayoría de lo que se utiliza son software libres. Se describen las herramientas. haciendo uso de un transmisor. cómo y qué se utiliza para la conexión.1. se pueden hacer las siguientes observaciones: 62 .5. en este caso Bluetooth. Conclusiones A partir de las pruebas realizadas con el robot y los programas utilizados. Después de haber obtenido la información necesaria para la conexión y transmisión de datos para la planificación de la trayectoria del robot con el lenguaje de programación Java y Prolog. En este documento se describen temas de robótica con la finalidad de facilitar la introducción del tópico. los lenguajes de programación. se logran obtener una planificación adecuada respecto a la meta especificada y una buena transmisión de datos al robot con respecto a su entorno. Al concluir esta tesis se da como resultado un preámbulo en la realización de investigación de tópicos relacionados con la inteligencia artificial dentro de la División Académica de Informática y Sistemas.

• Se necesitó conocer los fundamentos básicos del lenguaje de programación Prolog. • Se observó que el movimiento y las acciones del robot son un poco imprecisas ya sea en el avanzar o remover el obstáculo. con esto se obtuvo la autonomía del robot pues no se requiere a un ser humano para especificar lo que el robot debe hacer. • La conexión de Java con el robot se realizó por medio inalámbrico. con esto se logra conectar por Bluetooth la máquina con el robot. 63 . en cambio cuando el planificador tiene dos acciones se mejora el tiempo de respuesta. en base a esto se lograron correctamente la configuración para la transmisión de datos de Java a Prolog y viceversa. esto se logró con un API de Java llamado iCommand para lo cual se necesitó conocer el funcionamiento del robot y qué métodos se utilizaban para su movimiento. • Se realizaron pruebas en las cuales se observó que entre más obstáculos tenga el robot en su trayectoria se llevara más tiempo la planificación de su ruta. • Se observó que cuando el planificador considera cuatro acciones el tiempo de respuesta no es satisfactorio para escenarios que consideran más de dos obstáculos. para realizar la planificación de la trayectoria del robot y enlazar éste con Java.

5. Implementar ya sea con una palm o una PDA colocada directamente al robot para así no estar limitados a la distancia máxima de transmisión de datos del Bluetooth. Desarrollar estas pruebas con otro robot más sofisticado y preciso. se requiere lograr que el robot interactué con todo lo que tiene a su alrededor. Desarrollar alcances hacia ambientes distintos y dinámicos. Mejorar la conectividad y la transmisión de datos de máquina a robot. pues durante las pruebas se pudo observar que el comportamiento del robot Lego no es determinístico. Trabajos futuros Se espera que la realización de esta tesis motive el interés para realizar otros proyectos o tesis relacionados con el tema de robótica y automatización. En este proyecto se trato con un solo ambiente que era una línea recta. 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.2. 64 .

Knowledge Representation And Reasoning. Ángel. Gutierres. Demolombe R. 2000 Brachman. Fernandez.com Fecha de acceso: 6 – Noviembre – 2007. 2002. SpringerVerlag Berlin Heidelberg 2005. José. Pozos P. 17/julio/2002. Programación lógica Prolog. H.Bibliografía • Aedo Contreras.tripod. Fernández. Javier. A. Miguel. Guillermo. (Workshop del II Campeonato Argentino de Fútbol de Robots). J. URL: http://www. 9-11 de junio. WCAFR 2004. Universidad politécnica de Madrid. 2002. Fernández. Robótica Evolutiva y la próxima generación de robots autónomos.html Fecha de ultimo acceso: 9 / Nov/2007. URL: www. Escribano Gerardo. y Franklin. Tutorial básico de programación en Prolog. Theories Of Intentions In The Framework Of Situation Calculus. Introducción a Extreme Programming. URL: http://members. Jesús.desarrolloweb. Introducción a Prolog. M. S. Arántegui. F.programacioencastellano/tutorialbasicodeprogramacionenProlog. Universidad de Sevilla. León J. Fecha de último acceso: 10/Noviembre/2007. • • • • • • • • • • 65 . 2003. Bogner.de/Legomindstomrs/inicio.es. 2001. R. 2002. P. Maletic. N. ConAg: A Reusable Framework for Developing “Conscious” Software Agents. 2001. 2003. Alonso Jiménez. Correa. autonomía e información en sistemas cognitivos naturales y artificiales. y Javier y LEGO ® MINDSTORMS. Morgan Faufmann (2004) 285297.com/manuales. Levesque.. Que es Prolog. Fernández. Xabier. Barandiaran. 9 / Dic/2003. A.

“Experiencia de laboratorio en Robótica: De las Tortugas Simuladas a los Robots y Juguetes Autónomos una Oportunidad Para la Enseñanza de Programación. 2005 Editorial Nueva Librería. A K Peters Ltd. universidad politécnica de Madrid. Knowledge in Action. 2002. McGraw-Hill. Lenguajes de programación “Introducción a Prolog”. A. Inteligencia Artificial: Un Enfoque Moderno. Nuevos enfoques en el estudio de la mente. 2003. 2001. Moriello. 2005. 2005. 16 /Nov / 2005. Universidad de Valladolid.com/MeetMDP/SteveH. 2003. The LEGO Group.aspx M. (2005): Cognitive Substrates: What They Are and What They Learn. Kovács. “Interacción de Agentes Robots Autónomos en Ambientes Dinámicos Distribuidos”. Charles. Inteligencia Artificial: una nueva síntesis. M.com/2006/01/05/Lego-mindstorm-nxt-robots-are-smarter-andstronger-than-ever/ 66 • • • • • • • • • • • • • • .Lego. Mazza. y Ueno. 2007. 2002. S. Pablo san. J. Ierache. Joseph. Logical Foundations for Describing and Implementing Dynamical System. Hernández. 4 de marzo. M. Nilsson. Bruno. Buenos Aires. M. Lego Mindstorms. Moriello. Revista Tendencias Científicas. Norvig P. Ontología para planificación lineal. Anita. URL: http://Mindstorms. Bergren. 2004. Anatomy of a robot.• • Gortaris. Métodos y Software Open Source en Robótica. mcgraw-hill. Jones. 2005.Lego. Lego Corporation. Página personal del autor. 2004. Mobile robots: Inspirations to implementation. S. Bruno.com/ Fecha de ultimo acceso: 4 / Nov/ 07 URL:www. L. Computer Workshop. Mazza. Technical Report University of Toronto.engadget. Reiter R. Inteligencia Natural y Sintética. A. Russell S. URL: http://Mindstorms. Teodoro. Flynn. 19 de junio de 2005. N. Segundo C. Núñez Carlos. 2001. Ierache. H. Nils J. Pearson (2004). J. 12-Noviembre-2003.

67 . la electrónica. mecanismos automáticos. En otras palabras. Robótica: Ciencia que se ocupa básicamente de todo lo concerniente a los robots. pero diferentes. Grupo de rutinas conformando una interfaz que provee un sistema operativo. neumáticos. Utilizado especialmente en investigaciones sobre Inteligencia Artificial. que definen cómo invocar desde un programa un servicio que éstos prestan. como son: la mecánica. El lenguaje de programación Prolog pertenece al paradigma lógico. la automática y la informática. etc. sistemas de cómputos. una aplicación o una biblioteca. API: (Application Programming Interface . lo cual incluye el control de motores. sensores.Glosario Prolog : Lenguaje de programación de tipo lógico e interpretado. De esta definición podemos concluir que en la robótica se aúnan para un fin varias disciplinas concluyentes. una API representa un interfaz de comunicación entre componentes software.Interfaz de Programación de Aplicaciones).

Anexo A: Instalación del compilador de Java Este apartado mostrará cómo se realiza la instalación de Java con sus herramientas. Figura 12. Pantalla de inicio de instalación del paquete de Java. Se debe aceptar estas condiciones dando clic en el botón “aceptar o accept”. 68 . en este caso SUN. Posteriormente se muestra la pantalla donde se especifica los términos y condiciones del uso de Java. así como información del fabricante. Al momento de ejecutar el instalador Java(TM) SE se visualiza la pantalla de inicio de instalación. entonces se debe dar clic en el botón “siguiente o next”.

El usuario puede desactivar los elementos que no se requieran de Java. así como la ruta donde se va almacenar los componentes de Java. Figura 14. pero es recomendable que se deje la que trae por defecto. y también se puede cambiar la ruta de instalación. Pantalla de instalación de Java jdk y sus componentes.Figura 13. Una vez realizado los cambios dar clic en el botón “siguiente o next”. Pantalla de licencia del programa Java. se muestra la pantalla con los componentes a instalar. 69 . Después de dar clic en aceptar.

Una vez hechos los cambios. el usuario tiene la opción de desactivar algunos elementos y la ruta de instalación. el usuario debe dar clic en el botón siguiente o next. Figura 15. Después se prosigue a instalar la herramienta del ambiente de ejecución jre. Pantalla de proceso de instalación del paquete Java. 70 .Posteriormente aparece la pantalla que muestra el proceso de instalación. al igual en el caso precedente. y se debe esperar que el proceso termine para personalizar la instalación. Figura 16. Pantalla de instalación de la herramienta Java jre. Se recomienda que se deje la ruta que trae por defecto.

Nuevamente aparecerá una pantalla que muestra el avance del proceso de instalación. se muestra la pantalla que indica este hecho. El usuario debe esperar que el proceso termine. antes de finalizar debe seleccionar la casilla referente al archivo “readme”. y el usuario debe dar clic en el botón “finalizar o finish”. Figura 17. Si el usuario desea leer información general. Pantalla de proceso de instalación de Java™. Una vez que el proceso a concluido satisfactoriamente. 71 . Figura 18 Pantalla de finalización de instalación del paquete de Java.

El usuario debe seleccionar la opción “acepto los términos y condiciones” o “I accept the agreement”. el usuario debe dar clic en el boton “siguiente o next”. Después mostrará la siguiente pantalla donde muestra los términos y condiciones del uso del editor.exe. y posteriormente dar clic en el botón “siguiente o next”. el cual mostrará la siguiente pantalla de inicio de instalacion. Figura 19.Anexo B: Instalción del editor de Java: Jcreator Este apartado describe los pasos para la instalacion del editor de Java Jcreator. Ventana de inicio de instalación de Jcreator. 72 . Ejecutar el archivo Jcreator.

una vez definida la ruta. en esta pantalla aparece una ruta por defecto. A continuación mostrará otra pantalla que visualiza la ruta en donde se guardará el Jcreator. Figura 21.Figura 20. 73 . pero el usuario puede introducir o seleccionar otra ruta auxiliándose del botón buscar o “browser”. Licencia de Jcreator. Ubicación de la ruta de instalación de Jcreator. se debe dar clic en el botón “siguiente o next”.

Ventana de selección de acceso directo o rápido. Se puede cambiar el nombre de la carpeta. en la que se puede seleccionar una o las dos. Posteriormente se debe dar clic en el botón “siguiente o next”.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. 74 . Una vez seleccionadas. Selección de carpeta de menú inicio. La ventana siguiente muestra las opciones de creación de acceso directo. una es para un acceso directo en el escritorio y la otra de inicio rápido en la barra de herramientas. Figura 22. se debe dar clic en el botón “siguiente o next”. Figura 23. pero se recomienda mantener el nombre por defecto.

Ventana de resumen de opciones de instalación. para finalizar se debe dar clic en el botón “finalizar o finish”. Pantalla de finalización de instalación de Jcreator.Después se muestra un informe de las opciones elegidas previamente y se solicita el permiso para iniciar la instalación. Figura 24. Figura 25. la instalación iniciará. 75 . Si se da clic en el botón “instalar o install”. Se muestra la siguiente ventana que indica que la instalación finalizó y pregunta si desea ejecutar el editor.

Figura 26. 76 .En las siguientes imágenes se muestra cómo agregar las librerías del API iCommand y del paquete rxtx en el editor de Java Jcreator. Figura 27. Seleccionar el menú Opciones de Jcreator. Seleccionar jdk profiles y dar clic en editar o edit.

Figura 29. 77 . Visualizar las librerias agregadas y dar clic en “aceptar u ok.Figura 28. “Agregar o add” las librerías y buscarlas en la carpetas de la API icomand y el paquete rxtx.

se muestra la pantalla de bienvenida a la instalación. Selección de idiomas para la instalación de Bluetooth. 78 . se muestra la siguiente ventana que indica la preparación del asistente del proceso de instalación. en ella se debe seleccionar el idioma que desea utilizar para la instalación. Figura 30. en donde se debe dar un clic en el botón “siguiente”.Anexo C: Instalación del Programa del Bluetooth Se ejecuta el instalador de Bluetooth que muestra la siguiente ventana. Asistente del Proceso de la instalación Bluetooth. Una vez finalizada la preparación del asistente. Una vez seleccionado el idioma. Figura 31.

Figura 32. Figura 33. Después se muestra la ventana que contiene la licencia del programa que incluye algunas reglas de uso y descripción del fabricante. Pantalla de bienvenida a instalación de Bluetooth. Ventana que contiene licencia del programa. 79 .

Figura 34. Figura 35. se muestra la siguiente ventana que indica el porcentaje de instalación. 80 . Una vez seleccionada la ruta de instalación.Posteriormente se visualiza una ventana que contiene la ruta donde se instalara el programa del Bluetooth llamado “bluesoleil”. después se debe dar clic en el botón “siguiente”. se debe esperar que termine el proceso. Ventana de Selección de ruta de instalación de Bluetooth. Inicio de proceso de instalación. se recomienda dejar la ruta que trae por defecto.

Figura 36. Finalización de instalación de Bluetooth. es recomendable reiniciarla para así tener un buen funcionamiento del programa “bluesoleil”.Una vez concluida la instalación se muestra una última ventana donde se solicita la confirmación para reiniciar la pc. se debe dar clic en el botón “finalizar”. 81 .

Términos y acuerdos del software de swi-Prolog. Figura 38. éste visuliza la siguiente pantalla. Después que se le haya dado clic. Selección de componentes a instalar. Se ejecuta el software llamado swi-Prolog. 82 . se visualizará la siguiente pantalla. Figura 37. la versión del software.Anexo D: Instalción de swi-Prolog. La pantalla muestra la licencia. posteriormente se debe dar un clic en el boton “I Agree”.exe.

se visualiza la siguiente pantalla. Figura 39. se muestra también el espacio requerido y el espacio que hay disponible en disco. Figura 40. Ya seleccionada la carpeta de instalación. Selección de carpeta de instalacion. lo que permite visualizar la pantalla de selección de la carpeta donde se instalará swi-Prolog. Selección de extension de los archivos a ejecutarce con Prolog. después se debe dar un clic en “next”. una vez seleccionados los componentes a utilizar se debe dar un clic en el botón “next”.La pantalla muestra los componentes que se pueden seleccionar para la instalación junto con el swi-Prolog. 83 . Se recomienda que se deje el directorio que se muestra por default.

Finalización de instalación de swi-Prolog. se debe esperar unos minutos para que se instale por completo swi-Prolog. Figura 41.Donde se debe seleccionar la extensión default de los archivos utilizados por swi-Prolog. Ya terminada la instalación se debe dar clic en el botón “finished”. posteriormente se debe dar clic en el botón “install”. para finalizar la instalación. 84 . Proceso de instalación de swi-Prolog. Figura 42. A continuación se muestra el proceso de instalación.

El nuevo ladrillo inteligente NXT. dispone de un poderoso microprocesador de 32-bit y más memoria. 1. además la tecnología de transmisión utilizada es Bluetooth. 6. Tiene tres puertos para motores y cuatro puertos para sensores. teclas de navegación en la parte frontal. Sensor de sonido: permite al robot reaccionar al sonido. totalmente renovada incluye el brick procesador llamado NXT y es al menos 10 veces más potente que el antiguo RCX. Sensor de tacto: permite al robot sentir y reaccionar al entorno. y sus 85 .Anexo E: Robot Lego Mindstorms NXT El robot Lego Mindstorms es el que se está utilizando (Mindstorms NXT 2006). Sensor de luz: puede detectar luz y color. El NXT: el cerebro controlado por ordenador del robot Mindstorms. además de soporte USB 2. Otra característica es que los motores tienen servos integrados por lo que conocen su posición y su movimiento. Entradas y salidas Como medio de entradas posee tres conectores que permite capturar la información que proviene del los distintos sensores. Bluetooth y flash. un LCD monocromo. y 4 puertos en la parte inferior para conectar 4 sensores diferentes: tacto. Sensor de ultrasonidos: permite al robot medir distancias y reaccionar al movimiento. Servo motores: asegura los movimientos del robot con precisión controlada. sonido y ultrasonidos. La última versión. su cerebro. Este es el controlador del robot. 3. el "cerebro" de tu robot. Las entradas se conforman por un bloque de 2x2. 2. del tamaño de un iPod con un altavoz. Micro-controlador La parte principal de kit es el NXT. 5. Tiene 3 puertos en la parte superior para conectar los servos. luz. 4. Esta característica es un salto evolutivo.0.

En su modo de operación. y cuando se está ejecutando un programa. la pantalla de LCD posee un contador de ejecución en el que muestra las veces y el tiempo que se ha ejecutado el programa. 2004) 86 . Ierache. Pantalla LCD La pantalla de LCD que posee el Lego Mindstorms permite visualizar tres corridas de datos: • Superior. ésta se encuentra en movimiento Figura 43.cabezas se encuentran rodeadas de un material conductor que permite la lectura del sensor. • Central. muestra si hay conexión inalámbrica mediante el puerto infrarrojo. • Lateral izquierdo. la representación de la persona está detenida. • Inferior. indica el sentido de movimiento de los motores. indica el número del programa que se está ejecutando y muestra la imagen de una persona que se encuentra de dos posibles formas: en estado de detención. temporizador o valores registrados por un sensor. (J. zona alfanumérica que permite ver el contador. Lego Mindstorms. Las entradas se ubican en la parte superior de la pantalla de LCD. detección en las entradas de los sensores y el nivel de carga de las baterías.

los cuales permiten la detección de giros de la rueda. Los motores desmontables son alimentados mediante cables que poseen conductores eléctricos que transmiten la energía a los inductores. El modelo NXT usa servo motores. la información almacenada se pierde.2005) Piezas móviles Las piezas móviles que dispone Lego Mindstorms se centran principalmente en el sistema de rotación de bloque. indicando los giros completos o medios giros. las cuales se conectan en la parte posterior del bloque. produciendo que el sistema eléctrico sea susceptible a fallos. permitiendo almacenar los distintos programas y el firmware básico.5 volts. (Lego corporation. lo cual es controlado por el software. Estas piezas móviles se pueden clasificar en dos: 1. Pues las baterías alimentan a la pila que se encuentra dentro del bloque. Pieza de rotación: 87 . Como son motores paso a paso. Las baterías se conectan en paralelo y proporcionan energía tanto al bloque como a los motores que se conectan al mismo bloque. Otra advertencia que se realiza a los usuarios es la de evitar utilizar baterías recargables debido a que entregan menor o mayor potencia al bloque. para lograr que las ruedas se muevan en un movimiento circular con respecto al bloque completo. Una advertencia que se realiza en el manual de Lego Mindstorms respecto al reemplazo de las baterías es que la demora no debe ser mayor a un minuto.Alimentación eléctrica La alimentación eléctrica del bloque es mediante 6 baterías AA de 1. Si el reemplazo demora más de 1 minuto. el sentido de conexión no entrega la misma dirección de movimiento.

siendo hueco en el centro del mismo.5mm de diámetro el cual se puede poner en la punta de una barra que actúa como eje central de la rueda. son aquellas que sirven para fijar los ejes de rotación producidos por las piezas de rotación. donde se requiere que el robot deba realizar un movimiento no rígido en forma específica. Piezas de fijación Las piezas de fijación. permitiendo una simulación de ojos de un robot. Las piezas flexibles por lo general son tubos de plástico capaces de conectarse con dos bloques que se encuentren separados a una distancia menor de 4cm.0. como el brazo robot o el brazo clasificador de piezas. 2. lo cual permite añadir más piezas en la parte superior del bloque de rotación. Piezas flexibles Las piezas flexibles permiten recrear una articulación de un sistema articulado. Comunicaciones El bloque de NXT puede comunicarse con el computador mediante la interfaz de USB que posee. Esta pieza no posee una utilidad real. lo cual implica que son usadas en el centro de las ruedas que posee el Lego.0. Esta conectividad 88 . Pieza de giro: A diferencia de la pieza de rotación. Por lo general. pero sirve de adorno para el robot. para comunicarse con otros robots en las cercanías posee una interfaz Bluetooth que es compatible con la Clase II v 2. ajustando la misma para que no se salga durante la ejecución de un programa. son tubos de 0.Permite rotar un bloque de Lego con respecto a otro. Además. la pieza de giro permite girar un bloque en el espacio. y con las patas de conexión. la cual ya viene en la versión 2.

2. el robot queda en modo de arranque. Firmware El firmware del Lego Mindstorms consta de las instrucciones básicas que posee el bloque para hacer las distintas tareas que se le pueden programar en el bloque RCX. Para cargar el firmware debe ejecutarse el programa adjunto al kit y esperar aproximadamente 3 minutos para que se cargue completamente el firmware básico. lo cual permite que se pueda acceder a un programa que viene en forma nativa dentro del ladrillo. palms. Si no se carga el firmware. • Establecer el bloque NXT como visible o invisible para el resto de los dispositivos. Sensores y Motores Contiene 4 sensores que permiten realizar operaciones de acuerdo a las características de cada una que a continuación se describen: 1. Sensor de luz: este percibe luz de acuerdo a los colores bases que hay cada uno de ellos tienen un parámetro para que el sensor los pueda detectar. sino también con computadores. • Recordar dispositivos con los cuales se ha conectado anteriormente para conectarse más rápidamente. Sensor de sonido: tiene dos modos de configuraciones: 89 . y otros aparatos con esta interfaz de comunicación. (Arántegui. 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 baterías y la memoria se borre. • Buscar y conectarse a otros dispositivos que posean Bluetooth. teléfonos móviles. 2001) Dentro de las posibilidades de conexión se encuentran: • Conectar hasta tres dispositivos distintos.Bluetooth no tan sólo permite conectarse con otros bloques.

• Para detectar sonidos perceptibles por el oído humano. 3. Contiene también tres servomotores. en la misión de exploración de la superficie de Marte. ya que tienen integrados sensores de rotación. Sensor de tacto: este puede detectar tres estados que son presionado. para monitorear y controlar al robot Sojourner Rover. LabView es el entorno para el robot Lego Mindstorms NXT. (The Lego group. En cuanto a LabView cabe destacar que fue desarrollado por National Instruments y utilizado por la NASA. Otra característica: tiene 1 parlante de alta fidelidad. 4. • Para detectar además los sonidos no perceptibles por el oído humano (como ultrasonidos).3 cm. 90 • . 2004) Entorno gráfico para Lego Mindstorms A continuación se describe brevemente el entorno gráfico que trae el robot Lego para programarlo por medio de bloques ya estructurados: Entorno nativo para programar al NXT. Entorno LabView. Viene incluido en el kit NXT. De este modo se pueden lograr movimientos mucho más precisos y controlados. además los tres motores se puedan sincronizar perfectamente. Se lo puede configurar para detectar objetos lejanos o cercanos. Ierache. Las conexiones para sensores y servomotores son RJ11 Estos agentes robots son programables en entornos gráficos nativos. 2007) Figura 44. (J. mejorados con respecto a la versión RCX. Sensor ultrasónico: este actúa como un radar permitiendo la detección de objetos. mejorado. Detecta objetos entre 0 y 255cm con una precisión de +. libre y rebote.

Se pueden comunicar hasta 3 ladrillos NXT con Bluetooth. Comunicación con Bluetooth: el firmware del NXT permite una configuración de tipo Amo-Esclavo para la comunicación con Bluetooth. Estos bloques incluyen control de motores (avance. (J.• • • • Utiliza un lenguaje de icónicos de programación. que lo hace muy potente. existe un programa llamado RoboC. Para el NXT. encendido y apagado). constantes y timers. muy intuitivo. Se pueden crear bloques propios. y además incluye un firmware propio. adquisición de datos de los sensores. Además de estos entornos gráficos. Se proporciona una lista donde se enumeran las características más importantes de las principales herramientas de programación. estructuras de control (if else). retroceso. Estos entornos utilizan bloques que se ensamblan para formar un programa completo. se puede utilizar el paquete iCommand para NXT como interfaz. Ierache. Uno de los programas más utilizados y que aumenta enormemente las posibilidades de programación es el NQC de Dave Baum. repeat). existen una serie de programas que permiten la programación del control de un NXT en códigos más conocidos. 2004) 91 . Se baja el programa de la PC al bloque NXT utilizando un cable USB o Bluetooth. utilización de variables. que es mucho más completo que el NQC del RCX. Para utilizar Java se requiere de una interfase. ciclos repetitivos (while. por ejemplo Java.