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 |
|---|---|---|
|
|
Opcionális. A pozitív értéket visszaadó irány:
|
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 Functionsdouble heading( rotationUnits units = degrees );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az irány mértékegysége:
|
Egy double értéket ad vissza, amely a szenzor aktuális irányát jelöli a megadott mértékegységben.
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
rotationparancsot.
// 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 Functionsdouble rotation( rotationUnits units = degrees );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A forgás mértékegysége:
|
Egy double értéket ad vissza, amely a megadott egységekben mért aktuális forgatást jelenti.
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
headingparancsot.
// 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 Functionsvoid setHeading( double value,
rotationUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az érzékelőhöz beállítandó irányérték fokban. Ez 0 és 359,99 közötti érték lehet. |
|
|
Az irány mértékegysége:
|
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 Functionsvoid setRotation( double value,
rotationUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az érzékelőhöz beállítandó forgatási érték fokban. Ez lehet egész vagy tizedes szám. |
|
|
A forgási egység:
|
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 Functionsvoid calibrate( );
Ez a függvény nem fogad el paramétereket.
Return ValuesEz a függvény nem ad vissza értéket.
NotesA kalibrálás alatt az érzékelőnek mozdulatlanul kell maradnia.
A
isCalibratinghaszná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 Functionsvoid resetHeading();
Ez a függvény nem fogad el paramétereket.
Return ValuesEz 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 Functionsvoid resetRotation();
Ez a függvény nem fogad el paramétereket.
Return ValuesEz 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 Functionsbool isCalibrating();
Ez a függvény nem fogad el paramétereket.
Return ValuesEgy 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 Functionsvoid changed( void (* callback)(void) );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
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 |
Ez a függvény nem ad vissza értéket.
ExamplesDefiniá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 Functionsbool installed();
Ez a függvény nem fogad el paramétereket.
Return ValuesEgy 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.
double acceleration( axisType axis );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A gyorsulás mérésére szolgáló tengely:
|
double értéket ad vissza, amely a megadott tengely mentén mért gyorsulást jelenti G-ben (gravitációs egység).
A gyorsulási értékeket
Gegysé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 Functionsdouble gyroRate( axisType axis,
velocityUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A giroszkóp sebességét visszaadó tengely:
|
|
|
A giroszkóp sebességének mértékegysége:
|
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.
// 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 Functionsdouble orientation(
orientationType type,
rotationUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A visszatéréshez szükséges tájolási szög:
|
|
|
A tájolási egység:
|
Egy double értéket ad vissza, amely a kiválasztott tájolási szöget jelöli a megadott mértékegységben.
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 Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
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:
void értéket kell visszaadnia. |
Ez a függvény nem ad vissza értéket.
ExamplesDefiniá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 Functionsvoid setTurnType( turnType dir );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A pozitív értékeket visszaadó irány:
|
Ez a függvény nem ad vissza értéket.
NotesEz a beállítás befolyásolja, hogy a
headingés arotationhogyan jelentik a pozitív és negatív értékeket.A függvény meghívása felülírja a
inertialobjektum konstruálásakor megadottdirértéket.
getTurnType#
A fordulóirányú visszatérések pozitív értékeket eredményeznek.
Available FunctionsturnType getTurnType();
Ez a függvény nem fogad el paramétereket.
Return ValuesturnType é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.
Ez az érték a
inertialobjektum létrehozása során, vagy asetTurnTypemeghívásával állítható be.