Los bloques de sensorización del smartphone son los más numerosos en Robobo. Todos ellos están relacionados con información que puede captar el robot mediante los sensores situados en el smartphone, y por tanto, son los que dan una mayor potencialidad al robot. Es importante utilizar la ventana de monitorización para comprobar los valores que devuelven estos sensores en tiempo real en cada entorno concreto. Podemos organizarlos en 5 grandes grupos, dependiendo del sensor en el que se basan:

  • Cámara:

 

  • Micrófono:

  • Pantalla:

 

  • Giroscopio y brújula:

  • Batería:

read tap on _

  • Función: Devuelve la posición x, y o la zona en cual se detecta una pulsación breve de pantalla (tap).
    • Advertencia: Este sensor mantiene el último valor medido.
  • CAMPOS:
    • SELECCIÓN DE eje: 
      • X o Y: valores a seleccionar, x e y, que se corresponden con las coordenadas cartesianas.
        • Rango: De 0 a 100 en ambos ejes, tal y como se muestra en la siguiente imagen:

      • Zona: Devuelve la zona de la pantalla del smartphone sobre la que se ha hecho una pulsación breve (tap). Este bloque únicamente detecta pulsaciones simples, es decir, si presionamos brevemente la pantalla dos veces seguidas, devolverá dos valores seguidos.
        • rango: Devuelve uno de los cinco valores siguientes: Forehead (frente), eye (ojo), right (derecha), left (izquierda), mouth (boca) o chin (barbilla), dependiendo de la zona de la pantalla en la que se realice la pulsación. El siguiente esquema muestra las zonas correspondientes a los valores devueltos de forma aproximada.

  • Ejemplos de funcionamiento:

El siguiente programa hace que Robobo diga «no tengo bigote» al pulsar brevemente sobre la zona de la pantalla entre la boca y el ojo. Es necesario reiniciar el valor del sensor tap en cada iteración del bucle porque este sensor mantiene el último valor medido:

Reset tap sensor

  • Función: Reinicia el sensor de zona de contacto sobre la pantalla a NONE.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo muestre «enfado» si se le mete el dedo en el ojo. Para ello, se comprueba si el bloque tap zone devuelve «eye», en cuyo caso se cambia la expresión facial a enfadado, se mueven las ruedas hacia un lado y otro, y se vuelve a la normalidad.

when A TAP is detected

  • Función: Se activa cuando se detecta un gesto tap en la pantalla. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

A continuación se muestra un programa que hace que el robot pare todos los motores al realizar un tap sobre la pantalla (pulsación breve):

read Fling sensor

  • Función: Devuelve el ángulo con el que se desliza en dedo por la pantalla del smartphone. Este ángulo viene dado por la dirección y el sentido del gesto sobre la pantalla.
    • Advertencia: Este sensor mantiene el último valor medido.
    • Rango: De 0 a 360 grados, en coordenadas polares. Las siguientes imágenes muestran 3 posibles gestos de fling que se podrían realizar sobre la pantalla del smartphone, y el ángulo devuelto por este sensor. En la imagen de la izquierda, el ángulo sería el mismo en ambos gestos, 180 grados. En la imagen central, el ángulo sería de unos 70 grados y, finalmente, en la imagen de la derecha el ángulo sería de 330 grados aproximadamente.

  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

A continuación se muestre un programa que mueve los motores PAN y TILT de Robobo en función del ángulo fling que se realiza sobre la pantalla. Por ejemplo, si se realiza un fling de 30 grados, Robobo moverá el ángulo PAN hacia la izquierda (move pan to 100 at speed 50 and wait true):

Reset fling sensor

  • Función: Reinicia el sensor de ángulo de desplazamiento táctil sobre la pantalla a 0.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El ejemplo anterior (READ FLING SENSOR) muestra un ejemplo de uso de este bloque, que reiniciar el valor del sensor de fling en cada iteración del bucle.

when A FLING is detected

 

  • Función: Se activa cuando se detecta un gesto fling en la pantalla. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

A continuación se muestra un programa que hace que el robot diga el nivel de batería de la base al detectar un gesto fling en la pantalla:

read Last note _

  • Función: Devuelve la última nota musical detectada con el micrófono del smartphone. La nota se está midiendo de manera continua.
    • Rango: Devuelve la nota musical en formato de texto, según la nomenclatura anglosajona, es decir:
