Tutorial: Primeros pasos

Este documento está dirigido a los niños y por lo tanto su estilo es especial y diferente al estilo del sitio.

Este tutorial te enseña algunos ejercicios con tu Thymio II. Paso a paso descubrirás como controlar el robot; aprenderás a programarlo, a controlar los motores, sus LEDs, etc. Y al terminar, tú mismo, hbrás dado una nueva personalidad y un nuevo comportamiento a Thymio.

Este tutorial consta de varias secciones, cada una orientada a un aspecto diferente. estas son:

Thymio y Aseba: como comenzar

Toma tu robot y enciéndelo presionando durante algunos segundos el botón circular del centro. Thymio encenderá algunas luces y emitirá un sonido particular. Ahora, puedes escoger entre uno de sus comportamientos particulares utilizando los botones flecha: Cada vez que presiones un botón flecha, Thymio cambiará de personalidad y su cuerpo cambiará de color. Para activar el comportamiento seleccionado debes presionar el botón circular.

De aquí en adelante, vas a crear un nuevo comportamiento para Thymio, y por lo tanto le darás un nuevo color a su cuerpo.

Conecta el robot a tu PC utilizando el cable USB (incluido) y ejecuta Aseba Studio. Este programa te permite darle instrucciones a Thymio y así cambiar su comportamiento. Aseba Studio consta de los siguientes componentes:

asebalayoutEN.png
  1. Con estos puedes cargar y ejecutar los códigos que has escrito.
  2. En esta ventana puedes ver el contenido de la memoria del robot, es decir, los valores actuales de los sensores, los actuadores, las variables variables y constantes.
  3. Aquí encuentras las funciones incorporadas y los eventos que puedes usar.
  4. Este es el editor del código, la herramienta que utilizas para escribir las instrucciones que deseas darle al robot.
  5. Aquí puedes definir constantes.
  6. Aquí puedes crear eventos.
  7. Aquí aparecerán mensajes que te indican si las instrucciones están bien escritas o contienen errores.

¿Qué es un código?

El código es una secuencia de instrucciones escritas que el robot puede entender y ejecutar.

Los sensores

Hacia el lado izquierdo de la ventana encuentras la lista de sensores y sus valores actuales. Los sensores actúan como tus sentidos. Estos perciben la luz, el sonido y la aceleración, les asignan valores y los convierten en cantidades que el robot pueda comprender y utilizar. Por ejemplo, los sensores de proximidad que encuentras en la parte delantera del robot, miden la distancia hasta objetos cercanos. Los valores de distancia aparecerán como prox.horizontal en la ventana Memory (memoria). Si pones tu mano cerca de estos sensores y presionas refresh (actualizar) te darás cuenta que los valores cambiarán, como te lo mostramos en estas imágenes:

proxmainEN.png proxrienEN.png

En la imagen del lado izquierdo, los sensores de proximidad no han detectado ningún objeto y por lo tanto el valor medido es 0 (cero). En la imagen del lado derecho, los sensores han detectado un objeto cercano y por lo tanto su valor es mayor que cero; cuanto más cerca se encuentre el objeto mayor será su valor. Este mismo efecto puedes notarlo en la intensidad de las luces asociadas a cada sensor.

Los LEDs

Los LEDs son los componentes del robot que producen luz. El color de su luz depende de su fabricación. Thymio tiene por ejemplo, LEDs rojos en el frente, verdes en la parte superior, entre otros.

Los LEDs RGB son los encargados de iluminar el cuerpo de Thymio con diferentes colores. En realidad son un conjunto de tres LEDs: rojo, verde y azul, que al combinarlos podemos crear los colores del arco iris. RGB son las iniciales de estos tres colores, pero en ingles: Red, Green y Blue.

Encender un LED

Para que Thymio encienda un LED, debes darle la orden por medio de una instrucción escrita ó código. Puedes consultar la lista de funciones incorporadas en la ventanita Native functions. En particular, para consultar las funciones que controlan los LEDs, debes hacer clic sobre el ítem leds (ver imagen). Por ejemplo, la función leds.top te permite encender y apagar el LED RGB de la parte superior.

functionsEN.png

El siguiente código te permite encender el LED RGB de la parte superior del cuerpo de Thymio. Digita el código en el editor de Aseba:

call leds.top(0,0,32)

La instrucción call se usa para ejecutar la función leds.top que a su vez es la encargada de controlar el LED RGB. Si dejas el apuntador del mouse durante unos instantes sobre el nombre de la función, aparecerá un recuadro de ayuda que te enseña a utilizar la función. Entre paréntesis encuentras los parámetros o argumentos de la función.

