Inercinis jutiklis#

Įvadas#

inertial klasė naudojama valdyti ir pasiekti duomenis iš IQ (2-osios kartos) smegenų integruoto inercinio jutiklio. Šis jutiklis matuoja, kaip smegenys juda ir sukasi.

Inercinis jutiklis tam naudoja dvi dalis. Giroskopas matuoja posūkius, pvz., kryptį, sukimąsi, giroskopo greitį ir orientaciją. Akselerometras matuoja judėjimo pokyčius, pvz., pagreitėjimą arba sulėtėjimą išilgai x, y ir z ašių.

Klasės konstruktoriai#

inertial(
  turnType dir = turnType::right );

Klasės destruktorius#

Sunaikina inercinį inertial ir išlaisvina susijusius išteklius.

~inertial();

Parametrai#

Parametras

Tipas

Aprašymas

dir

turnType

Pasirinktinai. Kryptis, kuri grąžina teigiamas reikšmes:

  • right (numatytasis) — Posūkiai į dešinę grąžina teigiamas reikšmes.
  • left — Posūkiai į kairę grąžina teigiamas reikšmes.

Pavyzdžiai#

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

Narių funkcijos#

inertial klasės nariai apima šias funkcijas:

  • heading – Grąžina jutiklio nukreipimo kryptį.

  • rotation — Grąžina, kiek pasisuko jutiklis.

  • setHeading — Nustato dabartinę jutiklio kryptį į naują krypties reikšmę.

  • setRotation — Nustato dabartinį jutiklio sukimąsi į naują sukimosi reikšmę.

  • calibrate – Kalibruoja inercinį jutiklį.

  • resetHeading – Atkuria dabartinę jutiklio kryptį į 0 laipsnių.

  • resetRotation — Atkuria dabartinį jutiklio sukimosi kampą į 0 laipsnių.

  • isCalibrating — Grąžina, ar inercinis jutiklis šiuo metu kalibruojamas.

  • changed — Registruoja atgalinio iškvietimo funkciją, kuri paleidžiama pasikeitus antraštei.

  • installed – Grąžina, ar inercinis jutiklis yra įdiegtas.

  • acceleration – Grąžina, kaip greitai jutiklis greitėja arba lėtėja pasirinktoje ašyje.

  • gyroRate — Grąžina, kaip greitai jutiklis sukasi pasirinktoje ašyje.

  • orientation — Grąžina inercinio jutiklio pasvirimo, posvyrio arba sukimosi kampą.

  • collision — Registruoja atgalinio iškvietimo funkciją, kuri paleidžiama aptikus susidūrimą.

  • setTurnType — Nustato, kuri posūkio kryptis grąžina teigiamas krypties reikšmes.

  • getTurnType — Grąžina, kurios posūkio kryptis sukuria teigiamas reikšmes.

Prieš iškviečiant bet kokias inertial narių funkcijas, reikia sukurti inertial egzempliorių, kaip parodyta žemiau:

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

Kryptis yra jutiklio judėjimo kryptis, matuojama laipsniais nuo 0 iki 359,99. Ši funkcija grąžina dabartinę jutiklio judėjimo kryptį.

Pradinė kryptis yra 0 laipsnių. Jei jutiklis pasisuka daugiau nei 359,99 laipsnio, kryptis grįžta prie 0 laipsnių.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

Parametras

Tipas

Aprašymas

units

rotationUnits

Krypties vienetas:

  • deg / degrees (numatytasis) — laipsniai
  • turns / rev — apsisukimai

Return Values

Grąžina double , nurodantį dabartinę jutiklio kryptį nurodytais vienetais.

Notes
  • Antraštės reikšmė keičiama tarp 0 ir 359,99 laipsnių. Norėdami pasiekti nuolatinio sukimo reikšmę, naudokite rotation.

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

rotation#

Grąžina dabartinį inercinio jutiklio sukimąsi.

Sukimasis rodo, kiek pasisuko jutiklis. Skirtingai nuo krypties, sukimasis gali padidėti virš 359,99 laipsnio arba sumažėti žemiau 0 laipsnių. Pavyzdžiui, padarius du pilnus apsisukimus į dešinę, grįžtama 720 laipsnių sukimasis. Pasukus vieną pilną apsisukimą į kairę nuo 0 laipsnių, grįžtama -360 laipsnių sukimasis.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

Parametras

Tipas

Aprašymas

units

rotationUnits

Sukimosi vienetas:

  • deg / degrees (numatytasis) — laipsniai
  • turns / rev — apsisukimai

