Está en la página 1de 50
Facultad de Matemáticas P P a a q q u u e e t t

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

Contenido

Carta descriptiva

1

Contenido del programa

2

Manual de operaciones

6

Sesión

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

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.

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.

CONTENIDO

Unidad 1. Introducción a la robótica

Objetivo: Describir los antecedentes de la robótica, las definiciones esenciales y la clasificación de los robots.

5 horas

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

Objetivo:

Identificar

las

partes

constitutivas

parámetros de selección.

de

2.1 Estructura mecánica del Robot

2.2 Transmisiones y Reductores

2.3 Actuadores

2.4 Sensores Internos

2.5 Sensores Externos

un

robot

10 horas manipulador

y

sus

Unidad 3. Construcción de robots

Objetivo: Diseñar y construir robots móviles empleando piezas LEGO Mindstorms.

10 horas

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

Objetivo: Programar rutinas de movimiento básicas utilizadas en la robótica para controlar a los robots móviles.

30 horas

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

Objetivo: Describir e identificar las aplicaciones reales de los diversos tipos de robots móviles.

17 horas

5.1 Vehículos inteligentes

5.2 Minería

5.3 Espacio

5.4 Robots de servicio

5.5 Tendencias actuales

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.

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.

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.

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.

Diapositivas del curso

Sesión informativa

Diapositiva

1

Diapositiva

3

Diapositiva

5

Diapositiva

7

Programación de robots móviles Licenciatura en Ciencias de la computación 5º y 7º semestre M.C.
Programación de robots móviles
Licenciatura en Ciencias de la computación
5º y 7º semestre
M.C. Cinhtia M. González Segura
M.C. Michel García García


Introducción

¿Hay robots en nuestro entorno?

¿Son útiles?

Recursos de Trabajo  4 Kits Robots LEGO Mindstorm  2 kits Robots LEGO 
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
Robots Lego  Partes físicas  Programación
Robots Lego
 Partes físicas
 Programación
Contenido  Introducción  Programa propuesto  Recursos de trabajo  Videos  Preguntas y
Contenido
 Introducción
 Programa propuesto
 Recursos de trabajo
 Videos
 Preguntas y comentarios
Programa propuesto  Unidad 1. Introducción a la robótica ◦ Antecedentes, clasificación y aplicaciones 
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
Requisitos previos  Conocimientos básicos de programación estructurada  Muchas ganas de trabajar sobre su
Requisitos previos
Conocimientos básicos de programación
estructurada
 Muchas ganas de trabajar sobre su
proyecto
 Deseable comprensión del inglés
Videos ilustrativos
Videos ilustrativos

Diapositiva

9

Diapositiva

11

Diapositiva

13



Videos ilustrativos

NXT con

cabeza

4 patas

6 patas

Wall-e

 Videos ilustrativos NXT con ◦ cabeza ◦ 4 patas ◦ 6 patas ◦ Wall-e
 ◦

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

 

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

Sitios web recomendados  http://nxtprograms.com/ ◦ Lista de proyectos con instrucciones de ensamble y código
Sitios web recomendados
http://nxtprograms.com/
Lista de proyectos con instrucciones de
ensamble y código del programa
http://nxtprograms.com/projects.html


Información adicional

Elaboración de un proyecto final

Cupo limitado a 18 personas

Requisito indispensable

¡Entusiasmo por aprender!

Preguntas y comentarios  ¡Gracias por su atención!

Preguntas y comentarios

Preguntas y comentarios  ¡Gracias por su atención!

¡Gracias por su atención!

Unidad 1

Diapositiva

1

Diapositiva

3

Diapositiva

5

Diapositiva

7

Programación de robots móviles Licenciatura en Ciencias de la computación 5º y 7º semestre M.C.
Programación de robots móviles
Licenciatura en Ciencias de la computación
5º y 7º semestre
M.C. Cinhtia M. González Segura
M.C. Michel García García
Introducción  La Robótica es una tecnología multidisciplinaria. Hace uso de todos los recursos de

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

1.1 
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.

1.2  ◦
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.

Contenido  Unidad 1 Introducción a la robótica ◦ 1.1 Antecedentes históricos ◦ 1.2 Origen
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
 

¿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



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.



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.

Diapositiva

9

Diapositiva

11

Diapositiva

13

Diapositiva

15

◦

Lego NXT

En el 2006 surge la versión NXT

I 2 C, 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 I 2 C 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.

11 ¿Qué es un Robot?  Literalmente ―servidumbre forzada‖ interactuar con el decisiones propias 

11

¿Qué es un Robot?

Literalmente

―servidumbre forzada‖

interactuar

con

el

decisiones propias

Deriva de la palabra checa ―robota‖.

significa

entorno

