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 |
|---|---|---|
|
|
Pasirinktinai. Kryptis, kuri 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 Functionsdouble heading( rotationUnits units = degrees );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Krypties vienetas:
|
Grąžina double , nurodantį dabartinę jutiklio kryptį nurodytais vienetais.
Antraštės reikšmė keičiama tarp 0 ir 359,99 laipsnių. Norėdami pasiekti nuolatinio sukimo reikšmę, naudokite
rotation.
// 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 Functionsdouble rotation( rotationUnits units = degrees );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Sukimosi vienetas:
|
Grąžina double reiškiantį dabartinį sukimą nurodytais vienetais.
Pasukimo reikšmė yra nepertraukiama ir nevyniojama tarp 0 ir 359,99 laipsnių. Norėdami pasiekti apvyniotos antraštės reikšmę, naudokite
heading.
// 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 Functionsvoid setHeading( double value,
rotationUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Jutiklio krypties vertė laipsniais. Tai gali būti vertė nuo 0 iki 359,99. |
|
|
Krypties vienetas:
|
Š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 Functionsvoid setRotation( double value,
rotationUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Jutiklio sukimosi vertė laipsniais. Tai gali būti sveikasis skaičius arba dešimtainė trupmena. |
|
|
Sukimosi vienetas:
|
Š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 Functionsvoid calibrate( );
Ši funkcija nepriima jokių parametrų.
Return ValuesŠi funkcija negrąžina reikšmės.
NotesKalibravimo 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 Functionsvoid resetHeading();
Š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 Functionsvoid resetRotation();
Ši funkcija nepriima jokių parametrų.
Return ValuesŠi funkcija negrąžina reikšmės.
isCalibrating#
Grąžina, ar inercinis jutiklis šiuo metu kalibruojamas.
Available Functionsbool isCalibrating();
Ši funkcija nepriima jokių parametrų.
Return ValuesGrąž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 Functionsvoid changed( void (* callback)(void) );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Rodyklė į funkciją, kuri bus iškviečiama, kai pasikeis antraštės reikšmė. Funkcija negali priimti parametrų ir grąžinti |
Ši funkcija negrąžina reikšmės.
ExamplesApibrėž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()vidujeint 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 Functionsbool installed();
Ši funkcija nepriima jokių parametrų.
Return ValuesGrąž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.
double acceleration( axisType axis );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Ašis, kuria matuojamas pagreitis:
|
Grąžina double reiškiantį pagreitį išilgai nurodytos ašies, išreikštą G (gravitaciniais vienetais).
Pagreičio vertės pateikiamos
Gvienetais.
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 Functionsdouble gyroRate( axisType axis,
velocityUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Ašis, iš kurios reikia grąžinti giroskopo greitį:
|
|
|
Giroskopo dažnio vienetas:
|
Grąžina double rodantį dabartinį sukimosi greitį išilgai nurodytos ašies pasirinktais vienetais.
// 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 Functionsdouble orientation(
orientationType type,
rotationUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Grįžimo orientacijos kampas:
|
|
|
Orientacijos vienetas:
|
Grąžina skaičių double reiškiantį pasirinktą orientacijos kampą nurodytais vienetais.
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 Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Rodyklė į funkciją, kuri bus iškviečiama aptikus susidūrimą. Atgalinio iškvietimo funkcija turi priimti šiuos parametrus:
void. |
Ši funkcija negrąžina reikšmės.
ExamplesApibrėž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()vidujeint 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 Functionsvoid setTurnType( turnType dir );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Kryptis, kuri grąžina teigiamas reikšmes:
|
Ši funkcija negrąžina reikšmės.
NotesŠis nustatymas paveikia, kaip
headingirrotationpateikia teigiamas ir neigiamas reikšmes.Calling this function overrides the
dirvalue specified when constructing theinertialobject.
getTurnType#
Grąžinimai, kurie pasuka kryptimi, sukuria teigiamas reikšmes.
Available FunctionsturnType getTurnType();
Ši funkcija nepriima jokių parametrų.
Return ValuesGrąžina turnType nurodantį, kuri kryptis sukuria teigiamas reikšmes:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
This value is set during construction of the
inertialobject or by callingsetTurnType.