DO DO# RE RE# MI FA FA# SOL SOL# LA LA# SI
C Cs D Ds E F Fs G Gs A As B
  • CAMPOS:
    • Note/duration: se puede seleccionar leer la nota o la duración con la que suena una nota.
  • Ejemplo de funcionamiento:

El siguiente programa consta de dos hilos de ejecución en paralelo, es decir, al pulsar sobre el icono de la bandera se ejecutarán ambos a la vez. El de la izquierda genera notas musicales desde MI hasta RE siguiendo la notación numérica mostrada en el bloque play note _ for _ seconds and wait_. El de la derecha, lee dichas notas con el bloque read last note_ y enciende los LEDs de la base Robobo en función de la nota detectada. Al ejecutar este programa, se puede observar como para algunas notas emitidas (sostenidas), no se enciende ningún LED:

Reset last note

  • Función: Reinicia el sensor de lectura de ultima nota.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo mida cada segundo la nota musical que detecta durante 10 segundos. En caso de detectar un MI (E en notación anglosajona), lo dice usando el bloque SAY. El bloque RESET LAST NOTE es necesario para evitar que detecte continuamente el primer MI, ya que este bloque guarda el último valor leído:

when a note is detected

  • Función: Se activa cuando se detecta una nota. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
    • advertencia: Este bloque está continuamente en ejecución, captando todos los sonidos que llegan al smartphone. Su utilización puede ralentizar otros bloques que usen sonido.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que, al detectarse un DO, informe de ello al usuario por voz. Este tipo de bloque se suele utilizar en conjunto con otros en paralelo, de modo que el robot está puede estar haciendo diferentes cosas en función del sensor:

read Clap Counter

  • Función: Devuelve el número de palmadas detectadas mediante el micrófono del smartphone.
    • Rango: Cualquier número entero positivo, ya que cuenta las palmadas que detecta de manera acumulativa
    • Advertencia: El bloque está ajustado para la detección de sonidos de tipo palmada, pero hay que tener en cuenta que el ruido ambiente afecta mucho a la detección, pudiendo confundir ruidos similares en este sensor. Por otro lado, este sensor mantiene el último valor detectado.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa detecta cuando se realizan dos o más palmadas consecutivas (en menos de dos segundos), lo cual hace que Robobo emita un sonido de alegría y ponga la expresión de sorpresa. Para ello se utiliza un temporizador (timer) que se reinicia cada 2 segundos y el bloque read clap counter. Si damos una única palmada, no ocurre nada. Es un ejemplo simple del tipo de interacción que se puede lograr con Robobo al utilizar sonido:

Reset clap counter

  • Función: Reinicia el contador de palmadas a 0.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

En el programa anterior (READ CLAP COUNTER) se puede ver el uso de este bloque para conseguir que el contador de palmadas se reinicie al captar dos

when CLAP is detected

  • Función: Se activa cuando se detecta una palmada. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
    • advertencia: Este bloque está continuamente en ejecución, captando todos los sonidos que llegan al smartphone. Su utilización puede ralentizar otros bloques que usen sonido. Se recomienda su uso en espacios donde no haya otras fuentes de sonido similares a una palmada, ya que estas harían que se activase continuamente.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo se detenga y diga, «Me has mandado parar» cuando detecta una palmada:

 

read Brightness sensor

  • Función: Devuelve el nivel de luz ambiente que detecta el sensor incorporado en la pantalla del smartphone. 
    • Advertencia: No todos los modelos de smartphone incluyen este sensor.
    • Rango: Cualquier valor entero positivo. El valor se devuelve en LUX (lx), unidad del sistema internacional para el nivel de iluminación.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo gire sobre sí mismo mientras que el nivel de iluminación sobre la pantalla sea superior a 1000 lx. En otro caso, se para:

 

read face sensor _

  • Función: Devuelve la posición x ,y, el tamaño o la distancia a la cual se detecta una cara mediante la cámara frontal de smartphone. El punto (x,y) devuelto se corresponde con el punto medio entre los dos ojos de la cara detectada:
    • Advertencia: La detección de la cara depende mucho del nivel de luz ambiente y de cómo esta incide en la cara a detectar. Se recomienda que la cara esté correctamente iluminada. Por otro lado, la precisión en la detección de la cara depende de la calidad de la cámara frontal del smartphone. Este sensor almacena el último valor leído.
  • CAMPOS:
    • SELECCIÓN DE eje: 
      • X o Y: existen 2 ejes posibles valores a seleccionar, x e y, que se corresponden con las coordenadas cartesianas.
        • Rango: De 0 a 100 en ambos ejes, utilizando la perspectiva de la cámara, tal y como se muestra en la siguiente imagen, donde las coordenadas de la cara detectada serían (40, 60):

      • Tamaño (size): devuelve la distancia a la que la camara frontal del Smartphone detecta una cara.
        • Rango: de 0 (no detecta) a inf (cuanto mayor es el valor devuelto, menor es la distancia). No se devuelve un valor en unidades estándar
      • Distancia (distance): devuelve una estimación discreta de la distancia a la que la cámara frontal del Smartphone detecta una cara.
          • Rango: devuelve únicamente tres valores de texto: close (cerca), mid (medio) o far (lejos).
  • Ejemplos de funcionamiento:

El siguiente programa hace que Robobo diga dónde ve la cara que está detectando de forma natural para el usuario. Así, cuando ve una cara a la derecha, izquierda o centrada, lo dice. Si no ve ninguna cara, también avisa de palabra. Para ello, utiliza la coordenada x de la cara que detecta:

Reset face sensor

  • Función: Reinicia el sensor de distancia a la cara a 0 y el de la posición (x,y) a (0,0).
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente ejemplo hace que Robobo busque una cara cercana moviendo el motor PAN. Al encontrarla, se para y dice «te veo». Para ello, se utiliza una variable contador que permite identificar el estado (1,2 o 3) en el que se encuentra el PAN, y girar dicho motor en consecuencia. Al comienzo del programa se hace uso del bloque que reinicia el sensor:

when FACE IS detected

  • Función: Se activa cuando se detecta una cara. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
    • advertencia: Este bloque está continuamente en ejecución, captando continuamente la presencia de una cara. Su utilización puede ralentizar otros bloques que usen la detección de caras.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo diga «te veo» de manera continua cada 2 segundos siempre que detecte una cara:

when FACE IS LOST

  • Función: Se activa cuando se deja de detectar una cara. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
    • advertencia: Este bloque está continuamente en ejecución, captando continuamente la no presencia de una cara. Su utilización puede ralentizar otros bloques que usen la detección de caras.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo diga «te veo» y «no te veo» de manera continua cada 2 segundos siempre que detecte una cara y luego la pierda:

