(Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina...

36
Libro de prácticas de entrenamiento Curso de capacitación (Versión 1.2) Proyecto RAES 2009 Robótica Aplicada a la Enseñanza Secundaria Promueve y Financia Auspiciantes Respaldo Académico y Organización

Transcript of (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina...

Page 1: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

Libro de prácticas de entrenamiento Curso de capacitación

(Versión 1.2)

Proyecto RAES 2009

Robótica Aplicada a la Enseñanza Secundaria

Promueve y Financia

Auspiciantes

Respaldo Académico y Organización

Page 2: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

2

Índice

Índice .............................................................................................................................................. 2 Introducción ................................................................................................................................... 4

¿Qué es RAES? ...................................................................................................................... 4

Desarrollo del concurso .................................................................................................. 4

Robótica y robótica en la actualidad ....................................................................................... 4

Aplicación y educación en conocimientos ............................................................................. 5

Física .................................................................................................................................. 5

Matemática ......................................................................................................................... 5

Electrónica .......................................................................................................................... 5

Programación ...................................................................................................................... 5

LEGO® MINDSTORMS® NXT ........................................................................................... 6

Partes del Kit ...................................................................................................................... 6

Referentes mundiales.......................................................................................................... 7

De propósito general....................................................................................................... 7

Fuentes de programación ................................................................................................ 7

Fuentes para Bluetooth ................................................................................................... 7

NXT blogs ...................................................................................................................... 7

Práctica 1 ........................................................................................................................................ 8 Objetivos: ................................................................................................................................... 8 Materiales y requerimientos: ...................................................................................................... 8 Procedimiento: ........................................................................................................................... 8

Parte 1) ............................................................................................................................... 8

Parte 2) ............................................................................................................................. 10

Parte 3) ............................................................................................................................. 10

Parte 4) ............................................................................................................................. 10

Parte 5) ............................................................................................................................. 11

Práctica 2 ...................................................................................................................................... 13 Objetivos: ................................................................................................................................. 13 Materiales y requerimientos: .................................................................................................... 13 Procedimiento: ......................................................................................................................... 13

Acondicionamiento del NXT y PC para trabajar .................................................................. 13

Monitoreo ............................................................................................................................. 14

Primer Programa................................................................................................................... 15

Práctica 3 ...................................................................................................................................... 17 Objetivos: ................................................................................................................................. 17 Materiales y requerimientos: .................................................................................................... 17 Procedimiento: ......................................................................................................................... 17

Armado del Robot ................................................................................................................ 17

Introducción a los conceptos de programación .................................................................... 19

Introducción al concepto de Loop .................................................................................... 19

Introducción al concepto de Parámetros y conversión de tipos ........................................ 19

Introducción al concepto de Condicional ......................................................................... 19

Introducción al concepto de Variables ............................................................................. 20

Introducción al concepto de Comparaciones numéricas y Comparaciones lógicas .......... 20

Introducción al manejo matemático de variables ............................................................. 20

Page 3: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

3

Introducción al concepto de Algoritmos ........................................................................... 21

Introducción al concepto de Encapsular ........................................................................... 21

Introducción al concepto de Multiproceso ....................................................................... 21

Introducción al Debugging ............................................................................................... 22

Experiencia con Sensores ..................................................................................................... 23

Sensor de Tacto ............................................................................................................... 23

Ejemplo sensor de tacto ................................................................................................ 23

Sensor de tacto - EJERCICIOS: ................................................................................... 24

Sensor de Luz .................................................................................................................. 25

Ejemplo sensor de luz: .................................................................................................. 25

Sensor de luz - EJERCICIOS: ...................................................................................... 26

Sensor de Sonido .............................................................................................................. 27

Ejemplo sensor de sonido: ............................................................................................ 27

Sensor de sonido - EJERCICIOS: ................................................................................ 28

Sensor Ultrasónico ........................................................................................................... 29

Ejemplo sensor de distancia: ........................................................................................ 29

Sensor de distancia - EJERCICIOS: ............................................................................. 30

Timers ............................................................................................................................... 31

Sensor de rotaciones ......................................................................................................... 31

Programa Misterio ............................................................................................................ 31

Práctica Anexo ............................................................................................................................. 32 Objetivos: ................................................................................................................................. 32 Materiales y requerimientos: .................................................................................................... 32 Procedimiento: ......................................................................................................................... 32

Reset del bloque NXT y actualización del firmware ............................................................ 32

Funciones avanzadas ............................................................................................................ 33

Calibración ....................................................................................................................... 33

Ejemplo calibración: ..................................................................................................... 33

Keep Alive ........................................................................................................................ 33

Reset de Motor ................................................................................................................. 33

Acceso a Archivos ............................................................................................................ 34

Comunicación Bluetooth de NXT a NXT ............................................................................ 35

Send message ................................................................................................................... 35

Receive message ............................................................................................................... 35

Ejemplo de comunicación Bluetooth: ........................................................................... 36

