PaqDid Programacion Robots Moviles

50
Facultad de Matemáticas Paquete didáctico de la Asignatura Programación de robots móvilesImpartida 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

Transcript of PaqDid Programacion Robots Moviles

Page 1: 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

Page 2: PaqDid Programacion Robots Moviles

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

Page 3: PaqDid Programacion Robots Moviles

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.

Page 4: PaqDid Programacion Robots Moviles

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.

Page 5: PaqDid Programacion Robots Moviles

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

Page 6: PaqDid Programacion Robots Moviles

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.

Page 7: PaqDid Programacion Robots Moviles

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.

Page 8: PaqDid Programacion Robots Moviles

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.

Page 9: PaqDid Programacion Robots Moviles

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.

Page 10: PaqDid Programacion Robots Moviles

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

Page 11: PaqDid Programacion Robots Moviles

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!

Page 12: PaqDid Programacion Robots Moviles

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.

Page 13: PaqDid Programacion Robots Moviles

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

Page 14: PaqDid Programacion Robots Moviles

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!

Page 15: PaqDid Programacion Robots Moviles

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.

Page 16: PaqDid Programacion Robots Moviles

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

Page 17: PaqDid Programacion Robots Moviles

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!

Page 18: PaqDid Programacion Robots Moviles

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

Page 19: PaqDid Programacion Robots Moviles

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

Page 20: PaqDid Programacion Robots Moviles

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/

Page 21: PaqDid Programacion Robots Moviles

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.

Page 22: PaqDid Programacion Robots Moviles

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!

Page 23: PaqDid Programacion Robots Moviles

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

Page 24: PaqDid Programacion Robots Moviles

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

Page 25: PaqDid Programacion Robots Moviles

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

Page 26: PaqDid Programacion Robots Moviles

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.

Page 27: PaqDid Programacion Robots Moviles

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

Page 28: PaqDid Programacion Robots Moviles

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

Page 29: PaqDid Programacion Robots Moviles

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.

Page 30: PaqDid Programacion Robots Moviles

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

Page 31: PaqDid Programacion Robots Moviles

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

Page 32: PaqDid Programacion Robots Moviles

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

Page 33: PaqDid Programacion Robots Moviles

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

Page 34: PaqDid Programacion Robots Moviles

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

Page 35: PaqDid Programacion Robots Moviles

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

Page 36: PaqDid Programacion Robots Moviles

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");

Page 37: PaqDid Programacion Robots Moviles

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

Page 38: PaqDid Programacion Robots Moviles

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!

Page 39: PaqDid Programacion Robots Moviles

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

Page 40: PaqDid Programacion Robots Moviles

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

Page 41: PaqDid Programacion Robots Moviles

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

Page 42: PaqDid Programacion Robots Moviles

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!

Page 43: PaqDid Programacion Robots Moviles

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

Page 44: PaqDid Programacion Robots Moviles

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.

Page 45: PaqDid Programacion Robots Moviles

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”.

Page 46: PaqDid Programacion Robots Moviles

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.

Page 47: PaqDid Programacion Robots Moviles

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.

Page 48: PaqDid Programacion Robots Moviles

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:

Page 49: PaqDid Programacion Robots Moviles

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.

Page 50: PaqDid Programacion Robots Moviles

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/