reAD QR _

  • Función: Devuelve el identificador (id), la posición x ,y o el tamaño (size) de un código QR detectado mediante la cámara frontal de smartphone.
    • Advertencia: el código QR que se detecta con este bloque es de tipo estándar (https://es.wikipedia.org/wiki/Código_QR), y debe ser previamente impreso para que pueda ser detectado. Dependiendo del tamaño del código, su detección será más o menos robusta.
  • CAMPOS:
    • SELECCIÓN DE VALOR: 
      • id: devuelve el contenido del texto existente en el QR (hasta 4296 caracteres)
      • X o Y: corresponden a las coordenadas cartesianas del centro del QR, medidas en pixels desde la parte izquierda de la pantalla. Toman valores positivo
      • Tamaño (size): devuelve la distancia a la que la cámara frontal del Smartphone detecta el código QR.
        • Rango: de 0 (no detectado) a inf (cuanto mayor es el valor, más cerca). El valor medido no está en unidades internacionales. Se recomienda utilizar la ventana de monitorización para conocer el rango real de detección en cada caso.
    • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo avise cuando detecta un código QR centrado (coordenada X entre 200 y 250), indicando de palabra el identificador que contiene:

when A QR CODE IS detected

  • Función: Se activa cuando se detecta un código QR. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
    • advertencia: Este bloque está continuamente en ejecución, captando continuamente la presencia de un QR. Su utilización puede ralentizar otros bloques que usen la detección de QRs.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo pare los motores y diga el código del QR que detecta:

when A QR CODE APPEARS

  • Función: Se activa cuando se detecta un código QR diferente de los que ha visto anteriormente. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
    • advertencia: Este bloque está continuamente en ejecución, captando continuamente la presencia de un QR. Su utilización puede ralentizar otros bloques que usen la detección de QRs.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo diga el código de un nuevo QR que detecta:

when A QR CODE DISAPPEARS

  • Función: Se activa cuando se deja de detectar el último código QR visto. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
    • advertencia: Este bloque está continuamente en ejecución, captando continuamente la presencia de un QR. Su utilización puede ralentizar otros bloques que usen la detección de QRs.
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo diga el id del QR cuando lo deja de detectar:

 

Reset QR

  • Función:  Reinicia el sensor de QR poniendo a cero los valores de x, y, y size y a un texto vacío el valor del id.
  • CAMPOS:
    • No tiene

 

read_ Blob _

  • Función: Devuelve la coordenada x, la y o el área de la zona del color elegido en el campo selección de color que se detecta en la imagen de la cámara frontal del smartphone. Las coordenadas x, y corresponden al centro de la mayor zona de color detectada.
    • Advertencia: La detección de una zona de un cierto color depende mucho del nivel de luz ambiente y de cómo este incide en el objeto a detectar. Se recomienda que el objeto esté correctamente iluminado. Por otro lado, la precisión en la detección del color depende de la calidad de la cámara frontal del smartphone.
    • CALIBRADO: Para un funcionamiento óptimo de este bloque, se recomienda realizar el proceso de calibrado de la cámara descrito en la página de uso de la app de este manual. Durante el calibrado se puede seleccionar también cuál es el color personalizado (custom).
  • CAMPOS:
    • SELECCIÓN DE color: 
      • El valor devuelto por este sensor se corresponde a la mayor zona detectada en la imagen del color que se seleccione en este campo. En caso de haber más de una zona del mismo color, se devolverán los valores de la mayor.
      • Rango: Los posibles colores a detectar son rojo (red), verde (green), azul (blue) y personalizado (custom). Por defecto, el único color que se detecta es el verde. Para detectar otros colores, se deben activar previamente en el bloque configure blob detection colors.
    • SELECCIÓN DE eje: 
      • X o Y: Los valores posibles son x ó y, según las coordenadas cartesianas mostradas en la imagen anterior.
        • Rango: Los valores de salida van de 0 a 100 tanto para x como para y, según se muestra en la siguiente figura (el valor de ejemplo mostrado serían las coordenadas del centro del área azul, de valores (30,30):

      • Área:
        • Rango: El área devuelta puede tener cualquier valor entero positivo y se mide en píxeles.
  • Ejemplos de funcionamiento:

El siguiente programa hace que Robobo diga dónde ve un objeto de color verde de forma natural para el usuario. Así, cuando lo ve a la derecha, izquierda o en el medio, lo dice. Si no ve ningún objeto verde, también avisa de palabra. Para ello se usa la coordenada x del mayor área verde detectada en la imagen:

El siguiente programa asocia el área detectada de un cierto objeto de color (verde en este caso) a la distancia a dicho objeto. Así, si el área es menor de 2000, Robobo acelera para acercarse. Si está entre 2000 y 8000, se mueve más despacio y, finalmente, si es mayor de 8000 se detiene. Para probar ejemplo, se recomienda utilizar un objeto verde que se coloca frente al robot:

Reset color blobs

  • Función:  Reinicia el sensor de color poniendo a cero los valores de x, y, y área
  • CAMPOS:
    • No tiene

set active blobs R _ G _ B _ C _

  • Función: Permite seleccionar qué colores se van a detectar en el bloque  read _ blob _ axis, mediante los campos de selección de activación de rojo (R), verde (G), azul (B) o color personalizado (C). La detección de color consume gran cantidad de recursos del smartphone, que debe estar analizando la imagen de la cámara de manera continua, lo cual requiere un uso importante del procesador que puede ralentizar el funcionamiento de Robobo. 
    • Advertencia: Este bloque afecta al programa en el cual se utiliza, y solo mientras está en ejecución. Por defecto, el único color que se detecta es el verde.
    • CALIBRADO: Para un funcionamiento óptimo de los bloques que usan detección de color con la cámara, se recomienda realizar el proceso de calibrado desde la app del smartphone, descrito en la página de uso de la app de este manual. Durante el calibrado se puede seleccionar también cuál es el color personalizado.
  • CAMPOS:
    • activación DE rojo: 
      • Rango: Existen dos valores posibles, verdadero (TRUE) o falso (FALSE), que indican respectivamente si el programa en el que se usa este bloque deberá detectar el color rojo o no.
    • activación DE VERDE: 
      • Rango: Existen dos valores posibles, verdadero (TRUE) o falso (FALSE), que indican respectivamente si el programa en el que se usa este bloque deberá detectar el color verde o no.
    • activación DE AZUL: 
      • Rango: Existen dos valores posibles, verdadero (TRUE) o falso (FALSE), que indican respectivamente si el programa en el que se usa este bloque deberá detectar el color azul o no.
    • activación DE COLOR PERSONALIZADO: 
      • Rango: Existen dos valores posibles, verdadero (TRUE) o falso (FALSE), que indican respectivamente si el programa en el que se usa este bloque deberá detectar el color personalizado o no.
  • Ejemplo de funcionamiento:

El siguiente programa configura los colores rojo y azul para la detección. A continuación, Robobo dice si ve rojo o azul, y enciende los LEDS de la base en cada caso, al situarle delante de la cámara un objeto de cada color. Por defecto, los LEDs de la base están en verde:

when A COLOR BLOB IS DETECTED

  • Función: Se activa cuando se detecta un color con la cámara del smartphone. Su funcionamiento es el de cualquier hat block de Scratch, es decir, si se activa este bloque, se ejecutan los que estén conectados a él.
    • advertencia: Este bloque está continuamente en ejecución, captando continuamente la presencia de una color. Su utilización puede ralentizar otros bloques que usen la detección de caras. Además, detectará cualquier blob que esté activado con el bloque SET ACTIVE BLOBS
  • CAMPOS:
    • No tiene.
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo diga de forma continuada el color que detecta, asumiendo que están activados verde, rojo y azul:

read Orientation on _ AXIS

  • Función: Devuelve la orientación del smartphone según el ángulo de navegación escogido en el campo selección de ángulo. Como el smartphone está fijado a la base mediante el atril, esta orientación es la del propio Robobo.
    • Advertencia: No todos los smartphone tienen sensor de orientación (giroscopio).
    • Rango: De -180 a 180 grados en todos los ejes, según el esquema de ángulos de navegación de la figura de abajo. Es importante destacar que el giro en el ángulo yaw se consigue girando la base con los motores de las ruedas y con el motor PAN. El giro en el ángulo roll no se puede lograr mediante Robobo, pero si la superficie sobre la que se mueve tiene una inclinación lateral, sí cambiará. Finalmente, se pueden dar giros en el ángulo pitch al utilizar el motor TILT o al mover el robot por un plano inclinado frontalmente:

  • CAMPOS:
    • SELECCIÓN DEL ÁNGULO: 
      • Rango: Existen 3 ángulos de navegación posibles: yaw (guiñada), pitch (cabeceo) y roll (alabeo).
  • Ejemplo de funcionamiento:

El siguiente programa hace que Robobo se mueva en línea recta de forma indefinida, y diga si sube o si baja en caso de encontrarse con una inclinación en su camino. Para ello, se analiza si el ángulo pitch está por encima de un umbral negativo o positivo:

Smartphone battery level

  • Función: Devuelve el nivel de batería del smartphone.
    • Rango: De 0 a 100, de modo que cuanto mayor es el valor, mayor es el nivel de batería.
  • CAMPOS:
    • Phone/batery.
  • Ejemplo de funcionamiento:

A continuación se muestre un programa típico que podría estar en ejecución permanente controlando el nivel de batería del smartphone cada 5 minutos (300 segundos), y que emite un aviso cuando dicho nivel baja de un cierto umbral. En este caso, el aviso consiste en decir la frase «Batería muy baja. Guarda tu programa» cada 30 segundos:

read acceleration on _ axis

  • Función: Devuelve la aceleración a la que está sometido el smartphone en el eje escogido en el campo selección de eje. Como el smartphone está fijado a la base mediante el atril, esta aceleración es la del propio Robobo.
    • Rango: Cualquier valor entero, positivo o negativo, medido en m/s2. Los ejes que se utilizan como referencia son los siguientes:

  • CAMPOS:
    • SELECCIÓN DEL eje: 
      • Rango: Se pueden seleccionar los 3 ejes x,y,z del sistema cartesiano.