Tröghetssensor#

Introduktion#

Tröghetsklassen inertial används för att styra och komma åt data från IQ (2:a generationen) Brains inbyggda tröghetssensor. Denna sensor mäter hur hjärnan rör sig och vrider sig.

Tröghetssensorn använder två delar för att göra detta. Gyroskopet mäter svängningar, såsom kurs, rotation, gyrohastighet och orientering. Accelerometern mäter förändringar i rörelse, såsom att öka eller minska hastigheten längs x-, y- och z-axlarna.

Klasskonstruktörer#

inertial(
  turnType dir = turnType::right );

Klassförstörare#

Förstör inertial och frigör tillhörande resurser.

~inertial();

Parametrar#

Parameter

Typ

Beskrivning

dir

turnType

Valfritt. Riktningen som returnerar positiva värden:

  • right (standard) — Högersvänger returnerar positiva värden.
  • left — Vänstersvänger returnerar positiva värden.

Exempel#

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

Medlemsfunktioner#

Tröghetsklassen inertial inkluderar följande medlemsfunktioner:

  • heading — Returnerar riktningen som sensorn är vänd mot.

  • rotation — Returnerar hur långt sensorn har vridit sig.

  • setHeading — Ställer in sensorns aktuella kurs till ett nytt kursvärde.

  • setRotation — Ställer in sensorns aktuella rotation till ett nytt rotationsvärde.

  • calibrate — Kalibrerar tröghetssensorn.

  • resetHeading — Återställer sensorns aktuella kurs till 0 grader.

  • resetRotation — Återställer sensorns aktuella rotation till 0 grader.

  • isCalibrating — Returnerar om tröghetssensorn för närvarande kalibrerar.

  • changed — Registrerar en återuppringningsfunktion som körs när rubriken ändras.

  • installed — Returnerar om tröghetssensorn är installerad.

  • acceleration — Returnerar hur snabbt sensorn accelererar eller saktar ner på den valda axeln.

  • gyroRate — Returnerar hur snabbt sensorn roterar på den valda axeln.

  • orientation — Returnerar tröghetssensorns rullnings-, lutnings- eller girningsvinkel.

  • collision — Registrerar en återanropsfunktion som körs när en kollision upptäcks.

  • setTurnType — Anger vilken svängriktning som returnerar positiva kursvärden.

  • getTurnType — Returnerar vilket värde som ger positiva värden för vridriktningen.

Innan några inertial medlemsfunktioner anropas måste en inertial instans skapas, som visas nedan:

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

En kurs är den riktning sensorn är vänd i, mätt i grader från 0 till 359,99. Denna funktion returnerar sensorns aktuella kurs.

Startkursen är 0 grader. Om sensorn svänger förbi 359,99 grader, återgår kursen till 0 grader.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

Parameter

Typ

Beskrivning

units

rotationUnits

Kursenheten:

  • deg / degrees (standard) — grader
  • turns / rev — varv

Return Values

Returnerar double som representerar sensorns aktuella riktning i de angivna enheterna.

Notes
  • Kursvärdet är radbrutet mellan 0 och 359,99 grader. Använd rotation för att komma åt det kontinuerliga rotationsvärdet.

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

rotation#

Returnerar tröghetssensorns aktuella rotation.

Rotation är hur mycket sensorn har vridit sig. Till skillnad från kurs kan rotationen öka över 359,99 grader eller minska under 0 grader. Om man till exempel gör två hela varv åt höger returneras en rotation på 720 grader. Om man vrider ett helt varv åt vänster från 0 grader returneras en rotation på -360 grader.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

Parameter

Typ

Beskrivning

units

rotationUnits

Rotationsenhet:

  • deg / degrees (standard) — grader
  • turns / rev — varv

Return Values

Returnerar double som representerar den aktuella rotationen i de angivna enheterna.

Notes
  • Rotationsvärdet är kontinuerligt och radbryts inte mellan 0 och 359,99 grader. Använd heading för att komma åt det radbrytna headingvärdet.

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

setHeading#

En kurs är den riktning sensorn är vänd i, mätt i grader från 0 till 359,99. Denna funktion ändrar tröghetssensorns aktuella kurs till ett nytt kursvärde.

Om sensorn till exempel har vridit åt höger, och kursen ställs in på 0 grader, blir den högervända positionen den nya 0 grader. Då kan sensorn spåra andra kurser baserat på den nya riktningen.

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

Parameters

Parameter

Typ

Beskrivning

value

double

Kursvärdet, i grader, som ska ställas in för sensorn. Detta kan vara ett värde från 0 till 359,99.

units

rotationUnits

Kursenheten:

  • deg / degrees — grader
  • turns / rev — varv

Return Values

Den här funktionen returnerar inget värde.

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

setRotation#

Ställer in tröghetssensorns aktuella rotation till ett angivet värde.

Rotation är hur mycket sensorn har vridit sig. Till skillnad från kurs kan rotationen öka över 359,99 grader eller minska under 0 grader.

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

Parameters

Parameter

Typ

Beskrivning

value

double

Rotationsvärdet, i grader, som ska ställas in för sensorn. Detta kan vara ett heltal eller ett decimaltal.

units

rotationUnits

Rotationsenhet:

  • deg / degrees — grader
  • turns / rev — varv

Return Values

Den här funktionen returnerar inget värde.

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

calibrate#

Kalibrerar tröghetssensorn.

Kalibrering hjälper sensorn att mäta svängar korrekt. Håll sensorn stilla under kalibreringen. Om sensorn rör sig under kalibreringen kan det hända att värdena för kurs, rotation, gyrohastighet och orientering inte mäts korrekt.

