(Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina...
Transcript of (Versión 1.2) Proyecto RAES 2009 - fi.ort.edu.uy · término general que define a una máquina...
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
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
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
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.
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).
6
LEGO® MINDSTORMS® NXT Partes del Kit
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
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
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
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
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
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.
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.
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.
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).
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:
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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