Tröghetssensor#
Introduktion#
Tröghetsklassen inertial används för att styra och komma åt data från en EXP-tröghetssensor. EXP kan använda Brains inbyggda tröghetssensor eller en extern tröghetssensor ansluten till en Smart Port.
En tröghetssensor mäter hur roboten rör sig och vrider sig. Gyroskopet mäter vridningar, 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(
int32_t index,
turnType dir = turnType::right );
Klassförstörare#
Förstör inertial och frigör tillhörande resurser.
~inertial();
Parametrar#
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Valfritt. Den smarta porten som en extern tröghetssensor är ansluten till, skriven som |
|
|
Valfritt. Riktningen som returnerar positiva värden:
|
Exempel#
// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();
// Use an external Inertial Sensor connected to Port 1.
inertial Inertial1 = inertial(PORT1);
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 funktion som ska anropas 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 funktion som ska köras när en kollision detekteras.setTurnType— Anger vilken svängriktning som returnerar positiva vä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 using the Device Menu. Replace the values
as needed. */
// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();
heading#
Returnerar tröghetssensorns aktuella kurs.
En kurs är den riktning sensorn är vänd mot, mätt i grader från 0 till 359,99. Om sensorn vrider sig 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#
Rotation är hur mycket sensorn har vridit sig, mätt i grader. Till skillnad från riktning kan rotationen öka över 359,99 grader eller minska under 0 grader. I början av ett projekt är rotationsvärdet inställt på 0 grader. Denna funktion ändrar tröghetssensorns aktuella rotation till ett nytt värde.
Om sensorn till exempel har gjort två hela varv åt höger blir dess rotationsvärde 720 grader. Om rotationen ställs in på 0 grader återställs den rotationen från 720 till 0 grader. Sedan kan sensorn spåra rotationer baserat på det nya värdet.
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())// 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()); }Registrera återuppringningen inuti
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#
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 axel. Denna funktion returnerar tröghetssensorns orientering, från -180,00 till 180,00 grader.
Den valda x-, y- eller z-axeln motsvarar en av sensorns orienteringsaxlar.
Available Functionsdouble orientation(
axisType axis,
rotationUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Axeln för vilken orientering returneras:
|
|
|
Rotationsenhet:
|
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(xaxis, 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())// Called 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()/* 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#
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 avinertialobjektet.
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.