―esclavitud‖,

Máquina mecánica o autómata capaz de

y tomar

Características de un Robot  Diseñados para sustituir al humano en algunas tareas. 13

Características de un Robot

Diseñados para sustituir al humano en algunas tareas.

Características de un Robot  Diseñados para sustituir al humano en algunas tareas. 13

13

15 Características de un robot  Un robot se debe componer de: ◦ Mecanismo para

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

1.3 Definición y clasificación

1.3 Definición y clasificación

¿Qué es un robot?

 ¿Qué es un robot?
 

¿Qué es la robótica?

¿Qué tipos de robots existen?

 
clasificación  ¿Qué es un robot?    ¿Qué es la robótica?  ¿Qué tipos de
clasificación  ¿Qué es un robot?    ¿Qué es la robótica?  ¿Qué tipos de
clasificación  ¿Qué es un robot?    ¿Qué es la robótica?  ¿Qué tipos de
clasificación  ¿Qué es un robot?    ¿Qué es la robótica?  ¿Qué tipos de


¿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

computación y otras áreas de la Ingeniería. 1 2 Características de un Robot de actuar en
computación y otras áreas de la Ingeniería. 1 2 Características de un Robot de actuar en

Características de un Robot

de

actuar

en

función

Capaces

información recibida del mundo real.

función  Capaces información recibida del mundo real. de la 14  ◦   Clasificación Robots

de

la

14

 ◦
 

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

Diapositiva

17

Diapositiva

19

Diapositiva

21

◦

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

◦

1.4 Aplicaciones de los robots

¿Qué movimientos pueden realizar?

Girar

Girar  
 
 

Transportar

  ◦ Transportar
  ◦ Transportar

Caminar

Nadar

Volar

◦ Volar
◦ Volar

Alcanzar

Rotar

Empujar

◦ Empujar Snake Robot
◦ Empujar Snake Robot
Snake Robot
Snake Robot
Tarea 1  Traer 2 propuestas posibles del proyecto que desarrollarán en el curso

Tarea 1

Traer 2 propuestas posibles del proyecto que desarrollarán en el curso

Actividad  Clasifica los siguientes robots en androide, móvil, zoomórfico o poliarticulado ◦ Brazo robótico

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

que se desplaza automáticamente para limpiar los pisos ◦ Helicóptero ◦ Robot Sony AIBO ◦ Asimo
que se desplaza automáticamente para limpiar los pisos ◦ Helicóptero ◦ Robot Sony AIBO ◦ Asimo
Actividad  Formar equipos de trabajo (2 ó 3 personas)  Armar un robot móvil

Actividad

Formar equipos de trabajo (2 ó 3 personas)

Armar un robot móvil utilizando uno de los kits de Lego

Preguntas y comentarios  ¡Gracias por su atención!

Preguntas y comentarios

Preguntas y comentarios  ¡Gracias por su atención!

¡Gracias por su atención!

Unidad 2

Diapositiva

1

Diapositiva

3

Diapositiva

5

Diapositiva

7

Programación de robots móviles Licenciatura en Ciencias de la computación 5º y 7º semestre M.C.
Programación de robots móviles
Licenciatura en Ciencias de la computación
5º y 7º semestre
M.C. Cinhtia M. González Segura
M.C. Michel García García
2.1 Estructura del robot  Un robot esta formado por los siguientes elementos: ◦ estructura

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

Grados de libertad  El numero de grados de libertad que tiene un brazo robot

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.

de magnitudes que pueden variarse independientemente, por lo general coincide con el numero de articulaciones móviles.
Articulaciones
Articulaciones
Contenido  Unidad 2 Morfología de los robots  Estructura mecánica del Robot  Transmisiones
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
Estructura mecánica  Mecánicamente, un robot esta formado por una serie de elementos o eslabones

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.

Grados de libertad  Se necesitan 3 grados de libertad para posicionar el efector terminal

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.

Grados de libertad  El numero de grados de libertad del robot viene dado por

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.

Diapositiva

9

Diapositiva

11

Diapositiva

13

Diapositiva

15



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.

2.2  ◦
2.2

Transmisores y reductores

Transmisor

Elemento encargado de transmitir el

movimiento desde los actuadores hasta las articulaciones



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

¿Cuántas grados de libertad?

¿Cuántas grados de libertad?

¿Cuántas grados de libertad?
¿Cuántas grados de libertad?
¿Cuántas grados de libertad?


Reductores

Su función es realizar una reducción

elevada de velocidad en un único paso



2.4 Sensores internos

Sensores de posición

Sensores de velocidad

Proporcionan los valores reales de las

variables a controlar

1.
1.

16

Funcionamiento de un Robot

Inicializar el robot: Situarlo en el mundo.

2.