Page 4: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

4

Introducción

Bienvenidos al libro de prácticas de RAES. El objetivo de este documento es ayudar y guiar al

alumno en el entendimiento y uso del KIT LEGO® MINDSTORMS® NXT. A través del formato de

prácticas se verán los aspectos más importantes del kit NXT: utilización del bloque NXT, periféricos y

software.

¿Qué es RAES? La Facultad de Ingeniería de la Universidad ORT, organiza el proyecto RAES con el apoyo de la

Agencia Nacional de Investigación e Innovación, Microsoft Uruguay y el Instituto Tecnológico CTC. El

objetivo de esta actividad es la promoción de las nuevas tecnologías entre los jóvenes, mediante la

participación en una actividad teórica, práctica y lúdica.

Desarrollo del concurso

Esta actividad constará de tres fases: capacitación, entrenamiento y competencia sobre la base

del robot del kit Lego Mindstorm NXT.

Capacitación

Los estudiantes recibirán capacitación por parte de docentes de la Universidad ORT en el uso del

robot del kit Lego Mindstorm NXT. Es en esta etapa del concurso en la cual los estudiantes encontrarán

útil este documento.

Entrenamiento

Esta fase estará dedicada al diseño, pruebas y apoyo por parte de los docentes a cada grupo en la

preparación para la competencia.

Competencia

Los grupos participarán en una competencia como culminación del trabajo, pudiendo de esta

forma probar los conocimientos adquiridos en el transcurso de la actividad.

Robótica y robótica en la actualidad La Robótica es la ciencia y la tecnología de los robots. Se ocupa del diseño, manufactura y

aplicaciones de los robots. La robótica combina diversas disciplinas como son: la mecánica, la

electrónica, la informática, la inteligencia artificial y la ingeniería de control. Otras áreas importantes en

robótica son el álgebra, los autómatas programables y las máquinas de estados.

Un robot se define como una entidad hecha por el hombre con un cuerpo y una conexión de

retroalimentación inteligente entre el sentido y la acción directa no bajo del control humano. Sin embargo,

se ha avanzado mucho en el campo de los robots con inteligencia alámbrica.

Las acciones de este tipo de robots son generalmente llevadas a cabo por motores o actuadores

que mueven extremidades o impulsan al robot. Así mismo, el término robot ha sido utilizado como un

término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o

imaginario, pero se ha venido aplicado a muchas máquinas que reemplazan directamente a un humano o

animal en el trabajo o el juego. Esta definición podría implicar que un robot es una forma de

biomimetismo.

Fuente: Wikipedia.

Page 5: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

5

Aplicación y educación en conocimientos Cuando diseñamos, programamos e implementamos un robot, estamos utilizando conocimientos

de física, matemática, electrónica y programación. En RAES nuestro objetivo final es lograr que los

estudiantes aprendan en forma lúdica estos conocimientos.

Física Veremos en forma práctica aplicaciones en el área de la mecánica, ondas ultrasónicas, reflexión

y otros.

Matemática Será una herramienta básica en todo momento.

Electrónica Veremos a través de los señores y motores del KIT LEGO® MINDSTORMS® NXT conceptos de

instrumentación y medida de valores, tratamiento de señales, conversión análogo-digital y otros.

Programación En el nuevo NXT podemos programar en todos los niveles de abstracción de nuestro interés;

tanto por medio de una interfaz de bloques sencilla, para la utilización de alumnos que se inserten en

conceptos de programación; programación orientada a objetos (LEJOS, Lego Java Operation System);

programación en bajo nivel (C), programación del lado del hardware (assembler sobre el ARM7 ATMEL

microcontroller).

Page 6: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

6

LEGO® MINDSTORMS® NXT Partes del Kit

Page 7: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

7

Referentes mundiales

De propósito general

LEGO® MINDSTORMS® http://www.mindstorms.com

Página oficial de MINDSTORMS®

NXTLOG http://www.mindstorm.com/nxtlog

Un espacio libre donde los usuarios del NXT exponen sus ideas y robots

Fuentes de programación

NBC and NXC http://bricxcc.sourceforge.net/nbc

NBC Debugger for NXT http://www.sorosy.com/lego/nxtdbg

BricxCC http://bricxcc.surceforge.net

Fuentes para Bluetooth

MINDSTORMS Bluetooth Resources http://www.mindstorm.com/bluetooth

NXT Bluetooth Compatibility List

http://www.vialist.com/users/jgarbers/NXTBluetoothCompatibilityList

NXT blogs

The NXT STEP http://www.thenxtstep.com

Nxtasy.org http://www.nxtasy.com

bNXT http://www.bnxt.com

Fuente: THE UNOFFICIAL LEGO MINDSTORMS NXT INVENTOR´S GUIDE

Autor: David L. Perdue

Page 8: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

8

Práctica 1

Objetivos:

Introducirse en el funcionamiento del bloque NXT.