definition.png

La función leds.top requiere de 3 argumentos que son: la intensidad del LED rojo, del verde y del azul. Los argumentos pueden tomar valores entre 0 y 32, donde 0 significa que el LED está apagado y 32 significa que está alumbrando con la máxima intensidad.

Luego, presiona el botón Load para enviar el código a la memoria del robot y luego Run para que lo ejecute. Podrás ver cómo el cuerpo de Thymio se ilumina de color azul.

Para que el cuerpo de Thymio se ilumine de color verde, modifica los argumentos de la siguiente manera:

call leds.top(0,32,0)

La siguiente combinación de argumentos, produce el color cyan:

call leds.top(0,32,32)

Puedes divertirte creando nuevos colores. Sólo tienes que jugar con los argumentos de la función. Recuerda que los argumentos corresponden a los colores RGB: rojo, verde y azul.

Comentarios

Hasta este momento, todo lo que has escrito en el código, son instrucciones que el robot comprende y ejecuta. Sin embargo, algunas veces necesitas incluir en tu código, información adicional para tí o para otras personas, aunque Thymio no las entienda. En ese caso, no hablamos de funciones, sino de comentarios. Los comentarios pueden ser, por ejemplo, descripciones generales de lo que hace el programa, o explicaciones particulares de lo que hace o significa una determinada instrucción.

El signo # le indica a Thymio que el texto que le sigue hasta el final de la línea, no es una instrucción sino un comentario. Si quieres incluir comentarios de más de una línea, entonces debes escribirlos así: #* comentarios *#.

# Iluminar de color azul el cuerpo de Thymio – El robot ignora esta línea
call leds.top(0,0,32)

Concejo para escribir más rápido

En Aseba Studio puedes arrastrar las funciones desde las listas laterales hasta el editor en el centro de la ventana. Puedes copiar bloques de código similares utilizando: copiar y pegar: Ctrl-C y Ctrl-V en Windows; Command-C y Command-V en Mac OS.

Condiciones y toma de decisiones

Por ahora, Thymio sigue tus ordenes cuando presionamos el boton Execute en Aseba. Pero también puedes hacer que Thymio siga una instrucción solo cuando se presente una condición determinada. Por ejemplo, puedes hacer que el cuerpo cambie de color cuando alguien presione uno de sus botones.

Para detectar que alguien tocó uno de sus botones, puedes monitorear la variable button.name que aparece listada en la ventanita Memory (memoria).

buttonsENv3.png

En la imagen puedes ver que alguien presionó el botón adelante.

Luego, usamos la estructura de condición if condición_1 then instrucción_1 else … end que significa: si se cumple la condición_1 entonces ejecute la instrucción_1. La idea es que el robot siga la siguiente instrucción: SI alguien preionó un botón, ENTONCES encienda el LED. El código que debes escribir en el editor de Aseba es el siguiente:

if button.forward==1 then         # si el botón adelante está presionado
    call leds.top(0,0,32)         # entonces encienda el LED RGB en azul
else                              # de lo contrario
    call leds.top(0,0,0)          # apagar el LED RGB
end

Este código quiere decir que cuando el botón adelante (button.forward) esté presionado, el LED RGB alumbra azul. De lo contrario lo apaga. Si ejecutas este código, verás que solo funciona una vez. Si quieres que la luz se encienda cada vez que alguien toque el botón adelante, Thymio debe revisar constantemente el estado del botón. Para lograrlo, debes programar un evento.

Eventos

Un evento es
Un evento es el cumplimiento de una determinada condición en el tiempo. Puedes programar eventos para que Thymio ejecute algunas instrucciones en el instante cuando se cumple una determinada condición. En la ventanita del lado inferior derecho, encuentras la lista de local events (eventos locales).

eventsENv3.png

Los eventos buttons (botones), por ejemplo, corresponden a eventos que se producen cuando la condición de botón presionado se cumple. Entonces, bastaría agregar una linea al principio de nuestro código anterior para hacer que se ejecute cada vez que de el evento o se cumpla la condición:

onevent buttons              # Monitorear continuamente el estado de los botones
if button.forward==1 then    # si el botón adelante fue presionado
    call leds.top(0,0,32)    # entonces iluminar el LED RGB en azul
else                         # de lo contrario
    call leds.top(0,0,0)     # apagar el LED RGB
end

Si probamos este código ( presionando Load y luego Execute), te darás cuenta que Thymio se ilumina (azul) cada vez que alguien toca el botón.

