PaqDid Programacion Robots Moviles
-
Upload
fercho-gaytan -
Category
Documents
-
view
95 -
download
0
Transcript of PaqDid Programacion Robots Moviles
Facultad de Matemáticas
PPaaqquueettee ddiiddááccttiiccoo ddee llaa AAssiiggnnaattuurraa
““PPrrooggrraammaacciióónn ddee rroobboottss mmóóvviilleess””
Impartida a los alumnos del sexto y octavo semestre de la Licenciatura en Ciencias de la
Computación, Unidad Tizimín
Elaborado por: M.C. Cinhtia Maribel González Segura
M.C. Michel García García
Tizimín, Yucatán. Agosto – Enero 2009
i
Contenido
Carta descriptiva .................................................................................. 1
Contenido del programa ....................................................................... 2
Manual de operaciones ......................................................................... 6
Sesión informativa. ........................................................................... 6
Unidad 1. Introducción a la robótica .................................................... 6
Unidad 2. Morfología de los robots ..................................................... 6
Unidad 3. Construcción de robots ....................................................... 7
Unidad 4. Programación de robots ...................................................... 7
Unidad 5. Aplicaciones ...................................................................... 7
Diapositivas del curso ........................................................................... 8
Sesión informativa ............................................................................ 8
Unidad 1 ...................................................................................... 10
Unidad 2 ...................................................................................... 13
Unidad 3 ...................................................................................... 16
Unidad 4 ...................................................................................... 21
Unidad 5 ...................................................................................... 37
Prácticas .......................................................................................... 41
Morfología del Robot ...................................................................... 41
Diseño de Robots ........................................................................... 42
Programación con Brixcc ................................................................. 43
Lecturas complementarias .................................................................... 46
Software .......................................................................................... 47
Referencias bibliográficas .................................................................... 48
1
Carta descriptiva
La asignatura “Programación de Robots móviles” se ofrece como asignatura optativa
para los estudiantes a partir de sexto semestre de la licenciatura en Ciencias de la
Computación de la Unidad Tizimín, plan 2004. El contenido de esta asignatura está
enfocado al diseño, construcción y programación de robots móviles empleando el kit
educativo de Lego Mindstorms así como diversas herramientas disponibles de manera
gratuita en la Internet.
El material que aquí se presenta fue elaborado por la M.C. Cinhtia Maribel González
Segura y el M.C. Michel García García durante el semestre Agosto 2008 – Enero 2009
y el material que se describe e incluye fue distribuido en su momento a los estudiantes
que tomaron el curso.
En primer lugar, se incluye el programa del curso, posteriormente se proporciona el
manual de operaciones que pretende describir la forma en que fue usado el presente
material en la impartición de la asignatura, después se presentan los recursos didácticos
empleados, tales como diapositivas, prácticas y ejercicios. Las diapositivas sirven como
guía en la exposición de los temas y en ellas se hace referencia a las prácticas y
ejercicios. Finalmente se incluyen las referencias bibliográficas consultadas para la
elaboración de este material.
Datos de la asignatura
Clave: OP-11.
Nombre: Programación de Robots móviles.
Plan: Licenciatura en Ciencias de la Computación.
Semestre: De 6º en adelante.
Créditos: 9.
Horas semanales: 4.5.
Total de horas: 72 horas ( 20 teóricas y 52 prácticas).
Requisitos previos: Ninguno.
2
Contenido del programa
UNIVERSIDAD AUTÓNOMA DE YUCATÁN
FACULTAD DE MATEMÁTICAS
MISIÓN
Formar profesionales altamente capacitados, desarrollar investigación y
realizar actividades de extensión, en Matemáticas y Computación, así como
en sus diversas aplicaciones.
LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN
OBJETIVO: Conocer los fundamentos de la robótica, estudiando el modelo dinámico del manipulador robótico como mecanismo rígido, los componentes electromecánicos de censado y actuación, las técnicas básicas de control de manipuladores, y los principios de la robótica móvil. Diseñar, construir y programar robots prototipo para la comprobación experimental de la teoría aplicándolos en la resolución de problemas reales.
MATERIA : PROGRAMACIÓN DE ROBOTS MÓVILES
NIVEL : SEXTO Y OCTAVO SEMESTRE
PERIODO : AGOSTO 2008 – ENERO 2009
PROFESORES : M.C. CINHTIA M. GONZÁLEZ SEGURA
M.C. MICHEL GARCÍA GARCÍA.
FECHA DE ELABORACIÓN: Julio 2008
AUTORES: M.C. Michel García García, M.C. Cinhtia Maribel González Segura
DURACIÓN DEL CURSO: 72 horas
DESCRIPCIÓN DE LA ASIGNATURA En este curso se pretende dar una orientación al alumno acerca de la programación de robots móviles en diferentes entornos de desarrollo y con rutinas orientadas principalmente a aplicaciones prácticas. Se trabaja con prototipos construidos utilizando piezas del kit Lego Mindstorms, el cual permite crear de forma creativa las formas necesarias del robot según el problema que se desea resolver. Se busca que el alumno adquiera las habilidades y destrezas en el manejo de técnicas de programación de robots para resolver problemas comunes en ciencias computacionales, particularmente, en el área de robótica. Se hace un repaso general de los aspectos clásicos presentes en la robótica y se describen los aspectos de investigación punteros en la actualidad en esos temas. Se concede especial importancia a las prácticas y trabajos escritos que sirven como complemento imprescindible a los contenidos teóricos del curso, así como de ampliación de determinados temas.
3
CONTENIDO Unidad 1. Introducción a la robótica 5 horas
Objetivo: Describir los antecedentes de la robótica, las definiciones esenciales y la
clasificación de los robots.
1.1 Antecedentes Históricos
1.2 Origen y desarrollo de la Robótica
1.3 Definición y Clasificación de Robots
1.4 Aplicaciones de los Robots
Unidad 2. Morfología de los robots 10 horas
Objetivo: Identificar las partes constitutivas de un robot manipulador y sus
parámetros de selección.
2.1 Estructura mecánica del Robot
2.2 Transmisiones y Reductores
2.3 Actuadores
2.4 Sensores Internos
2.5 Sensores Externos
Unidad 3. Construcción de robots 10 horas
Objetivo: Diseñar y construir robots móviles empleando piezas LEGO Mindstorms.
3.1 Kits de robots LEGO NXT
3.2 Ensamblado de piezas
3.3 Estructuras básicas
3.4 Diseños completos
Unidad 4. Programación de robots 30 horas
Objetivo: Programar rutinas de movimiento básicas utilizadas en la robótica para
controlar a los robots móviles.
4.5 Ambientes simulados
4.6 Lenguajes de programación
4.6.1 Gratuitos
4.6.2 Comerciales
4.6.3 Otros
4.7 Programación
4.7.1 Instrucciones básicas
4.7.2 Sintaxis
Unidad 5. Aplicaciones 17 horas
Objetivo: Describir e identificar las aplicaciones reales de los diversos tipos de robots
móviles.
5.1 Vehículos inteligentes
5.2 Minería
5.3 Espacio
5.4 Robots de servicio
5.5 Tendencias actuales
4
METODOLOGÍA DE LA ENSEÑANZA Exposición, Interrogatorio, Práctica, Tareas (individual y por equipo) El maestro expone los conceptos fundamentales de los temas en cuestión, da ejemplos y por último motiva al estudiante a resolver ejercicios en clase. Para reforzar la comprensión de estos ejercicios se dejarán tareas semanales que consistirán en la solución matemática de los problemas asignados y algunas veces de la programación de esta solución. ACTIVIDADES DE APRENDIZAJE Tareas escritas para promover la práctica de los conceptos. Exposición por parte de los alumnos de temas selectos. Autoestudio de temas complementarios. Análisis y discusión de artículos relacionados con la robótica. La adquisición de los conocimientos estará basada en la experimentación de la teoría en prácticas de laboratorio. PROYECTO SUGERIDO Al final del curso se realizará un proyecto que puede consistir en la aplicación de alguno de los temas contemplados en el curso, ejemplos de proyectos factibles de realizar son:
1. Diseño y programación de un robot móvil controlado a través de tecnología inalámbrica, como puede ser bluetooth.
2. Implementación de un sistema de control vía internet para movilizar un robot LEGO
3. Diseño y programación de un robot móvil que organice y sitúe correctamente las piezas localizadas en su entorno, en un plano bidimensional.
PRACTICAS SUGERIDAS Se propone realizar lo siguiente:
Práctica en la cual los alumnos identifiquen y determinen los grados de libertad y el espacio de trabajo de un sistema mecánico articulado.
Práctica sobre “Programación de Robots” en donde el alumno aplique la interface de control del robot Teach-Pendant.
Práctica sobre “Programación de Robots” en donde el alumno programe de forma textual los movimientos de un robot.
Que el alumno y el profesor realicen una práctica en donde se realice un programa en computadora que simule el modelo de la cinemática de un robot.
Que el alumno y el profesor realicen una práctica en donde se implemente un programa en computadora que simule el modelo de la dinámica de un robot y que juntos analicen los resultados de las simulaciones.
Que el alumno y el profesor realicen una práctica en donde se realice un programa en computadora que simule la trayectoria deseada que efectúe un robot y se analicen de forma grupal los diferentes resultados obtenidos.
Debate entre los alumnos sobre el tema del Control Avanzado de los robots.
5
Práctica orientada a simular un modelo de control de un grado de libertad de un robot.
RECURSOS DIDÁCTICOS Conferencia: acetatos, pizarrón. Comisión (equipos): computadora. CRITERIOS DE EVALUACIÓN
CRITERIO PUNTUACIÓN
2 Exámenes. 30 Tareas 20 Proyecto final 50
Total 100 puntos.
El examen ordinario se exenta con un promedio mínimo de 80 puntos. En caso de no exentar, la calificación final será: 50 % puntaje obtenido hasta el momento y 50 % examen ordinario. BIBLIOGRAFÍA
1. Stuart, Rusell y Peter, Norving. Inteligencia Artificial, un enfoque moderno. 2ª Ed. Prentice Hall. 2004.
2. Jonathan B. Knudsen, The Unofficial Guide to LEGO MINDSTORMS Robots. Ed. O’reilly. 1999
3. John J. Craig. Introduction to robotics mechanics and control. 3a Ed. Pearson/Prentice Hall. 2005.
4. María Rivas y Arantxa Rentería. Robotica Industrial: fundamentos y aplicaciones. Mc Graw Hill. 2000.
5. John Haugeland. La inteligencia artificial. Addison-Wesley Pub. 1988. 6. Patrick Henry Winston. Artificial Intelligence. 3ª ed. Addison-Wesley
Pub. 1992. 7. Michael Theath. Scientific computing, an introduction Survey. 2nd
ed. Mc Graw Hill. 2002. 8. Estela Díaz López, et. Al. Introducción al diseño de microrobots
móviles. Universidad de Alcalá, Noviembre 2006. 9. Mark W. Spong, M. Vidyasagar. Robot Dynamics and Control. John
Wiley & Sons Publisher, 1989. 10. G. Dudek and M. Jenkin. Computational principles of mobile
robotics. Cambridge University, Press, 2000. Perfil Profesiográfico del profesor: Licenciado en Ciencias de la Computación o carrera afín, preferentemente con posgrado y experiencia docente, de investigación o de trabajo en el área.
6
Manual de operaciones Las sesiones de la asignatura son en su mayoría prácticas por lo que se sugiere que se impartan en el laboratorio de sistemas inteligentes. Las primeras 3 unidades se pueden impartir en el salón de clases. Las últimas dos requieren del uso de una computadora por equipo por lo que se hace indispensable el espacio apropiado para la construcción de robots y programación de los mismos en el laboratorio.
Sesión informativa.
La primera sesión permite dar a conocer a los estudiantes el contenido de la asignatura, al igual que los lineamientos y políticas del curso, con el fin de que lo tomen en cuenta durante el curso. Las diapositivas de esta sesión se complementan con el programa del curso que se sugiere distribuir entre los asistentes.
Unidad 1. Introducción a la robótica
De las diapositivas 1 a 3 se presenta la introducción al curso a la vez que se realiza una lluvia de ideas para conocer el nivel del grupo en cuanto al tema de la robótica. En las diapositivas 5 y 6 se inicia con el tema 1.1 que se sugiere enriquecer con la lectura de algún material o artículo como los que se incluyen en este mismo material. De la diapositiva 7 a 9 se expone el tema 1.2 y se sugiere trabajar con el kit educativo para familiarizarse con las piezas y el funcionamiento de cada una de ellas. De la diapositiva 10 a la 17 se expone el tema 1.3 y en la diapositiva 18 se describe una actividad para aplicar los conceptos explicados. En la diapositiva 19 se presenta el tema 1.4 y posteriormente en la diapositiva 20 se describe la actividad correspondiente. En la diapositiva 21 se describe la tarea extra clase correspondiente a esta unidad y posteriormente se aclaran las dudas que pudieran surgir. Se sugiere realizar equipos de 2 ó 3 personas para trabajar con los kits y sobre sus proyectos durante del curso.
Unidad 2. Morfología de los robots
En las diapositivas 1 y 2 se describe brevemente el contenido de la unidad, y se hace un breve recordatorio de lo visto en la unidad anterior. De la 3 a la 9 se expone el tema 2.1, lo cual se sugiere hacer de manera participativa para asegurarse que se comprenden los conceptos y haciendo referencia al esquema de proyectos bajo el cual se trabajará durante el curso. En la diapositiva 10 se describe la actividad referente al tema. En las diapositivas 11 y 12 se expone el tema 2.2 y se sugiere hacerlo con ejemplos prácticos y empleando los kits robóticos con los que se puede armar diferentes modelos. Las diapositivas 13, 14 y 15 permiten exponer los temas 2.3, 2.4 y 2.5 respectivamente, pero se sugiere que después de explicar los conceptos, éstos sean aplicados a usos reales que sugieren, en diferentes tipos de robots. De la diapositiva 16 a 19 se presentan ideas relacionadas con los últimos tres temas, así como problemas comunes en los que son útiles cada uno de los elementos. Al finalizar la unidad se sugiere indagar sobre las propuestas de proyectos que han pensando.
7
Unidad 3. Construcción de robots
Se inicia con una breve descripción de las piezas que conforman el kit educativo que se emplea durante el curso, así como la existencia de ambientes virtuales en los que se simula la construcción, en caso de no contar con los kits reales. De las diapositivas 3 a 7 se expone el tema 3.1 a la vez que los estudiantes interactúan con las piezas reales del kit. De las diapositivas 8 a 10 se expone el tema 3.2, se presentan diferentes diseños y se describe el uso de los tipos de piezas cuando son empleadas a gran escala en la vida real, cubriendo el tema 3.3. De las diapositivas 12 a 23 se expone el uso de un ambiente virtual gratuito para construir modelos robóticos, posteriormente se sugieren varios modelos que pueden construir los estudiantes y finalmente la actividad descrita en la diapositiva 24 permite exponer el tema 3.4, cuyo funcionamiento se logra con el armado y la configuración básica descrita en las diapositivas 25 a 33. En la diapositiva 34 se describe la actividad que permite poner en práctica los conceptos vistos durante esta unidad.
Unidad 4. Programación de robots
El primer ambiente de programación que se presenta es el virtual, correspondiente al tema 4.1. Las diapositivas de la 1 a la 22 permiten exponer el ambiente Robocode, desde la creación de los robots hasta su programación y puesta en el campo de batalla. El tema 4.2 se sugiere como trabajo de investigación para los estudiantes, para lo cual trabajen en equipos y expongan su investigación incluyendo programas ejemplo del lenguaje correspondiente. Después de la revisión de las exposiciones, en las diapositivas 37 a 45 se expone un resumen de los lenguajes y ambientes de programación. El tema 4.3 es el más extenso del curso pues consiste en la programación de robots y se ha dividido en tres partes: programación directa en el ladrillo (diapositivas 23 a 36), programación empleando un ambiente gráfico (diapositivas 46 a 73) y programación empleando un ambiente de código estructurado (diapositivas 74 a 121).
Unidad 5. Aplicaciones
Los temas de esta unidad, del 5.1 al 5.5 se cubren realizando primero una breve investigación del tema y posteriormente empleando la herramienta RoboCenter que incluye el entorno gráfico NXT de Mindstorms para construir diversos modelos robóticos. En las diapositivas de esta unidad se construyen los modelos Tribot (diapositivas 4 a 23) y Alpha Rex (diapositivas 24 a 30), el primero con ruedas y el segundo con dos patas. Las sesiones se realizan siguiendo la metodología diseño-construcción-programación. Durante esta unidad se construyen y programan los modelos para que al final de la misma, los estudiantes realicen sus propios proyectos, que pueden ser sugeridos por ellos o bien pueden realizar alguno de los que se listan en la diapositiva 31.
8
Diapositivas del curso
Sesión informativa
Diapositiva
1
Programación de robots móviles
M.C. Cinhtia M. González Segura
M.C. Michel García García
Licenciatura en Ciencias de la computación
5º y 7º semestre
Contenido
Introducción
Programa propuesto
Recursos de trabajo
Videos
Preguntas y comentarios
Diapositiva
3 Introducción
¿Hay robots en nuestro entorno?
¿Son útiles?
Programa propuesto
Unidad 1. Introducción a la robótica
◦ Antecedentes, clasificación y aplicaciones
Unidad 2. Morfología de los robots
◦ Estructura, sensores y actuadores
Unidad 3. Construcción de robots
◦ Diseño y armado de robots con el kit LEGO
Unidad 4. Programación de robots
◦ Codificación de rutinas en ambientes simulados y
reales
Unidad 5. Aplicaciones
Diapositiva
5 Recursos de Trabajo
4 Kits Robots LEGO Mindstorm
2 kits Robots LEGO
4 kits Complementarios
Software de programación
◦ Mindstorms NXT
◦ Bricx
Libros en pdf
Requisitos previos
Conocimientos básicos de programación estructurada
Muchas ganas de trabajar sobre su proyecto
Deseable comprensión del inglés
Diapositiva
7 Robots Lego
Partes físicas
Programación
Videos ilustrativos
9
Diapositiva
9 Videos ilustrativos
NXT con
◦ cabeza
◦ 4 patas
◦ 6 patas
◦ Wall-e
Sitios web recomendados
http://nxtprograms.com/
◦ Lista de proyectos con instrucciones de ensamble y código del programa
◦ http://nxtprograms.com/projects.html
Diapositiva
11 Otros sitios
http://mindstorms.lego.com
◦ Sitio oficial de Lego NXT
http://thenxtstep.blogspot.com/
◦ Blog con varios videos hechos con LEGO, con ideas
muy interesantes de proyectos
http://www.todomicrostamp.com/proyectos.php
◦ Sitio con diversos recursos, manuales, videos, etc.
http://bricxcc.sourceforge.net/nbc/
◦ Recursos para programar en un lenguaje similar a C
Información adicional
Elaboración de un proyecto final
Cupo limitado a 18 personas
Requisito indispensable
◦ ¡Entusiasmo por aprender!
Diapositiva
13 Ejemplos de proyectos
Seguidor de líneas
Transportador de objetos
Exploración de terrenos
Robots con patas o con ruedas
Control inalámbrico
Control por sonidos
Entre otros
Preguntas y comentarios
¡Gracias por su atención!
10
Unidad 1
Diapositiva
1
Programación de robots móviles
M.C. Cinhtia M. González Segura
M.C. Michel García García
Licenciatura en Ciencias de la computación
5º y 7º semestre
Contenido
Unidad 1 Introducción a la robótica
◦ 1.1 Antecedentes históricos
◦ 1.2 Origen y desarrollo
◦ 1.3 Definición y clasificación
◦ 1.4 Aplicaciones
Diapositiva
3 Introducción
La Robótica es una tecnología multidisciplinaria.
Hace uso de todos los recursos de vanguardia de
otras ciencias afines:
◦ Mecánica
◦ Cinemática
◦ Dinámica
◦ Matemáticas
◦ Automática
◦ Electrónica
◦ Visión artificial
◦ Inteligencia artificial
◦ Entre otras
¿Qué es un robot?
¿Una licuadora?
¿Un coche?
¿Un portón automático?
Dispositivos mecánicos capaces de
realizar tareas que podrían desempeñar
seres humanos
Diapositiva
5 1.1 Antecedentes históricos
La palabra robot es de origen Checo y significa ―trabajo‖. Fue aplicada por primera vez a las máquinas en los años 1920.
Su origen está en los autómatas que realizaban acciones complejas para divertir a sus ricos propietarios.
Los primeros robots eran mecánicos, movidos por complejos engranajes y palancas.
5 Generaciones
Según Michael Cancel, director del Centro de Aplicaciones Robóticas de Science Application Inc. ◦ Las dos primeras, ya alcanzadas en los ochenta,
incluían la gestión de tareas repetitivas con autonomía muy limitada.
◦ La tercera generación incluiría visión artificial, en lo cual se ha avanzado mucho en los ochenta y noventas.
◦ La cuarta incluye movilidad avanzada en exteriores e interiores
◦ La quinta entraría en el dominio de la inteligencia artificial en lo cual se esta trabajando actualmente.
Diapositiva
7 1.2 Origen y desarrollo
Inician con los autómatas (mecánicos)◦ El califa Harún Al-Raschid regaló a Carlomagno, un
reloj en el año 809, en el cual aparecían figuras que daban la hora
◦ En 1354 en la catedral de Estrasburgo, se incorpora un gallo que aparece al dar la hora, bate las alas y canta 3 veces
◦ En 1558, el duque de Baviera hizo construir en Nüremberg una casa de muñecas
◦ En 1610 el relojero Aquiles Langenbucher fabricó instrumentos musicales que sonaban solos
Los robots electrónicamente controlados son un logro del siglo XX.
Historia de LEGO
En 1949 Godtfred Kirk Christiansen fabricó los primeros bloques LEGO.
En 1977 LEGO creó la línea Technik, que incorporaba engranajes, ejes, barras, placas, uniones universales, etc.
A fines de 1998, LEGO introdujo MindStorms (RIS 1.0, Robotics Invention System), con un cerebro llamado RCX (Robotics Command eXplorer) basado en el procesador Hitachi H8, con 32K de memoria RAM, capaz de controlar 3 motores, 3 sensores y un puerto de comunicaciones serial infrarojo. Una ROM, contiene un driver que se ejecuta al encender el RCX.
11
Diapositiva
9 Lego NXT
En el 2006 surge la versión NXT
◦ I2C, Bluetooth, USB, Bateras de Litio, Altavoces
◦ Procesador de 32 bits a a 48MHz, 64KB RAM + 256KB Flash
◦ Procesador 8 bits especco para controlar motores y odometría
◦ 4 puertos I2C de entrada y 3 puertos de salida para motores
◦ Puerto 4: EIA-485 link a 926.1 Kb=s (Bluetooth a 460.8 Kb=s)
◦ Cables con 6 hilos y 3 longitudes diferentes, conector pseudo RJ12.
1.3 Definición y clasificación
¿Qué es un robot?
¿Qué es la robótica?
¿Qué tipos de robots existen?
Diapositiva
11 ¿Qué es un Robot?
Deriva de la palabra checa ―robota‖.
Literalmente significa ―esclavitud‖,
―servidumbre forzada‖
Máquina mecánica o autómata capaz de
interactuar con el entorno y tomar
decisiones propias11
¿Qué es la Robótica?
Ciencia que se encarga del diseño y
construcción de máquinas capaces de
desempeñar tareas repetitivas o peligrosas
para el ser humano
Es el área de la Inteligencia Artificial (IA) que
se encarga de los estudios de los robots.
La robótica no sólo incluye elementos de IA
sino también de mecatrónica, computación y
otras áreas de la Ingeniería.12
Diapositiva
13 Características de un Robot
Diseñados para sustituir al humano en
algunas tareas.
13
Características de un Robot
Capaces de actuar en función de la
información recibida del mundo real.
14
Diapositiva
15 Características de un robot
Un robot se debe componer de:
◦ Mecanismo para desplazarse
◦ Mecanismo para percibir el mundo exterior
◦ Mecanismo para interactuar con el entorno
15
Clasificación
Robots experimentales
◦ Desarrollados universidades, empresas e instituciones con el propósito de investigar campos concretos de la robótica
Robots industriales
◦ Manipuladores. Soldan, pintan, taladran, trabajan con productos peligrosos
◦ De control remoto. Se utilizan para localizar gente sepultada, desactivar explosivos, tender cables en el fondo del mar, tomar muestras de minerales en la luna. Los hay terrestres, submarinos, aéreos y espaciales.
◦ Prótesis y asistentes. Sustituyen miembros humanos (manos, piernas, brazos) y prestan asistencia a personas con minusvalías.
◦ De uso doméstico. Ayudan en tareas domésticas, como aspirando el polvo o cortando el césped
12
Diapositiva
17 Clasificación
Los robots se clasifican según su forma en:
◦ Androides: Imitan la forma humana
◦ Móviles: Se desplazan mediante ruedas
◦ Zoomórficos: Con forma de animales
◦ Poliarticulados: Con partes móviles y pocos
grados de libertad
◦ Híbridos: Mezclan características
17
Actividad
Clasifica los siguientes robots en androide,
móvil, zoomórfico o poliarticulado
◦ Brazo robótico del carro de la CFE
◦ Wall-e
◦ Aspiradora automática que se desplaza
automáticamente para limpiar los pisos
◦ Helicóptero
◦ Robot Sony AIBO
◦ Asimo de Honda
Diapositiva
19 1.4 Aplicaciones de los robots
¿Qué movimientos pueden realizar?
◦ Girar
◦ Transportar
◦ Caminar
◦ Nadar
◦ Volar
◦ Alcanzar
◦ Rotar
◦ Empujar
Snake Robot
Actividad
Formar equipos de trabajo (2 ó 3
personas)
Armar un robot móvil utilizando uno de
los kits de Lego
Diapositiva
21 Tarea 1
Traer 2 propuestas posibles del proyecto
que desarrollarán en el curso
Preguntas y comentarios
¡Gracias por su atención!
13
Unidad 2
Diapositiva
1
Programación de robots móviles
M.C. Cinhtia M. González Segura
M.C. Michel García García
Licenciatura en Ciencias de la computación
5º y 7º semestre
Contenido
Unidad 2 Morfología de los robots Estructura mecánica del Robot
Transmisiones y Reductores
Actuadores
Sensores Internos
Sensores Externos
◦ Programación básica del NXT
Diapositiva
3 2.1 Estructura del robot
Un robot esta formado por los siguientes
elementos:
◦ estructura mecánica
◦ transmisiones
◦ sistema de accionamiento
◦ sistema sensorial
◦ sistema de control
◦ elementos terminales
Estructura mecánica
Mecánicamente, un robot esta formado
por una serie de elementos o eslabones
unidos mediante articulaciones que
permiten un movimiento relativo entre
cada dos eslabones consecutivos.
La constitución física de la mayor parte de
los robots industriales guarda cierta
similitud con la anatomía del brazo
humano.
Diapositiva
5 Grados de libertad
El numero de grados de libertad que tiene
un brazo robot es el número de
magnitudes que pueden variarse
independientemente, por lo general
coincide con el numero de articulaciones
móviles.
Grados de libertad
Se necesitan 3 grados de libertad para
posicionar el efector terminal en un
espacio de trabajo tridimensional.
Se necesitan otros 3 para dirigir el efector
terminal hacia cualquier dirección.
Diapositiva
7 Articulaciones
Grados de libertad
El numero de grados de libertad del
robot viene dado por la suma de los
grados de libertad de las articulaciones
que lo componen.
14
Diapositiva
9 Articulaciones
Son comunes dos tipos de articulaciones:
la prismática y la giratoria.
Una prismática, también conocida como
deslizante, posibilita a un eslabón
deslizarse en línea recta sobre otro.
Una giratoria, si consideramos el caso de
un grado de libertad, toma la forma de
una bisagra entre un eslabón y el
próximo.
¿Cuántas grados de libertad?
Diapositiva
11 2.2 Transmisores y reductores
Transmisor
◦ Elemento encargado de transmitir el
movimiento desde los actuadores hasta las
articulaciones
Reductores
Su función es realizar una reducción
elevada de velocidad en un único paso
Diapositiva
13 2.3 Actuadores
Tienen como misión generar el
movimiento de los elementos del robot
según las ordenes dadas por la unidad de
control
Ejemplos:
◦ Motores
2.4 Sensores internos
Proporcionan los valores reales de las
variables a controlar
Sensores de posición
Sensores de velocidad
Diapositiva
15 2.5 Sensores externos
Su objetivo es dotar al sistema robótico
de cierta capacidad sensorial
Ejemplos:
◦ Sensor ultrasónico
◦ Sensor de tacto
◦ Cámara
◦ Sensor de sonido
Hacen posible que el sistema tome sobre
la marcha sus propias decisiones
Funcionamiento de un Robot
1. Inicializar el robot: Situarlo en el mundo.
2. Recibir información por los sensores.
3. Procesar la información recibida.
4. Desplazar/Activar partes del robot.
16
15
Diapositiva
17 Funcionamiento de un Robot
Mecanismo habitual de 3 ruedas:
◦ 2 ruedas motorizadas, con motores
independientes.
◦ 1 rueda ―muerta‖ para soportar el equilibrio.
Para hacer girar el robot, se modificará la
velocidad y el sentido del giro de cada uno
de los motores por separado.17
Funcionamiento de un robot
Se puede captar el entorno a través de los
sensores del robot:
◦ Choque: Detecta colisiones físicas del robot.
◦ Sonar: Calcula la distancia del robot a otros
objetos del entorno.
◦ Infrarrojos: Detección de distancias, etc.
◦ Cámaras: Obtiene los datos mediante visión.
18
Diapositiva
19 Problemas Principales de un Robot
Localización ¿Dónde estoy?
Respuesta de los sensores: ¿Hay obstáculo?
Respuesta del sistema: ¿Todo ok?
19
Preguntas y comentarios
¡Gracias por su atención!
16
Unidad 3
Diapositiva
1
Programación de robots móviles
M.C. Cinhtia M. González Segura
M.C. Michel García García
Licenciatura en Ciencias de la computación
5º y 7º semestre
Contenido
Unidad 3 Construcción de Robots
◦ Kits de robots LEGO NXT
◦ Ensamblado de piezas
◦ Estructuras básicas
◦ Diseños completos
Programación básica del Ladrillo
NXT
Diapositiva
3 SISTEMA DE ROBOTICA DE LEGO
¿Cómo funciona la computación básica?
Entrada Salida
El procesador ejecuta los comandos.
La memoria guarda los programas y datos.
Las entradas recogen información del exterior.
La salida interactúa con el exterior.
MEMORIA
Procesador
Diapositiva
5 ¿Cómo funciona un robot?
Sensor – Un robot capta a través de él
información de su entorno
Control – Un robot usa la información
para tomar una decisión
Actuadores – Un robot necesita partes
móviles para realizar órdenes
¿Como se mueven los robots?
Sensores
Motores
Ruedas
Programándolos!
Diapositiva
7 Fases principales de la Robótica
Diseñar y Construir – Usaremos las instrucciones de la constructopedias y las piezas del kit Lego Mindstorms NXT.
Programar – Mediante algún lenguaje (VB, Java, Lejos, NXT-G, bloques Mindstorms, etc.)
Experimentar – Comprobaremos si funciona correctamente o si hay que ajustarlo, tanto en su diseño como en su programación.
Diseño y Construcción
Engranajes y ejes
Barras y conectores
Motores y ruedas
Sensores y cables
El ladrillo programable NXT
En este curso usaremos las piezas de LEGO®
para construir nuestros robots
17
Diapositiva
9 Top 4 Diseños Lego
Diseñar
Sitios con instrucciones de montaje de
varios modelos
◦ http://lrobotikas.net/lehenak/instrucc.htm
◦ http://ricquin.net/lego/instructions/
Diapositiva
11 Diseñar Lego Digital Designer for Windows
◦ Permite generar instrucciones de ensamble
◦ Descarga: http://ldd.lego.com/download/
◦ Manual: http://ldd.lego.com/support/
Carpeta LegoDigitalDesignerForWinSetup.exe
Pantalla inicial
Pestaña Mindstorms
Choose:
Starter Model: modificar uno hecho
FreeBuild: construir desde cero
Recent Model: construcciones previas
Diapositiva
13 Espacio de trabajo
Control de cámara
Piezas Lego
Herramientas
Seleccionar
Clonar
Girar
¿Pintar?
Borrar
Actividad
Construir en el Lego Digital Designer
Realizar lo que se muestra:
1. Incluir el NXT
Diapositiva
15 2. Rotar hasta obtener la imagen
3. Seleccionar el conector
18
Diapositiva
17 Incrustar el conector
Repetir con otro conector
Diapositiva
19 Seleccionar e incrustar
2 conectores más
Diapositiva
21 Agregar un motor
Incrustar el motor
Diapositiva
23 Generar instrucciones
Actividad
Seleccionar un modelo y construirlo en el
LDD
◦ http://lrobotikas.net/lehenak/instrucc.htm
◦ http://ricquin.net/lego/instructions/
19
Diapositiva
25 ConstruirLEGO® Motores y sensores
Motores
Sensor
de sonido
Sensor de
contacto
Sensor
de luz
Sensor
ultrasonidos
Sensores
Luz
Sonido
Tacto
Ultrasónico
Servomotor
Diapositiva
27 Ladrillo LEGO® NXT
INTERFACE DEL NXT
¿Cómo nos entiende el ladrillo NXT?
Gracias a un software especial que se instala en el
ladrillo NXT. Este software o firmware debemos
instalarlo en el ladrillo (ya está hecho).
Firmware cargado
Tic, Tic ..
Firmware no
cargado
Diapositiva
29 ¿Cuándo debemos cargar ese Firmware?
El Firmware debe ser cargado para que el
NXT entienda nuestros programas.
Solo requiere ser cargado cuando:
◦ Instalemos un nuevo Firmware.
◦ Cuando se ha perdido el último
Firmware.
Conexiones del NXT
CONEXIÓN DE LOS MOTORES
CONEXIÓN DE LOS SENSORES
CONEXIÓN DEL NXT AL PC
Diapositiva
31 MENUS DISPONIBLES EN EL NXT
En “My Files” se encuentran todos los programas
que podemos realizar desde el NXT o el PC.
En “Software Files” están
los programas que
descargamos desde el PC.
En “NXT Files” están los
programas que hacemos
en el NXT.
En “Sound Files” están los
sonidos que forman parte
de un programa.
En “NXT Program”
programamos nuestro
robot sin usar el PC.
En “Try Me”
experimentamos con
los motores y sensores.
En “View” obtenemos
datos de los motores y
sensores.
En “Settings” ajustamos
los parámetros del
NXT.
En “Bluetooth”
cambiamos la conexión
del NXT a Bluetooth.
20
Diapositiva
33 Instrucciones para el ladrillo
Especificar la tarea
◦ Entradas que se deben proporcionar
◦ Salidas que se deben producir
Desarrollar un algoritmo
Expresar ese algoritmo en algún lenguaje
de programación
Actividad
Utilizando la interfaz directa (botones del
ladrillo), incluir las instrucciones
necesarias para que el robot:
◦ Dibuje una figura geométrica en el piso
(círculo, triángulo, cuadrado)
◦ Avance cuando detecte un sonido
◦ Pare cuando detecte una colisión
Diapositiva
35 Preguntas y comentarios
¡Gracias por su atención!
21
Unidad 4
Diapositiva
1
Programación de robots móviles
M.C. Cinhtia M. González Segura
M.C. Michel García García
Licenciatura en Ciencias de la computación
5º y 7º semestre
Contenido
Unidad 4. Programación de Robots
◦ Ambientes simulados : robocode
Diapositiva
3 ¿Qué es Robocode?
Un entorno de simulación de guerras de
robots, desarrollado por Alphaworks de
IBM
Permite programar tanques de
combate en Java para pelear en el
campo de batalla contra tanques
programados por otros jugadores.
Introducción
Existen dos modos de juego:
◦ Batalla individual: cada robot lucha contra todos los
demás
◦ Batalla en equipo: un ejército de robots lucha por
la victoria de modo colaborativo.
En este caso veremos la batalla individual.
Diapositiva
5 Robot
Cuerpo del robot
Cañón
giratorio
Radar
giratorio
Descripción del problema
El objetivo del juego es generar la IA que
permita a un robot derrotar a otros robots
Robocode cuenta con multitud de métodos
para gestionar los disparos y los ataques a
nuestros enemigos ()
Al principio de cada combate todo robot
comienza con un nivel de energía por defecto,
y un robot muere cuando su energía
disminuye hasta 0
Diapositiva
7 Energía del robot
La energía de un robot puede disminuir por ◦ Alcance de un disparo enemigo
◦ Colisión con un robot enemigo
◦ Colisión con paredes u obstáculos del campo de batalla
◦ El disparo resta energía al robot
Mientras más energía se utilice en un disparo, mayor daño se infringirá en el robot enemigo (en caso de alcanzarlo) pero también más energía nos restará a nosotros
Se recupera energía cuando se alcanza a algún enemigo, o bien, de forma constante por ―enfriamiento de los cañones‖
Descripción del sistema
En Robocode hay dos elementos
principales: los robots y las batallas
Las batallas se llevan a cabo en el terreno
de combate entre los robots, que juegan
por sí mismos bajo una programación
concreta
22
Diapositiva
9 Actividad 1
Abrir el campo de batalla
◦ Elegir a 2 robots e incluirlos
¿Quién gana a quién?
Acciones del robot
public void setAhead(double distancia)◦ Mueve el robot hacia adelante la distancia pasada por
parámetro. Si choca con algún obstáculo, se detiene
public void setBack(double distancia)◦ Mueve el robot hacia atrás la distancia pasada por parámetro.
Si choca con algún obstáculo, se detiene
Diapositiva
11 Acciones del robot
public void setTurnLeft(double grados)
◦ Rota el tanque/robot ―n‖ grados a la izquierda
public void setTurnRight(double grados)
◦ Rota el tanque/robot ―n‖ grados a la derecha
Acciones del robot
public void setTurnGunLeft(double grados)
◦ Rota el cañón del robot y el radar ―n‖ grados a la izquierda
public void setTurnGunRight(double grados)
◦ Rota el cañón del robot y el radar ―n‖ grados a la derecha
Diapositiva
13 Acciones del robot
public void setTurnRadarLeft(double grados)
◦ Mueve el radar a la Izquierda ―n‖ grados
public void setTurnRadarRight(double
grados)
◦ Mueve el rada a la derecha ―n‖ grados
Acciones del robot
public void setFire(double potencia)◦ Dispara una bala, el rango válido de potencia va de 1 a 3
◦ La bala sigue el trayecto al que apunte el cañón
◦ Si se alcanza al enemigo causará el daño equivalente a (4*potencia)
Diapositiva
15 Colores del robot
setColors(Color.black,Color.red,Color.blue);
◦ Black: Cuerpo del robot
◦ Red: Cañon
◦ Blue: Radar
Mas colores:
◦ Yellow
◦ Pink
◦ White
◦ Green
Eventos
ScannedRobotEvent
◦ se lanza cuando el radar detecta un robot a su paso por una zona angular
HitRobotEvent
◦ se lanza cuando nuestro robot alcanza con un disparo a uno de los enemigos
HitWallEvent
◦ se dispara cuando el robot choca contra un muro de los que limitan el campo de batalla
HitByBulletEvent
◦ se lanza cuando nuestro robot es alcanzado por un disparo
23
Diapositiva
17 Clase ScannedRobotEvent
public double getDistance()
◦ Devuelve la distancia al enemigo
Clase HitRobotEvent
public double getEnergy()
◦ Devuelve la energía del enemigo
Diapositiva
19 Ejemplo
Ejemplo de Robot
Diapositiva
21 Robot inteligente
Actividades principales para ser
competitivo:
◦ MOVERSE inteligentemente
◦ ESQUIVAR ataques
◦ APUNTAR con precisión
◦ DISPARAR adecuadamente
Actividad 2
Crear su propio robot
◦ Crear un nuevo robot desde el editor
◦ Abrir el campo de batalla
◦ Incluir a su robot creado
Hacer inteligente a su robot
Diapositiva
23 Configuración NXT
Conexión Bluetooth
24
Diapositiva
25 Ciclo de desarrollo
Construir, programar y probar
Conexión de sensores
Diapositiva
27 Try Me – Modo de prueba
En el submenú View se pueden probar los
sensores y motores para observar su
funcionamiento
Sensor de Tacto
Diapositiva
29 Sensor de sonido
Sensor de luz
Permite distinguir entre luz y obscuridad.
25
Diapositiva
31 Sensor ultrasónico
Permite detectar obstáculos, distancias y
movimiento.
Calcula el tiempo que toma a una onda de
sonido chocar con un obstáculo y regresar,
tal como hace un murciélago
Mide distancias de 0 a 2.5 mts. con una
precisión de +- 3 cms.
Dos sensores en el mismo cuarto pueden
interferirse mutuamente
Sensor ultrasónico
Diapositiva
33 Servo motores
Programación básica
Diapositiva
35 Instrucciones directassonido
ultrasónico
luz
Actividad
Utilizando la interfaz directa del NXT,
incluir las instrucciones necesarias para
que el robot:
◦ Dibuje una figura geométrica en el piso
(círculo, triángulo, cuadrado)
◦ Gire cuando detecte una colisión o un
obstáculo cercano (una de las 2 opciones)
◦ Avance cuando detecte un sonido
◦ Otra acción o rutina que ustedes elijan
Diapositiva
37 Entornos de programación
Ambiente de programación gráfico
◦ NXT-G, desarrollado por National
Instruments for LEGO, ROBOLAB, etc.
Código estructurado
◦ NXC, (Not eXactly C) es un lenguaje similar
a C, para el NXT; NQC, PBLUA, etc.
Lego NXT-G
26
Diapositiva
39 Robolab
Robot C
Diapositiva
41 NXC
PBLUA
Diapositiva
43 NXJ
Fases del Desarrollo
12
Construcción
Programación
Ejecución
Diapositiva
45 Ejecución de un programa NXT
Escribir
programa en la
PC (NXT-G)
Programa
convertido a
bytecodes
(texto)
Descargar
al NXT
NXT
ejecuta
los
comandos
Los bytecodes son
convertidos a
instrucciones del
código máquina
Mindstorms Edu NXT
27
Diapositiva
47 Arrastrar y soltar, y ejecutar
Programación con Mindstorms NXT
1. Robot educator.
2. Portal para conexión a
paginas de internet de
LEGO.
3. Barra de tareas.
4. Videos demostrativos.
5. Ventana de ayuda.
6. Área del mapa de trabajo.
7. Iconos de comienzo de
nuevo programa o abrir
últimos programas
realizados.
8. Paletas del programa.
Diapositiva
49 Entorno de Desarrollo
17Propiedades
Zona de Programación
Bloques
Guía
Comunicación y Memoria
Cuando el NXT está conectado:
Cambiar el nombre
Diapositiva
51 Bloques comunes
Paleta Common
Diapositiva
53
¿Cómo creamos un nuevo programa?
Al hacer clic sobre “New
Program” se abre el área
de trabajo.
Al cerrar el “Robot
educator”
tendremos un área
de trabajo mayor.
Lugar donde nos podemos
comunicar con el NXT siempre que
este conectado con el cable USB o
por bluetooth.
Paletas de trabajo
del programa.
28
Diapositiva
55 BARRA DE TAREAS
Nuevo
Programa
Abrir Programa
creado
Guardar
Programa
Cortar una
parte de un
programa
Copiar una
parte de un
programa
Pegar una
parte de un
programa
Ratón en
función puntero
Ratón en
función mano
de arrastre
Función para
introducir
comentarios en
mi programa
¿Cómo hacer un programa?
Diapositiva
57 Como descargamos nuestro
programa al ladrillo NXT
Actividad 1
Conectar su NXT, insertar un icono de
sonido en el área de programación, en las
propiedades elegir el sonido de su
preferencia y descargarlo al NXT.
¡Probarlo!
Diapositiva
59 ICONOS BASICOS DE
PROGRAMACION
Actividad
Dibujar un cuadrado
◦ Dado el rectángulo
ABCD, moverse de
A a B, de B a C a D.
Un triángulo ACD
Diapositiva
61
29
Diapositiva
63
Diapositiva
65
Actividad
Utilizando la interfaz Mindstorms NXT,
incluir las instrucciones necesarias para
que el robot:
◦ Dibuje una figura geométrica en el piso
(círculo, triángulo, cuadrado)
◦ Avance cuando detecte un sonido
◦ Pare cuando detecte una colisión
◦ Avance con evasión de obstáculos
Diapositiva
67 Revisión de tareas
Dibujar un cuadrado
◦ Dado el rectángulo
ABCD, moverse de A
a B, de B a C a D.
Un triángulo ACD
Evasión de obstáculos
Diapositiva
69 Actividades
1)
SOLUCIÓN
30
Diapositiva
71
Actividad
Al programa de evasión de obstáculos
que realizaron usando su sensor
ultrasónico, agregarle un sensor de tacto
y detenerse en caso de detectar un golpe.
Diapositiva
73 Robot seguir de líneas
¿Qué vamos a ver hoy?
Construcción del Robot Tribot
Software Disponible Para programar el
NXT
Programación en Bricx
Diapositiva
75 Construcción del Tribot
• Motor de la derecha
conectado al puerto A
• Motor de la izquierda
conectado al puerto C
• Motor del centro
conectado al puerto B
Software Disponible
Diapositiva
77 Software Disponible
Programación en Bricx
Not eXactly C (NXC)
Primer programa:
◦ Hacer que el robot se mueva hacia adelante
durante 4 segundos, luego se mueva hacia
atrás durante otros 4 segundos, y después se
detenga
31
Diapositiva
79 Primer Programa
Conectar el robot al puerto USB
Abrir el Bricx
Vamos al menú File y seleccionamos New
Primer Programa
Escribir el siguiente código:
Diapositiva
81 Primer Programa
Analizando el código:
◦ OnFwd(OUT_A, 75);
Esta instrucción inicia la salida A, esto es, el
motor conectado en el puerto A se moverá hacia
adelante con una potencia del 75 %
◦ OnFwd(OUT_C, 75);
Hace lo mismo que la instrucción anterior, pero
con la salida C
◦ Después de esas 2 instrucciones, el robot
deberá avanzar hacia adelante
Primer Programa
• Analizando el código:
– Wait(4000);
• Esta instrucción nos dice que el programa esperará 4 segundos, pero el robot seguirá avanzando
– OnRev(OUT_AC, 75);
• El robot se moverá en reversa con una potencia del 75%
• Nota: se pueden usar ambos motores simultáneamente A y C
– Wait(4000);
• El programa espera otros 4 segundos
– Off(OUT_AC);• Apagamos ambos motores
Diapositiva
83 Guardando el programa
Guardamos el programa
Compilando el programa
Compila el programa
Diapositiva
85 Descargando el programa
Descargamos el programa al NXT
Cambiando las velocidades
Realizar los siguientes cambios en el
programa:
Se debe observar como la velocidad de
avance y reversa disminuyen
32
Diapositiva
87 Haciendo Girar el robot
• Escribir el siguiente código:
• El robot debe avanzar un momento y después girar 90 grados ala derecha
• Nota: El tipo de superficie puede influir en los grados a girar
ProgramaTres.nxc
Definiendo Constantes
El ambiente de programación en Bricx
nos permite definir constantes en nuestro
programa
Escribir el siguiente programa:
ProgramaCuatro.nxc
Diapositiva
89 Definiendo Constantes
En las primeras 2 líneas definimos las
constantes
Dos buenas razones para el uso de
constantes son:
◦ Es mas entendible
◦ Es mas fácil cambiar algún valor
Actividad 1
Programar el robot para que se mueva
hasta realizar un cuadrado
Diapositiva
91
Repitiendo Comandos
• Realizando un cuadrado repitiendo comandos
• Escribir el siguiente código:
• El número dentro de la sentencia repeat indica cuantas veces se repetirá el código entre las llaves
ProgramaCinco.nxc
Repitiendo Comandos
Hacer que el robot realice 10 cuadrados
utilizando repeat
ProgramaSeis.nxc
Diapositiva
93 Añadiendo comentarios
Uso de variables
El uso de variables es un aspecto
importante en cualquier lenguaje de
programación
Podemos guardar valores y cambiarlos a
nuestra conveniencia
33
Diapositiva
95
Uso del Random
El valor move_time se generará aleatoriamente
entre un valor de 0 a 600
El valor turn_time se generará de
aleatoriamente entre un valor de 0 y 400
ProgramaNueve
Uso del If
Ejemplo: El robot avanzará hacia adelante y
después girará a la izquierda o derecha,
dependiendo del valor del ramdom
ProgramaDiez
Diapositiva
97 Comparaciones
• == Igual a
• < Menor que
• <= Menor o igual a
• > Mas grande que
• >= Mas grande o igual a
• != Diferente de
• && and
• || or
Siguiente clase
Uso de sensores
Diapositiva
99 Uso de sensores
añadir el sensor de tacto al Tribot, si aún
no lo tiene:
Ejemplo
El robot avanza hasta chocar con algo
◦ IN_1: Puerto de entrada del sensor, existen
IN_2, IN_3 e IN_4
◦ SENSOR_TOUCH: sensor de tacto, existen
LIGHT, SOUND, SONAR
Diapositiva
101 Actividad
Hacer que el robot avance evitando
obstáculos: cuando choque con un objeto
debe retroceder, girar y continuar.
Solución:
Sensor de luz
Terminar el Tribot, si aún no está listo
34
Diapositiva
103 Actividad
Escribir el siguiente código. ¿Qué hace?
Para apagar la luz del sensor
Antes del ciclo, incluir:
Diapositiva
105 Actividad
Hacer que el robot espere un sonido para
avanzar y se detenga cuando escuche
otro sonido (aplauso, chiflido, zapateado,
etc.)
Solución
Un posible código es:
Diapositiva
107 Actividad
Usando el sensor ultrasónico, hacer que
el robot evite chocar con un obstáculo
Tareas (Task)
El NXT puede realizar múltiples tareas,
esto es posible utilizando unas partes de
código llamadas subrutinas que podemos
colocar en diferentes partes del código
Estas subturinas pueden ser llamadas
desde nuestro main
Diapositiva
109 Tareas
Ejemplo: El robot
se moverá
realizando
cuadrados,
cuando detecte
un obstáculo lo
intentará esquivar
Tareas
Nota: Ambas subtareas
intentan acceder a los
motores, esto puede
llevarnos a resultados
inesperados, por eso se
utiliza mutex (exclusión
mutua)
TextOut(10, LCD_LINE3,
"avanzando");
35
Diapositiva
111 Actividad
Realizar un programa que haga que el
robot se mueva de forma autónoma y
aleatoria, evada obstáculos, usando el
sensor ultrasónico y el de tacto
simultáneamente
Subrutinas
A veces necesitamos una misma parte del
código en nuestro programa, en este caso
podemos poner ese código en una subrutina y
mandarla a llamar
Ejemplo:
Diapositiva
113 Subrutinas
Ejemplo sin argumentos:
Subrutinas
Ejemplo con dos argumentos:
Diapositiva
115 Actividad
Modificar el programa del movimiento
autónomo con evasión de obstáculos para
que utilice subrutinas, los argumentos
serian: potencia del motor y el tiempo
Definiendo Macros
La definición de macros nos sirve para
poder definir trozos de código en
nuestro programa y utilizarlo las veces
que sea necesario
Diapositiva
117 Definiendo Macros y
Argumentos El uso de argumentos nos permite pasar
valores a nuestras macros
Actividad
Utilizar al menos 3 Macros en su
programa que navega de forma autónoma
36
Diapositiva
119 Haciendo Música
Nuestro NXT puede realizar diversos
sonidos, esto puede ser de gran ayuda
para decirnos o alertarnos de que algo
esta sucediendo. Por ejemplo un choque
Haciendo Música
PlayTone(frecuencia, duración)
Diapositiva
121 Haciendo Música
Usando subtareas y música de forma
simultánea
Preguntas y comentarios
¡Gracias por su atención!
37
Unidad 5
Diapositiva
1
Programación de robots móviles
M.C. Cinhtia M. González Segura
M.C. Michel García García
Licenciatura en Ciencias de la computación
5º y 7º semestre
Contenido
Unidad 5. Aplicaciones
◦ Robo Center : TriBot
◦ AlfaRex
◦ Proyectos finales
Diapositiva
3 Fases del Desarrollo
3
Construcción
Programación
Ejecución
Robo Center
Tribot
Diapositiva
5 Robo Center
Vehicles – Tribot
1. Driving Base
◦ Building Guide (Guía de construcción)
Modificar lo necesario para obtener el nuevo
diseño del robot Tribot (3 servomotores)
◦ Programming Guide (Guía de programación)
Programar al robot para ir adelante sobre el tapete
de pruebas (hasta la base de la pelota) y luego
retroceda hasta el punto de inicio a una velocidad
más rápida
◦ Test Guide (Guía de prueba)
Robo center - Tribot
Guía de prueba
◦ Ver si el robot:
1. Se detiene cuando llega a la pelota.
— Si no, cambiar la distancia.
2. Retrocede al punto inicial.
— Si no, cambiar las direcciones del motor.
3. Va más rápido en reversa que avanzando.
— Si no, incrementar la potencia.
Next Step: 2. Bumper
Diapositiva
7 Tribot
2. Bumper
◦ Guía de construcción
Armar el sensor de tacto y colocarselo al robot
◦ Guía de programación
Hacer que avance hasta tocar la pelota y sólo
entonces retroceda
◦ Siguiente paso: 3. Grabber
Tribot
3. Grabber
◦ Guía de construcción
Añadir las ―tenazas‖ al robot
◦ Guía de programación
El robot avanza hasta tocar la pelota (Sensor de
tacto), se detiene, sujeta la pelota y retrocede hasta
el punto inicial a una velociada más rápida
◦ Guía de prueba
Verificar que funcione correctamente
◦ Siguiente paso: 4. Control de sonido
38
Diapositiva
9 Tribot
4. Sound Control
◦ Construcción
Agregar el sensor de sonido
◦ Programación
El robot avanza hasta tocar la pelota, se detiene, y
cuando aplaudas una vez cierra la ―tenaza‖ y
regresa en reversa hasta el punto inicial
◦ Prueba
Descargar y probar el programa
◦ Siguiente paso: 5. Sensor de luz
Tribot
5. Sensor de luz
◦ Construcción
Agregar el sensor de luz
◦ Programación
El robot avanza hasta tocar la pelota, se detiene, y
cuando aplaudas una vez cierra la ―tenaza‖ y
regresa en reversa hasta la línea negra
◦ Prueba
Descargar y probar el programa
◦ Siguiente paso: 6. Localizar un objeto
Diapositiva
11 Tribot
6. Localizar un objeto
◦ Construcción
Agregar el sensor ultrasónico
◦ Programación
El robot sólo avanza si detecta la pelota enfrente,
toca la pelota, se detiene, y cuando aplaudas una
vez cierra la ―tenaza‖ y regresa en reversa hasta la
línea negra
◦ Prueba
Descargar y probar el programa
◦ ¡Listo!
Tarea (para el …)
Construir y programar, con ayuda del
Robo Center, una de las otras tres
opciones (elijan):
◦ Máquina
Robo-Arm T56
◦ Animal
Spike
◦ Humanoide
Alpha Rex
Diapositiva
13 Paso de datos entre bloques
Ejemplo: Si la intensidad de luz es >60
avanza, si no, retrocede
Tipos de datos válidos
Numérico
◦ Enteros, incluyendo negativos y con parte
decimal (no hay reales). De -2147483648 a
2147483647. Defecto: 0.
Lógico
◦ Dos posibles valores: Verdadero o Falso.
Defecto: False.
Texto
◦ Cadena de caracteres alfanuméricos.
Defecto: ―‖
Diapositiva
15 Orígenes de datos
Sensores
◦ Luz: intensidad de luz
◦ Ultrasónico: distancia de un objeto
◦ Sonido: decibeles de un sonido (loudness)
Bloques Math
◦ Resultado de operaciones
Utilidad Programas más compactos, menos
consumo de memoria y tiempo de
procesamiento
39
Diapositiva
17 Ejemplo: suma de valores
Se tienen 2 datos numéricos de entrada:
250 y 177, se desea mostrar en pantalla el
resultado.
Nota: útil para depurar programas
Variables
De lectura (el valor se asigna con cables
de datos o valores generados por un
bloque) o escritura (permite actualizar
su valor directamente)
Contiene:
◦ Nombre
Caracteres alfanuméricos sin espacios
◦ Tipo
Numérico, Lógico y Texto.
◦ Valor
Inicia con el valor por defecto y puede cambiarse
Diapositiva
19 Definición de variables
Menú Edit
◦ Define Variables
Bloque para Variables
Una vez definida, se puede utilizar
Diapositiva
21 Operadores aritméticos
Se realizan sobre operadores enteros
+, -, *, y /
En una división, se pierden los dígitos
decimales. (13/4) = 3, no 3.25. (15/4) = 3,
no redondea.
Flujos paralelos
Mientras una parte del programa realiza
cierta rutina, otra parte realiza una
diferente
Diapositiva
23 Ejemplo
Realizar el programa HouseFly:
Piernas del Alpha-Rex
Especial cuidado con la posición de los
motores
40
Diapositiva
25 Programación
Debe caminar hacia adelante mientras se
despliega en la pantalla un corazón
latiendo
Cuerpo del Alpha-Rex
Usar 6 pilas recargables por el espacio
que ocupa la pila del NXT
Diapositiva
27 Programación
El robot debe caminar hacia adelante, dar
la vuelta y regresar a su punto de partida
Cabeza del robot
Programación: Debe decir
―Hello‖ cuando estés
parado frente a él y decir
―Good bye‖ cuando te
quites de enfrente
Diapositiva
29 Brazos del robot
Programación
Cuando toques su
sensor de tacto debe
decir ―Play the music‖
y balancearse, cuando
escuche música o
aplausos debe bailar y
detenerse al tocar
nuevamente su sensor
de tacto.
Sensor de luz
Programación
Si no hay luz, debe
decir ―Good Night‖ y
desplegar ―zzzz‖ hasta
que haya luz
nuevamente y diga
―Morning‖
Diapositiva
31 Proyectos finales
Propuestas personales
Sugerencias
◦ Silla de ruedas autónoma que evite precipicios
y evada obstáculos
◦ Comunicación entre un teléfono celular y una
silla de ruedas móvil, empleando bluetooth
◦ Aprendizaje por refuerzo en robots móviles,
evasión de obstáculos y exploración del
entorno
Preguntas y comentarios
¡Gracias por su atención!
41
Prácticas
Morfología del Robot
1. ¿Cuál es el número de grados de libertad del robot?
2. Determina los tipos de robot y número de grados de libertad necesarios que se
pueden emplear para extraer pieles de una mesa rectangular plana y clasificarlas
en diferentes almacenes.
3. Los actuadores de un robot pueden adoptar distintas disposiciones en la
estructura mecánica de un robot, confiriendo a éste características diferentes.
Comentar las alternativas más usuales destacando las ventajas y los
inconvenientes de cada una de ellas
42
Diseño de Robots
Construye virtualmente el robot Tribot empleando la herramienta Lego Digital
Designer.
Posteriormente, modifica el robot Tribot para obtener un diseño personal de algún robot
que resuelva un problema del mundo real.
43
Programación con Brixcc
1. Introducción En esta práctica se pretende familiarizar al alumno con las herramientas necesarias para la
programación de robots móviles construidos con Lego Mindstorms, en particular con los
Lego NXT.
El lenguaje que se utilizará para la programación es el denominado NXC (Not eXactly C)
para los nuevos Lego NXT. En el caso que se utilice el antiguo Lego RCX, el lenguaje a
utilizar para el mismo será el denomidao NQC (Not Quite C). Ambos se pueden desarrollar
bajo el entorno que nos proporciona el software Bricx Command Center.
En los siguientes apartados se explica en detalle cómo instalar las herramientas necesarias,
así como el objetivo y desarrollo de la práctica.
2. Software Necesario 2.1 Instalación del Entorno de Programación
Los equipos que están en el laboratorio ya tienen instalado todo el software necesario para
el desarrollo de la práctica. No obstante por si alguien desea instalarlo en su equipo o bien
tuviera que hacer una reinstalación, explicamos el procedimiento a seguir.
Trabajaremos bajo Windows, así que los siguientes pasos son aplicables para ese sistema
operativo en particular.
Necesitaremos tener en nuestro sistema instalado el driver denominado Mindstorms NXT
Driver 1.02 .
Tras esto, descargamos el Bricx Command Center, el cual será el entorno que utilizaremos
para la programación en el lenguaje NXC.
2.2 Compilar y Descargar Programa desde el Bricx Command Center
Al ejecutar el Bricx Command Center (a partir de ahora BricxCC) nos aparecerá una serie
de opciones antes de abrirse el entorno. En ellas se pregunta qué tipo de Mindstorms vamos
a conectar y en qué puerto lo tenemos conectado.
Importante tener el NXT conectado por usb y encendido antes de abrir el BricxCC para que
éste pueda detectarlo. No obstante si no fuera así, tendríamos que darle a la opción “Find
Brick” una vez tengamos listo el NXT.
Seleccionaremos en primer lugar las siguientes opciones:
En ellas le indico que estoy conectando el NXT a través del puerto usb del ordenador y que
el tipo de ladrillo conectado es el NXT, así como el firmware (Standard por defecto)
Para el caso del RCX, seleccionaremos RCX como tipo de ladrillo y el puerto com
asociado.
Una vez hayamos seleccionado las opciones arriba reseñadas, estaremos ya listos para crear
nuestro primer “Hola Mundo” en NXC.
Creamos un nuevo archivo, lo guardamos con extensión .nxc (importante este paso) y
escribimos nuestro algoritmo.
Una vez escrito, debemos compilarlo. Para ello o bien seleccionamos la opción “Compile” o
directamente pulsamos “F5”.
44
Si está el programa bien escrito, no nos devolverá ningún mensaje de error y tan solo nos
quedará descargarlo al NXT.
Para ello, seleccionamos la opción “Download”, dentro del menú “Compile” o bien
directamente pulsamos la tecla “F6” y se procederá a la descarga del programa en la
memoria del NXT.
Además de todo esto, en el menú “Tools” encontramos cantidad de utilidades muy
prácticas, como pueden ser un control remoto para nuestros robots, o bien la posibilidad de
poder ver lecturas de sensores, y mucho más.
En caso que intentemos descargar un programa y el entorno no nos ofrezca la posibilidad de
compilar o descargar nuestro código, quizás sea porque cuando abrimos el BricxCC el NXT
no estaba correctamente conectado o bien, estaba apagado. En este caso se ha de seleccionar
la opción “Find Brick” teniendo el NXT conectado correctamente y encendido. Tras ello,
las acciones de compilar y descargar volverán a estar activas nuevamente.
Adicionalmente podemos ver el software educacional que viene con el pack Lego NXT, el
cual está asociado con LabView. Dentro de este entorno nos encontramos con algunos
tutoriales acerca de la construcción de pequeños robots con ciertas funcionalidades
definidas. El entorno de desarrollo se basa en ir colocando componentes gráficos e
interconectandolos entre sí.
Podemos utilizarlo como alternativa para comprobar código de otros desarrollado bajo ese
entorno y poder descargarlo en el NXT para ver su funcionamiento.
3. Objetivo del problema La práctica a desarrollar consistirá en desarrollar un robot móvil que sea capaz de seguir
una línea negra pintada en el suelo sobre fondo blanco.
En una segunda fase de la práctica, habrá que dotar al robot de la capacidad de detectar
obstáculos y poder evitarlos, sin llegar a colisionar con ellos, para seguir su camino.
4. Desarrollo de la actividad Se podrán utilizar únicamente los sensores que se entregan dentro del kit NXT, es decir,
como máximo podrán utilizar:
1 Ladrillo NXT
3 Motores
1 Sensor de Luz
1 Sensor de Sonido (micrófono)
1 Sensor de Ultrasonido
2 Sensores de Tacto
Se recomienda abordar la práctica en dos fases:
Fase1: Construcción del robot, teniendo en cuenta que necesitará detectar objetos, pero
programándolo únicamente para que pueda seguir correctamente la línea negra de
manera efectiva.
Fase 2: Modificar el código anterior, una vez éste haya sido probado empíricamente, para
llevar a cabo la tarea de detección de objetos próximos, evitación de los mismos y
recuperación de la trayectoria.
Para la detección de obstáculos próximos, se ha de utilizar el sensor de ultrasonidos,
ya que el robot no podrá, en ningún caso, tocar el objeto.
Por lo tanto, se implementará mecanismos adecuados para poder rodear el objeto,
sin llegar a tocarlo, y saber regresar al camino para seguir su trayectoria.
Los objetos pueden estar situados en cualquier lugar del camino, sin conocerse a
priori la colocación de los mismos.
45
La línea será de color negro y de unos 2 cm. de ancho. Asimismo el camino podrá contener
curvas, las cuales no serán de un ángulo superior a 90º y no existirán cruces de caminos que
puedan confundir al robot.
5. Posibles Mejoras y Evaluación
Cabe la posibilidad, por parte de cada grupo, de llevar a cabo cualquier tipo de extensión o
mejora a lo pedido en la práctica, lo cual se tomará en cuenta a la hora de evaluar el trabajo.
Asimismo se valorará el método adquirido para la solución del problema, así como la
eficiencia del mismo.
El día de la defensa, se someterá el robot a pruebas con diferentes objetos para ver la
capacidad de detección y evitación de obstáculos así como de navegabilidad. Además de
estos parámetros, también se tendrá en cuenta el tiempo empleado en recorrer un circuito
bajo las condiciones mencionadas.
46
Lecturas complementarias
Los siguientes tutoriales, manuales y artículos están incluidos en el CD:
1. José María Cañas Plaza.Programación de robots móviles. Universidad Rey Juan
Carlos. 2004.
2. John Hansen. Not eXactly C (NXC) Programmer's Guide. 2007.
3. Damien Kee. Classroom Activities for the Busy Teacher: NXT.
4. Center for Engineering Educational Outreach Tufts University.
CONSTRUCTOPEDIA. Beta Version 2.0. 2007.
5. Daniele Benedettelli. Programming LEGO NXT Robots using NXC. 2007.
6. Muñoz, Nelson; Andrade Carlos y Londoño Nelson. Diseño y construcción de
un robot móvil orientado a la enseñanza e investigación. INGENIERÍA &
DESARROLLO, Número 19, pp. 114-127, 2006.
En el CD se incluye como muestra la siguiente figura:
47
Software El software necesario para impartir la asignatura se incluye en el CD y es el que se
muestra en la siguiente figura:
La primera carpeta Brixcc contiene los archivos para copiar y ejecutar el entorno de
programación con código estructurado mencionado en la Unidad 4.
La segunda carpeta LegoDigitalDesigner contiene el entorno virtual para construir
modelos robóticos aún si no se cuenta con el kit.
Las carpetas comprimidas contienen los drivers necesarios para la ejecución de las
herramientas anteriores (2 primeras carpetas).
El archivo robocode-setup-1.2.6A.jar permite instalar el entorno de programación
Robocode.
Todo el material incluido es software gratuito y las últimas versiones se pueden
descargar de las referencias mencionadas en las diapositivas del curso y en este material
didáctico.
48
Referencias bibliográficas
1. Stuart, Rusell y Peter, Norving. Inteligencia Artificial, un enfoque moderno. 2ª Ed. Prentice Hall. 2004.
2. Jonathan B. Knudsen, The Unofficial Guide to LEGO MINDSTORMS Robots. Ed. O’reilly. 1999
3. John J. Craig. Introduction to robotics mechanics and control. 3a Ed. Pearson/Prentice Hall. 2005.
4. María Rivas y Arantxa Rentería. Robotica Industrial: fundamentos y aplicaciones. Mc Graw Hill. 2000.
5. John Haugeland. La inteligencia artificial. Addison-Wesley Pub. 1988. 6. Patrick Henry Winston. Artificial Intelligence. 3ª ed. Addison-Wesley
Pub. 1992. 7. Michael Theath. Scientific computing, an introduction Survey. 2nd
ed. Mc Graw Hill. 2002. 8. Estela Díaz López, et. Al. Introducción al diseño de microrobots
móviles. Universidad de Alcalá, Noviembre 2006. 9. Mark W. Spong, M. Vidyasagar. Robot Dynamics and Control. John
Wiley & Sons Publisher, 1989. 10. G. Dudek and M. Jenkin. Computational principles of mobile
robotics. Cambridge University, Press, 2000.
Referencias web
1. http://www.domabotics.com/
2. http://www.eduteka.org
3. http://bricxcc.sourceforge.net/
4. http://robocode.sourceforge.net/
5. http://ldd.lego.com/download/