Sensor inercial#
Introducción#
La clase inertial se utiliza para controlar y acceder a los datos de un sensor inercial V5 conectado a un puerto inteligente.
El sensor inercial V5 mide cómo se mueve y gira el robot. 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.
Constructores de clase#
inertial(
int32_t index,
turnType dir = turnType::right );
Destructor de clase#
Destruye el objeto inercial inertial y libera los recursos asociados.
~inertial();
Parámetros#
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El puerto inteligente al que está conectado el sensor inercial, escrito como |
|
|
Opcional. La dirección que devuelve valores positivos:
|
Ejemplos#
// Create an inertial instance for the V5 Inertial Sensor
inertial myInertial = inertial(
PORT1, // Smart Port 1
right); // dir
Funciones de los miembros#
La clase inertial incluye las siguientes funciones miembro:
heading— Devuelve la dirección en la que mira el sensor.rotation— Devuelve hasta dónde ha girado el sensor.setHeading— Establece el rumbo actual del sensor en un nuevo valor de rumbo.setRotation: establece la rotación actual del sensor en un nuevo valor de rotación.calibrate— Calibra el sensor inercial.resetHeading— Restablece el rumbo actual del sensor a 0 grados.resetRotation— Restablece la rotación actual del sensor a 0 grados.isCalibrating— Devuelve si el sensor inercial se está calibrando actualmente.changed— Registra una función de devolución de llamada que se ejecuta cuando cambia el encabezado.installed— Devuelve si el sensor inercial está instalado.acceleration: devuelve la rapidez con la que el sensor se acelera o ralentiza en el eje seleccionado.gyroRate— Devuelve la velocidad de rotación del sensor en el eje seleccionado.orientation— Devuelve el ángulo de balanceo, cabeceo o guiñada del sensor de inercia.collision: registra una función de devolución de llamada que se ejecuta cuando se detecta una colisión.setTurnType— Establece la dirección de giro que devuelve valores positivos.getTurnType— Devoluciones cuya dirección de giro produce valores positivos.
Antes de llamar a cualquier función miembro inertial , se debe crear una instancia inertial , como se muestra a continuación:
/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create an inertial instance for the V5 Inertial Sensor connected to Port 1.
inertial myInertial = inertial(PORT1);
heading#
Un rumbo es la dirección hacia la que mira el sensor, medida en grados de 0 a 359,99. Esta función 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.
Available Functionsdouble heading( rotationUnits units = degrees );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad de rumbo:
|
Devuelve un double que representa el rumbo actual del sensor en las unidades especificadas.
El valor del encabezado se ajusta entre 0 y 359,99 grados. Utilice
rotationpara acceder al valor de rotación continua.
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));
rotation#
Devuelve la rotación actual del sensor inercial.
La rotación es cuánto ha girado el sensor. A diferencia del rumbo, la rotación puede aumentar más de 359,99 grados o disminuir por debajo de 0 grados. Por ejemplo, hacer dos giros completos a la derecha devuelve una rotación de 720 grados. Girar una vuelta completa a la izquierda desde 0 grados devuelve una rotación de -360 grados.
Available Functionsdouble rotation( rotationUnits units = degrees );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad de rotación:
|
Devuelve un double que representa la rotación actual en las unidades especificadas.
El valor de rotación es continuo y no se envuelve entre 0 y 359,99 grados. Utilice
headingpara acceder al valor de encabezado ajustado.
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));
setHeading#
Un rumbo es la dirección hacia la que mira el sensor, medida en grados de 0 a 359,99. Esta función 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.
Available Functionsvoid setHeading( double value, rotationUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El valor de rumbo, en grados, a establecer para el sensor. Este puede ser un valor de 0 a 359,99. |
|
|
La unidad de rumbo:
|
Esta función no devuelve un valor.
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
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. Esta función 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.
Available Functionsvoid setRotation( double value, rotationUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El valor de rotación, en grados, a establecer para el sensor. Esto puede ser un número entero o un decimal. |
|
|
La unidad de rotación:
|
Esta función no devuelve un valor.
Examples// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);
calibrate#
Calibra el sensor inercial.
La calibración ayuda al sensor a medir los giros correctamente. Mantenga el sensor quieto durante la calibración. Si el sensor se mueve durante la calibración, es posible que los valores de rumbo, rotación, velocidad de giro y orientación no se midan correctamente.
Available Functionsvoid calibrate( );
Esta función no acepta ningún parámetro.
Return ValuesEsta función no devuelve un valor.
NotesEl sensor debe permanecer estacionario mientras la calibración está en curso.
Utilice
isCalibratingpara determinar cuándo se ha completado la calibración.
resetHeading#
Restablece el rumbo actual del sensor de inercia a 0 grados.
Después de utilizar esta función, la dirección actual del sensor se convierte en el nuevo rumbo de 0 grados.
Available Functionsvoid resetHeading();
Esta función no toma ningún parámetro.
Return ValuesEsta función no devuelve un valor.
resetRotation#
Restablece la rotación actual del sensor de inercia a 0 grados.
Después de usar esta función, el sensor rastrea los giros futuros desde el nuevo valor de rotación de 0 grados.
Available Functionsvoid resetRotation();
Esta función no toma ningún parámetro.
Return ValuesEsta función no devuelve un valor.
isCalibrating#
Devuelve si el sensor inercial se está calibrando actualmente.
Available Functionsbool isCalibrating();
Esta función no toma ningún parámetro.
Return ValuesDevuelve un booleano que indica si el sensor inercial se está calibrando:
-
true— The sensor is currently calibrating. -
false— The sensor is not currently calibrating.
changed#
Registra una función de devolución de llamada que se ejecuta cuando cambia el valor de encabezado del sensor inercial.
Available Functionsvoid changed( void (* callback)(void) );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Un puntero a una función que se llamará cuando cambie el valor del encabezado. La función no debe tomar parámetros y devolver |
Esta función no devuelve un valor.
ExamplesDefina la función de devolución de llamada (fuera de
int main())// Display the heading when the Inertial Sensor's heading value changes. void onHeadingChanged() { Brain.Screen.clearScreen(); Brain.Screen.setCursor(1, 1); Brain.Screen.print("Heading: %.2f", myInertial.heading()); }Registrar la devolución de llamada dentro de
int main()int main() { // Run onHeadingChanged when the Inertial Sensor's heading value changes. myInertial.changed(onHeadingChanged); }
installed#
Devuelve si el sensor de inercia está instalado y conectado.
Available Functionsbool installed();
Esta función no toma ningún parámetro.
Return ValuesDevuelve un booleano que indica si el sensor inercial está instalado y conectado:
-
true— The sensor is connected and responding. -
false— The sensor is not connected or not detected.
acceleration#
La aceleración es la rapidez con la que el sensor se acelera o ralentiza. Esta función devuelve la aceleración del sensor inercial en el eje seleccionado, de -4,0 G a 4,0 G.
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.
double acceleration( axisType axis );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El eje para medir la aceleración en:
|
Devuelve un double que representa la aceleración a lo largo del eje especificado en G (unidades gravitacionales).
Los valores de aceleración se informan en unidades de
GG.
gyroRate#
La velocidad del giroscopio es la velocidad a la que gira el sensor inercial. Esta función 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.
Available Functionsdouble gyroRate( axisType axis, velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El eje para devolver la velocidad del giroscopio desde:
|
|
|
La unidad de velocidad del giroscopio:
|
Devuelve un double que representa la velocidad de rotación actual a lo largo del eje especificado en las unidades seleccionadas.
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);
Brain.Screen.print(myInertial.gyroRate(zaxis, dps));
Drivetrain.stop();
orientation#
La orientación es el ángulo actual del sensor inercial en un eje seleccionado. Esta función devuelve la orientación actual del sensor inercial para el eje especificado.
El eje x, y o z seleccionado corresponde a uno de los ejes de orientación del sensor.
Available Functionsdouble orientation(
axisType axis,
rotationUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El eje para el que se devuelve la orientación:
|
|
|
La unidad de orientación:
|
Devuelve un double que representa el ángulo de orientación seleccionado en las unidades especificadas.
while (true) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1,1);
// Show the Inertial Sensor's orientation value
// for roll in degrees
double orient = myInertial.orientation(xaxis, deg);
Brain.Screen.print("%f", orient);
wait(0.1, seconds);
}
collision#
Registra una función de devolución de llamada que se ejecuta cuando el sensor inercial detecta un impacto o colisión repentina.
Available Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Un puntero a una función que se llamará cuando se detecte una colisión. La función de devolución de llamada debe aceptar los siguientes parámetros
void. |
Esta función no devuelve un valor.
ExamplesDefina la función de devolución de llamada (fuera de
int main())// Display a message when the Inertial Sensor detects a collision. void onCollision(axisType axis, double x, double y, double z) { Brain.Screen.print("Collision detected!"); }Registrar la devolución de llamada dentro de
int main()int main() { // Run onCollision when the Inertial Sensor detects a collision. myInertial.collision(onCollision); }
setTurnType#
Conjuntos cuya dirección de giro devuelve valores positivos.
Available Functionsvoid setTurnType( turnType dir );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La dirección que devuelve valores positivos:
|
Esta función no devuelve un valor.
NotesEsta configuración afecta a la forma en que
headingyrotationinforman de los valores positivos y negativos.Llamar a esta función anula el valor
direspecificado al construir el objetoinertial.
getTurnType#
Los retornos cuya dirección de giro produce valores positivos.
Available FunctionsturnType getTurnType();
Esta función no toma ningún parámetro.
Return ValuesDevuelve un turnType indica qué dirección produce valores positivos:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
Este valor se establece durante la construcción del objeto inercial
inertialo llamando asetTurnType.