Inerciális érzékelő#

Bevezetés#

A inertial osztály az EXP inerciális érzékelő adatainak vezérlésére és elérésére szolgál. Az EXP használhatja a Brain beépített inerciális érzékelőjét vagy egy külső inerciális érzékelőt, amely egy Smart Porthoz csatlakozik.

Egy inerciális érzékelő méri a robot mozgását és fordulását. A giroszkóp a fordulást méri, például az irányt, a forgást, a giroszkóp sebességét és az orientációt. A gyorsulásmérő a mozgás változásait méri, például a gyorsulást vagy lassulást az x, y és z tengelyek mentén.

Osztálykonstruktorok#

inertial(
    int32_t  index,
    turnType dir = turnType::right );

Osztálydestruktor#

Megsemmisíti a inertial objektumot és felszabadítja a hozzá tartozó erőforrásokat.

~inertial();

Paraméterek#

Paraméter

Típus

Leírás

index

int32_t

Opcionális. Az intelligens port, amelyhez egy külső inerciális érzékelő csatlakozik, PORTxformátumban írva, ahol x a port száma (például PORT1). Ne adja meg ezt a paramétert, ha az agy beépített inerciális érzékelőjét használja.

dir

turnType

Opcionális. A pozitív értéket visszaadó irány:

  • right (alapértelmezett) — A jobbra kanyarodások pozitív értékeket adnak vissza.
  • left — A balra kanyarodások pozitív értékeket adnak vissza.

Példák#

// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();

// Use an external Inertial Sensor connected to Port 1.
inertial Inertial1 = inertial(PORT1);

Tagfüggvények#

A inertial osztály a következő tagfüggvényeket tartalmazza:

  • heading — Visszaadja az érzékelő irányát.

  • rotation — Visszaadja, hogy milyen messzire fordult el az érzékelő.

  • setHeading — Beállítja az érzékelő aktuális irányát egy új irányértékre.

  • setRotation — Beállítja az érzékelő aktuális forgását egy új forgási értékre.

  • calibrate — Kalibrálja az inerciális érzékelőt.

  • resetHeading — Visszaállítja az érzékelő aktuális irányát 0 fokra.

  • resetRotation — Visszaállítja az érzékelő aktuális elforgatását 0 fokra.

  • isCalibrating — Visszaadja, hogy az inerciális érzékelő jelenleg kalibrálás alatt áll-e.

  • changed — Regisztrál egy függvényt, amely meghívódik, amikor a címsor megváltozik.

  • installed — Visszaadja, hogy az inerciális érzékelő telepítve van-e.

  • acceleration — Visszaadja, hogy milyen gyorsan gyorsul vagy lassul az érzékelő a kiválasztott tengelyen.

  • gyroRate — Visszaadja, hogy milyen gyorsan forog az érzékelő a kiválasztott tengely körül.

  • orientation — Visszaadja az inerciális érzékelő gördülési, dőlési vagy elfordulási szögét.

  • collision — Regisztrál egy függvényt, amely ütközés észlelésekor fut.

  • setTurnType — Beállítja, hogy melyik fordulási irány ad vissza pozitív értéket.

  • getTurnType — Visszaadja, hogy melyik fordulási irány pozitív értéket eredményez.

Bármely inertial tagfüggvény meghívása előtt létre kell hozni egy inertial példányt, az alábbiak szerint:

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

Visszaadja az inerciális érzékelő aktuális irányát.

A haladási irány az érzékelő által mutatott irány, 0 és 359,99 fok között mérve. Ha az érzékelő 359,99 fok fölé fordul, a haladási irány visszaáll 0 fokra.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

Paraméter

Típus

Leírás

units

rotationUnits

Az irány mértékegysége:

  • deg / degrees (alapértelmezett) — fok
  • turns / rev — fordulatszám

Return Values

Egy double értéket ad vissza, amely a szenzor aktuális irányát jelöli a megadott mértékegységben.

Notes
  • A fejléc értéke 0 és 359,99 fok között tördelődik. A folyamatos forgatás értékének eléréséhez használja a rotation parancsot.

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

rotation#

Visszaadja az inerciális érzékelő aktuális forgását.

A forgás azt mutatja, hogy az érzékelő mennyit fordult el. Az irányjelzéssel ellentétben a forgás 359,99 fok fölé nőhet, vagy 0 fok alá csökkenhet. Például két teljes jobbra fordulás 720 fokos elfordulást eredményez. Egy teljes balra fordulás 0 fokról -360 fokos elfordulást eredményez.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

Paraméter

Típus

Leírás

units

rotationUnits

