Vous êtes sur la page 1sur 16

Programando con Enchanting

Programacin para robtica

Autor
Versin
Ubicacin

Andrs Baranzano

Fecha
Laboratorios Digitales

15/11/12

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

ndice
Introduccin.............................................................................................................................3
Instalacin en Windows.........................................................................................................3
Instalacin en Ubuntu...........................................................................................................3
Enchanting para NXT.................................................................................................................4
Flashear el firmware..............................................................................................................4
Bloques de Motor..................................................................................................................5
Configuracin de Puertos para utilizar Motores...................................................................5
Bloques de Sensor................................................................................................................8
Configuracin de Puertos para utilizar Sensores..................................................................8
Ejemplos de Programacin...................................................................................................11
Dibujar una figura...........................................................................................................11
Deteccin de Objetos......................................................................................................12
Cambio de Velocidad en funcin de un Sensor..................................................................14
Control de cambios..................................................................................................................17
Modificaciones....................................................................................................................17
Revisiones..........................................................................................................................17

MAN.LAB.Enchanting_NXT

Pgina 2 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Introduccin
Enchanting es un software de programacin visual basado en Scratch creado por el MIT con el
objetivo de poder programar el controlador Mindstorms NXT
Para poder controlar el Mindstorms NXT es necesario tener instalado Enchanting y flashear el
firmware con Lejos (se explicar mas adelante).

Instalacin en Windows
Para instalar Enchanting en Windows es necesario tener instalado el Fantom Driver el cual
podemos descargar del siguiente link: http://mindstorms.lego.com/en-us/support/files/Driver.aspx
Descomprimimos el contenido del .zip y ejecutamos el archivo Setup.exe
Luego
debemos
descargar
el
Software
de
Enchanting
del
siguiente
https://launchpad.net/enchanting/trunk/0.1/+download/Enchanting-0.1.0.1-Setup.exe

link:

Ejecutamos el archivo Enchanting-0.1.0.1-Setup.exe, presionamos siguiente y esperamos a que


complete la instalacin.

Instalacin en Ubuntu
Para
instalar
Enchanting
en
Ubuntu
vamos
al
siguiente
Enlace
http://www.ceibal.edu.uy/Articulos/Paginas/Material%20para%20la%20utilizaci%C3%B3n%20de
%20los%20kits%20de%20Rob%C3%B3tica.aspx
y seguimos las instrucciones de instalacin especificadas en el manual.

MAN.LAB.Enchanting_NXT

Pgina 3 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Enchanting para NXT

Flashear el firmware
Para poder comenzar a utilizar el controlador NXT con Enchanting es necesario flashear el
firmware.
Para hacerlo debemos tener el controlador prendido y conectado.
Iremos a la pestaa Archivo y seleccionaremos la opcin Enviar Firmware

Se desplegar una ventana como la siguiente y seleccionaremos la opcin Si

Aparecer una nueva ventana y simplemente esperaremos a que termine de cargar.

Una vez hecho esto, el controlador estar listo para usarse.

MAN.LAB.Enchanting_NXT

Pgina 4 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Bloques de Motor
Los bloques de motor permiten activar y configurar los motores.

Configuracin de Puertos para utilizar Motores


Para poder controlar los motores debemos configurarlos, para hacerlo presionaremos el botn
Configurar Motores dentro de la pestaa de Motores

All nos aparecern los bloques motor, para poder utilizarlos, debemos asociar el motor al puerto
al cual est conectado en el controlador NXT (por defecto son los puertos B y C).
En el siguiente ejemplo veremos un Motor asociado al Puerto B, el texto NXT Motor
(modificable) hace referencia al Nombre del Motor que le asociaremos para controlarlo desde la
interfaz

MAN.LAB.Enchanting_NXT

Pgina 5 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Al asociar Motores a los Puertos aparecern nuevos bloques


Har que el motor de nombre NXT motor
empiece a girar.
Hacia adelante o hacia atras nos
indicar el sentido de giro del motor.
Para poder utilizar este bloque debemos
haber utilizado el bloque set speed
antes.

Le asigna la velocidad con la cual girar el


motor de nombre NXT motor cuando se
inicie. El valor 720 (modificable) es la
velocidad con la que girar (en grados por
segundo). Dicho valor toma valores entre 0
y 720

Har que el motor de nombre NXT motor


se detenga.
La opcion frenada har que el motor frene
y la rueda quede fija (no podr moverse
libremente incluso si intento girarla
manualmente)
La opcin deslizamiento har que el motor
frene y la rueda quede libre.

Har que el motor de nombre NXT motor


gire una cantidad de grados X (360 sera
una vuelta entera).
La opcin until done har que el bloque se
ejecute sin interrupcin.
La opcin just start it har que el bloque
empiece
a
ejecutarse,
pudiendo
interrumpirse.
Marcar la posicin actual del motor NXT
motor como la posicin 0.

