Inercial#
Introducción#
El cerebro IQ (2.ª generación) incluye un sensor inercial integrado con un giroscopio y un acelerómetro de 3 ejes. Esto permite al robot rastrear su orientación, rumbo y aceleración.
For the examples below, the configured Inertial Sensor will be named brain_inertial
and will be used in all subsequent examples throughout this API documentation when referring to Inertial
class methods.
A continuación se muestra una lista de todos los métodos disponibles:
Orientación: lee y controla el rumbo, la rotación y la calibración del sensor.
encabezado – Devuelve el encabezado actual.
rotación – Devuelve la rotación acumulada.
calibrar – Calibra el sensor inercial para un seguimiento de rumbo estable.
set_heading – Establece el rumbo del sensor inercial en un valor específico.
set_rotation – Establece el valor de rotación del sensor inercial.
is_calibrating – Devuelve si el sensor inercial está calibrando o no.
reset_heading – Establece el rumbo del sensor inercial en 0.
reset_rotation – Establece la rotación del sensor inercial en 0.
cambiado – Registra una función para llamar cuando el sensor inercial detecta un cambio.
Movimiento: mide la aceleración, la velocidad angular y la inclinación.
aceleración – Devuelve la aceleración lineal a lo largo del eje x, y o z.
gyro_rate – Devuelve la velocidad angular alrededor del eje x, y o z.
orientación – Devuelve el balanceo, cabeceo o guiñada en función de la inclinación y la rotación.
Constructores: inicializan y configuran manualmente un sensor inercial.
Inercial – Crea un sensor inercial.
Orientación#
heading#
heading
returns the current heading of the Inertial Sensor.
Usage:
brain_inertial.heading(units)
Parámetros |
Descripción |
---|---|
unidades |
Optional. The unit used to represent the heading:
|
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
rotation
returns the current rotation of the Inertial Sensor.
Usage:
brain_inertial.rotation(units)
Parámetros |
Descripción |
---|---|
unidades |
Optional. The unit used to represent the rotation:
|
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate
calibrates the Inertial Sensor. All subsequent lines will wait for the calibration to complete before executing. Calibration is an internal procedure that measures and compensates for sensor noise and drift over a specified period. During this time, the Brain must remain completely still (i.e., on a stable surface without any external movement). Movement during calibration will produce inaccurate results.
Los cerebros VEX intentan calibrarse automáticamente al inicio de cada proyecto. Sin embargo, si el robot se transporta o se mueve durante el inicio del proyecto, el sensor podría no calibrarse correctamente o generar 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#
set_heading()
sets the heading of the Inertial Sensor to a specified value.
Usage:
brain_inertial.set_heading(value, units)
Parámetros |
Descripción |
---|---|
valor |
El valor del encabezado a establecer. |
unidades |
Optional. The unit used to represent the new heading:
|
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
set_rotation()
sets the rotation of the Inertial Sensor.
Usage:
brain_inertial.set_rotation(value, units)
Parámetros |
Descripción |
---|---|
valor |
El valor de rotación a establecer. |
unidades |
Optional. The unit used to represent the new rotation value:
|
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating
checks if the Inertial Sensor is currently calibrating.
True
- The Inertial Sensor is calibrating.False
- The Inertial Sensor is not calibrating.
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
resets the heading of the Inertial Sensor to 0.
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
resets the rotation of the Inertial Sensor to 0.
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
registers a callback function for when the Inertial Sensor’s heading changes.
Usage:
brain_inertial.changed(callback, arg)
Parámetros |
Descripción |
---|---|
llamar de vuelta |
La función de devolución de llamada que se llamará cuando cambie el rumbo del sensor inercial. |
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#
acceleration
returns the acceleration of the Inertial Sensor.
Usage:
brain_inertial.acceleration(axis)
Parámetros |
Descripción |
---|---|
eje |
The axis to return the acceleration from:
|
# 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#
gyro_rate
returns the gyro rate for one axis of the Inertial Sensor.
Usage:
brain_inertial.gyro_rate(axis, units)
Parámetros |
Descripción |
---|---|
eje |
The axis to return the gyro rate from:
|
unidades |
Optional. The unit used to represent the gyro rate:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
orientation
returns the orientation for one axis of the Inertial Sensor.
Usage:
brain_inertial.orientation(axis, units)
Parámetros |
Descripción |
---|---|
eje |
The axis to return the orientation from:
|
unidades |
Optional. The unit used to represent the orientation:
|
# 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#
Constructors are used to manually create Inertial
objects, which are necessary for configuring an Inertial Sensor outside of VEXcode.
Inertial#
Inertial
creates an Inertial Sensor.
Usage:
Inertial(port)
Parámetro |
Descripción |
---|---|
|
Optional. If using the IQ (2nd gen) Brain’s built-in Inertial Sensor, a Smart Port is unneeded. If connecting an external Inertial Sensor, specify which Smart Port that the Inertial Sensor is connected to as |
# 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)