3.

4.

Recibir información por los sensores.

Procesar la información recibida.

Desplazar/Activar partes del robot.

Diapositiva

17

Diapositiva

19

 ◦ 2
2

Funcionamiento de un Robot

Mecanismo habitual de 3 ruedas:

 

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



Problemas Principales de un Robot

 

Localización ¿Dónde estoy?

 
 

Respuesta de los sensores: ¿Hay obstáculo?

 

Respuesta del sistema: ¿Todo ok?

 
 

19

Funcionamiento de un robot  Se puede captar el entorno a través de los sensores

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

Preguntas y comentarios  ¡Gracias por su atención!

Preguntas y comentarios

Preguntas y comentarios  ¡Gracias por su atención!

¡Gracias por su atención!

Unidad 3

Diapositiva

1

Diapositiva

3

Diapositiva

5

Diapositiva

7

Programación de robots móviles Licenciatura en Ciencias de la computación 5º y 7º semestre M.C.
Programación de robots móviles
Licenciatura en Ciencias de la computación
5º y 7º semestre
M.C. Cinhtia M. González Segura
M.C. Michel García García
SISTEMA DE ROBOTICA DE LEGO
SISTEMA DE ROBOTICA DE LEGO


¿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



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.

Contenido  Unidad 3 Construcción de Robots ◦ Kits de robots LEGO NXT ◦ Ensamblado
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
¿Cómo funciona la computación básica? Entrada Salida MEMORIA Procesador  El procesador ejecuta los comandos.
¿Cómo funciona la computación básica?
Entrada
Salida
MEMORIA
Procesador
 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.


¿Como se mueven los robots?

Sensores

Sensores
Sensores
Sensores
 

Motores

Ruedas

Programándolos!

 
Diseño y Construcción En este curso usaremos las piezas de LEGO ® para construir nuestros

Diseño y Construcción

En este curso usaremos las piezas de LEGO ®

para construir nuestros robots

 

Engranajes y ejes

   Engranajes y ejes

Barras y conectores

Motores y ruedas

Sensores y cables

El ladrillo programable NXT

Diapositiva

9

Diapositiva

11

Diapositiva

13

Diapositiva

15

Top 4 Diseños Lego
Top 4 Diseños Lego
 ◦ ◦

Diseñar

Lego Digital Designer for Windows

Permite generar instrucciones de ensamble

Descarga: http://ldd.lego.com/download/

Manual: http://ldd.lego.com/support/

http://ldd.lego.com/download/ ◦ Manual: http://ldd.lego.com/support/ Carpeta LegoDigitalDesignerForWin Setup.exe

Carpeta LegoDigitalDesignerForWin Setup.exe

Espacio de trabajo Herramientas Seleccionar Clonar Girar ¿Pintar? Borrar Piezas Lego Control de cámara
Espacio de trabajo
Herramientas
Seleccionar
Clonar
Girar
¿Pintar?
Borrar
Piezas Lego
Control de cámara
2. Rotar hasta obtener la imagen
2. Rotar hasta obtener la imagen


Diseñar

Sitios con instrucciones de montaje de

varios modelos

http://lrobotikas.net/lehenak/instrucc.htm

http://ricquin.net/lego/instructions/

de montaje de varios modelos ◦ http://lrobotikas.net/lehenak/instrucc.htm ◦ http://ricquin.net/lego/instructions/
Pantalla inicial  Pestaña Mindstorms Choose: Starter Model: modificar uno hecho FreeBuild: construir desde cero
Pantalla inicial
Pestaña Mindstorms
Choose:
Starter Model: modificar uno hecho
FreeBuild: construir desde cero
Recent Model: construcciones previas
Actividad  Construir en el Lego Digital Designer Realizar lo que se muestra:  1.
Actividad
Construir en el Lego Digital Designer
Realizar lo que se muestra:
1. Incluir el NXT
3. Seleccionar el conector
3. Seleccionar el conector

Diapositiva

17

Diapositiva

19

Diapositiva

21

Diapositiva

23

Incrustar el conector
Incrustar el conector
Seleccionar e incrustar
Seleccionar e incrustar
Agregar un motor
Agregar un motor
Generar instrucciones
Generar instrucciones
Repetir con otro conector
Repetir con otro conector
2 conectores más
2 conectores más
Incrustar el motor
Incrustar el motor
Actividad  Seleccionar un modelo y construirlo en el LDD ◦ http://lrobotikas.net/lehenak/instrucc.htm ◦

Actividad

Seleccionar un modelo y construirlo en el LDD

http://lrobotikas.net/lehenak/instrucc.htm

http://ricquin.net/lego/instructions/

Diapositiva

25

Diapositiva

27

Diapositiva

29

Diapositiva

31

