Inerciális érzékelő#

Bevezetés#

A inertial osztály az IQ (2. generációs) agy beépített inerciális érzékelőjének adatainak vezérlésére és elérésére szolgál. Ez az érzékelő méri, hogyan mozog és forog az agy.

Az inerciális érzékelő két alkatrészt használ ehhez. A giroszkóp méri a fordulást, 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(
  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

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#

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

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 — Visszahívó függvényt regisztrál, amely a címsor megváltozásakor fut le.

  • 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 — Visszahívó függvényt regisztrál, amely ütközés észlelésekor fut le.

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

  • 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 with the IQ (2nd gen) Brain. Replace the values
as needed. */

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

heading#

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 érzékelő aktuális haladási irányát adja vissza.

A kezdő irány 0 fok. Ha az érzékelő 359,99 fok fölé fordul, az 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 mozog. 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 inerciális érzékelő aktuális forgását egy megadott értékre állítja be.

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.

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

// 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());
}

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

int main() {
  // Run onHeadingChanged when the Inertial Sensor's heading value changes.
  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 forgástengelyen. Ez a függvény visszaadja az inerciális érzékelő aktuális orientációját a megadott tengelyhez.

A gördülés, a bólintás és az elfordulás a szenzor különböző dőlési vagy elfordulási módjait írják le.

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

Parameters

Paraméter

Típus

Leírás

type

orientationType

A visszatéréshez szükséges tájolási szög:

  • pitch
  • roll
  • yaw

units

rotationUnits

A tájolá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(roll, 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 olyan függvényre mutató mutató, 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())

// 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!");
}

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

int main() {
  // Run onCollision when the Inertial Sensor detects a collision.
  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