Inercial#

Introducción#

El IQ (2.ª generación) Cerebro incluye un sensor inercial incorporado. Este sensor mide cómo se mueve y gira el cerebro.

El sensor inercial utiliza dos partes para hacer esto. El giroscopio mide el giro, como el rumbo, la rotación, la velocidad y la orientación del giroscopio. El acelerómetro mide los cambios en el movimiento, como la aceleración o la desaceleración a lo largo de los ejes x, y y z.

Esta página utiliza brain_inertial como ejemplo de nombre del sensor inercial. Reemplácelo con su propio nombre configurado según sea necesario.

A continuación se muestra una lista de todos los métodos disponibles:

Orientación: lea y controle el rumbo, la rotación y la calibración del sensor.

  • heading — Devuelve la dirección en la que mira el sensor, de 0 a 359,99 grados.

  • rotation — Devuelve hasta dónde ha girado el sensor.

  • calibrate — Calibra el sensor inercial.

  • set_heading — Establece el rumbo actual del sensor de inercia en un nuevo valor de rumbo.

  • set_rotation — Establece la rotación actual del sensor inercial en un nuevo valor de rotación.

  • is_calibrating — Devuelve si el sensor inercial se está calibrando actualmente.

  • reset_heading — Restablece el rumbo actual del sensor de inercia a 0 grados.

  • reset_rotation — Restablece la rotación actual del sensor inercial a 0 grados.

  • changed — Registra una función para ejecutarse cuando cambia el rumbo del sensor inercial.

Movimiento: mide la aceleración, la velocidad de rotación y la inclinación.

  • acceleration: devuelve la rapidez con la que el sensor se acelera o ralentiza en el eje seleccionado.

  • gyro_rate — Devuelve qué tan rápido está girando el sensor en el eje seleccionado.

  • orientation — Devuelve el ángulo de balanceo, cabeceo o guiñada del sensor de inercia.

Constructores: inicializa y configura manualmente un sensor inercial.

Orientación#

heading#

Un rumbo es la dirección hacia la que mira el sensor, medida en grados de 0 a 359,99. El heading devuelve el rumbo actual del sensor.

El rumbo inicial es 0 grados. Si el sensor gira más de 359,99 grados, el rumbo vuelve a 0 grados.

Usage:
brain_inertial.heading(units)

Parámetros

Descripción

units

Opcional. La unidad de encabezado: DEGREES (predeterminado) o TURNS

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())

rotation#

La rotación es cuánto ha girado el sensor, medida en grados. A diferencia del rumbo, la rotación puede aumentar más de 359,99 grados o disminuir por debajo de 0 grados. Al comienzo de un proyecto, el valor de rotación se establece en 0 grados. La rotation devuelve la rotación actual del sensor inercial.

Girar a la derecha aumenta la rotación y girar a la izquierda disminuye la rotación. Por ejemplo, hacer dos giros completos a la derecha devolverá una rotación de 720 grados. Girar una vuelta completa a la izquierda desde 0 grados devolverá una rotación de -360 grados.

Usage:
brain_inertial.rotation(units)

Parámetros

Descripción

units

Opcional. La unidad de rotación: DEGREES (por defecto) o TURNS

# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())

calibrate#

calibrate calibra el sensor inercial. Todas las líneas posteriores esperarán a que se complete la calibración antes de ejecutarse. La calibración ayuda al sensor a medir los giros correctamente midiendo y compensando el ruido del sensor y la deriva durante un período específico. Durante este tiempo, el Cerebro debe permanecer completamente inmóvil en una superficie estable. El movimiento durante la calibración puede producir resultados inexactos.

El IQ Brain con la pantalla inclinada hacia la derecha, con los ejes x, y y z representados por flechas que se originan en el centro de la pantalla y se extienden hacia afuera. Una flecha roja con la etiqueta x apunta hacia la derecha, una flecha verde con la etiqueta y se extiende hacia adelante y una flecha azul con la etiqueta z apunta hacia abajo.La misma imagen que la anterior, ahora con la pantalla del cerebro en ángulo hacia la izquierda, y las flechas x, y, z manteniendo su orientación.La misma imagen que la anterior, ahora con la pantalla cerebral hacia arriba, como plana sobre una superficie. La orientación x, y, z es la misma.

El VEX Brain intenta calibrar automáticamente el sensor inercial incorporado al comienzo de cada proyecto. Sin embargo, si el robot se transporta o se mueve durante el inicio del proyecto, es posible que el sensor no se calibre correctamente o produzca una calibración incorrecta.

Usage:
brain_inertial.calibrate()

Parámetro

Descripción

Este método no tiene parámetros.

# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Inertial Sensor")
    brain.screen.next_row()
    brain.screen.print("Calibrating")
    wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

set_heading#

Un rumbo es la dirección hacia la que se dirige el sensor, medida en grados de 0 a set_heading() cambia el rumbo actual del sensor inercial a un nuevo valor de rumbo.

Por ejemplo, si el sensor ha girado hacia la derecha, establecer el rumbo en 0 grados hace que esa posición orientada hacia la derecha sea de los nuevos 0 grados. Luego, el sensor puede rastrear otros encabezados en función de esa nueva dirección.

Usage:
brain_inertial.set_heading(value, units)

Parámetros

Descripción

value

El valor de rumbo, en grados, a establecer para el sensor. Este puede ser un valor de 0 a 359,99.

units

