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

index

int32_t

Valfritt. Den smarta porten som en extern tröghetssensor är ansluten till, skriven som PORTx, där x är portnumret (till exempel PORT1). Inkludera inte denna parameter när du använder Brains inbyggda tröghetssensor.

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#

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

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

// 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 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 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 Functions
double orientation(
  axisType      axis,
  rotationUnits units );

Parameters

Parameter

Typ

Beskrivning

axis

axisType

Axeln för vilken orientering returneras:

  • xaxis
  • yaxis
  • zaxis

units

rotationUnits

Rotationsenhet:

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

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