Construir LEGO ® Motores y sensores Motores Sensor de luz Sensor Sensor de ultrasonidos Sensor
Construir
LEGO ® Motores y sensores
Motores
Sensor
de luz
Sensor
Sensor de
ultrasonidos
Sensor
contacto
de sonido
Ladrillo LEGO ® NXT
Ladrillo LEGO ® NXT


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

MENUS DISPONIBLES EN EL NXT En “My Files” se encuentran todos los programas que podemos
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.
Sensores Tacto Luz Servomotor Ultrasónico Sonido
Sensores
Tacto
Luz
Servomotor
Ultrasónico
Sonido
INTERFACE DEL NXT ¿Cómo nos entiende el ladrillo NXT? Gracias a un software especial que

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

Tic,Tic Firmware no Firmware cargado cargado
Tic,Tic
Firmware no
Firmware cargado
cargado
Conexiones del NXT CONEXIÓN DE LOS MOTORES CONEXIÓN DE LOS SENSORES CONEXIÓN DEL NXT AL
Conexiones del NXT
CONEXIÓN DE LOS MOTORES
CONEXIÓN DE LOS SENSORES
CONEXIÓN DEL NXT AL PC
En “NXT Program” programamos nuestro robot sin usar el PC. En “Try Me” experimentamos con
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.

Diapositiva

33

Diapositiva

35

Instrucciones para el ladrillo  Especificar la tarea ◦ Entradas que se deben proporcionar ◦

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

Preguntas y comentarios  ¡Gracias por su atención!

Preguntas y comentarios

Preguntas y comentarios  ¡Gracias por su atención!

¡Gracias por su atención!

Actividad  Utilizando la interfaz directa (botones del ladrillo), incluir las instrucciones necesarias para que

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

Unidad 4

Diapositiva 1 Programación de robots móviles Licenciatura en Ciencias de la computación 5º y 7º
Diapositiva
1
Programación de robots móviles
Licenciatura en Ciencias de la computación
5º y 7º semestre
M.C. Cinhtia M. González Segura
M.C. Michel García García
Diapositiva
¿Qué es Robocode?
3
 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.
Diapositiva
Robot
5
Radar
giratorio
Cañón
giratorio
Cuerpo del robot
Diapositiva
Energía del robot
7
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‖
Contenido  Unidad 4. Programación de Robots ◦ Ambientes simulados : robocode
Contenido
 Unidad 4. Programación de Robots
◦ Ambientes simulados : robocode
Introducción  Existen dos modos de juego: ◦ Batalla individual: cada robot lucha contra todos
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.
Descripción del problema  El objetivo del juego es generar la IA que permita a
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
Descripción del sistema  En Robocode hay dos elementos principales: los robots y las batallas
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

Diapositiva

9

Diapositiva

11

Diapositiva

13

Diapositiva

15

Actividad 1  Abrir el campo de batalla ◦ Elegir a 2 robots e incluirlos
Actividad 1
 Abrir el campo de batalla
◦ Elegir a 2 robots e incluirlos
 ¿Quién gana a quién?
Acciones del robot  public void setTurnLeft(double grados) ◦ Rota el tanque/robot ―n‖ grados a
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 setTurnRadarLeft(double grados) ◦ Mueve el radar a la Izquierda
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
Colores del robot  setColors(Color.black,Color.red,Color.blue); ◦ Black: Cuerpo del robot ◦ Red: Cañon ◦
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
Acciones del robot  public void setAhead(double distancia) ◦ Mueve el robot hacia adelante la
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
Acciones del robot  public void setTurnGunLeft(double grados) ◦ Rota el cañón del robot y
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
Acciones del robot  public void setFire(double potencia) ◦ Dispara una bala, el rango válido
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)
Eventos  ScannedRobotEvent ◦ se lanza cuando el radar detecta un robot a su paso
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

Diapositiva

17

Diapositiva

19

Diapositiva

21

Diapositiva

23

Clase ScannedRobotEvent  public double getDistance() ◦ Devuelve la distancia al enemigo
Clase ScannedRobotEvent
 public double getDistance()
◦ Devuelve la distancia al enemigo
Ejemplo
Ejemplo
Robot inteligente  Actividades principales para ser competitivo: ◦ MOVERSE inteligentemente ◦ ESQUIVAR ataques
Robot inteligente
 Actividades principales para ser
competitivo:
◦ MOVERSE inteligentemente
◦ ESQUIVAR ataques
◦ APUNTAR con precisión
◦ DISPARAR adecuadamente
Configuración NXT
Configuración NXT
Clase HitRobotEvent  public double getEnergy() ◦ Devuelve la energía del enemigo
Clase HitRobotEvent
 public double getEnergy()