a. Conocer las opciones de monitoreo que contiene.

b. Realizar nuestro primer programa lógico.

Introducirse en el armado de robots.

a. Se conocerán las piezas de kit Lego NXT, sus engranajes, uniones, etc. Se

Implementará el primer robot con movilidad Lego NXT.

Materiales y requerimientos: Piezas Lego NXT

Bloque Lego NXT

Motores Lego NXT

6 baterías AA

Firmware de lego original y actualizado funcionando en el bloque. (Ver práctica anexo para

instrucciones de instalación)

Procedimiento: Parte 1)

Coloque las baterías al bloque NXT.

Encienda el bloque presionando el botón naranja central. Observe que existe una barra superior

que nos muestra variada información:

Nombre asignado al bloque NXT

Estado de la comunicación Bluetooth

Nivel de carga de las baterías

Page 9: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

9

Navegue en el menú del bloque NXT hasta encontrar la opción Try Me. Seleccione dicha opción

presionando el botón naranja central. Observará un listado de aplicaciones de prueba para cada sensor

disponible. Seleccione la opción del Try-Touch.

Observará el siguiente mensaje en el display:

Este mensaje muestra en qué puerto debe conectarse el sensor de tacto para hacer la prueba,

conecte el sensor mediante un cable de datos como muestra en la figura. Presione el sensor y vea el

resultado en el display.

Número de sensor asignado

Page 10: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

10

Parte 2) En el menú principal del bloque NXT ingrese en la opción View. Luego seleccione la opción

Motor degrees, seleccione el Puerto A y conecte un servo motor en el Puerto A como se muestra en la

siguiente figura.

Ahora mueva el motor en forma manual y observe lo ocurrido en el display del bloque NXT.

Parte 3) Realice en forma análoga las pruebas para los sensores disponibles:

- Motor rotations, discuta con sus compañeros la diferencia entre este caso y la opción Motor

degrees

- Touch

- Ultrasonic cm

- Ultrasonic inch, discuta con sus compañeros la diferencia entre este caso y la opción Ultrasonic

cm

- Sound dB

- Sound dBA, discuta con sus compañeros la diferencia entre este caso y la opción Sound dB

- Reflected ligth

- Ambient ligth, discuta con sus compañeros la diferencia entre este caso y la opción Reflected

ligth

Observe que existen otras opciones marcadas con un asterisco (*); Rotation*, Temperature oF*, Temperature

oC*, Light Sensor*. Estas opciones refieren a sensores que no integran el Kit básico

de LEGO NXT. Estos sensores pueden ser comprados aparte. Investigue en la página oficial de LEGO® MINDSTORMS® sobre las características de estos sensores.

Parte 4) Arme un robot móvil con 2 motores tal que pueda desplazarse hacia delante, atrás y girar.

Agregue el sensor de luz en forma perpendicular al piso a no más de 2 cm de distancia. Y finalmente

agregue el sensor de distancia en forma horizontal para detectar objetos delante del robot.

Ver documento: rapidbot.pdf

Page 11: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

11

Parte 5) Ingrese en la opción “NXT Program” del menú principal.

Observará un listado de asignaciones para cada sensor y motor, conecte los sensores y motores

como es descripto:

Presione el botón naranja central. Observará que tiene una cadena de 5 cuadrados. En estos

cuadrados debe ingresar comandos que el robot realizará

.

En el primer y tercer cuadrados podemos ingresar comandos como:

Forward

Prende los motores y pasa al siguiente comando.

Forward 5

Prende los motores y espera 5 segundos antes de pasar al

siguiente comando.

Turn right

Enciende lo motores en dirección contraria logrando hacer

girar el robot y pasa al siguiente comando

Cadena de comandos Indicador del comando que

estamos ingresando

Page 12: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

12

Turn right 2

Enciende los motores en dirección contraria logrando hacer

girar el robot y espera 2 segundos antes de pasar al siguiente

comando.

En el segundo y cuarto cuadrados podemos ingresar comandos como:

Empty

No realiza ninguna acción y pasa al siguiente comando.

Wait 2

Espera 2 segundos antes de pasar al siguiente comando.

Object

Espera a detectar un objeto cercano por el sensor ultrasónico

antes de pasar al siguiente comando.

Sound

Espera a recibir un sonido fuerte en el micrófono antes de

continuar al siguiente comando.

Dark

Espera a detectar poca luminosidad en el sensor de luz antes

de continuar al siguiente comando.

Light

Espera a detectar una gran luminosidad en el sensor de luz

antes de pasar al siguiente comando.

Touch

Espera a detectar que se presiona el sensor de tacto antes de

pasar al siguiente comando.

Finalmente en el quinto cuadrado tenemos la opción de terminar el programa con el comando

Stop

Termina el programa.

Loop

Vuelve a comenzar desde el primer cuadro.

Pruebe las siguientes combinaciones y discuta con sus compañeros qué realizará el robot antes de