Return Values

Grąžina double reiškiantį dabartinį sukimą nurodytais vienetais.

Notes
  • Pasukimo reikšmė yra nepertraukiama ir nevyniojama tarp 0 ir 359,99 laipsnių. Norėdami pasiekti apvyniotos antraštės reikšmę, naudokite heading.

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

setHeading#

Kryptis yra jutiklio judėjimo kryptis, matuojama laipsniais nuo 0 iki 359,99. Ši funkcija pakeičia inercinio jutiklio dabartinę kryptį į naują krypties reikšmę.

Pavyzdžiui, jei jutiklis pasisuko į dešinę, nustačius 0 laipsnių kryptį, ta dešinėn nukreipta padėtis tampa nauja 0 laipsnių. Tada jutiklis gali sekti kitas kryptis pagal tą naują kryptį.

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

Parameters

Parametras

Tipas

Aprašymas

value

double

Jutiklio krypties vertė laipsniais. Tai gali būti vertė nuo 0 iki 359,99.

units

rotationUnits

Krypties vienetas:

  • deg / degrees — laipsniai
  • turns / rev — apsisukimai

Return Values

Ši funkcija negrąžina reikšmės.

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

setRotation#

Nustato inercinio jutiklio dabartinį sukimąsi iki nurodytos vertės.

Sukimasis rodo, kiek pasisuko jutiklis. Skirtingai nuo krypties, sukimasis gali padidėti virš 359,99 laipsnio arba sumažėti žemiau 0 laipsnių.

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

Parameters

Parametras

Tipas

Aprašymas

value

double

Jutiklio sukimosi vertė laipsniais. Tai gali būti sveikasis skaičius arba dešimtainė trupmena.

units

rotationUnits

Sukimosi vienetas:

  • deg / degrees — laipsniai
  • turns / rev — apsisukimai

Return Values

Ši funkcija negrąžina reikšmės.

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

calibrate#

Kalibruoja inercinį jutiklį.

Kalibravimas padeda jutikliui teisingai išmatuoti posūkius. Kalibravimo metu jutiklis turi būti nejudinamas. Jei kalibravimo metu jutiklis juda, krypties, sukimosi, giroskopinio greičio ir orientacijos vertės gali būti išmatuotos neteisingai.

Available Functions
void calibrate( );

Parameters

Ši funkcija nepriima jokių parametrų.

Return Values

Ši funkcija negrąžina reikšmės.

Notes
  • Kalibravimo metu jutiklis turėtų nejudėti.

  • Norėdami nustatyti, kada kalibravimas baigtas, naudokite isCalibrating.

resetHeading#

Atstato inercinio jutiklio dabartinę kryptį į 0 laipsnių.

Panaudojus šią funkciją, dabartinė jutiklio kryptis tampa nauja 0 laipsnių kryptimi.

Available Functions
void resetHeading();

Parameters

Ši funkcija nepriima jokių parametrų.

Return Values

Ši funkcija negrąžina reikšmės.

resetRotation#

Atstato inercinio jutiklio dabartinį sukimosi kampą į 0 laipsnių.

Panaudojus šią funkciją, jutiklis seka būsimus posūkius nuo naujos 0 laipsnių sukimosi vertės.

Available Functions
void resetRotation();

Parameters

Ši funkcija nepriima jokių parametrų.

Return Values

Ši funkcija negrąžina reikšmės.

isCalibrating#

Grąžina, ar inercinis jutiklis šiuo metu kalibruojamas.

Available Functions
bool isCalibrating();

Parameters

Ši funkcija nepriima jokių parametrų.

Return Values

Grąžina loginę reikšmę, nurodančią, ar inercinis jutiklis kalibruojamas:

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

changed#

Registruoja grįžtamojo ryšio funkciją, kuri paleidžiama, kai pasikeičia inercinio jutiklio krypties vertė.

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

Parameters

Parametras

Tipas

Aprašymas

callback

void (*)(void)

Rodyklė į funkciją, kuri bus iškviečiama, kai pasikeis antraštės reikšmė. Funkcija negali priimti parametrų ir grąžinti void.

Return Values

Ši funkcija negrąžina reikšmės.

Examples

Apibrėžkite grįžtamojo ryšio funkciją (už 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());
}

Registruokite atgalinį iškvietimą int main() viduje

int main() {
  // Run onHeadingChanged when the Inertial Sensor's heading value changes.
  myInertial.changed(onHeadingChanged);
}

installed#