A forgás mértékegysége:

  • deg / degrees (alapértelmezett) — fok
  • turns / rev — fordulatszám

Return Values

Egy double értéket ad vissza, amely a megadott egységekben mért aktuális forgatást jelenti.

Notes
  • Az elforgatási érték folytonos, és nem tördel 0 és 359,99 fok között. A tördelt címsorérték eléréséhez használja a heading parancsot.

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

setHeading#

A haladási irány az érzékelő iránya, 0 és 359,99 fok között mérve. Ez a függvény az inerciális érzékelő aktuális haladási irányát egy új haladási értékre módosítja.

Például, ha az érzékelő jobbra fordult, és a haladási irány 0 fokra állítása a jobbra néző pozíciót teszi az új 0 fokká. Ezután az érzékelő az új irány alapján más haladási irányokat is követhet.

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

Parameters

Paraméter

Típus

Leírás

value

double

Az érzékelőhöz beállítandó irányérték fokban. Ez 0 és 359,99 közötti érték lehet.

units

rotationUnits

Az irány mértékegysége:

  • deg / degrees — fok
  • turns / rev — fordulatszám

Return Values

Ez a függvény nem ad vissza értéket.

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

setRotation#

Az elforgatás az érzékelő elfordulásának mértékét mutatja fokban mérve. Az irányváltással ellentétben az elforgatás 359,99 fok fölé növelhető, vagy 0 fok alá csökkenhet. A projekt elején az elforgatási érték 0 fokra van állítva. Ez a függvény az inerciális érzékelő aktuális elforgatását egy új értékre módosítja.

Például, ha az érzékelő két teljes fordulatot tett jobbra, akkor az elforgatási értéke 720 fok lesz. Ha az elforgatást 0 fokra állítja, az elforgatás 720-ról 0 fokra áll vissza. Ezután az érzékelő az új érték alapján tudja követni a forgásokat.

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

Parameters

Paraméter

Típus

Leírás

value

double

Az érzékelőhöz beállítandó forgatási érték fokban. Ez lehet egész vagy tizedes szám.

units

rotationUnits

A forgási egység:

  • deg / degrees — fok
  • turns / rev — fordulatszám

Return Values

Ez a függvény nem ad vissza értéket.

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

calibrate#

Kalibrálja az inerciális érzékelőt.

A kalibrálás segít az érzékelőnek a fordulatok helyes mérésében. Tartsa mozdulatlanul az érzékelőt a kalibrálás során. Ha az érzékelő elmozdul a kalibrálás során, előfordulhat, hogy az irány, a forgás, a giroszkóp sebessége és az orientációs értékek nem fognak helyesen mérni.

Available Functions
void calibrate( );

Parameters

Ez a függvény nem fogad el paramétereket.

Return Values

Ez a függvény nem ad vissza értéket.

Notes
  • A kalibrálás alatt az érzékelőnek mozdulatlanul kell maradnia.

  • A isCalibrating használatával meghatározhatja, hogy mikor fejeződött be a kalibrálás.

resetHeading#

Visszaállítja az inerciális érzékelő aktuális irányát 0 fokra.

A funkció használata után az érzékelő aktuális iránya lesz az új 0 fokos irány.

Available Functions
void resetHeading();

Parameters

Ez a függvény nem fogad el paramétereket.

Return Values

Ez a függvény nem ad vissza értéket.

resetRotation#

Visszaállítja az inerciális érzékelő aktuális forgását 0 fokra.

A funkció használata után az érzékelő az új 0 fokos elforgatási értékből kiindulva követi nyomon a jövőbeli fordulatokat.

Available Functions
void resetRotation();

Parameters

Ez a függvény nem fogad el paramétereket.

Return Values

Ez a függvény nem ad vissza értéket.

isCalibrating#

Visszaadja, hogy az inerciális érzékelő jelenleg kalibrálás alatt áll-e.

Available Functions
bool isCalibrating();

Parameters

Ez a függvény nem fogad el paramétereket.

Return Values

Egy logikai értéket ad vissza, amely jelzi, hogy az inerciális érzékelő kalibrál-e:

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

changed#

Regisztrál egy visszahívó függvényt, amely akkor fut le, amikor az inerciális érzékelő irányértéke megváltozik.

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

Parameters

Paraméter

Típus

Leírás

callback

void (*)(void)

Egy mutató egy függvényre, amely akkor hívódik meg, amikor a fejléc értéke megváltozik. A függvény nem vehet fel paramétereket, és void értéket adhat vissza.

Return Values

Ez a függvény nem ad vissza értéket.

Examples