ponerlo en funcionamiento:

1) Programa 1: Forward, Wait 2, Turn right 2, Empty, Loop.

2) Programa 2: Forward, Object, Back right 2, Empty, Loop.

3) Programa 3: Coloque el robot la pista del Kit y codifique el siguiente programa. Forward, Light,

Tone 1, Empty, Stop.

Page 13: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

13

Práctica 2

Objetivos:

Introducirse en el funcionamiento del bloque NXT con el LEGO® MINDSTORMS® NXT Software.

a. Conectar el bloque NXT al PC vía USB.

b. Conocer las opciones de monitoreo que contiene el LEGO® MINDSTORMS® NXT Software sobre el bloque NXT.

c. Realizar un primer programa lógico sobre el PC.

d. Observar las distintas formas de bajar el programa al bloque NXT y ejecutarlo.

Materiales y requerimientos: Kit Lego NXT completo

Cable USB

PC con el LEGO® MINDSTORMS® NXT Software instalado

6 baterías AA

Firmware de lego original y actualizado funcionando en el bloque. (Ver práctica anexo para

instrucciones de instalación)

Procedimiento:

Acondicionamiento del NXT y PC para trabajar

Instale el LEGO® MINDSTORMS® NXT Software que obtiene en el KIT LEGO NXT. Abra el

programa MINDSTORMS NXT haciendo doble clic sobre el ícono que se encuentra en el escritorio de su

PC.

Se desplegará la siguiente ventana:

Para conectar el bloque NXT a un PC existen 2 formas; por medio de un cable USB (que será el

método utilizado en este curso) y vía Bluetooth.

Page 14: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

14

Conecte el bloque NXT como muestra en la figura y el otro extremo del cable al PC

Encienda el bloque NXT y observe que muestra que tiene una conexión USB:

Monitoreo Podrá observar el estado en cualquier instante de algunos valores del bloque desde el PC, para

lograr este monitoreo cree un nuevo programa haciendo clic en el siguiente ícono.

Para consultar la ventana de estado del bloque NXT presione el botón que se señala en la

siguiente imagen:

Se mostrará una ventana con varias propiedades del bloque NXT. En el margen derecho tenemos

la zona NXT Data que muestra el nombre del bloque y el voltaje que presenta la batería, el espacio libre

en memoria y la versión del Firmware.

Page 15: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

15

En la solapa Memory observará cómo están distribuidos los archivos guardados en la memoria

del bloque NXT con sus respectivos nombres y peso(1)

.

Es posible también monitorear el estado de cada sensor y motor desde el software, esto lo

veremos en la práctica 3.

Primer Programa

El Primer programa consistirá en mostrar en el display del NXT la frase: “HOLA MUNDO”.

Para ello no es necesario realizar el armado del Robot. Simplemente utilizar el bloque y el PC.

Para logar este programa simplemente arrastre los bloques Display y Wait de la barra de

bloques.

La barra de bloques se encuentra a la izquierda de su pantalla y tiene tres solapas las cuales

lograrán organizar los bloque en tres vistas: Common, Complete y Custom.

La vista Common muestra los bloques más comunes, la vista Complete muestra todos los

bloques que podemos utilizar en nuestra NXT y la vista Custom permitirá ver bloques extra que podrán

ser creados por uno mismo u obtenidos de la web.

El bloque Display mostrará varias opciones, seleccione la opción Text y escriba “HOLA

MUNDO”

peso(1): El peso de un archivo es el tamaño que ocupa en memoria, se mide en bytes. En el caso del NXT lo veremos en KB (kilo

bytes).

Page 16: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

16

Para el bloque Wait seleccione la opción NXT Buttons.

Presione el botón Download and run y observe lo ocurrido.

El bloque Wait que se colocó es necesario ya que de otra forma, el programa se ejecuta y se

termina casi instantáneamente, por lo que se vuelve inmediatamente al menú de selección de programa y

no se pueden apreciar los efectos de correr el programa.

Otra forma

Otra forma de ejecutar el programa es enviar el programa al bloque NXT y luego ejecutarlo

desde el mismo bloque eso se puede hacer mediante el botón Download:

Page 17: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

17

Práctica 3

Objetivos:

Introducirse en el armado de robots basándose en los tutoriales que ofrece el LEGO® MINDSTORMS® NXT Software.

Conocer el funcionamiento de cada uno de los sensores que compone el Kilt Lego NXT

realizando experiencias individuales con cada uno de ellos.

Materiales y requerimientos:

Kit Lego NXT completo

Cable USB

PC con el LEGO® MINDSTORMS® NXT Software instalado

6 baterías AA

Firmware de lego original y actualizado funcionando en el bloque. (Ver práctica anexo para

instrucciones de instalación)

Procedimiento:

Armado del Robot

Para ésta práctica se utilizará como Robot base el descrito en el tutorial del LEGO® MINDSTORMS® NXT Software como TriBot que se encuentra en la sección de Vehicles. Al mismo se