Available Functions
void calibrate( );

Parameters

Den här funktionen accepterar inga parametrar.

Return Values

Den här funktionen returnerar inget värde.

Notes
  • Sensorn ska förbli stationär medan kalibreringen pågår.

  • Använd isCalibrating för att avgöra när kalibreringen är klar.

resetHeading#

Återställer tröghetssensorns aktuella kurs till 0 grader.

Efter att den här funktionen har använts blir sensorns aktuella riktning den nya 0-gradersriktningen.

Available Functions
void resetHeading();

Parameters

Den här funktionen tar inga parametrar.

Return Values

Den här funktionen returnerar inget värde.

resetRotation#

Återställer tröghetssensorns aktuella rotation till 0 grader.

Efter att den här funktionen har använts spårar sensorn framtida svängar från det nya rotationsvärdet på 0 grader.

Available Functions
void resetRotation();

Parameters

Den här funktionen tar inga parametrar.

Return Values

Den här funktionen returnerar inget värde.

isCalibrating#

Returnerar om tröghetssensorn för närvarande kalibreras.

Available Functions
bool isCalibrating();

Parameters

Den här funktionen tar inga parametrar.

Return Values

Returnerar ett booleskt värde som anger om tröghetssensorn kalibrerar:

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

changed#

Registrerar en återuppringningsfunktion som körs när tröghetssensorns kursvärde ändras.

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

Parameters

Parameter

Typ

Beskrivning

callback

void (*)(void)

En pekare till en funktion som anropas när rubrikvärdet ändras. Funktionen får inte ta emot några parametrar och returnerar void.

Return Values

Den här funktionen returnerar inget värde.

Examples

Definiera callback-funktionen (utanför 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());
}

Registrera återuppringningen inuti int main()

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

installed#

Returnerar om tröghetssensorn är installerad och ansluten.

Available Functions
bool installed();

Parameters

Den här funktionen tar inga parametrar.

Return Values

Returnerar ett booleskt värde som anger om tröghetssensorn är installerad och ansluten:

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

acceleration#

Acceleration är hur snabbt sensorn ökar eller saktar ner. Denna funktion returnerar tröghetssensorns acceleration på den valda axeln, från -4,0 G till 4,0 G.

En G är en enhet som används för att mäta acceleration. 1 G motsvarar den acceleration du känner från gravitationen när du sitter stilla. Värdet kan vara positivt eller negativt beroende på accelerationens riktning på den valda axeln.

Available Functions
double acceleration( axisType axis );

Parameters

Parameter

Typ

Beskrivning

axis

axisType

Axeln att mäta accelerationen på:

  • xaxis
  • yaxis
  • zaxis

Return Values

Returnerar double som representerar accelerationen längs den angivna axeln i G (gravitationsenheter).

Notes
  • Accelerationsvärden rapporteras i enheter om G.

gyroRate#

Gyrohastigheten är hur snabbt tröghetssensorn roterar. Denna funktion returnerar tröghetssensorns aktuella rotationshastighet på den valda axeln.

Värdet kan vara positivt eller negativt beroende på i vilken riktning sensorn roterar på den axeln.

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

Parameters

Parameter

Typ

Beskrivning

axis

axisType

Axeln att returnera gyrohastigheten från:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Gyrohastighetsenhet:

  • dps — grader per sekund
  • rpm — varv per minut

Return Values

Returnerar double som representerar den aktuella rotationshastigheten längs den angivna axeln i de valda enheterna.

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#

Orientering är tröghetssensorns aktuella vinkel på en vald vridaxel. Denna funktion returnerar tröghetssensorns aktuella orientering för den angivna axeln.

Rulla, luta och gira beskriver olika sätt som sensorn kan luta eller vrida sig.

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

Parameters

Parameter

Typ

Beskrivning

type

orientationType

Orienteringsvinkeln för återgång:

  • pitch
  • roll
  • yaw

units

rotationUnits

Orienteringsenheten:

  • deg / degrees — grader
  • turns / rev — varv

Return Values

Returnerar double som representerar den valda orienteringsvinkeln i de angivna enheterna.

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#

Registrerar en återuppringningsfunktion som körs när tröghetssensorn detekterar en plötslig stöt eller kollision.

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

Parameters

Parameter

Typ

Beskrivning

callback

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

En pekare till en funktion som anropas när en kollision detekteras. Återanropsfunktionen måste acceptera följande parametrar:

  • axisType — Axeln där kollisionen detekterades.
  • Accelerationsvärden vid tidpunkten för kollisionen, i ordning:
    • double — Acceleration längs x-axeln (i G).
    • double — Acceleration längs y-axeln (i G).
    • double — Acceleration längs z-axeln (i G).
Funktionen måste returnera void.

Return Values

Den här funktionen returnerar inget värde.

Examples

Definiera callback-funktionen (utanför 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!");
}

Registrera återuppringningen inuti int main()

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

setTurnType#

Uppsättningar som svängriktning returnerar positiva värden.

Available Functions
void setTurnType( turnType dir );

Parameters

Parameter

Typ

Beskrivning

dir

turnType

Riktningen som returnerar positiva värden:

  • right
  • left

Return Values

Den här funktionen returnerar inget värde.

Notes

getTurnType#

Returer som vänder riktning producerar positiva värden.

Available Functions
turnType getTurnType();

Parameters

Den här funktionen tar inga parametrar.

Return Values

Returnerar en turnType som anger vilken riktning som producerar positiva värden:

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