◦ Devuelve la energía del enemigo
Ejemplo de Robot
Ejemplo de Robot
Actividad 2  Crear su propio robot ◦ Crear un nuevo robot desde el editor
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
Conexión Bluetooth
Conexión Bluetooth

Diapositiva

25

Diapositiva

27

Diapositiva

29

Ciclo de desarrollo  Construir, programar y probar
Ciclo de desarrollo
 Construir, programar y probar
Try Me – Modo de prueba  En el submenú View se pueden probar los
Try Me – Modo de prueba
 En el submenú View se pueden probar los
sensores y motores para observar su
funcionamiento
Sensor de sonido
Sensor de sonido
Conexión de sensores
Conexión de sensores
Sensor de Tacto
Sensor de Tacto
Sensor de luz  Permite distinguir entre luz y obscuridad.
Sensor de luz
 Permite distinguir entre luz y obscuridad.

Diapositiva

31

Diapositiva

33

Diapositiva

35

Diapositiva

37

Sensor ultrasónico  Permite detectar obstáculos, distancias y movimiento.  Calcula el tiempo que toma
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
Servo motores
Servo motores
Instrucciones directas sonido ultrasónico luz
Instrucciones directas
sonido
ultrasónico
luz
Entornos de programación  Ambiente de programación gráfico ◦ NXT-G, desarrollado por National Instruments for
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.
Sensor ultrasónico
Sensor ultrasónico
Programación básica
Programación básica
Actividad  Utilizando la interfaz directa del NXT, incluir las instrucciones necesarias para que el
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
Lego NXT-G
Lego NXT-G

Diapositiva

39

Diapositiva

41

Diapositiva

43

Diapositiva

45

Robolab
Robolab
NXC
NXC
NXJ
NXJ
Ejecución de un programa NXT Programa Escribir convertido a Descargar programa en la PC (NXT-G)
Ejecución de un programa NXT
Programa
Escribir
convertido a
Descargar
programa en la
PC (NXT-G)
bytecodes
al NXT
(texto)
NXT
Los bytecodes son
ejecuta
convertidos a
los
instrucciones del
comandos
código máquina
Robot C
Robot C
PBLUA
PBLUA
Fases del Desarrollo Construcción Programación Ejecución 12
Fases del Desarrollo
Construcción
Programación
Ejecución
12
Mindstorms Edu NXT
Mindstorms Edu NXT

Diapositiva

47

Diapositiva

49

Diapositiva

51

Diapositiva

53

Arrastrar y soltar, y ejecutar
Arrastrar y soltar, y ejecutar
Entorno de Desarrollo Zona de Programación Guía Bloques 17 Propiedades
Entorno de Desarrollo
Zona de Programación
Guía
Bloques
17
Propiedades
Bloques comunes
Bloques comunes
Guía Bloques 17 Propiedades Bloques comunes Programación con Mindstorms NXT 1. Robot educator. 2.
Programación con Mindstorms NXT 1. Robot educator. 2. Portal para conexión a paginas de internet
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.
Comunicación y Memoria  Cuando el NXT está conectado: Cambiar el nombre
Comunicación y Memoria
 Cuando el NXT está conectado:
Cambiar el nombre
Paleta Common
Paleta Common
¿Cómo creamos un nuevo programa? Al hacer clic sobre “New Program” se abre el área
¿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.

Diapositiva

55

Diapositiva

57

Diapositiva

59

Diapositiva

61

BARRA DE TAREAS Abrir Programa creado Cortar una parte de un programa Pegar una parte
BARRA DE TAREAS
Abrir Programa
creado
Cortar una
parte de un
programa
Pegar una
parte de un
programa
Ratón en
función mano
de arrastre
Nuevo
Programa
Guardar
Copiar una
parte de un
Programa
Función para
programa
introducir
comentarios en
mi programa
Ratón en
función puntero
Como descargamos nuestro programa al ladrillo NXT
Como descargamos nuestro
programa al ladrillo NXT
ICONOS BASICOS DE PROGRAMACION
ICONOS BASICOS DE
PROGRAMACION
programa al ladrillo NXT ICONOS BASICOS DE PROGRAMACION ¿Cómo hacer un programa? Actividad 1  Conectar
¿Cómo hacer un programa?
¿Cómo hacer un programa?
Actividad 1  Conectar su NXT, insertar un icono de sonido en el área de
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!
Actividad  Dibujar un cuadrado ◦ Dado el rectángulo ABCD, moverse de A a B,
Actividad
 Dibujar un cuadrado
◦ Dado el rectángulo
ABCD, moverse de
A a B, de B a C a D.
 Un triángulo ACD
 Dibujar un cuadrado ◦ Dado el rectángulo ABCD, moverse de A a B, de B

Diapositiva

