Inercial#
Introducción#
El robot de codificación VEX AIM tiene un sensor inercial incorporado. Este sensor mide cómo se mueve y gira el robot.
El sensor inercial utiliza dos partes para hacer esto. El giroscopio mide el giro, como el rumbo, la rotación, la guiñada, el balanceo, el cabeceo y la velocidad de giro del robot. El acelerómetro mide los cambios en el movimiento, como acelerar, desacelerar o detenerse repentinamente durante un choque.
Los métodos inerciales se pueden utilizar para rastrear giros, medir la aceleración, detectar choques, restablecer el rumbo o los valores de rotación y calibrar el sensor.
A continuación se muestra una lista de todos los métodos:
Orientación: obtén y restablece la orientación, el giro o la inclinación del robot.
get_rotation— Devuelve hasta dónde ha girado el robot.get_heading— Devuelve la dirección hacia la que se dirige el robot, de 0 a 359,99 grados.get_yaw— Devuelve el ángulo de guiñada del robot.get_roll— Devuelve el ángulo de balanceo del robot.get_pitch— Devuelve el ángulo de cabeceo del robot.reset_rotation— Restablece la rotación actual del robot a 0 grados.reset_heading— Restablece el rumbo actual del robot a 0 grados.set_heading— Establece el encabezado actual del robot en un nuevo valor de encabezado.
Accidente: detecta colisiones.
crashed— Registra una función para que se ejecute cuando se detecta un bloqueo.set_crash_sensitivity: establece la sensibilidad de la detección de accidentes a los impactos.
Movimiento: mide la aceleración y la velocidad de giro.
get_acceleration— Devuelve la rapidez con la que el robot está acelerando o desacelerando en el eje seleccionado.get_turn_rate— Devuelve qué tan rápido está girando el robot en el eje seleccionado.
Calibración: administre la calibración del sensor.
calibrate— Calibra el sensor inercial.is_calibrating— Devuelve si el sensor inercial se está calibrando actualmente.
Orientación#
get_rotation#
La rotación es cuánto ha girado el robot, 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. get_rotation devuelve la rotación actual del robot como un flotador.
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:
robot.inertial.get_rotation()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Display the robot's rotation as it rotates
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Rotation: {robot.inertial.get_rotation():.2f}")
wait(50, MSEC)
get_heading#
Un rumbo es la dirección hacia la que se dirige el robot, medida en grados de 0 a get_heading devuelve el rumbo actual del robot como un flotador.
El rumbo inicial es 0 grados. Si el robot gira más de 359,99 grados, el rumbo vuelve a 0 grados.
Usage:
robot.inertial.get_heading()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Turn right until the heading reaches 90 degrees
robot.turn(RIGHT)
while robot.inertial.get_heading() < 90:
wait(50, MSEC)
robot.stop_all_movement()
# Display the robot's heading as it is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Heading: {robot.inertial.get_heading()} degrees")
wait(50, MSEC)
get_yaw#
La guiñada describe el robot girando a la izquierda o a la derecha alrededor de su eje vertical. get_yaw devuelve el ángulo de guiñada del robot en el rango de -180.00 a 180.00 grados como un flotador.
La siguiente imagen utiliza flechas para mostrar la dirección de rotación positiva de la guiñada.
Usage:
robot.inertial.get_yaw()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Display the robot's yaw angle as it is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_yaw())
wait(50, MSEC)
get_roll#
Roll describe la inclinación del robot de lado a lado. get_roll devuelve el ángulo de balanceo del robot en el rango de -180.00 a 180.00 grados como un flotador.
La siguiente imagen usa flechas para mostrar la dirección de rotación positiva para el rollo.
Usage:
robot.inertial.get_roll()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Display the robot's roll angle as it is tilted by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_roll())
wait(50, MSEC)
get_pitch#
El cabeceo describe la inclinación del robot hacia adelante o hacia atrás. get_pitch devuelve el ángulo de cabeceo del robot en el rango de -90.00 a 90.00 grados como un flotador.
La siguiente imagen utiliza flechas para mostrar la dirección de rotación positiva para el cabeceo.
Usage:
robot.inertial.get_pitch()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Display the robot's pitch angle as it is tilted by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_pitch())
wait(50, MSEC)
reset_rotation#
reset_rotation restablece la rotación actual del robot a 0 grados.
Después de utilizar este método, el robot realiza un seguimiento de los giros futuros a partir del nuevo valor de rotación de 0 grados.
Usage:
robot.inertial.reset_rotation()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Reset the robot's rotation if it exceeds 180 degrees
while True:
if robot.inertial.get_rotation() >= 180:
robot.inertial.reset_rotation()
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Rotation: {robot.inertial.get_rotation():.2f}")
wait(50, MSEC)
reset_heading#
reset_heading restablece el rumbo actual del robot a 0 grados.
Después de utilizar este método, la dirección actual del robot se convierte en el nuevo rumbo de 0 grados.
Usage:
robot.inertial.reset_heading()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Turn the robot around using a new 90 degree heading
robot.turn_to(90)
wait(1, SECONDS)
robot.inertial.reset_heading()
robot.turn_to(90)
set_heading#
Un rumbo es la dirección hacia la que mira el robot, medida en grados de 0 a 359.99. set_heading cambia el rumbo actual del robot a un nuevo valor de rumbo.
Por ejemplo, si el robot ha girado hacia la derecha, establecer el rumbo en 0 grados hace que esa posición orientada hacia la derecha sea la nueva de 0 grados. Luego, el robot puede rastrear otros encabezados en función de esa nueva dirección.
Usage:
robot.inertial.set_heading(heading)
Parámetros |
Descripción |
|---|---|
|
El valor de rumbo, en grados, a establecer para el robot. Este puede ser un valor de 0 a 359,99. |
# Turn the robot to 90 degrees using its new heading
robot.inertial.set_heading(45)
robot.turn_to(90)
Accidente#
crashed#
crashed registra una función que se llamará cuando el robot detecte un impacto o colisión repentina.
Uso:
robot.inertial.crashed(callback, arg)
Parámetros |
Descripción |
|---|---|
|
Una función que se define previamente para ejecutarse cuando se detecta una colisión. |
|
Opcional. Una tupla que contiene argumentos para pasar a la función de devolución de llamada. Consulte Uso de funciones con parámetros para obtener más información. |
# Define what happens when a crash occurs
def crash_detected():
# Stop all movement and indicate a crash occurred
robot.screen.print("Crash detected")
robot.stop_all_movement()
robot.inertial.crashed(crash_detected)
# Drive forward until crash
robot.move_at(0, 100)
set_crash_sensitivity#
set_crash_sensitivity ajusta cuánta aceleración repentina se necesita para que el robot detecte un choque.
Usage:
robot.inertial.set_crash_sensitivity(sensitivity)
Parámetros |
Descripción |
|---|---|
|
La sensibilidad al choque:
|
def crashed_callback():
robot.stop_all_movement()
robot.sound.play(CRASH)
# system event handlers
robot.inertial.crashed(crashed_callback)
# add 15ms delay to make sure events are registered correctly.
wait(15, MSEC)
# Detect a crash at a slow velocity.
robot.set_move_velocity(35, PERCENT)
robot.inertial.set_crash_sensitivity(HIGH)
robot.move_at(0)
Movimiento#
get_acceleration#
La aceleración es la rapidez con la que el robot está acelerando o desacelerando. get_acceleration devuelve la aceleración del robot en el eje seleccionado, de -4.00 G a 4.00 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 la aceleración en el eje seleccionado. En AIM, las opciones de eje se nombran según las direcciones del robot: FORWARD, RIGHTWARDy DOWNWARD.

