5. | Métodos de Sensorización

5.10 Sensor táctil

Introducción

Robobo puede detectar gestos en la pantalla (fling y tap) gracias al sensor táctil de la pantalla del Smartphone. En el simulador se realizan sobre la ventana emergente inferior derecha (ver documentación del simulador).

Los flings son deslizamientos del dedo sobre la pantalla en una dirección determinada.
Los taps son pequeños golpes que no tienen una dirección definida.

Elementos de programación

5.10.1 Clase Tap

Representa un tap detectado en la pantalla del smartphone.
Atributos:

  • x (int): La coordenada X del tap. Toma valores de entre 0 y 100.
  • y (int): La coordenada Y del tap. Toma valores de entre 0 y 100.
  • zone (string): Devuelve el área de la pantalla del smartphone, que puede ser uno de los siguientes valores: ‘forehead’, ‘eye’, ‘right’, ‘left’, ‘mouth’ o ‘chin’. Estos valores están representados en la imagen siguiente:

5.10.2 Método readFlingAngle

readFlingAngle()

Lee el último ángulo de fling detectado. Este ángulo está formado por una línea horizontal y el primer y último punto donde el dedo tocó la pantalla.

 

Devuelve:
• El ángulo en grados (int).

Ejemplo de Uso

El siguiente programa hace que Robobo muestre de forma continuada el ángulo del último fling medido.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    fling_angle = rob.readFlingAngle()
    print(fling_angle)
    rob.wait(1)

5.10.3 Método readFlingDistance

readFlingDistance()
Lee la longitud del último fling detectado por Robobo.

Devuelve:
• La longitud en píxeles (float).

Ejemplo de Uso

El siguiente programa hace que Robobo muestre de forma continuada el ángulo del último fling medido.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    fling_distance = rob.readFlingDistance()
    print(fling_distance)
    rob.wait(1)

5.10.4 Método readFlingTime

readFlingTime()
Lee la duración del último fling detectado por Robobo.

Devuelve:
• La duración en milisegundos (float).

Ejemplo de Uso

El siguiente programa hace que Robobo muestre de forma continuada el ángulo del último fling medido.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    fling_time = rob.readFlingTime()
    print(fling_time)
    rob.wait(1)

5.10.5 Método resetFlingSensor()

resetFlingSensor()
Reinicia el estado del sensor Fling.

Ejemplo de Uso

En el siguiente programa, cuando el valor del ángulo del último fling supera los 50 grados, se reinicia el valor del sensor de flings.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    fling_angle = rob.readFlingAngle()
    print(fling_angle)
    if fling_angle > 50:
        rob.resetFlingSensor()
        print("Reset Fling!")
    rob.wait(1)

5.10.6 Método whenAFlingIsDetected

whenAFlingIsDetected(callback)
Establece la función callback que se llama cuando se detecta un nuevo fling.

Parámetros:
callback (fun): La función callback que será llamada.

Ejemplo de Uso

El siguiente programa hace que Robobo diga el nivel de batería de la base al detectar un fling en la pantalla.

from robobopy.Robobo import Robobo

def say_batery_level():
    rob.sayText('La base tiene una bateria de' + str(rob.readBatteryLevel('base')))

rob = Robobo('localhost')
rob.connect()

rob.whenAFlingIsDetected(say_batery_level)

# el programa se mantiene en ejecución continua
while True:
    rob.wait(0.1)

5.10.7 Método readTapSensor

readTapSensor()
Lee los datos del último tap detectado.

Devuelve:
• El tap (Tap). Ver Clase Tap.

5.10.8 Método resetTapSensor

resetTapSensor()
Reinicia el estado del sensor tap.

Ejemplo de Uso

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.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    if rob.readTapSensor().x > 30 and rob.readTapSensor().x < 70:
        if rob.readTapSensor().y > 50 and rob.readTapSensor().y < 60:
            rob.sayText('No tengo bigote')

    rob.resetTapSensor()
    rob.wait(1)

5.10.9 Método whenATapIsDetected

whenATapIsDetected(callback)
Establece la función callback que se llama cuando se detecta un nuevo tap.

Parámetros:
callback (fun): La función callback que será llamada.

Ejemplo de Uso

A continuación, se muestra un programa que hace que el robot pare todos los motores al realizar un tap sobre la pantalla.

from robobopy.Robobo import Robobo

def fun():
    rob.stopMotors()

rob = Robobo('localhost')
rob.connect()

rob.moveWheels(30,30)

rob.whenATapIsDetected(fun)

# el programa se mantiene en ejecución continua

while True:
    rob.wait(0.1)

5. | Métodos de sensorización

5.10 Sensor táctil