63

Diapositiva

65

Diapositiva

67

Diapositiva

69

Diapositiva 63 Diapositiva 65 Diapositiva 67 Diapositiva 69 Revisión de tareas  Dibujar un cuadrado ◦
Diapositiva 63 Diapositiva 65 Diapositiva 67 Diapositiva 69 Revisión de tareas  Dibujar un cuadrado ◦
Revisión de tareas  Dibujar un cuadrado ◦ Dado el rectángulo ABCD, moverse de A
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
Actividades 1)
Actividades
1)
triángulo ACD  Evasión de obstáculos Actividades 1) Actividad  Utilizando la interfaz Mindstorms NXT,
Actividad  Utilizando la interfaz Mindstorms NXT, incluir las instrucciones necesarias para que el robot:
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
cuando detecte un sonido ◦ Pare cuando detecte una colisión ◦ Avance con evasión de obstáculos
SOLUCIÓN
SOLUCIÓN

Diapositiva

71

Diapositiva

73

Diapositiva

75

Diapositiva

77

Diapositiva 71 Diapositiva 73 Diapositiva 75 Diapositiva 77 Robot seguir de líneas Construcción del Tribot •
Robot seguir de líneas
Robot seguir de líneas
Construcción del Tribot • Motor de la derecha conectado al puerto A • Motor de
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
Software Disponible
Actividad  Al programa de evasión de obstáculos que realizaron usando su sensor ultrasónico, agregarle
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.
¿Qué vamos a ver hoy?  Construcción del Robot Tribot  Software Disponible Para programar
¿Qué vamos a ver hoy?
 Construcción del Robot Tribot
 Software Disponible Para programar el
NXT
 Programación en Bricx
Software Disponible
Software Disponible
Programación en Bricx  Not eXactly C (NXC)  Primer programa: ◦ Hacer que el
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

Diapositiva

79

Diapositiva

81

Diapositiva

83

Diapositiva

85

Primer Programa  Conectar el robot al puerto USB  Abrir el Bricx  Vamos
Primer Programa
 Conectar el robot al puerto USB
 Abrir el Bricx
 Vamos al menú File y seleccionamos New
Primer Programa  Analizando el código: ◦ OnFwd(OUT_A, 75);  Esta instrucción inicia la salida
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
Guardando el programa Guardamos el programa
Guardando el programa
Guardamos el programa
Descargando el programa Descargamos el programa al NXT
Descargando el programa
Descargamos el programa al NXT
Primer Programa  Escribir el siguiente código:
Primer Programa
Escribir el siguiente código:
Primer Programa • Analizando el código: – Wait(4000); • Esta instrucción nos dice que el
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
Compilando el programa Compila el programa
Compilando el programa
Compila el programa
Cambiando las velocidades  Realizar los siguientes cambios en el programa:  Se debe observar
Cambiando las velocidades
 Realizar los siguientes cambios en el
programa:
 Se debe observar como la velocidad de
avance y reversa disminuyen

Diapositiva

87

Diapositiva

89

Diapositiva

91

Diapositiva

93

Haciendo Girar el robot • Escribir el siguiente código: • El robot debe avanzar un
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  En las primeras 2 líneas definimos las constantes  Dos buenas razones
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
Repitiendo Comandos • Realizando un cuadrado repitiendo comandos • Escribir el siguiente código: • El
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

Añadiendo comentarios
Añadiendo comentarios
Definiendo Constantes  El ambiente de programación en Bricx nos permite definir constantes en nuestro
Definiendo Constantes
 El ambiente de programación en Bricx
nos permite definir constantes en nuestro
programa
 Escribir el siguiente programa:

ProgramaCuatro.nxc

Actividad 1  Programar el robot para que se mueva hasta realizar un cuadrado
Actividad 1
 Programar el robot para que se mueva
hasta realizar un cuadrado
Repitiendo Comandos  Hacer que el robot realice 10 cuadrados utilizando repeat
Repitiendo Comandos
Hacer que el robot realice 10 cuadrados
utilizando repeat

ProgramaSeis.nxc

Uso de variables  El uso de variables es un aspecto importante en cualquier lenguaje
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

Diapositiva

95

Diapositiva

97

Diapositiva

99

Diapositiva

101

Uso del Random  El valor move_time se generará aleatoriamente entre un valor de 0
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

Comparaciones • == Igual a • < Menor que • <= Menor o igual a
Comparaciones
==
Igual a
<
Menor que
<= Menor o igual a
>
Mas grande que
>= Mas grande o igual a
!=
Diferente de
&& and
||
or
Uso de sensores  añadir el sensor de tacto al Tribot, si aún no lo
Uso de sensores
añadir el sensor de tacto al Tribot, si aún
no lo tiene:
Actividad  Hacer que el robot avance evitando obstáculos: cuando choque con un objeto debe
Actividad
 Hacer que el robot avance evitando