Uso:
robot.inertial.get_acceleration(type)
Parámetros |
Descripción |
|---|---|
|
El eje para medir la aceleración en:
|
# Display the acceleration as the robot begins to move
robot.screen.set_cursor(4,1)
sitting_accel = robot.inertial.get_acceleration(RIGHTWARD)
robot.screen.print(f"Resting: {sitting_accel:.2f}")
wait(0.5, SECONDS)
robot.screen.next_row()
robot.move_at(90, 100)
wait(0.1, SECONDS)
robot.screen.print(f"Startup: {robot.inertial.get_acceleration(RIGHTWARD):.2f}")
get_turn_rate#
La velocidad de giro es la velocidad de rotación del robot. get_turn_rate devuelve la velocidad de giro del robot en grados por segundo \(dps\) como un flotador, de -1000.00 a 1000.00 dps.
El valor puede ser positivo o negativo dependiendo de la dirección en la que gire el robot sobre el eje seleccionado. La siguiente imagen usa flechas para mostrar la dirección de rotación positiva para balanceo, cabeceo y guiñada.

Usage:
robot.inertial.get_turn_rate(axis)
Parámetros |
Descripción |
|---|---|
|
Qué orientación volver:
|
# Display the gyro rate as the robot is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_turn_rate(YAW))
wait(50, MSEC)
Calibración#
La calibración ayuda al sensor inercial a medir los giros correctamente midiendo y compensando el ruido del sensor y la deriva durante un período de 2 segundos. Durante este tiempo, el robot debe permanecer completamente inmóvil en una superficie estable. El movimiento durante la calibración puede producir resultados inexactos.
Los robots VEX intentan calibrarse automáticamente al arrancar, esperando hasta que no detecten ningún movimiento. Sin embargo, si el robot se transporta o se mueve durante el arranque, el sensor puede no calibrarse correctamente o producir una calibración incorrecta.
Si su proyecto depende en gran medida de tener un encabezado preciso, o si necesita turnos consistentes y repetibles, llamar calibrate a Calibrate al comienzo de su código puede ayudar. Es una buena práctica mostrar un mensaje como “Calibración…” en la pantalla del robot durante la calibración y luego actualizarlo a “Calibración completa” para recordarle a usted (y a cualquier otra persona que use el robot) que el robot debe permanecer inmóvil durante este período.
calibrate#
calibrate calibra el giroscopio. La calibración ayuda al sensor inercial a medir los giros correctamente midiendo y compensando el ruido del sensor y la deriva durante un período de 2 segundos. Durante este tiempo, el robot debe permanecer completamente inmóvil en una superficie estable. El movimiento durante la calibración puede producir resultados inexactos.
Los robots VEX intentan calibrarse automáticamente al arrancar, esperando hasta que no detecten ningún movimiento. Sin embargo, si el robot se transporta o se mueve durante el arranque, el sensor puede no calibrarse correctamente o producir una calibración incorrecta.
Usage:
robot.inertial.calibrate()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Calibrate the gyro before moving
robot.inertial.calibrate()
robot.screen.show_emoji(THINKING)
wait(2, SECONDS)
robot.screen.show_emoji(PROUD)
robot.move_for(50, 90)
is_calibrating#
is_calibrating devuelve un booleano que indica si el sensor inercial está calibrando.
True: el sensor inercial se está calibrando.False— El sensor inercial no se está calibrando.
Usage:
robot.inertial.is_calibrating()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Move after the calibration is completed
robot.inertial.calibrate()
while robot.inertial.is_calibrating():
robot.screen.show_emoji(THINKING)
wait(50, MSEC)
robot.screen.show_emoji(PROUD)
robot.move_for(50, 90)