Sensor inercial#
Introducción#
The inertial class is used to control and access data from the V5 Inertial Sensor. This sensor provides heading, rotation, and acceleration information to help your robot track orientation and movement.
Constructores de clases#
inertial(
int32_t index,
turnType dir = turnType::right );
Instructor de clase#
Destroys the inertial object and releases associated resources.
~inertial();
Parámetros#
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The Smart Port that the Inertial Sensor is connected to, written as |
|
|
The direction that will return a positive value when turning:
|
Ejemplos#
// Create the inertial instance
inertial myInertial = inertial(
PORT1, // Smart Port 1
right); // dir
Funciones de los miembros#
The inertial class includes the following member functions:
heading— Returns the current heading value.rotation— Returns the current rotation value.setHeading— Sets the sensor’s heading to a specified value.setRotation— Sets the sensor’s rotation to a specified value.calibrate— Calibrates the sensor for accurate heading tracking.resetHeading— Resets the heading to 0.resetRotation— Resets the rotation to 0.isCalibrating— Returns whether the sensor is currently calibrating.changed— Registers a callback function that runs when the heading changes.installed— Returns whether the sensor is installed.acceleration— Returns linear acceleration along the specified axis.gyroRate— Returns the angular velocity for the specified axis.orientation— Returns the orientation for the specified axis.collision— Registers a callback function that runs when a collision is detected.setTurnType— Sets which turn direction returns positive heading values.getTurnType— Returns which turn direction produces positive heading values.
Before calling any inertial member functions, a inertial instance must be created, as shown below:
/* 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 the inertial instance
inertial myInertial = inertial(
PORT1); // Smart Port 1
heading#
Devuelve la orientación actual (ángulo de guiñada) del sensor inercial.
Available Functionsdouble heading( rotationUnits units = degrees );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The unit of measurement for the returned heading value:
|
Devuelve un valor de tipo double que representa la orientación actual del sensor en las unidades especificadas.
NotesThe heading value is wrapped between 0 and 360 degrees. Use
rotationto access the continuous (unbounded) rotation value.
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));
rotation#
Devuelve la rotación absoluta (ángulo de guiñada sin límites) del sensor inercial.
Available Functionsdouble rotation( rotationUnits units = degrees );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The unit of measurement for the returned rotation value:
|
Returns a double representing the current rotation in the specified units.
The rotation value is continuous and does not wrap between 0 and 360 degrees. Use
headingto access the wrapped heading value.
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));
setHeading#
Establece la orientación del sensor inercial a un valor específico.
Available Functionsvoid setHeading( double value, rotationUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El nuevo valor de rumbo que se asignará al sensor. |
|
|
The unit of measurement for the heading value:
|
Esta función no devuelve ningún valor.
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
Establece la rotación absoluta del sensor inercial a un valor específico.
Available Functionsvoid setRotation( double value, rotationUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El nuevo valor de rotación absoluto que se asignará al sensor. |
|
|
The unit of measurement for the rotation value:
|
Esta función no devuelve ningún valor.
Examples// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);
calibrate#
Inicia la calibración del sensor inercial.
Available Functionsvoid calibrate( );
Esta función no acepta ningún parámetro.
Return ValuesEsta función no devuelve ningún valor.
NotesEl sensor debe permanecer inmóvil mientras se realiza la calibración.
Use
isCalibratingto determine when calibration has completed.
resetHeading#
Establece la orientación del sensor inercial en 0.
Available Functionsvoid resetHeading();
Esta función no requiere ningún parámetro.
Return ValuesEsta función no devuelve ningún valor.
resetRotation#
Establece la rotación del sensor inercial a 0.
Available Functionsvoid resetRotation();
Esta función no requiere ningún parámetro.
Return ValuesEsta función no devuelve ningún valor.
isCalibrating#
Indica si el sensor inercial se está calibrando actualmente.
Available Functionsbool isCalibrating();
Esta función no requiere ningún parámetro.
Return ValuesDevuelve un valor 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 rumbo del sensor inercial.
Available Functionsvoid changed( void (* callback)(void) );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
A pointer to a function that will be called when the heading value changes. The function must take no parameters and return |
Esta función no devuelve ningún valor.
Examples// Called 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());
}
myInertial.changed(onHeadingChanged);
installed#
Indica si el sensor inercial está conectado.
Available Functionsbool installed();
Esta función no requiere ningún parámetro.
Return ValuesDevuelve un valor booleano que indica si el sensor inercial está conectado:
-
true— The sensor is connected and responding. -
false— The sensor is not connected or not detected.
acceleration#
Devuelve la aceleración lineal medida por el sensor inercial a lo largo del eje especificado.
Available Functionsdouble acceleration( axisType axis );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The axis for which acceleration will be returned:
|
Returns a double representing the acceleration along the specified axis in G (gravitational units).
Los valores de aceleración se expresan en unidades de G, donde 1 G equivale a la aceleración debida a la gravedad en la superficie terrestre.
gyroRate#
Devuelve la velocidad angular medida por el sensor inercial a lo largo del eje especificado.
Available Functionsdouble gyroRate( axisType axis, velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The axis for which angular velocity will be returned:
|
|
|
The unit of measurement for the returned angular velocity:
|
Returns a double representing the angular velocity along the specified axis in the selected units.
// 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#
Devuelve la orientación actual del sensor inercial para el eje especificado.
Available Functionsdouble orientation(
axisType axis,
rotationUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The axis for which orientation will be returned:
|
|
|
The unit of measurement for the returned orientation value:
|
Returns a double representing the orientation of the specified axis in the selected units.
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 una colisión.
Available Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
A pointer to a function that will be called when a collision is detected. The callback function must accept the following parameters:
void. |
Esta función no devuelve ningún valor.
Examples// Called when the inertial sensor's detects a collision
void onCollision(axisType axis, double x, double y, double z) {
Brain.Screen.print("Collision detected!");
}
// Firmly move the robot by hand briefly to simulate
// a collision and call the onCollision function
myInertial.collision(onCollision);
setTurnType#
Los conjuntos que indican la dirección de giro devuelven valores de rumbo positivos.
Available Functionsvoid setTurnType( turnType dir );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The direction that will return positive heading values:
|
Esta función no devuelve ningún valor.
NotesThis setting affects how
headingandrotationreport positive and negative values.Calling this function overrides the
dirvalue specified when constructing theinertialobject.
getTurnType#
Los retornos que cambian de dirección producen valores de rumbo positivos.
Available FunctionsturnType getTurnType();
Esta función no requiere ningún parámetro.
Return ValuesReturns a turnType indicating which direction produces positive values:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
This value is set during construction of the
inertialobject or by callingsetTurnType.