obstáculos: cuando choque con un objeto
debe retroceder, girar y continuar.
 Solución:
Uso del If  Ejemplo: El robot avanzará hacia adelante y después girará a la
Uso del If
 Ejemplo: El robot avanzará hacia adelante y
después girará a la izquierda o derecha,
dependiendo del valor del ramdom

ProgramaDiez

Siguiente clase  Uso de sensores
Siguiente clase
Uso de sensores
Ejemplo  El robot avanza hasta chocar con algo ◦ IN_1: Puerto de entrada del
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
Sensor de luz  Terminar el Tribot, si aún no está listo
Sensor de luz
Terminar el Tribot, si aún no está listo

Diapositiva

103

Diapositiva

105

Diapositiva

107

Diapositiva

109

Actividad  Escribir el siguiente código. ¿Qué hace?
Actividad
Escribir el siguiente código. ¿Qué hace?
Actividad  Hacer que el robot espere un sonido para avanzar y se detenga cuando
Actividad
Hacer que el robot espere un sonido para
avanzar y se detenga cuando escuche
otro sonido (aplauso, chiflido, zapateado,
etc.)
Actividad  Usando el sensor ultrasónico, hacer que el robot evite chocar con un obstáculo
Actividad
Usando el sensor ultrasónico, hacer que
el robot evite chocar con un obstáculo
Tareas  Ejemplo: El robot se moverá realizando cuadrados, cuando detecte un obstáculo lo intentará
Tareas
 Ejemplo: El robot
se moverá
realizando
cuadrados,
cuando detecte
un obstáculo lo
intentará esquivar
Para apagar la luz del sensor  Antes del ciclo, incluir:
Para apagar la luz del sensor
Antes del ciclo, incluir:
Solución  Un posible código es:
Solución
Un posible código es:
Tareas (Task)  El NXT puede realizar múltiples tareas, esto es posible utilizando unas partes
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
Tareas  Nota: Ambas subtareas intentan acceder a los motores, esto puede llevarnos a resultados
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");

Diapositiva

111

Diapositiva

113

Diapositiva

115

Diapositiva

117

Actividad  Realizar un programa que haga que el robot se mueva de forma autónoma
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  Ejemplo sin argumentos:
Subrutinas
Ejemplo sin argumentos:
Actividad  Modificar el programa del movimiento autónomo con evasión de obstáculos para que utilice
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 y Argumentos  El uso de argumentos nos permite pasar valores a nuestras
Definiendo Macros y
Argumentos
El uso de argumentos nos permite pasar
valores a nuestras macros
Subrutinas  A veces necesitamos una misma parte del código en nuestro programa, en este
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:
Subrutinas  Ejemplo con dos argumentos:
Subrutinas
Ejemplo con dos argumentos:
Definiendo Macros  La definición de macros nos sirve para poder definir trozos de código
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
Actividad  Utilizar al menos 3 Macros en su programa que navega de forma autónoma
Actividad
Utilizar al menos 3 Macros en su
programa que navega de forma autónoma

Diapositiva

119

Diapositiva

121

Haciendo Música  Nuestro NXT puede realizar diversos sonidos, esto puede ser de gran ayuda
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  Usando subtareas y música de forma simultánea
Haciendo Música
 Usando subtareas y música de forma
simultánea
Haciendo Música  PlayTone(frecuencia, duración)
Haciendo Música
 PlayTone(frecuencia, duración)
Preguntas y comentarios  ¡Gracias por su atención!
Preguntas y comentarios
 ¡Gracias por su atención!

Unidad 5

Diapositiva 1 Programación de robots móviles Licenciatura en Ciencias de la computación 5º y 7º
Diapositiva
1
Programación de robots móviles
Licenciatura en Ciencias de la computación
5º y 7º semestre
M.C. Cinhtia M. González Segura
M.C. Michel García García
Diapositiva
Fases del Desarrollo
3
Construcción
Programación
Ejecución
3
Diapositiva
Robo Center
5
 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)
Diapositiva
Tribot
7
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
Contenido  Unidad 5. Aplicaciones ◦ Robo Center :TriBot ◦ AlfaRex ◦ Proyectos finales
Contenido
Unidad 5. Aplicaciones
◦ Robo Center :TriBot
◦ AlfaRex
◦ Proyectos finales
Robo Center  Tribot
Robo Center
Tribot
Robo center - Tribot  Guía de prueba ◦ Ver si el robot: 1. Se
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
Tribot  3. Grabber ◦ Guía de construcción  Añadir las ―tenazas‖ al robot ◦
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

Diapositiva

9

