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 |
|---|---|---|
|
|
Valfritt. Riktningen som 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 Functionsdouble heading( rotationUnits units = degrees );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Kursenheten:
|
Returnerar double som representerar sensorns aktuella riktning i de angivna enheterna.
Kursvärdet är radbrutet mellan 0 och 359,99 grader. Använd
rotationför att komma åt det kontinuerliga rotationsvärdet.
// 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 Functionsdouble rotation( rotationUnits units = degrees );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Rotationsenhet:
|
Returnerar double som representerar den aktuella rotationen i de angivna enheterna.
Rotationsvärdet är kontinuerligt och radbryts inte mellan 0 och 359,99 grader. Använd
headingför att komma åt det radbrytna headingvärdet.
// 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 Functionsvoid setHeading( double value,
rotationUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Kursvärdet, i grader, som ska ställas in för sensorn. Detta kan vara ett värde från 0 till 359,99. |
|
|
Kursenheten:
|
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 Functionsvoid setRotation( double value,
rotationUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Rotationsvärdet, i grader, som ska ställas in för sensorn. Detta kan vara ett heltal eller ett decimaltal. |
|
|
Rotationsenhet:
|
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 Functionsvoid calibrate( );
Den här funktionen accepterar inga parametrar.
Return ValuesDen här funktionen returnerar inget värde.
NotesSensorn ska förbli stationär medan kalibreringen pågår.
Använd
isCalibratingfö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 Functionsvoid resetHeading();
Den här funktionen tar inga parametrar.
Return ValuesDen 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 Functionsvoid resetRotation();
Den här funktionen tar inga parametrar.
Return ValuesDen här funktionen returnerar inget värde.
isCalibrating#
Returnerar om tröghetssensorn för närvarande kalibreras.
Available Functionsbool isCalibrating();
Den här funktionen tar inga parametrar.
Return ValuesReturnerar 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 Functionsvoid changed( void (* callback)(void) );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
En pekare till en funktion som anropas när rubrikvärdet ändras. Funktionen får inte ta emot några parametrar och returnerar |
Den här funktionen returnerar inget värde.
ExamplesDefiniera 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 Functionsbool installed();
Den här funktionen tar inga parametrar.
Return ValuesReturnerar 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.
double acceleration( axisType axis );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Axeln att mäta accelerationen på:
|
Returnerar double som representerar accelerationen längs den angivna axeln i G (gravitationsenheter).
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 Functionsdouble gyroRate( axisType axis,
velocityUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Axeln att returnera gyrohastigheten från:
|
|
|
Gyrohastighetsenhet:
|
Returnerar double som representerar den aktuella rotationshastigheten längs den angivna axeln i de valda enheterna.
// 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 Functionsdouble orientation(
orientationType type,
rotationUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Orienteringsvinkeln för återgång:
|
|
|
Orienteringsenheten:
|
Returnerar double som representerar den valda orienteringsvinkeln i de angivna enheterna.
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 Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
En pekare till en funktion som anropas när en kollision detekteras. Återanropsfunktionen måste acceptera följande parametrar:
void. |
Den här funktionen returnerar inget värde.
ExamplesDefiniera 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 Functionsvoid setTurnType( turnType dir );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Riktningen som returnerar positiva värden:
|
Den här funktionen returnerar inget värde.
NotesDen här inställningen påverkar hur
headingochrotationrapporterar positiva och negativa värden.Anrop av denna funktion åsidosätter värdet
dirsom angavs vid konstruktion avinertial.
getTurnType#
Returer som vänder riktning producerar positiva värden.
Available FunctionsturnType getTurnType();
Den här funktionen tar inga parametrar.
Return ValuesReturnerar en turnType som anger vilken riktning som producerar positiva värden:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
Detta värde sätts under konstruktionen av
inertialeller genom att anropasetTurnType.