MAN.LAB.Enchanting_NXT

Pgina 6 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Llevar el motor NXT motor a la posicin


marcada como 0.
La opcion until done hara que el bloque
ejecute sin interrupcin.
La opcin just start it har que el bloque
empiece
a
ejecutarse,
pudiendo
interrumpirse.

Comenzar a girar el motor con nombre


NXT motor con una velocidad predefinida.
El valor 720 (modificable) indica la velocidad
con la cual comenzar a girar (en grados por
segundo). Dicho valor toma valores entre 0 y
720.

Nos indica si el motor de nombre NXT


motor est en movimiento o no.
Retornar 1 si el motor est moviendose, 0
en caso contrario.

Nos indica la posicin (en grados) en la cual


est el motor. Dicho valor no tiene tope,
pero podemos referirnos a la circunferencia
haciendo el valor modulo 360.

Ejemplo: 370 es lo mismo que 10, 380 lo


mismo que 20, etc.

MAN.LAB.Enchanting_NXT

Pgina 7 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Bloques de Sensor
Los bloques de sensores permiten la lectura de los sensores. Cada lectura de sensor devuelve un
valor diferente.
Tenemos 4 tipos de Sensores diferentes:
De sonido

De Luz

De ultrasonido

De contacto

Y 4 puertos asignados para ellos

Configuracin de Puertos para utilizar Sensores


Para poder controlar los sensores debemos configurarlos, para hacerlo presionaremos el botn
Configurar Sensores dentro de la pestaa de Sensores

All nos aparecern los bloques de cada tipo de sensor, para poder utilizarlos, debemos asociar el
sensor al puerto al cual est conectado en el controlador NXT

MAN.LAB.Enchanting_NXT

Pgina 8 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

En el siguiente ejemplo veremos un Sensor de Luz asociado al Puerto 1, el texto Nombre de


Sensor (modificable) hace referencia al Nombre del Sensor que le asociaremos para controlarlo
desde la interfaz

Al asociar Sensores a los Puertos aparecern nuevos bloques para cada tipo de sensor
Sensor de Contacto:
Nos indica si el sensor con nombre Sensor 1 est
presionado, devuelve el valor 1 si est presionado y
0 en caso contrario. Dicho valor se puede visualizar
en pantalla haciendo clic en el cuadrado gris al lado
del bloque est pulsado.
Sensor de Ultrasonido (Distancia):
Nos indica la distancia obtenida por el sensor con
nombre Sensor 2. Dicho Valor va desde 15 hasta
255 cm
Sensor de Luz:
Este bloque har que el controlador empiece el
proceso de auto calibracin del sensor con nombre
Sensor 3. Lo que hace la calibracin es decirle al
sensor Esto es negro o Esto es blanco. Se utiliza
en conjunto con el bloque auto-calibrar para incluir
la lectura actual

MAN.LAB.Enchanting_NXT

Pgina 9 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Al utilizar este bloque y hacer el proceso de auto


calibracin automtico, har que el controlador mire
a cada lectura que recibe el sensor con nombre
Sensor 3, y le dir al controlador que el valor
obtenido es algn valor entre blanco y negro.

Nos indica la intensidad de luz obtenida por el


sensor con nombre Sensor 3.
Para la opcin brillantez dicho valor va desde 0
(Negro) hasta 100 (Blanco).
Para la opcin valor sin procesar dicho valor va
desde 0 a 1000.
Si el Sensor no fue calibrado, entonces este rango
puede variar y podra ocurrir que recibamos un valor
negativo para el color Negro.

Nos indica si el gris asociado al color que est


captando el sensor de nombre Sensor 3 es igual al
elegido (en este caso verde).
Devuelve el valor 1 si son iguales, 0 en caso
contrario.

Nos devuelve el valor numrico asociado al color


