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 |
|---|---|---|
|
|
Optioneel. De richting die positieve waarden oplevert:
|
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 Functionsdouble heading( rotationUnits units = degrees );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De kopteksteenheid:
|
Retourneert een double die de huidige richting van de sensor in de opgegeven eenheden weergeeft.
De richtingswaarde ligt tussen 0 en 359,99 graden. Gebruik
rotationom de continue rotatiewaarde te verkrijgen.
// 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 Functionsdouble rotation( rotationUnits units = degrees );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De rotatie-eenheid:
|
Retourneert een double die de huidige rotatie in de opgegeven eenheden weergeeft.
De rotatiewaarde is continu en loopt niet door tussen 0 en 359,99 graden. Gebruik
headingom de doorlopende kopwaarde te verkrijgen.
// 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 Functionsvoid setHeading( double value,
rotationUnits units );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De richtingswaarde in graden die voor de sensor moet worden ingesteld. Dit kan een waarde zijn van 0 tot 359,99. |
|
|
De kopeenheid:
|
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 Functionsvoid setRotation( double value,
rotationUnits units );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De rotatiewaarde in graden die voor de sensor moet worden ingesteld. Dit kan een geheel getal of een decimaal getal zijn. |
|
|
De rotatie-eenheid:
|
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 Functionsvoid calibrate( );
Deze functie accepteert geen parameters.
Return ValuesDeze functie retourneert geen waarde.
NotesDe sensor moet tijdens de kalibratie stil blijven staan.
Gebruik
isCalibratingom 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 Functionsvoid resetHeading();
Deze functie accepteert geen parameters.
Return ValuesDeze 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 Functionsvoid resetRotation();
Deze functie accepteert geen parameters.
Return ValuesDeze functie retourneert geen waarde.
isCalibrating#
Geeft aan of de traagheidssensor momenteel aan het kalibreren is.
Available Functionsbool isCalibrating();
Deze functie accepteert geen parameters.
Return ValuesGeeft 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 Functionsvoid changed( void (* callback)(void) );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Een pointer naar een functie die wordt aangeroepen wanneer de koptekstwaarde verandert. De functie mag geen parameters accepteren en moet |
Deze functie retourneert geen waarde.
ExamplesDefinieer 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 Functionsbool installed();
Deze functie accepteert geen parameters.
Return ValuesGeeft 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.
double acceleration( axisType axis );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De as waarop de versnelling gemeten moet worden:
|
Retourneert een double die de versnelling langs de opgegeven as in G (gravitationele eenheden) weergeeft.
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 Functionsdouble gyroRate( axisType axis,
velocityUnits units );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De as van waaruit de gyroscoopsnelheid moet worden geretourneerd:
|
|
|
De gyroscoopsnelheidseenheid:
|
Retourneert een double die de huidige rotatiesnelheid langs de opgegeven as in de geselecteerde eenheden weergeeft.
// 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 Functionsdouble orientation(
orientationType type,
rotationUnits units );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De oriëntatiehoek voor terugkeer:
|
|
|
De oriëntatie-eenheid:
|
Retourneert een double die de geselecteerde oriëntatiehoek in de opgegeven eenheden weergeeft.
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 Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Een pointer naar een functie die wordt aangeroepen wanneer een botsing wordt gedetecteerd. De callbackfunctie moet de volgende parameters accepteren:
void retourneren. |
Deze functie retourneert geen waarde.
ExamplesDefinieer 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 Functionsvoid setTurnType( turnType dir );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De richting die positieve waarden teruggeeft:
|
Deze functie retourneert geen waarde.
NotesDeze instelling beïnvloedt hoe
headingenrotationpositieve en negatieve waarden rapporteren.Door deze functie aan te roepen wordt de waarde
diroverschreven die is opgegeven bij het construeren van hetinertialobject.
getTurnType#
Retourneert welke draairichting positieve waarden oplevert.
Available FunctionsturnType getTurnType();
Deze functie accepteert geen parameters.
Return ValuesGeeft een turnType terug, die aangeeft welke richting positieve waarden oplevert:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
Deze waarde wordt ingesteld tijdens de constructie van het
inertialobject of doorsetTurnTypeaan te roepen.