Definiáljuk a visszahívó függvényt ( 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());
}

Regisztrálja a visszahívást a int main() függvényen belül.

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

Visszaadja, hogy az inerciális érzékelő telepítve és csatlakoztatva van-e.

Available Functions
bool installed();

Parameters

Ez a függvény nem fogad el paramétereket.

Return Values

Egy logikai értéket ad vissza, amely jelzi, hogy az inerciális érzékelő telepítve és csatlakoztatva van-e:

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

acceleration#

A gyorsulás az érzékelő gyorsulását vagy lassulását jelzi. Ez a függvény visszaadja az inerciális érzékelő gyorsulását a kiválasztott tengelyen, -4,0 G-től 4,0 G-ig.

A G a gyorsulás mérésére használt mértékegység. Az 1 G a gravitációból fakadó gyorsulást jelenti, amelyet egy helyben ülés közben érzünk. Az érték lehet pozitív vagy negatív a kiválasztott tengely mentén mért gyorsulás irányától függően.

Available Functions
double acceleration( axisType axis );

Parameters

Paraméter

Típus

Leírás

axis

axisType

A gyorsulás mérésére szolgáló tengely:

  • xaxis
  • yaxis
  • zaxis

Return Values

double értéket ad vissza, amely a megadott tengely mentén mért gyorsulást jelenti G-ben (gravitációs egység).

Notes
  • A gyorsulási értékeket G egységben adjuk meg.

gyroRate#

A giroszkóp sebessége az inerciális érzékelő forgási sebességét adja vissza. Ez a függvény visszaadja az inerciális érzékelő aktuális forgási sebességét a kiválasztott tengelyen.

Az érték lehet pozitív vagy negatív attól függően, hogy az érzékelő milyen irányba forog az adott tengely körül.

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

Parameters

Paraméter

Típus

Leírás

axis

axisType

A giroszkóp sebességét visszaadó tengely:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

A giroszkóp sebességének mértékegysége:

  • dps — fok másodpercenként
  • rpm — fordulat percenként

Return Values

Egy double értéket ad vissza, amely a megadott tengely mentén az aktuális forgási sebességet jelöli a kiválasztott egységekben.

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#

Az orientáció az inerciális érzékelő aktuális szöge a kiválasztott tengelyhez képest. Ez a függvény visszaadja az inerciális érzékelő orientációját -180,00 és 180,00 fok között.

A kiválasztott x, y vagy z tengely megfelel az érzékelő egyik orientációs tengelyének.

Available Functions
double orientation(
  axisType      axis,
  rotationUnits units );

Parameters

Paraméter

Típus

Leírás

axis

axisType

A tengely, amelyhez az orientációt visszaadjuk:

  • xaxis
  • yaxis
  • zaxis

units

rotationUnits

A forgási egység:

  • deg / degrees — fok
  • turns / rev — fordulatszám

Return Values

Egy double értéket ad vissza, amely a kiválasztott tájolási szöget jelöli a megadott mértékegységben.

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#

Regisztrál egy visszahívó függvényt, amely akkor fut le, amikor az inerciális érzékelő hirtelen ütést vagy ütközést észlel.

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

Parameters

Paraméter

Típus

Leírás

callback

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

Egy mutató egy függvényre, amely ütközés észlelésekor hívódik meg. A visszahívó függvénynek a következő paramétereket kell elfogadnia:

  • axisType — A tengely, amelyen az ütközést észlelték.
  • Gyorsulási értékek az ütközés időpontjában, sorrendben:
    • double — Gyorsulás az x tengely mentén (G-ben).
    • double — Gyorsulás az y tengely mentén (G-ben).
    • double — Gyorsulás a z tengely mentén (G-ben).
A függvénynek void értéket kell visszaadnia.

Return Values

Ez a függvény nem ad vissza értéket.

Examples

Definiáljuk a visszahívó függvényt ( 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!");
}

Regisztrálja a visszahívást a int main() függvényen belül.

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

Beállítja, hogy melyik fordulási irány ad vissza pozitív értéket.

Available Functions
void setTurnType( turnType dir );

Parameters

Paraméter

Típus

Leírás

dir

turnType

A pozitív értékeket visszaadó irány:

  • right
  • left

Return Values

Ez a függvény nem ad vissza értéket.

Notes

getTurnType#

A fordulóirányú visszatérések pozitív értékeket eredményeznek.

Available Functions
turnType getTurnType();

Parameters

Ez a függvény nem fogad el paramétereket.

Return Values

turnType értéket ad vissza, amely jelzi, hogy melyik irány eredményez pozitív értékeket:

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