Inertiële sensor#

Invoering#

De inertial wordt gebruikt om gegevens van de ingebouwde inertiële sensor van de IQ (2e generatie) Brain te besturen en te raadplegen. Deze sensor meet hoe de Brain beweegt en draait.

De traagheidssensor gebruikt hiervoor twee onderdelen. De gyroscoop meet draaibewegingen, zoals richting, rotatie, gyroscoopsnelheid en oriëntatie. De accelerometer meet veranderingen in beweging, zoals versnellen of vertragen langs de x-, y- en z-assen.

Klasseconstructors#

inertial(
  turnType dir = turnType::right );

Klasse-destructor#

Vernietigt het inertial object en geeft de bijbehorende resources vrij.

~inertial();

Parameters#

Parameter

Type

Beschrijving

dir

turnType

Optioneel. De richting die positieve waarden oplevert:

  • right (standaard) — Rechtsaf slaan levert positieve waarden op.
  • left — Linksaf slaan levert positieve waarden op.

Voorbeelden#

// Create the inertial instance
inertial myInertial = inertial(
    right);     // dir

Lidfuncties#

De klasse inertial omvat de volgende lidfuncties:

  • heading — Geeft de richting aan waarin de sensor wijst.

  • rotation — Geeft aan hoeveel de sensor is gedraaid.

  • setHeading — Stelt de huidige richting van de sensor in op een nieuwe richtingwaarde.

  • setRotation — Stelt de huidige rotatie van de sensor in op een nieuwe rotatiewaarde.

  • calibrate — Kalibreert de traagheidssensor.

  • resetHeading — Zet de huidige koers van de sensor terug naar 0 graden.

  • resetRotation — Zet de huidige rotatie van de sensor terug naar 0 graden.

  • isCalibrating — Geeft aan of de traagheidssensor momenteel aan het kalibreren is.

  • changed — Registreert een callbackfunctie die wordt uitgevoerd wanneer de koptekst verandert.

  • installed — Geeft aan of de traagheidssensor is geïnstalleerd.

  • acceleration — Geeft aan hoe snel de sensor versnelt of vertraagt ​​op de geselecteerde as.

  • gyroRate — Geeft aan hoe snel de sensor roteert om de geselecteerde as.

  • orientation — Geeft de rol-, stamp- of gierhoek van de traagheidssensor terug.

  • collision — Registreert een callbackfunctie die wordt uitgevoerd wanneer een botsing wordt gedetecteerd.

  • setTurnType — Stelt in welke draairichting positieve koerswaarden retourneert.

  • getTurnType — Geeft aan welke draairichting positieve waarden oplevert.

Voordat er inertial lidfuncties worden aangeroepen, moet er een inertial instantie worden aangemaakt, zoals hieronder weergegeven:

/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode with the IQ (2nd gen) Brain. Replace the values
as needed. */

// Create the inertial instance
inertial myInertial = inertial();

heading#

Een koers is de richting waarin de sensor wijst, gemeten in graden van 0 tot 359,99. Deze functie geeft de huidige koers van de sensor weer.

De beginrichting is 0 graden. Als de sensor voorbij 359,99 graden draait, springt de richting terug naar 0 graden.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

Parameter

Type

Beschrijving

units

rotationUnits

De kopteksteenheid:

  • deg / degrees (standaard) — graden
  • turns / rev — omwentelingen

Return Values

Retourneert een double die de huidige richting van de sensor in de opgegeven eenheden weergeeft.

Notes
  • De richtingswaarde ligt tussen 0 en 359,99 graden. Gebruik rotation om de continue rotatiewaarde te verkrijgen.

Examples
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));

rotation#

Geeft de huidige rotatie van de inertiële sensor weer.

Rotatie geeft aan hoeveel de sensor is gedraaid. In tegenstelling tot de koers, kan de rotatie groter worden dan 359,99 graden of kleiner dan 0 graden. Twee volledige draaien naar rechts levert bijvoorbeeld een rotatie van 720 graden op. Een volledige draai naar links vanaf 0 graden levert een rotatie van -360 graden op.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

Parameter

Type

Beschrijving

units

rotationUnits

De rotatie-eenheid:

  • deg / degrees (standaard) — graden
  • turns / rev — omwentelingen

Return Values

Retourneert een double die de huidige rotatie in de opgegeven eenheden weergeeft.

Notes
  • De rotatiewaarde is continu en loopt niet door tussen 0 en 359,99 graden. Gebruik heading om de doorlopende kopwaarde te verkrijgen.