Opcional. La unidad de encabezado: DEGREES (predeterminado) o TURNS

# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)

set_rotation#

La rotación es cuánto ha girado el sensor, medida en grados. A diferencia del rumbo, la rotación puede aumentar más de 359,99 grados o disminuir por debajo de 0 grados. Al comienzo de un proyecto, el valor de rotación se establece en 0 grados. set_rotation() cambia la rotación actual del sensor inercial a un nuevo valor.

Por ejemplo, si el sensor ha realizado dos giros completos a la derecha, su valor de rotación será de 720 grados. Ajustar la rotación a 0 grados restablecerá esa rotación de 720 a 0 grados. Luego, el sensor puede rastrear las rotaciones en función de ese nuevo valor.

Usage:
brain_inertial.set_rotation(value, units)

Parámetros

Descripción

value

El valor de rotación, en grados, a establecer para el sensor. Esto puede ser un número entero o un decimal (flotante).

units

Opcional. La unidad de rotación: DEGREES (por defecto) o TURNS

# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)

is_calibrating#

is_calibrating devuelve si el sensor inercial está calibrando actualmente.

  • True : el sensor inercial se está calibrando.

  • False — El sensor inercial no se está calibrando.

Usage:
brain_inertial.is_calibrating()

Parámetro

Descripción

Este método no tiene parámetros.

# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Inertial Sensor")
    brain.screen.next_row()
    brain.screen.print("Calibrating")
    wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

reset_heading#

reset_heading restablece el rumbo actual del sensor inercial a 0 grados.

Después de utilizar este método, la dirección actual del sensor se convierte en el nuevo rumbo de 0 grados.

Usage:
brain_inertial.reset_heading()

Parámetros

Descripción

Este método no tiene parámetros.

# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)

reset_rotation#

reset_rotation restablece la rotación actual del sensor inercial a 0 grados.

Después de utilizar este método, el sensor rastrea los giros futuros desde el nuevo valor de rotación de 0 grados.

Usage:
brain_inertial.reset_rotation()

Parámetros

Descripción

Este método no tiene parámetros.

# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)

changed#

changed registra una función que se llamará cuando cambie el rumbo del sensor inercial.

Usage:
brain_inertial.changed(callback, arg)

Parámetros

Descripción

callback

Función que se ejecuta cuando cambia el rumbo del sensor de inercia.

arg

Opcional. Una tupla de argumentos para pasar a la función de devolución de llamada.

def heading_changed():
    brain.screen.set_cursor(1, 1)
    brain.screen.clear_screen()
    brain.screen.print("my heading ")
    brain.screen.next_row()
    brain.screen.print("has changed!")
    wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)

Movimiento#

acceleration#

La aceleración es la rapidez con la que el sensor se acelera o desacelera. La acceleration devuelve la aceleración del sensor inercial en el eje seleccionado, de -4,0 G a 4,0 G, como un flotador.

Una G es una unidad utilizada para medir la aceleración. 1 G se refiere a la aceleración que sientes por la gravedad mientras estás sentado quieto.

El valor puede ser positivo o negativo dependiendo de la dirección de aceleración en el eje seleccionado. Las opciones del eje son XAXIS YAXIS, YAXIS y ZAXIS.

Usage:
brain_inertial.acceleration(axis)

Parámetros

Descripción

eje

El eje para medir la aceleración en:

  • XAXIS
  • YAXIS
  • ZAXIS

# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))

gyro_rate#

La velocidad del giroscopio es la velocidad de rotación del sensor gyro_rate devuelve la velocidad de rotación actual del sensor inercial en el eje seleccionado.

El valor puede ser positivo o negativo dependiendo de la dirección en la que gire el sensor en ese eje.

Usage:
brain_inertial.gyro_rate(axis, units)

Parámetros

Descripción

axis

El eje para devolver la velocidad del giroscopio desde:

  • XAXIS
  • YAXIS
  • ZAXIS

units

Opcional. La unidad de velocidad del giroscopio:

  • DPS (predeterminado) — grados por segundo
  • RPM — rotaciones por minuto por
  • PERCENT

# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()

orientation#

La orientación es el ángulo actual del sensor inercial en un eje de giro seleccionado. La orientation devuelve el balanceo, cabeceo o guiñada del sensor inercial.

El balanceo, cabeceo y guiñada describen diferentes formas en que el sensor puede inclinarse o girar.

Usage:
brain_inertial.orientation(axis, units)

Parámetros

Descripción

axis

Ángulo de orientación para regresar:

  • ROLL
  • PITCH
  • YAW

units

Opcional. La unidad de orientación: DEGREES (predeterminado) o TURNS

# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
    brain.screen.clear_screen()
    brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
    brain.screen.next_row()
    brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
    brain.screen.next_row()
    brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
    brain.screen.next_row()
    brain.screen.set_cursor(1, 1)
    wait(0.1, SECONDS)

Constructores#

Los constructores se utilizan para crear manualmente objetos Inertial , como cuando se configura un sensor inercial fuera de VEXcode.

Inertial#

Inertial crea un sensor inercial.

Usage:
Inertial(smartport)

Parámetro

Descripción

smartport

Opcional. Si utiliza el sensor inercial integrado Brain’s de IQ (2 .ª generación), no se necesita un puerto inteligente. Si conecta un sensor inercial externo, especifique el puerto inteligente al que está conectado el sensor inercial, escrito como PORTx, donde x es el número de puerto.

# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)