le agregarán todos los sensores que componen el Kit Lego NXT.

Abra el programa LEGO® MINDSTORMS® NXT Software haciendo doble

click sobre el icono que se encuentra en el escritorio de su PC luego de haberlo

instalado.

La barra que se encuentra a nuestra derecha tiene dos solapas: Robo Center y My Portal.

My portal es un espacio online donde tenemos conexión

directa con el centro de Lego MINDSTORMS donde se publican

actualizaciones, eventos, software y armado a modo de tutorial y

descarga directa.

Robo Center es una buena opción para nuestros comienzos

en el armado de robots. Contiene tutoriales para el armado paso a paso

de robots estándar del tipo, vehículos, máquinas, animales y

humanoides.

Page 18: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

18

Comencemos armando el TriBot para ello seleccione

Vehicles y luego Go como se muestra en la figura a

continuación.

Para la construcción de la base de cada uno de

los sensores se debe seguir la guía de los ítems que se

indican en la siguiente imagen.

Dumper: Base para el sensor de Presión.

Grabber: Pinzas.

Sound Control: Base para el sensor de Sonido.

Light Sensor: Base para el sensor de Luz.

Locate Object: Base para el sensor

Ultrasónico

Finalmente obtendremos nuestro TriBot.

Page 19: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

19

Introducción a los conceptos de programación A continuación se introducirán conceptos básicos de la programación del bloque. Se recomienda

leer esta sección mientras se realiza la experiencia con sensores.

Introducción al concepto de Loop

El bloque de LOOP nos permite repetir una serie de acciones. El bloque permite definir de varias

formas distintas cuantas veces se realizará esa serie de acciones. Por defecto, el bloque repite las acciones

contenidas en él infinitas veces. Esto se puede cambiar (utilizando el “control”) para que repita el bloque

una cierta cantidad finita y conocida de antemano de veces (“Count”), un cierto tiempo (“Time”), hasta

que un sensor sea activado o cumpla alguna condición (“Sensor”) o hasta que se cumpla alguna otra

condición lógica.

Introducción al concepto de Parámetros y conversión de tipos

Casi todos los bloques permiten la modificación de sus parámetros de funcionamiento por medio

de la conexión de cables. Además, proporcionan una manera de obtener información de los mismos. Los

cables son accesibles presionando la solapa en la esquina inferior izquierda del bloque. Cuando se le

conecta un cable, el valor que posea el cable toma prioridad sobre el valor definido en la configuración

del bloque. Para conectar un cable basta con hacer click en una salida y soltar sobre la entrada del otro

bloque. Para ver que valores posibles puede recibir cierto parámetro, se puede recurrir a la ayuda del

programa, seleccionando el bloque deseado y presionando F1.

Cada cable tiene un tipo de datos. Puede ser un número, un texto o un dato lógico (verdadero o

falso). Si se quiere mostrar por pantalla el valor de un número, no se puede conectar el número al bloque

de display directamente ya que son dos tipos de datos distintos (el display toma solo texto como entrada).

Por eso, debe utilizarse el bloque de conversión de número a texto (“Number to text”). Debe poner el

bloque de display en modo “Text” para que se imprima lo que se recibe por parámetro.

Introducción al concepto de Condicional

En algunos casos se requiere que el programa tome un camino distinto según se cumpla o no una

condición. Para esto se dispone del bloque de Switch (conocido en otros lenguajes como “if”). Este

Page 20: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

20

bloque, cuando es ejecutado, evalúa la condición que lo define (que puede ser una variable lógica o el

estado de un sensor) y según el resultado, ejecuta una u otra rama.

Introducción al concepto de Variables

Los cables que se manejaron hasta ahora no tenían permanencia en el tiempo. Solo se podían

utilizar en el momento que se realizaba la lectura. Para guardar un valor y poder utilizarlo luego se

utilizan las variables. Las variables deben definirse previamente en el menú de “Edit”, “Define

Variables”. Se aconseja utilizar nombres de variable que reflejen su contenido. En los bloques de variable

se puede realizar una lectura (“Read”) o una escritura (“Write”) del valor contenido. Las variables son de

un solo tipo de dato. La asignación o lectura de la variable ocurre sólo en el momento que es ejecutada.

Introducción al concepto de Comparaciones numéricas y Comparaciones lógicas

Cuando se tienen dos números, es posible compararlos mediante el bloque de comparaciones. Se

debe seleccionar la comparación a efectuar entre ambos números y se obtiene un resultado lógico.

Si se desea realizar una operación lógica entre dos variables lógicas se debe utilizar este bloque.

Soporta operaciones tales como AND, OR, XOR y NOT (“y”, “o”, “o exclusivo” y “negación”).

Introducción al manejo matemático de variables

Page 21: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

21

En caso que se requiera realizar operaciones matemáticas sobre los números se dispone del

bloque de matemática (“Math”). Se pueden realizar sumas, restas, multiplicaciones y divisiones.

