Académique Documents
Professionnel Documents
Culture Documents
Robtica
Decanato de Ciencias y Tecnologa
Departamento de Sistemas
Prof. Maritza Bracho de Rodrguez
rea Acadmica Laboratorios
PROGRAMACIN NXT
Para programar los robots de Lego usamos un entorno de programacin grfico
llamado NXT, y basado en la insercin de bloques configurables, a continuacin
vamos a ver los ms bsicos. Esta es la interfaz del programa:
BLOQUE MOVER.
Permite mover el robot hacia delante, atrs o describiendo una curva. En Puerto
selecciono los motores conectados a las ruedas, despus selecciona la direccin y
si quiero aplicar giro, puedo controlar la potencia y la duracin (nmero de
rotaciones. tiempo en segundos, ilimitado o grados), recomendamos poner la
duracin en rotaciones.
1
adjunta se aprecia claramente todas las opciones de programacin del bloque
mover.
2
En el control seleccionaremos Sensor y el puerto al que lo selecciono.
Otro ejemplo podra ser que nuestro robot debiera evitar caer al vaco arriba de
una mesa, debemos repetir indefinidamente la rutina en la que el sensor de luz
perciba el piso para no caernos (el piso siempre da un reflejo de luz superior al
vacio), y slo se podra mover cuando encuentre determinado reflejo en el piso.
BLOQUE ESPERA
Usamos este bloque para ejecutar una accin hasta que alguno de los sensores
envi una determinada seal, o simplemente detenemos la ejecucin durante un
tiempo determinado. En el ejemplo de la imagen, el robot avanza, despus
esperamos un segundo, contina avanzado pero girando a la derecha hasta que el
sensor de contacto es presionado momento en que detenemos el robot.
3
Este permite bloque definir dos acciones segn se cumpla o no una determinada
condicin (que un sensor enve una seal, por ejemplo).
4
EJEMPLOS DE PROGRAMAS EN EL MINDSTORMS NXT
Debemos hacer mover los motores conectados en los puertos A y B y pasados los
dos segundos hacer que se detengan.
Debemos tildar los puertos en los que estn los dos motores, indicar la direccin y
el tiempo
5
EJERCICIOS DE PROGRAMACIN DE ROBOTS CON SENSORES
PARA REACCIONAR AL AMBIENTE
Como ltimo paso se mueve el motor A hacia atrs durante 1 segundo para dar
medio giro.
6
USO DE LA HERRAMIENTA LOOP Y SWITCH
Luego se utiliza la herramienta SWITCH con el sensor de sonido, el cual toma dos
caminos diferentes de acuerdo al sonido que percibe del ambiente. El camino de
7
arriba es el que se toma si percibe ruido (un grito o aplauso), haciendo girar hacia
atrs un cuarto de giro al motor C.
Primero se percibe el rebote de luz que produce la lmpara del sensor para saber
si estamos saliendo de la mesa.
Si percibe oscuridad (el sensor est fuera de la mesa y no recibe rebote de luz)
seguimos los pasos de abajo: retrocedemos con los dos motores y hacemos un
giro con un solo motor para desviarnos.
Si percibe luz (estamos dentro de la mesa ya que hay rebote de luz) seguimos los
pasos de arriba: avanzamos y si percibe ruido detenemos los motores A y C, luego
cierra la pinza con el motor B para agarrar el objeto, da un cuarto de giro con el
motor A y abre las pinzas para soltar el objeto. Si no percibe ruido, contina el
camino.
Como todo est envuelto en un LOOP infinito, al terminar cualquiera de los dos
caminos el programa vuelve a empezar.
8
CICLOS BUCLES LOOPs
QUE SON?
El icono "Ciclo" o "Bucle" o "Loop" repite la ejecucin una determinada parte del
programa. Puede repetirse desde unas pocas veces hasta que se cumpla una
determinada condicin o infinitas veces. Iremos viendo los distintos casos con
ejemplos.
NOTA: para comprobar los programas de los ejemplos, usaremos con frecuencia
el icono de sonido configurado de la siguiente forma:
BUCLE FOREVER
9
Es decir, el programa "se queda atrapado" dentro de ese bucle, del que no sale
nunca. En el ejemplo, pulsa el botn naranja repetidamente para que suene un
"bip".
El mismo programa anterior nos puede permitir visualizar en pantalla las veces
que hemos pulsado el botn o, dicho de otra forma, las veces que se ha repetido
el ciclo. Esta funcin est disponible para cualquier otra configuracin de los
Ciclos.
Con esta pestaa activada, aparece en el bucle una pestaita desde la cual
podemos sacar un cable para visualizar en pantalla las repeticiones.
Hay que hacer una aclaracin a esto. Repetir una cosa "infinitamente" puede ser
engaoso y hay que entenderlo desde el punto de vista de la programacin.
10
Cuando pensamos el programa, esperar a que un sensor de color lea "rojo" para
nosotros es una nica tarea: esperar. Para el NXT es repetir infinitamente la
lectura del sensor "hasta que" encuentre el rojo.
Cul usar? Si NO necesitas repetir una serie de tareas, BASTA con usar un
bloque de espera. Por ejemplo, si quieres que el robot avance "hasta que"
encuentre una pared usando un ultrasonido, basta un icono de espera de
ultrasonido. En este caso, el programa se comporta como si estuviera en un bucle
a la espera de que se cumpla la condicin del ultrasonido, y solo estar realizando
esa tarea.
Si lo que quieres es esperar "hasta que" encuentre una pared PERO DURANTE
ESA ESPERA QUIERES QUE HAGA TAREAS ADICIONALES, tendrs que usar
un BUCLE "hasta que" llegue a la pared y encerrar todas esas tareas adicionales
en el bucle. Tareas adicionales pueden ser que simultneamente compruebe si
has pulsado un sensor de contacto para parar el robot manualmente.
BUCLE "SENSOR"
Con todo lo explicado, podemos interpretar este icono como "repite esto hasta que
el sensor X cumpla esta condicin".
Podra ser el caso de un robot que avanza "hasta que" el sensor de ultrasonido
encuentra una pared. O puede ser el caso del siguiente programa, en el que
11
esperamos indefinidamente a que se pulse el botn naranja para salir del bucle.
En caso contrario, si no se da la condicin, el ciclo se repite de nuevo.
Esto tambin es comn al resto de bucles: el programa sale del bucle cuando se
cumple la condicin, sea temporal, sensor, etc. En caso contrario, el programa
sigue encerrado en el bucle.
Otros casos de mala programacin o de fuente de problemas tiene que ver con la
longitud de los programas; o con iconos de espera; o con bucles dentro de bucles.
El siguiente programa es muy interesante para aprender cmo funciona el NXT. Lo
explico a continuacin.
El programa queda a la espera de pulsar el cursor izquierdo del NXT para avanzar
y, como antes, no hay tiempo entre medias de pulsar el botn naranja para
finalizar el programa. Parece que el programa siempre queda detenido justo en el
icono de espera de la flecha izquierda. PERO, aunque el programa est "detenido"
en ese punto, prueba a pulsar el botn naranja antes de pulsar la flecha.
12
naranja como era nuestra intencin, sino despus de pulsar la flecha, lo que le
permite entonces llegar al final del bucle y salir.
Estos problemas son comunes al resto de bucles del tipo "hasta que..." que
estamos viendo.
TIPOS. Los tipos de condiciones que puedes aadir a un bucle de este tipo son
tantas como sensores tengas a disposicin. Puedes esperar hasta que el sensor
detecte rojo, hasta que la pared est cerca, hasta que recibas una seal BT de
otro NXT, hasta que se pulse un botn... Todo ello te aparece en el panel de
configuracin del bucle cuando est seleccionado "Sensor".
BUCLE "TIME"
13
BUCLE "COUNT"
Este bucle tambin es muy sencillo, pero tiene un detalle que lo hace puetero en
un aspecto. El programa sale del bucle cuando ha repetido el ciclo n veces, segn
lo configures en la ventanita correspondiente. El "problema" reside en lo siguiente,
que lo vemos con un ejemplo. Programa el siguiente bucle, con 4 repeticiones y un
icono de espera de 1 segundo:
14
El icono final sirve simplemente para que se mantenga el resultado en pantalla sin
que el programa finalice. Ejectalo en el NXT. Para finalizar el programa, recuerda
pulsar el botn naranja. No notas algo raro?
Lo primero que se nos puede ocurrir es cambiar el icono "Sound" de sitio, as:
Pero resulta que sigue "sin funcionar bien": le hemos dicho que repita 4 veces y
solo cuenta hasta 3. Por qu? El problema reside en la numeracin del "counter":
hasta que no ha completado el ciclo, no cuenta 1. Es decir, en la primera pasada
el contador marca cero. Por tanto, para resolver el problema y que podamos
contar hasta 4 como era nuestra intencin, basta poner en el "Count" de la
configuracin del bucle un nmero ms, el 5.
Anda con cuidado con esto porque a veces es un lo y programa segn las
necesidades.
BUCLE "LOGIC"
Este bucle s que puede llegar a ser un autntico "cacao". Principalmente porque
los bloques y variables lgicas tienen su propio "idioma". Pero bueno, haremos
algunos ejemplos sencillos sin intentar meternos es cuestiones complejas.
Recuerda que los bloques lgicos solo pueden tomar 2 valores: verdadero o falso.
Empezamos con un programa muy sencillo: esperar hasta que el sensor de color
detecte amarillo.
Esta sera la forma correcta de programarlo, pero como esto es un ejemplo, voy a
programar exactamente lo mismo con un bucle lgico:
15
Cuando se cumple la condicin impuesta en el bloque del sensor de color
(detectar amarillo), sale del ciclo y el programa finaliza. Cuando no detecta
amarillo, la condicin es "Falso". Cuando lo detecta, la condicin que sale del
sensor es "Verdadero", se cumple con lo que dice el panel del bucle
(True=Verdadero) y el programa acaba.
Si en el bucle pones "False", el ciclo esperar hasta que se cumpla esa condicin.
Es decir, avanzar cuando detecte cualquier otro color que no sea amarillo. Se
quedar encerrado en el bucle "hasta que" deje de detectar amarillo. Sera
equivalente a poner en el panel del sensor "Outside Range", es decir, fuera del
amarillo. O sea, el siguiente programa hace EXACTAMENTE lo mismo que el
anterior:
16
BUCLES ANIDADOS
17
Pero de esta forma el programa acaba tras los ciclos correspondientes y si
queremos repetir, hay que volver a ejecutar el programa. Para solucionarlo,
metemos todo en un bucle infinito:
O bien combinamos el bucle exterior para que acabe al pulsar el botn naranja del
NXT. Para avanzar sin que el programa se le como ya vimos ms arriba,
seleccionamos la tecla izquierda del NXT.
18
A continuacin les suministramos la direccin en la cual se pueden observar
unos video tutoriales muy interesantes (Direccin (URL).
19