Además de este evento, puedes usar otros: motor para los motores, acc acelerómetros, etc.

¿Cómo usar los motores?

Los motores disponen de 3 variables en la memoria. Por ahora, trabajaremos con dos de ellas, motor.side.target y motor.side.speed. La primera de ellas te sirve para controlar la velocidad, mientras que la segunda te indica la velocidad actual. Estas dos variables pueden ser un poquito diferentes.

motorv3.png

En la imagen puedes ver que la velocidad actual (motor.side.speed) de los motores no corresponde exactamente con la velocidad de referencia (motor.side.target).

Vamos a divertirnos un poco, escribiendo un código que active los motores con eventos de los botones; es decir, los motores funcionaran de determinada manera cuando alguien presione los botones.

onevent buttons                # Monitorear continuamente los botones
if button.forward==1 then      # si alguien presiona el botón adelante
    call leds.top(0,0,32)      # entonces iluminar LED RGB azul
else                           # de lo contrario
    call leds.top(0,0,0)       # apagar el LED RGB
end

if button.forward==1 then      # Si alguien presiona el botón adelante
    motor.left.target=200      # activar motor izquierdo hacia adelante
    motor.right.target=200     # activar motor derecho hacia adelante
end

if button.center==1 then       # Si alguien presiona el botón del centro
    motor.left.target=0        # motor izquierdo apagado
    motor.right.target=0       # motor derecho apagado
end

if button.backward==1 then     # Si alguien presiona el botón atrás
    motor.left.target=-200     # activar motor izquierdo hacia atrás
    motor.right.target=-200    # activar motor derecho hacia atrás
end

if button.left==1 then         # Si alguien presiona el botón izquierda
    motor.left.target=-200     # activar motor izquierdo hacia atrás
    motor.right.target=200     # activar motor derecho hacia adelante
end

if button.right==1 then        # Si alguien presiona el botón derecha
    motor.left.target=200      # activar motor izquierdo hacia adelante
    motor.right.target=-200    # activar motor derecho hacia atrás
end

Ahora puedes conducir a Thymio usando los botones. No olvides enviar el código al robot presionando Load y Execute en Aseba.

¿Cómo usar los sensores?

Puedes usar tus sensores de proximidad, por ejemplo, para evitar que Thymio se caiga de la mesa. Tu robot dispone de 9 sensores de proximidad: 5 en el frente, 2 en la parte de atrás y dos por debajo. Usaremos los sensores que Thymio tiene por debajo para detectar los bordes de la mesa y detener la marcha.

Los sensores de proximidad

Un sensor de proximidad sirve para medir la distancia que hay entre el sensor y un objeto cercano. Para lograr esto, Thymio usa dos componentes: un emisor infrarrojo y un receptor. El emisor produce luz infrarroja que es invisible al ojo humano, mientras el receptor mide cuanta de esta luz se refleja y se devuelve. Si un objeto se encuentra cerca, refleja mucha más luz que si está lejos. Así es como Thymio puede medir la distancia a objetos cercanos.

Nosotros vamos a utilizar los sensores de proximidad que están por debajo para detectar la mesa. Lo primero que debes hacer es poner el robot sobre la mesa y observar la distancia; es decir, el valor de prox.ground.delta. Debes actualizar los valores medidos presionando refresh.

proxtable.png

Repite el procedimiento, pero mientras sostienes a Thymio en el aire. Verifica que ningún objeto se encuentre cerca de los sensores de proximidad de por debajo. Te darás cuenta que los valores de prox.ground.delta cambian bastante.

proxvide.png

Ahora adicionaremos unas líneas más al final del código:

onevent prox
if prox.ground.delta[0]<300 or prox.ground.delta[1]<300 then
    motor.left.target=0 
    motor.right.target=0 
end

Si el valor el valor de uno de los sensores es muy bajo (no se detectó la mesa), entonces los motores se detienen. Verás entonces que el robot se detiene al llegar a los bordes de la mesa.

Felicitaciones!

Has llegado al final de este tutorial y has creado un nuevo comportamiento para tu robot. Si lo deseas, puedes guardar el código. Cierra Aseba Studio y desconecta tu robot mas cómodamente. NOTA: Si apagas a Thymio, el olvidará el código que escribiste y si quieres volverlo a utilizar debes recargarlo y ejecutarlo otra vez.

Diviértete aún más, personalizando los comportamientos del robot. Puedes modificar o adicionar nuevas partes a tu código; por ejemplo, puedes usar los demás sensores y LEDs.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License