Los bloques de sensorización de la base de Robobo son los siguientes:
Todos ellos están relacionados con información que puede captar Robobo mediante los sensores situados en la base. Es importante utilizar la ventana de monitorización para comprobar los valores que devuelven estos sensores en tiempo real en cada entorno concreto.
read ir _ sensor value
- Función: Devuelve el valor medido por el sensor infrarrojo (IR) indicado en el campo selección de sensor.
- Rango: De 0 a inf (sin límite). Cuanto más grande es el valor, menor es la distancia a la que se encuentra el objeto detectado. Este valor se corresponde con la intensidad de señal recibida por el sensor, por lo que si vale 0 significa que no se detecta ningún objeto cercano.
- Advertencia: El funcionamiento de los sensores infrarrojos depende del nivel de luz ambiente y del material del objeto a detectar, por lo cual el valor devuelto por este sensor debe ser ajustado en cada entorno particular.
- CAMPOS:
- SELECCIÓN DE SENSOR:
- Existen 8 sensores infrarrojos en la base de Robobo nombrados según se muestra en la imagen anterior. Los sensores Front-C, Front-LL, Front-RR, Back-L y Back-R está orientados en paralelo al suelo, es decir, detectan los objetos que tienen delante, pero no detectan posibles huecos en el suelo. Por otro lado, los sensores Front-L, Front-R y Back-C tienen una orientación de 45º respecto al suelo para poder detectar dichos huecos, y así evitar caídas desde altura, por ejemplo. Esta orientación influye a la hora de utilizar un sensor u otro para detectar obstáculos.
- EjemploS de funcionamiento:
El siguiente programa hace que Robobo se mueva hacia adelante hasta que encuentra un obstáculo cercano en el sensor delantero central (el valor de 100 es orientativo, y debe ser ajustado al nivel de luz y al tipo de objeto a detectar). Cuando eso ocurre, se mueve hacia atrás durante 1 segundo para separase del obstáculo, luego gira en el sitio 180º aproximadamente y, finalmente, se mueve en dirección contraria durante 2 segundos:
Read _ wheel position
- Función: Devuelve la posición del motor seleccionado en el campo selección de rueda. Esta posición corresponde a los grados de giro de la rueda desde su reinicio.
- Rango: De -inf a inf (sin límite). Hay que tener en cuenta que una vuelta completa de la rueda son 360 grados. Si la rueda gira hacia atrás, los grados de giro disminuyen, pudiendo ser negativos.
- CAMPOS:
- SELECCIÓN DE RUEDA: Se puede seleccionar el motor de la rueda derecha o de la izquierda.
- Ejemplo de funcionamiento:
Con este bloque podemos conocer la distancia aproximada que recorre Robobo. En este ejemplo, se utiliza este bloque para hacer que el robot se pare cuando la rueda derecha ha dado 2 vueltas completas (720 grados). Si conocemos la longitud de la circunferencia de la rueda, podemos determinar fácilmente la distancia recorrida:
REad _ wheel speed
- Función: Devuelve la velocidad de la rueda seleccionada en cada instante de tiempo.
- Rango: De -100 a 100, acorde con la potencia que se puede asignar a cada rueda en los bloques de movimiento
- CAMPOS:
- SELECCIÓN DE RUEDA: Se puede seleccionar el motor de la rueda derecha o de la izquierda.
- Ejemplo de funcionamiento:
El siguiente programa hace que Robobo avance en línea recta con una velocidad que aumenta de 10 en 10 desde 20 hasta 50 (4 veces). En cada paso del bucle, dice la velocidad real que alcanza la rueda (se utiliza solo la rueda izquierda ya que ambas usan el mismo valor):
reset wheel encoders
- Función: Pone a 0 el sensor de posición y velocidad de las ruedas
- CAMPOS:
- Ejemplo de funcionamiento:
El siguiente programa hace que Robobo avance en línea recta hasta que las ruedas hayan dado 5 vueltas completas. Para ello, se usa el bloque RESET WHEEL ENCODERS dentro del bucle, de modo que se puede utilizar como valor de comparación 360 grados. Si no se reinicia este sensor, el valor del ángulo girado no pararía de crecer:
read pan position
- Función: Devuelve la posición del motor PAN. Esta posición corresponde a los grados de giro del motor desde su reinicio.
- Rango: de -160 a 160, comenzando en 0 cuando la unidad PAN-TILT se inicia (ver figura). Los valores negativos indican que el PAN está girado hacia la izquierda, mientras que los valores positivos indican que está hacia la derecha.
- CAMPOS:
- Ejemplo de funcionamiento:
En este ejemplo, se mueve el motor PAN a un valor aleatorio dentro de su rango de operación y, a continuación, se encienden los LEDs del lado de la base correspondiente al giro realizado. Podemos ver, por tanto, que este bloque nos permite conocer la orientación del smartphone respecto a la base en cualquier momento:
read TILT position
- Función: Devuelve la posición del motor TILT. Esta posición corresponde a los grados de giro del motor desde su reinicio.
- Rango: de 26 a 109, acorde con los valores permitidos para este motor, siendo 75 el valor de inicio (como se muestra en la imagen). Los valores menores de 75 indican que el soporte del smartphone está girado hacia la atrás, mientras que los valores mayores de 75 indican que está hacia delante.
- CAMPOS:
- Ejemplo de funcionamiento:
En este ejemplo, se mueve el motor TILT a un valor aleatorio dentro de su rango de operación y, a continuación, se encienden los LEDs delanteros o traseros de la base en función de si el TILT está por encima o por debajo de 90 grados. Podemos ver, por tanto, que este bloque nos permite conocer la orientación del smartphone respecto a la base en cualquier momento:
read base battery level
- Función: Devuelve el nivel de batería de la base Robobo.
- Rango: de 0 a 100, de modo que cuanto mayor es el valor, mayor es el nivel de batería de la base.
- CAMPOS:
- Tiene dos opciones base/phone, dado que este bloque también devuelve el nivel de batería del smartphone. En este apartado nos estamos centrando en los sensores de la base, por lo que el valor deberá ser base
- Ejemplo de funcionamiento:
A continuación se muestra un programa que podría estar en ejecución permanente controlando el nivel de batería de la base cada 5 minutos (300 segundos), emitiendo un aviso cuando dicho nivel baja de un cierto umbral. En este caso, el aviso consiste en encender los LEDS en color rojo de manera intermitente: