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)