Motores

Introducción

 

Robobo tiene cuatro motores:

        • Motor en la rueda izquierda para girar y desplazarse.
        • Motor en la rueda derecha para girar y desplazarse.
        • Motor TILT para inclinar el smartphone hacia delante y hacia detrás de forma independiente a la posición de la base. En la imagen siguiente se muestran las diferentes posiciones del motor tilt, que se expresan en ángulos de entre 5 y 105 grados.
        • Motor PAN para mover el smartphone hacia la derecha y hacia la izquierda de forma independiente a la posición de la base. La imagen siguiente muestra las diferentes posiciones del motor pan, que se expresan en ángulos de entre –160 y 160 grados. Los valores negativos hacen que el smartphone esté girado hacia la izquierda, mientras que los valores positivos hacen que el smartphone esté girado hacia la derecha.

Motor Tilt

Motor Pan

Elementos de programación

1. Enumerado Wheels

Representa la lista de ruedas de Robobo.

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

2. Método moveWheelsByDegrees

moveWheelsByDegrees (wheel, degrees, speed)
Mueve las ruedas de Robobo en función de los grados de giro especificados. Permite establecer la velocidad y los grados de giro de la rueda derecha, la rueda izquierda o ambas.
Parámetros:
wheel (Wheels): Rueda o ruedas a mover.
degrees (int): Ángulo de giro medido en grados. Toma valores positivos. Hay que tener en cuenta que una vuelta completa de la rueda son 360 grados.
speed (int): Factor de velocidad de giro que se aplica al motor de la rueda seleccionada. El rango de valores permitidos para la velocidad está entre -100 y 100. El valor absoluto de 100 representa la máxima velocidad que la rueda puede alcanzar, mientras que 0 representa que la rueda no se mueve. Los valores positivos mueven la rueda hacia delante y los valores negativos hacia atrás.
IMPORTANTE: Este método se ejecuta siempre en modo bloqueante (ver sección sobre Modos de ejecución).

Ejemplo de Uso

El siguiente programa hace que Robobo se mueva en línea recta a velocidad 30 hasta que las dos ruedas (Wheels.Both) hayan girado 360 grados. A continuación, hace que la rueda izquierda (Wheels.L) gire 180 grados hacia atrás a velocidad 30. Por último, hace que la rueda derecha (Wheels.R) gire 180 grados hacia delante a velocidad 50.

Robobo termina en la misma posición tras ejecutar las dos últimas instrucciones, ya que una rueda gira y la otra permanece en el sitio.


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

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

rob.moveWheelsByDegrees(Wheels.BOTH, 360, 30)
rob.moveWheelsByDegrees(Wheels.L, 180, -30)
rob.moveWheelsByDegrees(Wheels.R, 180, 50)

3. Método moveWheelsByTime

moveWeelsByTime(rSpeed, lSpeed, duration, wait=True)
Mueve las ruedas de Robobo durante el tiempo especificado, cada una a la velocidad especificada.
Parámetros:
rSpeed (int): Factor de velocidad para la rueda derecha. El rango de valores permitidos está entre -100 y 100. El valor absoluto de 100 representa la máxima velocidad que la rueda puede alcanzar, mientras que 0 representa que la rueda no se mueve. Los valores positivos mueven la rueda hacia delante y los negativos hacia atrás.
lSpeed (int): Factor de velocidad para la rueda izquierda. Igual que rSpeed.
duration (float): Duración del movimiento en segundos. Se permiten valores positivos.
wait (boolean): Indica si este método se ejecuta en modo bloqueante (True) o no (False).

Ejemplo de Uso

El siguiente programa hace que Robobo se desplace en línea recta y continúe moviéndose hasta que el valor del sensor infrarrojo central (leído con el método readIRSensor) sea mayor de 100, lo que significa que hay un objeto cerca. Cuando esto ocurre, la función stopMotors() detiene los motores de las ruedas:

from robobopy.Robobo import Robobo

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

rob.moveWheelsByTime(50, 50, 2)
rob.moveWheelsByTime(60,40,3)

4. Método moveWheels

moveWheels (rSpeed, lSpeed)
Mueve las ruedas de Robobo. Este método permite establecer la velocidad de cada rueda. El movimiento se realizará de forma indefinida hasta que sea detenido con el método stopMotors.
Parámetros:
rSpeed (int): Factor de velocidad de giro del motor de la rueda derecha. El rango de valores permitidos está entre -100 y 100. El valor absoluto de 100 representa la máxima velocidad que la rueda puede alcanzar, mientras que 0 representa que la rueda no se mueve. Los valores positivos mueven la rueda hacia delante y los negativos hacia atrás.
lSpeed (int): Igual que rSpeed, pero aplicado a la rueda izquierda.
IMPORTANTE: Este método se ejecuta siempre en modo bloqueante (ver sección sobre Modos de ejecución).

5. Método stopMotors

stopMotors()
Para el movimiento de ambas ruedas.

El siguiente programa hace que Robobo se desplace en línea recta y continúe moviéndose hasta que el valor del sensor infrarrojo central (leído con el método readIRSensor) sea mayor de 100, lo que significa que hay un objeto cerca. Cuando esto ocurre, la función stopMotors() detiene los motores de las ruedas.

Ejemplo de Uso

from robobopy.Robobo import Robobo
from robobopy.utils.IR import IR

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

rob.moveWheels(30,30)

while rob.readIRSensor(IR.FrontC) < 100:
rob.wait(0.1)

rob.stopMotors()

6. Método movePanTo

movePanTo (degrees, speed, wait=True)
Mueve el motor PAN hasta la posición deseada.
Parámetros:
degrees (int): Posición en grados del motor PAN. El rango de valores permitidos está entre -160 y 160.
speed (int): Velocidad de giro del motor PAN. El rango de valores permitidos está entre 0 y 100. Cuanto mayor es la velocidad, menos tiempo tardará en alcanzar la posición objetivo.
wait (boolean): Indica si este método se ejecuta en modo bloqueante (True) o no (False).

Ejemplo de Uso

El siguiente programa mueve el motor PAN hasta 120º con velocidad 5. Luego, lo mueve hasta -30º con velocidad 10.

from robobopy.Robobo import Robobo

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

rob.movePanTo(120,5)
rob.movePanTo(-30,10)

7. Método moveTiltTo

moveTiltTo (degrees, speed, wait=True)
Mueve el motor TILT hasta la posición deseada.
Parámetros:
degrees (int): Posición en grados del motor TILT. El rango de valores permitidos está entre 5 y 105, siendo 75 el valor central.
speed (int): Velocidad de giro del motor TILT. El rango de valores permitidos está entre 0 y 100. Cuanto mayor es la velocidad, menos tiempo tardará en alcanzar la posición objetivo.
wait (boolean): Indica si este método se ejecuta en modo bloqueante (True) o no (False).

Ejemplo de Uso

El siguiente programa mueve el motor TILT hasta 90º con velocidad 5. Luego, lo mueve hasta 20º con velocidad 10.

from robobopy.Robobo import Robobo

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

rob.moveTiltTo(90,5)
rob.moveTiltTo(20,10)

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.