Introducción

Robobo puede detectar gestos en la pantalla (fling y tap) gracias al sensor táctil de la pantalla del Smartphone. En el simulador se realizan sobre la ventana emergente inferior derecha (ver documentación del simulador).

Los flings son deslizamientos del dedo sobre la pantalla en una dirección determinada. Los taps son pequeños golpes que no tienen una dirección definida.

Elementos de programación

5.10.1 Clase Tap

Representa un tap detectado en la pantalla del smartphone.

Atributos:

• x (int): La coordenada X del tap. Toma valores de entre 0 y 100.

• y (int): La coordenada Y del tap. Toma valores de entre 0 y 100.

• zone (string): Devuelve el área de la pantalla del smartphone, que puede ser uno de los siguientes valores: ‘forehead’, ‘eye’, ‘right’, ‘left’, ‘mouth’ o ‘chin’. Estos valores están representados en la imagen siguiente:

5.10.2 Método readFlingAngle

readFlingAngle()
Lee el último ángulo de fling detectado. Este ángulo está formado por una línea horizontal y el primer y último punto donde el dedo tocó la pantalla.

Devuelve:
• El ángulo en grados (int).

Ejemplo de Uso

El siguiente programa hace que Robobo muestre de forma continuada el ángulo del último fling medido.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    fling_angle = rob.readFlingAngle()
    print(fling_angle)
    rob.wait(1)

5.10.3 Método readFlingDistance

readFlingDistance()
Lee la longitud del último fling detectado por Robobo.

Devuelve:
• La longitud en píxeles (float).

Ejemplo de Uso

El siguiente programa hace que Robobo muestre de forma continuada el ángulo del último fling medido.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    fling_distance = rob.readFlingDistance()
    print(fling_distance)
    rob.wait(1)

5.10.4 Método readFlingTime

readFlingTime()
Lee la duración del último fling detectado por Robobo.

Devuelve:
• La duración en milisegundos (float).

Ejemplo de Uso

El siguiente programa hace que Robobo muestre de forma continuada el ángulo del último fling medido.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    fling_time = rob.readFlingTime()
    print(fling_time)
    rob.wait(1)

5.10.5 Método resetFlingSensor()

resetFlingSensor()
Reinicia el estado del sensor Fling.

Ejemplo de Uso

En el siguiente programa, cuando el valor del ángulo del último fling supera los 50 grados, se reinicia el valor del sensor de flings.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    fling_angle = rob.readFlingAngle()
    print(fling_angle)
    if fling_angle > 50:
        rob.resetFlingSensor()
        print("Reset Fling!")
    rob.wait(1)

5.10.6 Método whenAFlingIsDetected

whenAFlingIsDetected(callback)
Establece la función callback que se llama cuando se detecta un nuevo fling.

Parámetros:
callback (fun): La función callback que será llamada.

Ejemplo de Uso

El siguiente programa hace que Robobo diga el nivel de batería de la base al detectar un fling en la pantalla.

from robobopy.Robobo import Robobo

def say_batery_level():
    rob.sayText('La base tiene una bateria de' + str(rob.readBatteryLevel('base')))

rob = Robobo('localhost')
rob.connect()

rob.whenAFlingIsDetected(say_batery_level)

# el programa se mantiene en ejecución continua
while True:
    rob.wait(0.1)

5.10.7 Método readTapSensor

readTapSensor()
Lee los datos del último tap detectado.

Devuelve:
• El tap (Tap). Ver Clase Tap.

5.10.8 Método resetTapSensor

resetTapSensor()
Reinicia el estado del sensor tap.

Ejemplo de Uso

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.

from robobopy.Robobo import Robobo

rob = Robobo('localhost')
rob.connect()

while True:
    if rob.readTapSensor().x > 30 and rob.readTapSensor().x < 70:
        if rob.readTapSensor().y > 50 and rob.readTapSensor().y < 60:
            rob.sayText('No tengo bigote')

    rob.resetTapSensor()
    rob.wait(1)

5.10.9 Método whenATapIsDetected

whenATapIsDetected(callback)
Establece la función callback que se llama cuando se detecta un nuevo tap.

Parámetros:
callback (fun): La función callback que será llamada.

Ejemplo de Uso

A continuación, se muestra un programa que hace que el robot pare todos los motores al realizar un tap sobre la pantalla.

from robobopy.Robobo import Robobo

def fun():
    rob.stopMotors()

rob = Robobo('localhost')
rob.connect()

rob.moveWheels(30,30)

rob.whenATapIsDetected(fun)

# el programa se mantiene en ejecución continua

while True:
    rob.wait(0.1)
Robobo
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.