Examples
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));

setHeading#

Een koers is de richting waarin de sensor wijst, gemeten in graden van 0 tot 359,99. Deze functie wijzigt de huidige koers van de inertiële sensor naar een nieuwe koerswaarde.

Als de sensor bijvoorbeeld naar rechts is gedraaid, zorgt het instellen van de koers op 0 graden ervoor dat die naar rechts gerichte positie de nieuwe 0 graden wordt. De sensor kan vervolgens andere koersen volgen op basis van die nieuwe richting.

Available Functions
void setHeading( double        value,
                 rotationUnits units );

Parameters

Parameter

Type

Beschrijving

value

double

De richtingswaarde in graden die voor de sensor moet worden ingesteld. Dit kan een waarde zijn van 0 tot 359,99.

units

rotationUnits

De kopeenheid:

  • deg / degrees — graden
  • turns / rev — omwentelingen

Return Values

Deze functie retourneert geen waarde.

Examples
// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);

setRotation#

Stelt de huidige rotatie van de inertiële sensor in op een opgegeven waarde.

Rotatie geeft aan hoeveel de sensor is gedraaid. In tegenstelling tot de koers, kan de rotatie groter worden dan 359,99 graden of kleiner dan 0 graden.

Available Functions
void setRotation( double        value,
                  rotationUnits units );

Parameters

Parameter

Type

Beschrijving

value

double

De rotatiewaarde in graden die voor de sensor moet worden ingesteld. Dit kan een geheel getal of een decimaal getal zijn.

units

rotationUnits

De rotatie-eenheid:

  • deg / degrees — graden
  • turns / rev — omwentelingen

Return Values

Deze functie retourneert geen waarde.

Examples
// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);

calibrate#

Kalibreert de inertiële sensor.

Kalibratie zorgt ervoor dat de sensor bochten correct meet. Houd de sensor stil tijdens de kalibratie. Als de sensor beweegt tijdens de kalibratie, kunnen de waarden voor koers, rotatie, gyroscoopsnelheid en oriëntatie onjuist worden gemeten.

Available Functions
void calibrate( );

Parameters

Deze functie accepteert geen parameters.

Return Values

Deze functie retourneert geen waarde.

Notes
  • De sensor moet tijdens de kalibratie stil blijven staan.

  • Gebruik isCalibrating om te bepalen wanneer de kalibratie is voltooid.

resetHeading#

Zet de huidige koers van de traagheidssensor terug naar 0 graden.

Na gebruik van deze functie wordt de huidige richting van de sensor de nieuwe richting van 0 graden.

Available Functions
void resetHeading();

Parameters

Deze functie accepteert geen parameters.

Return Values

Deze functie retourneert geen waarde.

resetRotation#

Zet de huidige rotatie van de inertiële sensor terug naar 0 graden.

Nadat deze functie is gebruikt, registreert de sensor toekomstige draaiingen vanaf de nieuwe rotatiewaarde van 0 graden.

Available Functions
void resetRotation();

Parameters

Deze functie accepteert geen parameters.

Return Values

Deze functie retourneert geen waarde.

isCalibrating#

Geeft aan of de traagheidssensor momenteel aan het kalibreren is.

Available Functions
bool isCalibrating();

Parameters

Deze functie accepteert geen parameters.

Return Values

Geeft een Booleaanse waarde terug die aangeeft of de inertiële sensor aan het kalibreren is:

  • true — The sensor is currently calibrating.
  • false — The sensor is not currently calibrating.

changed#

Registreert een callbackfunctie die wordt uitgevoerd wanneer de koerswaarde van de traagheidssensor verandert.

Available Functions
void changed( void (* callback)(void) );

Parameters

Parameter

Type

Beschrijving

callback

void (*)(void)

Een pointer naar een functie die wordt aangeroepen wanneer de koptekstwaarde verandert. De functie mag geen parameters accepteren en moet void.

Return Values

Deze functie retourneert geen waarde.

Examples

Definieer de callbackfunctie (buiten 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());
}

Registreer de callback binnen int main()

int main() {
  // Run onHeadingChanged when the Inertial Sensor's heading value changes.
  myInertial.changed(onHeadingChanged);
}

installed#

Geeft aan of de traagheidssensor is geïnstalleerd en aangesloten.

Available Functions
bool installed();

Parameters

Deze functie accepteert geen parameters.

Return Values

