Motores

Introducción

Todos los motores de Robobo incorporan un sensor (codificador de eje o encoder) que permite leer su posición mediante los métodos descritos en este apartado.

Elementos de programación

1. Enumerado Wheels

Representa la lista de ruedas de Robobo.

R: Derecha.
L: Izquierda.
Both: Ambas.

2. Método readWheelPosition

readWheelPosition(wheel)

Lee la posición actual de la rueda especificada.

 

Parámetros:
wheel (Wheels): La rueda de la que se lee la posición (ver Enumerado Wheels). Se puede escoger entre Wheels.L o Wheels.R.

Devuelve:
• La posición de la rueda en grados (int).

Ejemplo de Uso

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:

El siguiente programa…

FRASE SIN ACABAR (TB EN EL PDF)

…devuelve el número de vueltas que da Robobo (siempre que sean menos de 720 vueltas).

from robobopy.Robobo import Robobo
from robobopy.utils.Wheels import Wheels

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

rob.moveWheels(20,20)
rob.wait(1)

vueltas = rob.readWheelPosition(Wheels.R)

while (rob.readWheelPosition(Wheels.R) - vueltas > 720):
    rob.wait(0.1)
rob.stopMotors()

3. Método readWheelSpeed

readWheelSpeed(wheel)

Lee la velocidad actual de la rueda especificada.

 

Parámetros:
wheel (Wheels): La rueda de la que se lee la velocidad (ver Enumerado Wheels). Se puede escoger entre Wheels.L o Wheels.R.

Devuelve:
• La velocidad actual de la rueda (int). Valores en el rango de -100 a 100. El valor absoluto de 100 representa la velocidad máxima, mientras que 0 significa que no hay movimiento. Valores positivos indican movimiento hacia delante; valores negativos, hacia atrás.

Ejemplo de Uso

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

from robobopy.Robobo import Robobo
from robobopy.utils.Wheels import Wheels

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

speed = 20

for i in range(4):
    rob.moveWheels(speed, speed)
    rob.wait(1)
    rob.sayText('Mi velocidad es ' + 
    str(rob.readWheelSpeed(Wheels.L)))
    speed+= 10

rob.stopMotors()

4. Método resetWheelEncoders()

resetWheelEncoders()
Reinicia los encoders de las ruedas.

Ejemplo de Uso

En este ejemplo, se mueve el robot durante 5 segundos y, a continuación, se usa el método readWheelPosition para leer el valor de la posición actual de la rueda derecha en voz alta. Después, se usa el método resetWheelEncoders para reiniciar dicha posición y se le lee de nuevo al usuario.

from robobopy.Robobo import Robobo
from robobopy.utils.Wheels import Wheels
rob = Robobo("localhost")
rob.connect()
rob.moveWheelsByTime(20,20,5)
rob.sayText('La posición de la rueda derecha es' + str(rob.readWheelPosition(Wheels.R)))
rob.resetWheelEncoders()
rob.wait(0.5)
rob.sayText('La posición de la rueda derecha ha sido reiniciada. La posición actual es' +
str(rob.readWheelPosition(Wheels.R)))

5. Método readPanPosition

readPanPosition()
Lee la posición actual del motor PAN.

Devuelve:
• La posición en grados (int): los valores devueltos están en el rango de -160 a 160.

Ejemplo de Uso

En el siguiente programa, 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. Por lo tanto, este programa nos permite conocer la orientación del smartphone respecto a la base en cualquier momento.

from robobopy.Robobo import Robobo
from robobopy.utils.LED import LED
from robobopy.utils.Color import Color
import random

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

rob.setLedColorTo(LED.All, Color.OFF)
rob.movePanTo(random.randint(-160,160), 15)

if rob.readPanPosition() < 0:
    rob.setLedColorTo(LED.FrontLL, Color.CYAN)
    rob.setLedColorTo(LED.FrontL, Color.CYAN)
    rob.setLedColorTo(LED.BackL, Color.CYAN)
else:
    rob.setLedColorTo(LED.FrontR, Color.CYAN)
    rob.setLedColorTo(LED.FrontRE, Color.CYAN)
    rob.setLedColorTo(LED.BackR, Color.CYAN)

6. Método readTiltPosition

readTiltPosition()
Lee la posición actual del motor TILT.

Devuelve:
• La posición en grados (int): los valores están en el rango de 5 a 105.

Ejemplo de Uso

En el siguiente programa, 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. Por lo tanto, este programa nos permite conocer la orientación del smartphone respecto a la base en cualquier momento.

from robobopy.Robobo import Robobo
from robobopy.utils.LED import LED
from robobopy.utils.Color import Color
import random

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

rob.setLedColorTo(LED.All, Color.OFF)
rob.moveTiltTo(random.randint(60,108), 15)

if rob.readTiltPosition() < 90:
    rob.setLedColorTo(LED.BackL, Color.CYAN)
    rob.setLedColorTo(LED.BackR, Color.CYAN)
else:
    rob.setLedColorTo(LED.FrontC, Color.CYAN)
    rob.setLedColorTo(LED.FrontL, Color.CYAN)
    rob.setLedColorTo(LED.FrontLL, Color.CYAN)
    rob.setLedColorTo(LED.FrontR, Color.CYAN)
    rob.setLedColorTo(LED.FrontRE, Color.CYAN)
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.