Manual de Robomind ESPAÑOL PDF
Manual de Robomind ESPAÑOL PDF
1. INTRODUCCIÓN.
Como se ha estudiado en temas anteriores, los ordenadores, máquinas, robots, etc. funcionan siguiendo un
comportamiento cíclico en 3 fases:
1) Fase de entrada. Introducción de los datos necesarios, mediante teclado, micrófono, lector de código de
barras, sensores, etc.
2) Fase de proceso. Tras introducir los datos, la máquina comienza su tratamiento, y realiza cálculos y
operaciones sobre ellos. Las operaciones y cálculos a realizar con los datos se especifican en los
programas. Un programa es un conjunto de órdenes que indican a una máquina qué acciones
hay que realizar sobre los datos para obtener los resultados deseados.
3) Fase de salida. Una vez operados los datos de entrada, se obtiene de ellos un resultado, que es
enviado a los dispositivos de salida (pantalla, impresora, actuadores de un robot o una máquina, etc.).
En este tema se estudiará cómo realizar programas de control para definir el funcionamiento de una máquina
determinada (un ordenador, un robot, un autómata, etc.)
Ejemplos:
a) Calculadora:
Fase de entrada: teclear los números y operaciones a realizar.
Fase de proceso: el programa interno de la calculadora procesa los números en función de la
operación indicada.
Fase de salida: el resultado de la operación se envía a la pantalla para ser mostrado.
c) Robot evita-obstáculos:
Fase de entrada: leer los datos captados por el sensor de contacto del robot.
Fase de proceso: se ejecuta el programa si el sensor detecta un obstáculo, hay que hacer girar al
robot. Si el robot no detecta obstáculo, debe seguir avanzando.
Fase de salida: actuar sobre los motores del robot para que avance o gire.
2. LENGUAJES DE PROGRAMACIÓN.
Como se ha comentado antes, el funcionamiento de una máquina se define mediante un programa de control.
1
Un lenguaje de programación es un conjunto de reglas, símbolos, y normas de
sintaxis, que se aplican para desarrollar programas.
En definitiva, escribir un programa de control de una máquina consistirá en escribir una secuencia de
instrucciones que le indiquen a la máquina la operación a realizar, respetando las norm as y reglas que el
lenguaje de programación impone.
Ejemplo:
Juego de instrucciones de una barrera de aparcamiento:
leerSensorPresencia
subirBarrera
bajarBarrera.
Programa:
Los distintos lenguajes de programación son muy similares entre sí, utilizan las mismas estructuras de
programación y procedimientos de desarrollo de programas. Lo único en que se diferencian es en el juego de
instrucciones que proporcionan al usuario (no es lo mismo controlar una aplicación informática que un robot, por
lo que el juego de instrucciones ha de ser diferente en cada caso).
http://www.robomind.net/en/demo.html
http://www.robomind.net/en/demoNewInTwo.html
2
3. EL ROBOT VIRTUAL ROBOMIND.
A continuación se muestra el robot que se programará en RoboMind. Se trata de
un robot móvil equipado con los varios dispositivos que le permiten moverse, mirar
alrededor, coger objetos, y pintar.
1. Escribir el
programa
de control.
2. Descargar el
programa al
robot.
3. El robot ejecuta
el programa de
control.
3
Ejemplo:
El siguiente programa de control hace que el robot realice un recorrido con forma de cuadrado. Escríbelo en el
área de programación, descarga el programa, y observa el resultado.
Ejemplos:
Para un video: play, pause, record, fast forward (FF), etc.
Para un procesador de textos (Word): Poner texto en negrita, insertar imagen, copiar, pegar, etc.
Pues bien, para programar el robot virtual Robomind también se dispone de un conjunto de instrucciones que
permiten gobernarlo. Estas instrucciones se le proporcionarán una tras otra, hasta escribir el programa de
control con la secuencia de órdenes que se desea que el robot realice.
MOVIMIENTO
4
Actividades “movimiento del robot”.
IMPORTANTE:
Antes de empezar, acude a la carpeta:
Programa 1) Programa al robot para que llegue a la casilla a la
C:\Archivos de programa\RoboMind\scripts\en
izquierda de la baliza del sur. Al llegar a dicha posición, el
robot se para. Guarda al programa como prog1.irobo.
Borra todos los archivos que encuentres en
dicha carpeta.
Programa 2) Programa al robot para llevarlo hasta la casilla frente la baliza del nordeste. Al llegar a dicha
posición, el robot se para. Guarda al programa como prog2.irobo.
Programa 3) Programa al robot para que trace un recorrido en forma de rectángulo, de altura 3 unidades y
anchura 6 unidades. El robot termina de trazar el rectángulo en su posición inicial, donde se para. Guarda al
programa como prog3.irobo.
X posición inicial.
6
Programa 4) Escribe un programa que lleve al robot al sendero blanco y lo fuerce a recorrerlo. El robot
se parará en la última casilla del sendero blanco. Guarda al programa como prog4.irobo.
Programa 5) Abre el mapa “verticalLines1.map” (File Open Map). Escribe un programa que lleve al robot al
punto negro. El robot sólo puede pisar en las casillas blancas. Guarda al programa como prog5.irobo.
5
5.2.- INSTRUCCIONES PARA PINTAR Y RECOGER OBJETOS.
Estas instrucciones controlan la brocha y el brazo del robot. Permiten pintar líneas y recoger objetos (balizas).
PINTAR
paintWhite() Bajar la brocha con pintura blanca al suelo para pintar en blanco.
paintBlack() Bajar la brocha con pintura negra al suelo para pintar en negro.
COGER
Programa 6) Abre el mapa “default.map”. Escribe un programa para mover la baliza localizada al sudeste del
robot a la esquina sudoeste del mapa. Guarda al programa como prog6.irobo.
Programa 7) En el mapa default.map, escribe un programa para que el robot dibuje una escalera blanca con 3
escalones, como la mostrada en la imagen inferior. Guarda al programa como prog7.irobo.
6
Programa 9) Abre el mapa “openArea.map”.
Escribe un programa para que el robot escriba las iniciales de tu nombre y apellidos (3 letras).
Debes respetar los espacios en blanco entre cada inicial. Guarda al programa como prog9.irobo.
Programa 10) Abre al mapa “passBeacons.map”. Escribe un programa para conseguir que el robot
llegue hasta el punto blanco. Para ello, el robot deberá coger y retirar las balizas del pasillo que lleva al objetivo.
Guarda al programa como prog10.irobo.
VISIÓN
INSTRUCCIONES DE ALEATORIEDAD.
La instrucción de aleatoriedad permite al robot lanzar una moneda al aire para realizar una elección aleatoria (ir
a la derecha o a la izquierda, al este o al oeste, pintar de negro o de blanco, etc.).
7
TOMA DE DECISIONES ALEATORIAS
Lanzar una moneda al aire para tomar una decisión
flipCoin() aleatoria. El resultado puede ser cara (TRUE) o cruz
(FALSE) con una probabilidad del 50%.
Esta estructura permite repetir la ejecución de las instrucciones entre llaves un número ‘n’ de veces.
NOTA: Si se omite el parámetro n, se repetirán las instrucciones entre llaves indefinidamente por tanto, si se
quiere que una serie de instrucciones se estén ejecutando siempre hay que usar repeat().
b) Explica su funcionamiento.
Esta estructura repite (repeat) la ejecución de las instrucciones entre llaves mientras (while) la condición que
evalúa sea verdadera. Si la condición no se hace verdadera, o deja de ser verdadera, continúa ejecutando la
instrucción tras la llave que cierra el bucle.
NOTA: Las condiciones que utiliza el estructura repeatWhile suelen ser instrucciones de visión (leftIsObstacle(),
frontIsBeacon(), rightIsClear(), etc.).
b) Explica su funcionamiento.
break
Esta instrucción termina con la ejecución del bucle (“rompe” el bucle), y continua ejecutando la instrucción que
sigue a la llave que cierra el bucle. Sirve para forzar la salida de un bucle.
De momento no usaremos esta instrucción, pero será muy útil en cuanto veamos las estructuras condicionales.
8
Cuestiones “bucles”.
Programa 11) Escribe el programa que hace que el robot trace un cuadrado, pero utilizando un bucle. Guarda al
programa como prog11.irobo.
Programa 11b) Programa ahora al robot para que permanezca trazando cuadrados de forma indefinida.
Necesitarás un bucle infinito repeat().Guarda al programa como prog11b.irobo.
Programa 12) Buscando el límite: haz que el robot avance hasta que encuentre un obstáculo. Cuando lo
encuentre, debe retroceder una posición. Ejecuta el mismo programa en varios mapas, debe funcionar
cualquiera que sea el entorno (File Open map). Guarda al programa como prog12.irobo.
Programa 13) Haz un programa que, utilizando un bucle, haga que el robot dibuje una escalera de 4 escalones.
Ayúdate del esquema que se te proporciona a continuación para escribir tu programa. Guarda al programa
como prog13.irobo.
Programa 14) Abre el mapa copyLine1.map. Crea un programa que haga que el robot camine paralelo a la línea
negra que tiene a su izquierda. El robot debe avanzar paralelo a la línea negra mientras haya línea negra.
Guarda al programa como prog15.irobo.
Programa 15) Robot bordeador: en el mapa “goRightAtWhite.map”, programa al robot para que llegue a la caja,
y una vez allí se ponga a bordear la caja de forma indefinida. Guarda al programa como prog15b.irobo.
Programa 15b) Robot bailón. Mediante un bucle que se repita de forma indefinida, programa al robot virtual para
que “baile” (bailar será moverse girar la cabeza). Guarda al programa como prog15c.irobo.
Pista: Usa leftIsClear() y rightIsClear() para mover la cabeza del robot, y simular que baila.
Programa 15c) Vuelve a realizar el programa 10. En este caso, el proceso de coger y retirar cada baliza
del camino lo realizarás mediante un bucle. Programa al robot de forma que realice esta acción sin
saber a priori cuántas balizas ha de retirar (es decir, no puedes usar la estructura de control repeat (7)). Guarda
al programa como prog14.irobo.
Asegúrate que le programa funciona tanto para el mapa passBeacons.map, como para el mapa
passBeacons2.map.
9
5.4.2.- SENTENCIAS CONDICIONALES (IF - ELSE).
Las estructuras condicionales permiten condicionar la ejecución de ciertas instrucciones al cumplimiento de una
condición. Con ello se puede hacer que ciertas instrucciones no se ejecuten siempre, sino sólo en caso de que
se den ciertas circunstancias.
if (condición) { instrucciones }
Ejecutará las condiciones entre llaves, únicamente si la condición se cumple, en caso contrario ejecuta la
instrucción que sigue a la llave que cierra la sentencia if.
b) Explica su funcionamiento.
if (condición) { instrucciones }
else { instrucciones }
Si la condición se cumple, se ejecutan las instrucciones del bloque if. En cambio, si la condición no se cumple
se ejecutarán las instrucciones pertenecientes al bloque else. (If si (condicional); else si no)
Es decir:
Si (ocurre esta condición) { haz estas instrucciones }
Si no { haz estas otras instrucciones }
b) Explica su funcionamiento.
end
La instrucción end (fin) fuerza el final del programa. Cuando el robot ejecuta esta instrucción se termina el
programa.
Programa 15d) robot borracho. Abre el mapa openArea.map. Crea un programa para que el robot
avance de forma indefinida (repeat()), cambiando de dirección constantemente y de forma aleatoria.
Para cambiar de dirección aleatoriamente el robot deberá decidir al azar si gira a derechas (right()) o a
izquierdas (left()) cada vez que avanza, mediante la función flipCoin(). Esto se consigue de esta forma:
10
NOTA: Este programa es para practicar el uso de la instrucción flipCoin(). Este concepto debe quedar claro.
NOTA2: es posible que el robot colisione con las paredes en su movimiento. Es natural, se trata de un “robot
borracho”.
Programa 16) Robot copión: en el mapa copyLine1.map hay una línea negra a la izquierda del robot. El objetivo
de este programa copiar la línea negra, dibujando una línea blanca de igual longitud a la derecha del robot. Haz
el programa de forma que se ejecute correctamente incluso si no sabes el tamaño de la línea negra a priori.
Guarda al programa como prog17.irobo.
Programa 18) Esquivar objetos aislados: Abre el nada avoidObstacles.map. Escribe un programa para
que el robot avance esquivando los objetos que tiene delante, hasta llegar al punto blanco (meta). El
programa debe funcionar para los mapas avoidObstacles, avoidObstacles1 y avoidObstacles2. Guarda al
programa como prog18.irobo.
Programa 19) Esquivar objetos aislados y retirar balizas: modifica el programa anterior para que si el robot
encuentra una baliza, en vez de esquivarla, la recoja y la deje a un lado. Guarda al programa como
prog19.irobo.
11
Programa 20) Esquivar objetos continuados: Basándote en el ejercicio 18 programa al robot para que
sea capaz de sortear objetos continuados (uno a continuación de otro). Deberás utilizar la visión lateral
para ver cuándo finaliza el obstáculo. Guarda al programa como prog20.irobo. El programa debe
funcionar para los mapas avoidContinuousObstacles.map y avoidContinuousObstacles2.map.
Programa 21) Aparcando. Abre el mapa findSpot1.map. Programa al robot para que “aparque” en el hueco
marcado con una señal blanca. Guarda al programa como prog21.irobo. El mismo programa también debe
funcionar para el mapa findSpot1.map.
Programa 22) Robot evita-obstáculos. Programa un robot móvil que avance por el mapa de forma
autónoma. Cuando en su avance detecte la presencia de un obstáculo (muro, caja, baliza, planta, agua,
etc.), debe evitarlo cambiando de dirección aleatoriamente (flipCoin()).Guarda al programa como
prog22.irobo
Programa 22b) Marcando colisiones: crea un programa que haga que el robot avance. Si el robot detecta un
obstáculo, marca la colisión con un punto negro, y gira aleatoriamente para evitar el obstáculo. Guarda al
programa como prog22b.irobo. Usa el mapa default.map.
Programa 23) Busca-balizas: programa al robot para buscar balizas. Para ello debe recorrer autónomamente y
de forma aleatoria el mapa default.map. Cuando encuentra una baliza, debe cogerla y detenerse. Guarda al
programa como prog23.irobo
Las condiciones a evaluar en las sentencias if y repeatWhile se denominan expresiones lógicas. Tal expresión
será un valor verdadero si se cumple, o falso si no se cumple (TRUE o FALSE).
Ejemplo: frontIsClear().
12
Expresión lógica compuesta: está formada por varias expresiones lógicas simples, unidas por los
operadores lógicos NOT, AND, OR.
OPERADORES LÓGICOS
Nº DE EXP. LÓGICAS
OPERADOR NOTACIÓN ALTERNATIVA EXPLICACIÓN
SIMPLES QUE OPERA
NO: Niega el valor de la expresión
not ~ (ALT + 126) 1
lógica que le sigue.
Y: Resulta verdadero si las dos
and & 2 expresiones lógicas lo son, y falso si
alguna de las dos o ambas son falsas.
O: Resulta verdadero si una de las
or | 2 dos expresiones lógicas lo es, y falso
sólo si ambas son falsas.
NOT AND OR
Ejemplo1: not
frontIsWhite() será verdadera si al frente NO se detecta color blanco.
Ejemplo2: frontIsClear() and leftIsBlack() será verdadera si al frente está despejado Y a la izquierda se
detecta negro (es decir, será verdadera sólo si se cumplen ambas expresiones simples)
Ejemplo3: frontIsWhite or frontIsBlack() será verdadera si al frente se detecta blanco O se detecta negro (es
decir, será verdadera sólo con que se cumpla una de las expresiones)
Actividades finales.
Programa 24) Enjaulado. Abre el mapa roboCage.map. Verás que el robot se encuentra dentro de un
recinto limitado por una línea negra. Programa al robot para que se mueva aleatoriamente dentro de
este recinto, pero sin poder abandonarlo (el robot se moverá encerrado en el recinto de la línea negra).
Guarda al programa como prog24.irobo.
Programa 25) Código de colores. Abre el mapa colorCode.map. Los puntos blancos simbolizan girar a la
derecha y avanzar, mientras que los negros girar a la izquierda y avanzar. Dota de la inteligencia necesaria a tu
robot para que encuentre y coja la baliza escondida siguiendo las pistas situadas en el suelo. Guarda al
programa como prog26.irobo.
13
Programa 26) Código de circulación. Abre el mapa drivingCode.map.
Haz que tu robot sigua un camino trazado en el suelo basándose en el siguiente código de circulación:
a) Un punto blanco significará que en la siguiente bifurcación se tome el camino de la derecha.
b) Un punto negro significará que en la siguiente bifurcación se tome el camino de la izquierda.
Las indicaciones de tráfico se situarán en la casilla de la bifurcación.
El programa termina cuando el robot llega a la baliza y la recoge. Guarda al programa como Prog27.irobo.
Programa 27) Robot rastreador. Abre el mapa default.map. Realiza un programa para conseguir un
robot rastreador de línea blanca.
El robot debe moverse por el mapa de forma autónoma buscando la línea blanca. Cuando encuentre la línea
blanca debe empezar a seguirla de forma automática (sin saber a priori por dónde discurre dicha línea),
deteniéndose cuando detecte que la línea blanca se ha acabado. Guarda al programa como prog24.irobo.
Programa 28) Laberinto: Abre el mapa maze1.map. El objetivo del programa es conseguir que el robot
escape del laberinto de forma autónoma. El robot encuentra la salida al localizar y coger la baliza,
terminando el programa. Guarda al programa como Prog28.irobo.
Pista: Para salir de un laberinto basta con seguir siempre la pared de la derecha, o la pared de la izquierda.
NOTA:
Todos los programas son de obligatoria realización. No puedes pasar al ejercicio siguiente sin haber
acabado el ejercicio anterior. Además es necesario, ya que los ejercicios que realizas te van preparan y
enseñan para los ejercicios que has de realizar a continuación.
Además, los ejercicios marcados con una estrella presentan puntuación para tu nota final. La puntuación
es la siguiente:
14
ACTIVIDAD PUNTUACIÓN ACTIVIDAD PUNTOS POSIBLES
1 obligatorio 15c 0.5
2 obligatorio 15d 0.5
3 obligatorio 16 obligatorio
4 0.25 17 1
5 obligatorio 18 1
6 obligatorio 19 obligatorio
7 obligatorio 20 1
8 obligatorio 21 obligatorio
9 0.25 22 1
10 0.25 22b obligatorio
11 obligatorio 23 obligatorio
11b obligatorio 24 1
12 0.25 25 obligatorio
13 obligatorio 26 obligatorio
14 obligatorio 27 1.5
15 obligatorio 28 1.5
15b obligatorio
15