Un ejemplo típico es como se observa en la siguiente imagen. Se lee un número, se le suma uno

en el bloque de Math y por último se guarda el nuevo valor sobre el leído inicialmente.

Introducción al concepto de Algoritmos

Un algoritmo es un procedimiento detallado que indica como realizar cierta actividad. Por

ejemplo, una receta de cocina es un algoritmo de como preparar cierta comida. Se detallan los pasos a

seguir y en que orden deben seguirse para resolver el problema.

Introducción al concepto de Encapsular

Cuando se resuelve un problema complejo se debe partir este problema complejo en

subproblemas más manejables, y estos, a su vez, volver a subdividirlos. Así hasta encontrarse contra

problemas que sea evidente su solución. Cuando miramos el programa en su totalidad, este puede ser muy

complejo. Para reducir la complejidad con la cual nos enfrentamos en cada nivel, se puede encapsular

ciertas acciones. Por ejemplo, se puede crear un bloque “girar hacia la izquierda x cantidad de grados o

hasta que se vea negro en el sensor de luz”. Este bloque puede reutilizarse la cantidad de veces que sea

necesario en nuestro programa. Para definir un bloque nuevo, se deben seleccionar todos los bloques que

nos interesa resumir y hacer click en “Edit”, “Make a New My Block”. Esto nos llevará por una serie de

pasos para crear el nuevo bloque. Luego, cambiando a la paleta Custom, se podrá colocar el bloque. Si se

hace doble click en el bloque (una vez colocado) se accede a sus contenidos y se puede modificar.

Introducción al concepto de Multiproceso

Algunas operaciones requieren realizar dos actividades al mismo tiempo. Para esto, el entorno

nos permite realizar lo que se conoce como multiproceso. Cuando se utiliza esto ambos “hilos” (cada

“hilo” representa una actividad que se esta haciendo en paralelo) corren “a la vez”. En realidad el

procesador es secuencial (puede sólo ejecutar una acción detrás de otra), pero el sistema operativo del kit

se encarga de alternar rápidamente entre ambas tareas para que de la ilusión de que ambas corren a la vez.

Si se mantiene presionado SHIFT mientras se hace click y arrastra, se puede crear un nuevo hilo

de ejecución en cualquier momento.

Por ejemplo, la siguiente imagen muestra un programa multihilo donde un motor siempre esta

avanzando y el otro hilo se encarga de ir mostrando en el display la lectura de la intensidad del sensor de

luz.

Page 22: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

22

Introducción al Debugging En toda programación es inevitable el hecho de cometer errores durante la programación y que

luego el programa no cumpla los objetivos que se plantearon. Una vez que se escribió el programa y se

verificó que no cumple alguna de las expectativas que se tenían, se debe analizar que ocasionó el fallo del

mismo. Un “bug” es cuando el programa no realiza correctamente alguna de las tareas asignadas.

Una de las técnicas de debugging más efectivas para aplicar en el NXT es utilizar el bloque de

display para mostrar al programador que es lo que está realizando el robot en cierto momento. La idea es

ubicar estos bloques para comprobar que el programa efectivamente esta ejecutando lo que el

programador piensa que esta ejecutando en ese momento. Se puede además mostrar en la pantalla el

estado de las variables que sean importantes para esa parte del código, para así confirmar que están

comportándose correctamente.

Page 23: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

23

Experiencia con Sensores

Sensor de Tacto

Para poder comandar el sensor de tacto ir a Complete palette y seleccionar Touch Sensor, tal

como se muestra en la siguiente imagen. Este tipo de bloque, cuando es ejecutado, lee el valor actual del

sensor y continua el programa.

Para visualizar los parámetros del bloque hacer clic en la parte inferior del bloque. Para ingresar

la configuración del sensor de tacto, simplemente seleccionar el bloque y modificar la ventana de

configuración que se despliega en la parte inferior izquierda de la pantalla.

Ejemplo sensor de tacto

Mueva el Robot en línea recta tal que al chocar con un tope detenga su marcha. No utilice los

motores en su máxima potencia. En este caso se utiliza el tipo de bloque “Wait”, que se lo configura para

esperar a que se realice un toque. El robot continúa avanzando ya que se han encendido los motores sin

ninguna condición de detención. Intente cambiar el bloque de avance por uno con condición de detención,

observe que sucede.

Page 24: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

24

Sensor de tacto - EJERCICIOS:

1) Ejercicio: Realice el ejercicio anterior utilizando el bloque LOOP.

2) Ejercicio: Muestre en pantalla el valor numérico que envía el sensor al bloque NXT (cable

amarillo). Para ello observe la tabla de cables:

Asignación de cables:

[A] Entrada

[B] Salida

[C] Dato numérico (amarillo)

[D] Dato lógico (verde)

[E] Dato tipo texto (naranja)

[F] Cable erróneo (gris)