Grąžina, ar inercinis jutiklis yra įdiegtas ir prijungtas.

Available Functions
bool installed();

Parameters

Ši funkcija nepriima jokių parametrų.

Return Values

Grąžina loginę reikšmę, nurodančią, ar inercinis jutiklis yra įdiegtas ir prijungtas:

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

acceleration#

Pagreitis rodo, kaip greitai jutiklis greitėja arba lėtėja. Ši funkcija grąžina inercinio jutiklio pagreitį pasirinktoje ašyje nuo -4,0 G iki 4,0 G.

G yra vienetas, naudojamas pagreičiui matuoti. 1 G yra maždaug pagreitis, kurį jaučiate dėl gravitacijos sėdėdami vietoje. Reikšmė gali būti teigiama arba neigiama, priklausomai nuo pagreičio krypties pasirinktoje ašyje.

Available Functions
double acceleration( axisType axis );

Parameters

Parametras

Tipas

Aprašymas

axis

axisType

Ašis, kuria matuojamas pagreitis:

  • xaxis
  • yaxis
  • zaxis

Return Values

Grąžina double reiškiantį pagreitį išilgai nurodytos ašies, išreikštą G (gravitaciniais vienetais).

Notes
  • Pagreičio vertės pateikiamos G vienetais.

gyroRate#

Giroskopo greitis rodo inercinio jutiklio sukimosi greitį. Ši funkcija grąžina dabartinį inercinio jutiklio sukimosi greitį pasirinktoje ašyje.

Reikšmė gali būti teigiama arba neigiama, priklausomai nuo jutiklio sukimosi krypties aplink tą ašį.

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

Parameters

Parametras

Tipas

Aprašymas

axis

axisType

Ašis, iš kurios reikia grąžinti giroskopo greitį:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Giroskopo dažnio vienetas:

  • dps — laipsniai per sekundę
  • rpm — apsisukimai per minutę

Return Values

Grąžina double rodantį dabartinį sukimosi greitį išilgai nurodytos ašies pasirinktais vienetais.

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#

Orientacija yra inercinio jutiklio dabartinis kampas pasirinktos sukimosi ašies atžvilgiu. Ši funkcija grąžina dabartinę inercinio jutiklio orientaciją nurodytai ašiai.

Riedėjimas, posvyris ir sukimas apibūdina skirtingus jutiklio pakreipimo arba pasukimo būdus.

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

Parameters

Parametras

Tipas

Aprašymas

type

orientationType

Grįžimo orientacijos kampas:

  • pitch
  • roll
  • yaw

units

rotationUnits

Orientacijos vienetas:

  • deg / degrees — laipsniai
  • turns / rev — apsisukimai

Return Values

Grąžina skaičių double reiškiantį pasirinktą orientacijos kampą nurodytais vienetais.

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#

Registruoja grįžtamojo ryšio funkciją, kuri paleidžiama, kai inercinis jutiklis aptinka staigų smūgį arba susidūrimą.

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

Parameters

Parametras

Tipas

Aprašymas

callback

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

Rodyklė į funkciją, kuri bus iškviečiama aptikus susidūrimą. Atgalinio iškvietimo funkcija turi priimti šiuos parametrus:

  • axisType — Ašis, kurioje buvo aptiktas susidūrimas.
  • Pagreičio vertės smūgio metu tokia tvarka:
    • double — Pagreitis x ašimi (G).
    • double — Pagreitis y ašimi (G).
    • double — Pagreitis z ašimi (G).
Funkcija turi grąžinti void.

Return Values

Ši funkcija negrąžina reikšmės.

Examples

Apibrėžkite grįžtamojo ryšio funkciją (už 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!");
}

Registruokite atgalinį iškvietimą int main() viduje

int main() {
  // Run onCollision when the Inertial Sensor detects a collision.
  myInertial.collision(onCollision);
}

setTurnType#

Nustato, kurios posūkio kryptys grąžina teigiamas reikšmes.

Available Functions
void setTurnType( turnType dir );

Parameters

Parametras

Tipas

Aprašymas

dir

turnType

Kryptis, kuri grąžina teigiamas reikšmes:

  • right
  • left

Return Values

Ši funkcija negrąžina reikšmės.

Notes

getTurnType#

Grąžinimai, kurie pasuka kryptimi, sukuria teigiamas reikšmes.

Available Functions
turnType getTurnType();

Parameters

Ši funkcija nepriima jokių parametrų.

Return Values

Grąžina turnType nurodantį, kuri kryptis sukuria teigiamas reikšmes:

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