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 Robobo 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:

 

 

Tap Zone

  • Función: 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.
    • Advertencia: Este sensor mantiene el último valor medido.

  • CAMPOS:
    • Ninguno.
  • 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.   

Tap position at _ axis

  • Función: Devuelve la posición x ó y en la cual se detecta una pulsación breve de pantalla (tap). 
    • Advertencia: Este sensor mantiene el último valor medido.
    • Rango: De 0 a 100 en ambos ejes, tal y como se muestra en la siguiente imagen:

  • CAMPOS:
    • SELECCIÓN DE eje: 
      • Rango: Existen 2 ejes posibles valores a seleccionar, x e y, que se corresponden con las coordenadas cartesianas mostradas anteriormente.
  • Ejemplo 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:

Fling Angle

  • 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:
    • Ninguno.
  • 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 5):

Brightness

  • 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:
    • Ninguno.
  • 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:

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:
    • Ninguno.
  • 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. 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:

when note 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:
    • Ninguno.
  • 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:

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:
    • Ninguno.
  • 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:

Face Distance

  • Función: Devuelve 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).
    • Advertenciala detección de la cara depende mucho del nivel de luz ambiente y de cómo este 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.
  • CAMPOS:
    • Ninguno.
  • 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:

Face position at _ axis

 

  • Función: Devuelve la posición x ó y en 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 este 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
    • 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):

  • CAMPOS:
    • SELECCIÓN DE eje: 
      • Rango: existen 2 ejes posibles valores a seleccionar, x e y, que se corresponden con las coordenadas cartesianas mostradas anteriormente.
  • Ejemplo 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:

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:
    • Ninguno.
  • 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:
    • Ninguno.
  • 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:

 

_ BLOB Area

  • Función: Devuelve el área del color elegido en el campo selección de color que se detecta en la imagen de la cámara frontal del smartphone. 
    • Advertencia: La detección del área 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.
    • Rango: El área devuelta puede tener cualquier valor entero positivo y se mide en píxeles.
  • CAMPOS:
    • SELECCIÓN DE color: El área devuelta por este sensor será aquella del color que se seleccione en este campo. En caso de haber más de una zona del mismo color en la imagen, se devolverá el área de la mayor, pero no la suma de todas ellas.
      • 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.
  • Ejemplo de funcionamiento:

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:

 

_ Blob position at _ axis

  • Función: Devuelve el valor x ó y del centro del área del color elegido en el campo selección de color que detecta la cámara frontal del smartphone. 
    • Advertencia: La detección del área 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.
    • 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)):

  • CAMPOS:
    • SELECCIÓN DE color: 
      • El valor x ó y devuelto por este sensor se corresponde al centro del área de la zona del color que se seleccione en este campo. En caso de haber más de una zona del mismo color en la imagen, se devolverá el x ó y 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: 
      • Rango: Los valores posibles son x ó y, según las coordenadas cartesianas mostradas en la imagen anterior.
  • Ejemplo 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:

Active Blob Detection Colors R _ G _ B _ C _

 

 

  • Función: Permite seleccionar qué colores se van a detectar en los bloques read _ area y read _ blob position at _ axis, mediante los campos de selección de activación de rojo, verde, azul o color personalizado. 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:

Orientation at _ 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:

Reset sensor _

  • Función: Reinicia el valor del sensor indicado en el campo selección de sensorEste bloque afecta también a los sensores del smartphone, por lo que su descripción aparece también en dicha sección.
  • CAMPOS:
    • SELECCIÓN DE SENSOR: 
      • all: Reinicia todos los sensores.
      • IR: Reinicia el valor de los sensores infrarrojo a 0.
      • acceleration: Reinicia el valor del acelerómetro a 0 en los tres ejes (x,y,z).
      • brightness: Reinicia el valor del sensor de luz ambiente a 0.
      • claps: Reinicia el contador de palmadas a 0.
      • face: Reinicia el sensor de distancia a la cara a 0 y el de la posición (x,y) a (0,0).
      • fling: Reinicia el sensor de ángulo de desplazamiento táctil sobre la pantalla a 0.
      • orientation: Reinicia los ángulos de orientación del smartphone (yaw, pitch, roll) a 0.
      • tap: Reinicia el sensor de zona de contacto sobre la pantalla a NONE.
  • Ejemplo de funcionamiento:

Este bloque es útil con aquellos sensores que guardan el último valor leído o bien que almacenan un valor de manera continuada como, por ejemplo, el sensor de palmadas o en el sensor de distancia a la cara. En el siguiente ejemplo se muestra un programa que lee las palmadas captadas y, mientras sean menos de 5, enciende los LEDs de la base en azul. En cuanto sean 5 o más, enciende los LEDs en rojo y espera 3 segundos. Para que el programa continúe de forma indefinida, es necesario reiniciar el valor del sensor de palmadas:

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:
    • Ninguno.
  • 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:

acceleration at _ 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.