Geeft een Booleaanse waarde terug die aangeeft of de traagheidssensor is geïnstalleerd en aangesloten:

  • true — The sensor is connected and responding.
  • false — The sensor is not connected or not detected.

acceleration#

Acceleratie geeft aan hoe snel de sensor versnelt of vertraagt. Deze functie geeft de acceleratie van de inertiële sensor op de geselecteerde as weer, van -4,0 G tot 4,0 G.

G is een eenheid die gebruikt wordt om versnelling te meten. 1 G staat ongeveer gelijk aan de versnelling die je voelt door de zwaartekracht als je stilzit. De waarde kan positief of negatief zijn, afhankelijk van de richting van de versnelling op de gekozen as.

Available Functions
double acceleration( axisType axis );

Parameters

Parameter

Type

Beschrijving

axis

axisType

De as waarop de versnelling gemeten moet worden:

  • xaxis
  • yaxis
  • zaxis

Return Values

Retourneert een double die de versnelling langs de opgegeven as in G (gravitationele eenheden) weergeeft.

Notes
  • Versnellingswaarden worden weergegeven in eenheden van G.

gyroRate#

De gyroscoopsnelheid geeft aan hoe snel de inertiële sensor roteert. Deze functie geeft de huidige rotatiesnelheid van de inertiële sensor op de geselecteerde as weer.

De waarde kan positief of negatief zijn, afhankelijk van de draairichting van de sensor op die as.

Available Functions
double gyroRate( axisType      axis,
                 velocityUnits units );

Parameters

Parameter

Type

Beschrijving

axis

axisType

De as van waaruit de gyroscoopsnelheid moet worden geretourneerd:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

De gyroscoopsnelheidseenheid:

  • dps — graden per seconde
  • rpm — omwentelingen per minuut

Return Values

Retourneert een double die de huidige rotatiesnelheid langs de opgegeven as in de geselecteerde eenheden weergeeft.

Examples
// 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#

De oriëntatie is de huidige hoek van de inertiële sensor ten opzichte van een geselecteerde draaiingsas. Deze functie retourneert de huidige oriëntatie van de inertiële sensor voor de opgegeven as.

Rollen, stampen en gieren beschrijven verschillende manieren waarop de sensor kan kantelen of draaien.

Available Functions
double orientation(
  orientationType type,
  rotationUnits   units );

Parameters

Parameter

Type

Beschrijving

type

orientationType

De oriëntatiehoek voor terugkeer:

  • pitch
  • roll
  • yaw

units

rotationUnits

De oriëntatie-eenheid:

  • deg / degrees — graden
  • turns / rev — omwentelingen

Return Values

Retourneert een double die de geselecteerde oriëntatiehoek in de opgegeven eenheden weergeeft.

Examples
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(roll, deg);
  Brain.Screen.print("%f", orient);
  wait(0.1, seconds);
}

collision#

Registreert een callbackfunctie die wordt uitgevoerd wanneer de traagheidssensor een plotselinge impact of botsing detecteert.

Available Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

Parameter

Type

Beschrijving

callback

void (*)(axisType, double, double, double)

Een pointer naar een functie die wordt aangeroepen wanneer een botsing wordt gedetecteerd. De callbackfunctie moet de volgende parameters accepteren:

  • axisType — De as waarop de botsing werd gedetecteerd.
  • Versnellingswaarden op het moment van de botsing, in volgorde:
    • double — Versnellingskracht langs de x-as (in G).
    • double — Versnellingskracht langs de y-as (in G).
    • double — Versnellingskracht langs de z-as (in G).
De functie moet void retourneren.

Return Values

Deze functie retourneert geen waarde.

Examples

Definieer de callbackfunctie (buiten 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!");
}

Registreer de callback binnen int main()

int main() {
  // Run onCollision when the Inertial Sensor detects a collision.
  myInertial.collision(onCollision);
}

setTurnType#

Sets die in de juiste richting draaien, retourneren positieve waarden.

Available Functions
void setTurnType( turnType dir );

Parameters

Parameter

Type

Beschrijving

dir

turnType

De richting die positieve waarden teruggeeft:

  • right
  • left

Return Values

Deze functie retourneert geen waarde.

Notes

getTurnType#

Retourneert welke draairichting positieve waarden oplevert.

Available Functions
turnType getTurnType();

Parameters

Deze functie accepteert geen parameters.

Return Values

Geeft een turnType terug, die aangeeft welke richting positieve waarden oplevert:

  • right — Clockwise rotation returns positive values.
  • left — Counterclockwise rotation returns positive values.
Notes