Tabla de asignaciones de cables para el sensor de tacto:

La tabla de asignaciones de cables para cada bloque se puede leer en la ayuda del programa. Se

hace click sobre el bloque que se necesita saber la información y se presiona F1.

Page 25: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

25

Sensor de Luz

Para poder comandar el sensor de luz ir a Complete palette y seleccionar Light Sensor, tal

como se muestra en la siguiente imagen.

Para visualizar los parámetros del bloque hacer clic en la parte inferior del bloque. Para “setear”

la configuración del mismo realizar los mismos pasos que en el sensor de tacto.

Ejemplo sensor de luz:

Observe el valor numérico mostrado por el sensor y el valor de intensidad para los colores

primos. Observe la diferencia con el generador de luz encendido y apagado.

Page 26: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

26

Sensor de luz - EJERCICIOS:

1) Ejercicio: Mostrar una “carita feliz” cuando el valor del sensor de luz supere el 50% de lo

contrario muestre una “carita triste”.

2) Ejercicio: Leer un valor de color y luego realizar el ejercicio anterior pero comparando con el

color inicialmente obtenido.

Page 27: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

27

Sensor de Sonido

Para poder comandar el sensor de tacto ir a Complete Palette y seleccionar Sound Sensor, tal

como se muestra en la siguiente imagen.

Para visualizar los parámetros del bloque hacer clic en la parte inferior del mismo. Para “setear”

la configuración del sensor proceder de la misma manera que los sensores detallados anteriormente.

Observe que si conecta el NXT y el sensor, el NXT actualizará el valor leído del sensor en el

panel de información.

Ejemplo sensor de sonido:

Este ejemplo muestra el valor numérico e intensidad del sensor.

Valor actual leído del sensor

Page 28: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

28

Sensor de sonido - EJERCICIOS:

1) Ejercicio: Realice un contador de aplausos, desplegando la cantidad de aplausos que registre el

sensor de sonido.

2) Ejercicio: Muestre el máximo valor obtenido por el sensor de sonido durante 10 segundos.

Page 29: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

29

Sensor Ultrasónico

Para poder comandar el sensor de tacto ir a Complete palette y seleccionar Ultrasonic Sensor,

tal como se muestra en la siguiente imagen.

Para visualizar los parámetros del bloque hacer clic en la parte inferior del mismo. Para “setear”

la configuración del sensor proceder de la misma manera que los sensores detallados anteriormente.

Ejemplo sensor de distancia:

Muestre el valor numérico mostrado por el sensor y el valor de intensidad.

Page 30: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

30

Sensor de distancia - EJERCICIOS:

1) Ejercicio: Agregue otro proceso que movilice el NXT hacia delante buscando una pared, al

encontrarla debe moverse paralelo a ella.

2) Ejercicio: Realice el ejercicio anterior encapsulando el código que muestra el valor del sensor en

un bloque propio.

3) Ejercicio: Este programa tiene como objetivo avanzar hasta que choca contra una pared y

entonces doblar para evitarla. ¿Funciona correctamente? Si no funciona, corrija el error.

Ahora se desea modificar el programa para que además de girar cuando choca contra una pared,

se muestre por pantalla si el sensor de luz va observando blanco o negro. Exprese esta modificación de

dos formas distintas, una utilizando multiproceso y una sin utilizarlo.

Page 31: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

31

Timers

Los timers permiten contar el tiempo transcurrido desde un evento. Cuando se quiera iniciar la

cuenta, se debe poner “Action” en “Reset”. Luego, cuando se desee saber cuanto tiempo ha transcurrido

desde el evento, simplemente se lee el mismo timer. Se dispone de 3 timers en el robot.

Sensor de rotaciones

El sensor de rotaciones permite leer la cantidad de rotaciones que ha girado cierto motor. Para

utilizarlo, se debe resetear la cuenta de las rotaciones del motor y luego leer cuanto ha rotado. Si nunca se

resetea la cuenta, este cuenta las rotaciones desde que se prendió el kit (incluyendo mientras el programa

no corría). Por lo tanto, es recomendable resetear la cuenta cuando se inicia el programa.

Programa Misterio

En el archivo misterio.rbt se proporciona un programa del cual se desconoce su propósito. Su

tarea es encontrar que hace el programa sin descargarlo al kit.

Page 32: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

32

Práctica Anexo

Objetivos:

Mostrar la opción de “reset” de bloque y cómo bajar el firmware al bloque NXT.

Conocer funcionalidades avanzadas: Keep alive, Calibrate, File Access, Reset Motor.

Comunicación vía Bluetooth de NXT a NXT.

Materiales y requerimientos:

Kit Lego NXT completo

Cable USB

PC con el LEGO® MINDSTORMS® NXT Software instalado

6 baterías AA

Firmware de lego original y actualizado funcionando en el bloque. (Ver práctica anexo para

instrucciones de instalación)

Procedimiento:

Reset del bloque NXT y actualización del firmware En algunos casos nos vemos forzados a borrar por completo los datos del el bloque NXT sea por

respuestas no deseadas, utilización de otro firmware o actualizaciones. Al “resetear” el bloque NXT este

borrará toda su memoria.

Este procedimiento se realiza presionando con un objeto fino el botón de reset, como muestra la

figura

Luego de “resetear” el bloque NXT es recomendable instalar nuevamente le firmware al bloque

NXT. Esto se logra conectando el bloque a un PC y, en el LEGO® MINDSTORMS® NXT Software seleccionar la opción que muestra la figura.

Page 33: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

33

Funciones avanzadas

Calibración El bloque de calibración es un elemento esencial para obtener buenos resultados de los sensores

de luz y sonido. El bloque de calibración muestra las opciones valores máximos y mínimos a calibrar y el

sensor en cuestión.

Ejemplo calibración:

En el archivo Calibracion.rbt se muestra un ejemplo de cómo calibrar el señor de luz para

detectar correctamente la diferencia entre el color blanco y negro. Este ejemplo también guarda el valor

del un color gris. Luego muestra en que color se encuentra leyendo el sensor de luz.

Keep Alive El bloque Keep Alive evita que el robot entre en modo de descanso si pasó mucho tiempo

esperando un comando o una comunicación. No recibe parámetros y puede comunicarse con otros

bloques reportando el tiempo que faltaría para que el robot entre en modo de descanso.

Reset de Motor

El bloque de reset de motor evita que los motores corrijan el número de rotaciones según lo

especificado.

Los servo-motores del kit NXT tienen un sistema de corrección de giro que les permite girar

exactamente el número de vueltas especificado por la programación por más que la acción siguiente sea

“coast” (dejar el motor suelto). Si no se quisiera este grado de exactitud, o se quisiera dejar el motor girar

suelto (por ejemplo bajando una rampa) se debe desactivar el control de rotación de los motores, ubicando

el bloque de Reset de Motor luego de una acción de rotación que termine en “coast”.

Se le puede indicar a qué motor afecta en sus propiedades.

Page 34: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

34

Acceso a Archivos

El bloque de acceso a archivos funciona de una manera muy similar al bloque de acceso a

variables. Permite leer o editar variables con la característica de que los valores de las mismas se

mantendrán luego de apagar el robot. Permite leer, escribir o eliminar variables, ya sean texto o

numéricas.

Al escribir un archivo este se crea si no existía anteriormente o se edita agregando los nuevos

datos al archivo. Siempre que se haga una acción sobre un archivo, este se debe cerrar (mediante la cuarta

función del bloque) antes de realizar otra acción. Si se quisiera sustituir el contenido de un archivo en

lugar de agregar la información se debe primero eliminar el archivo y luego escribir sobre él.

Si el kit NXT se encuentra conectado a la PC mientras se está desarrollando el programa, en

lugar de escribir el nombre del archivo se permite seleccionarlo de la memoria del robot eligiéndolo de

una lista.

Page 35: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

35

Comunicación Bluetooth de NXT a NXT Bluetooth, es una especificación para Redes Inalámbricas de Área Personal (WPANs) que

posibilita la transmisión de voz y datos entre diferentes dispositivos mediante un enlace por

radiofrecuencia segura. Los principales objetivos que se pretenden conseguir con esta norma son facilitar

las comunicaciones entre equipos móviles y fijos, eliminar cables y conectores entre éstos, ofrecer la

posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización de datos entre nuestros

equipos personales.

En nuestro caso mostraremos como comunicar un robot NXT con otro.

Pare ello veremos 2 bloques que presenta nuestro LEGO® MINDSTORMS® NXT Software: Send message El bloque Send Message logra enviar mensajes por bluetooth, para ello debemos setearle el

mailbox en el cual recibiremos el mensaje.

Receive message

El bloque recibe message es el que recibe el mensaje, debemos configurar el mailbox del cual

queremos recoger el valor.

Page 36: (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina mecánica o autómata, que imita a un animal, ya sea real o imaginario, pero se ha

36

Ejemplo de comunicación Bluetooth:

Realice un contador que incremente a cada vez que se presione el botón central del NXT 1.

Despliegue en el NXT 2 el contador actualizado del NXT 1.

Procedimiento:

Encienda la opción Bluetooth en los 2 bloques NXT. En el NXT1 seleccione la opción de

Bluetooth como visible. En el NXT2 busque los dispositivos en el área de alcance Bluetooth y seleccione

el dispositivo NXT1 para conectar.

En el NXT1 ejecute el siguiente programa:

Y en el NXT2 ejecute el siguiente programa:

Proyecto RAES - Robótica Aplicada en la Enseñanza Secundaria

Universidad ORT Uruguay

Versión inicial: Ing. Daniel Goldenberg

Actualización a Versión 1.2: Ismael Garrido

Colaboraciones: Gonzalo Garat, André Fonseca de Oliveira