que est leyendo el Sensor de nombre Sensor 3
en formato HSV. (Una terna de la forma [ Hue ,
Saturation , Value ] ). Con el sensor de Luz esta nos
devolver H y S en 0 y el valor V (Por lo tanto, slo
detectara escala de grises. Dicho valor va de 0 a
100, siendo [0, 0, 0] el color Negro y [0, 0, 100] el
color Blanco
Sensor de Sonido:
Nos indica el nivel de sonido obtenido por el sensor
de nombre Sensor 4. Dicho valor va de 0 a 100.
Nota: El valor no esta medido en Decibelios

MAN.LAB.Enchanting_NXT

Pgina 10 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Ejemplos de Programacin
Dibujar una figura
Crearemos un programa en el cual un robot se mueva dibujando una figura (en particular, un
cuadrado)
Para ello comenzaremos programando con los Bloques de Control:

Inicia el programa
Repite la accin 4 veces

Vamos a hacer que el Robot avance y gire, eso lo repetiremos 4 veces para lograr dibujar el
cuadrado.
Este bloque har que el motor de nombre B
gire 360 grados, seleccionamos la opcin just
start it para que ejecute e inmediatamente
ejecute el siguiente bloque. El valor 360
(modificable) corresponde a cunto queremos
que avance el robot.
Iniciar el motor de nombre B y har que gire
360 grados. La opcin until done hara que se
ejecute hasta que termine de dar los 360 grados.
El valor 360 (modificable) corresponde a cunto
queremos que avance el robot.

Nota: Si para el motor B seleccionaramos until done lo que lograramos es que inicie el motor B y
luego el C y no lograramos que el robot avance en linea recta.
Con este bloque lograremos que el robot gire
sobre la rueda contraria, el valor 340
(modificable) har que gire exactamente 90
grados reales (para esta estructura).
La opcion until done hara que el bloque repetir
no comience nuevamente hasta que termine de
girar el robot.

Aclaracin: El valor 340 de giro va a estar sujeto a la batera del controlador y a la superficie en
la cual trabajemos, por lo que podra variar.

MAN.LAB.Enchanting_NXT

Pgina 11 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Deteccin de Objetos
Crearemos un programa en el cual un robot se encuentre en movimiento y si detecta un objeto a
cierta distancia detiene su movimiento.
Para ello comenzaremos programando con los Bloques de Control:
Inicia el programa
Repite indefinidamente la accin

El bloque Por siempre nos servir para poder obtener cada valor detectado por el Sensor de
Distancia, de no usarlo, detectaremos un nico valor y el programa ejecutar slo con ese valor.
Como queremos condicionar el movimiento del robot a una distancia, debemos utilizar una
bifurcacin Si, si no y una condicin sobre el objeto.

1.

2.

Operador Mayor

3.

Tomar el valor del


sensor
en
el
momento actual y
lo comparar con
30.

Luego, vamos a querer que nuestro Robot avance, si el Valor del Sensor de distancia, es mayor a
30 (O sea, no sea ha detectado ningun objeto en un rango menor a 30 cm), y que se detenga en
caso contrario

MAN.LAB.Enchanting_NXT

Pgina 12 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Fija la velocidad de
los motores B y
C a 720/s
Empieza
a
funcionar el motor
con nombre B.
Empieza
a
funcionar el motor
con nombre C.

Frena el motor con


nombre B.
Frena el motor con
nombre C.
Vemos que si cambiamos el bloque Distancia del Sensor del operador por el bloque Nivel de
Sonido de un Sensor de Sonido, o cambiamos el Operador Mayor por el Bloque Est Pulsado?
de un Sensor de Tacto, obtendremos que el Robot se mueva al escuchar Sonidos mayores a un
30% o que empiece a moverse al presionar el Sensor de Tacto, respectivamente.

MAN.LAB.Enchanting_NXT

Pgina 13 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Cambio de Velocidad en funcin de un Sensor


Crearemos un programa en el cual un robot se encuentre en movimiento y aumente su velocidad
en funcin del valor de un Sensor.
En este Ejemplo lo haremos con el Sensor de Luz.
Para ello comenzaremos programando con el Bloque de Control y el Bloque de Sensores:

Bloque de Inicio de Programa


Le dir al Sensor que empiece el proceso de
auto calibracin.
Luego iniciaremos los Motores y aadiremos un Bloque de Por Siempre:
1.

2.

El bloque Por siempre nos servir para poder obtener cada valor detectado por el Sensor de Luz
y para cada valor modificar la velocidad de los motores, de no usarlo, detectaremos un nico valor
y el programa ejecutar slo con ese valor, por lo tanto se modificar la velocidad una nica vez.

MAN.LAB.Enchanting_NXT

Pgina 14 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

Para obtener un nuevo valor del Sensor de Luz utilizaremos el bloque auto-calibrar para incluir la
lectura actual

Calibra automaticamente
devuelve un nuevo valor

el

Sensor

Por ultimo, cambiaremos la velocidad de los motores al valor detectado por el Sensor.
1.

MAN.LAB.Enchanting_NXT

Pgina 15 de 16

Programando con Enchanting


Plan Ceibal Laboratorios Digitales

2.

Seteamos la velocidad del


motor con nombre B al
valor obtenido por el
Sensor de Luz.
Seteamos la velocidad del
motor con nombre C al
valor obtenido por el
Sensor de Luz
Aclaracin: Utilizamos la opcion de valor sin procesar para tener un rango de 0 a 1000, esto es
para tener una mayor velocidad. Si utilizaramos el valor brillantez el valor sera un porcentaje de
0 a 100, y una velocidad de 100 sera muy baja para el motor.
Podramos utilizar esta misma programacin para el Sensor de Sonido, deberamos cambiar los
bloques del valor de Sensor de Luz por los de Nivel de Sonido y quitar los bloques de auto
calibrar. De esa forma, nuestro Robot ajustara su velocidad acorde al nivel de sonido de la sala.

MAN.LAB.Enchanting_NXT

Pgina 16 de 16