Diapositiva

11

Diapositiva

13

Diapositiva

15

Tribot  4. Sound Control ◦ Construcción  Agregar el sensor de sonido ◦ Programación
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  6. Localizar un objeto ◦ Construcción  Agregar el sensor ultrasónico ◦ Programación
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!
Paso de datos entre bloques  Ejemplo: Si la intensidad de luz es >60 avanza,
Paso de datos entre bloques
Ejemplo: Si la intensidad de luz es >60
avanza, si no, retrocede
Orígenes de datos  Sensores ◦ Luz: intensidad de luz ◦ Ultrasónico: distancia de un
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
Tribot  5. Sensor de luz ◦ Construcción  Agregar el 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
Tarea (para el …)  Construir y programar, con ayuda del Robo Center, una de
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
Tipos de datos válidos  Numérico ◦ Enteros, incluyendo negativos y con parte decimal (no
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: ―‖
Utilidad  Programas más compactos, menos consumo de memoria y tiempo de procesamiento
Utilidad
Programas más compactos, menos
consumo de memoria y tiempo de
procesamiento

Diapositiva

17

Diapositiva

19

Diapositiva

21

Diapositiva

23

Ejemplo: suma de valores  Se tienen 2 datos numéricos de entrada: 250 y 177,
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
Definición de variables  Menú Edit ◦ Define Variables
Definición de variables
Menú Edit
◦ Define Variables
Operadores aritméticos  Se realizan sobre operadores enteros  +, -, *, y / 
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.
Ejemplo  Realizar el programa HouseFly:
Ejemplo
Realizar el programa HouseFly:
Variables  De lectura (el valor se asigna con cables de datos o valores generados
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
Bloque para Variables  Una vez definida, se puede utilizar
Bloque para Variables
Una vez definida, se puede utilizar
Flujos paralelos  Mientras una parte del programa realiza cierta rutina, otra parte realiza una
Flujos paralelos
Mientras una parte del programa realiza
cierta rutina, otra parte realiza una
diferente
Piernas del Alpha-Rex  Especial cuidado con la posición de los motores
Piernas del Alpha-Rex
Especial cuidado con la posición de los
motores

Diapositiva

25

Diapositiva

27

Diapositiva

29

Diapositiva

31

Programación  Debe caminar hacia adelante mientras se despliega en la pantalla un corazón latiendo
Programación
Debe caminar hacia adelante mientras se
despliega en la pantalla un corazón
latiendo
Programación  El robot debe caminar hacia adelante, dar la vuelta y regresar a su
Programación
El robot debe caminar hacia adelante, dar
la vuelta y regresar a su punto de partida
Brazos del robot  Programación  Cuando toques su sensor de tacto debe decir ―Play
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.
Proyectos finales  Propuestas personales  Sugerencias ◦ Silla de ruedas autónoma que evite precipicios
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
Cuerpo del Alpha-Rex  Usar 6 pilas recargables por el espacio que ocupa la pila
Cuerpo del Alpha-Rex
 Usar 6 pilas recargables por el espacio
que ocupa la pila del NXT
Cabeza del robot  Programación: Debe decir ―Hello‖ cuando estés parado frente a él y
Cabeza del robot
 Programación: Debe decir
―Hello‖ cuando estés
parado frente a él y decir
―Good bye‖ cuando te
quites de enfrente
Sensor de luz  Programación  Si no hay luz, debe decir ―Good Night‖ y
Sensor de luz
 Programación
 Si no hay luz, debe
decir ―Good Night‖ y
desplegar ―zzzz‖ hasta
que haya luz
nuevamente y diga
―Morning‖
Preguntas y comentarios  ¡Gracias por su atención!
Preguntas y comentarios
 ¡Gracias por su atención!

Prácticas

Morfología del Robot

1. ¿Cuál es el número de grados de libertad del robot?

1. ¿Cuál es el número de grados de libertad del robot? 2. Determina los tipos de

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.

rectangular plana y clasificarlas en diferentes almacenes. 3. Los actuadores de un robot pueden adoptar distintas

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

Diseño de Robots

Construye virtualmente el robot Tribot empleando la herramienta Lego Digital Designer.

robot Tribot empleando la herramienta Lego Digital Designer. Posteriormente, modifica el robot Tribot para obtener un

Posteriormente, modifica el robot Tribot para obtener un diseño personal de algún robot que resuelva un problema del mundo real.

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

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.

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.

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:

INGENIERÍA & DESARROLLO, Número 19, pp. 114-127, 2006. En el CD se incluye como muestra la

Software

El software necesario para impartir la asignatura se incluye en el CD y es el que se muestra en la siguiente figura:

en el CD y es el que se muestra en la siguiente figura: La primera carpeta

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.

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