Inertiële sensor#

Invoering#

De inertial wordt gebruikt om gegevens van een EXP-inertiële sensor te beheren en te benaderen. EXP kan de ingebouwde inertiële sensor van de Brain gebruiken of een externe inertiële sensor die is aangesloten op een Smart Port.

Een traagheidssensor meet hoe de robot beweegt en draait. 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(
    int32_t  index,
    turnType dir = turnType::right );

Klasse-destructor#

Vernietigt het inertial object en geeft de bijbehorende resources vrij.

~inertial();

Parameters#

Parameter

Type

Beschrijving

index

int32_t

Optioneel. De Smart Port waarop een externe traagheidssensor is aangesloten, weergegeven als PORTx, waarbij x het poortnummer is (bijvoorbeeld PORT1). Deze parameter hoeft u niet op te nemen wanneer u de ingebouwde traagheidssensor van de Brain gebruikt.

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#

// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();

// Use an external Inertial Sensor connected to Port 1.
inertial Inertial1 = inertial(PORT1);

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 functie die moet worden aangeroepen 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 functie die moet worden uitgevoerd wanneer een botsing wordt gedetecteerd.

  • setTurnType — Stelt in welke draairichting positieve waarden 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 using the Device Menu. Replace the values
as needed. */

// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();

heading#

Geeft de huidige koers van de traagheidssensor weer.

De koers is de richting waarin de sensor wijst, gemeten in graden van 0 tot 359,99. Als de sensor verder draait dan 359,99 graden, springt de koers 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#

Rotatie geeft aan hoeveel de sensor is gedraaid, gemeten in graden. In tegenstelling tot de richting kan de rotatie oplopen tot meer dan 359,99 graden of afnemen tot minder dan 0 graden. Aan het begin van een project wordt de rotatiewaarde ingesteld op 0 graden. Deze functie wijzigt de huidige rotatie van de inertiële sensor naar een nieuwe waarde.

Als de sensor bijvoorbeeld twee volledige omwentelingen naar rechts heeft gemaakt, is de rotatiewaarde 720 graden. Door de rotatie op 0 graden in te stellen, wordt deze gereset van 720 naar 0 graden. De sensor kan vervolgens rotaties registreren op basis van deze nieuwe waarde.

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())

// 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());
}

Registreer de callback binnen int main()

/* vexcodeInit() is only required when using VEXcode.
Remove vexcodeInit() if compiling in VS Code. */
int main() {

  // Turn the robot by hand briefly
  // to change the robot's heading
  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 op een geselecteerde as. Deze functie retourneert de oriëntatie van de inertiële sensor, van -180,00 tot 180,00 graden.

De geselecteerde x-, y- of z-as komt overeen met een van de oriëntatieassen van de sensor.

Available Functions
double orientation(
  axisType      axis,
  rotationUnits units );

Parameters

Parameter

Type

Beschrijving

axis

axisType

De as waarvoor de oriëntatie wordt geretourneerd:

  • xaxis
  • yaxis
  • zaxis

units

rotationUnits

De rotatie-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(xaxis, 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())

// Called 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()

/* vexcodeInit() is only required when using VEXcode.
Remove vexcodeInit() if compiling in VS Code. */
int main() {

  // Firmly move the robot by hand briefly to simulate
  // a collision and call the onCollision function
  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