Inerciālais sensors#
Ievads#
Inerciālā inertial tiek izmantota, lai kontrolētu un piekļūtu datiem no inerciālā sensora EXP. EXP var izmantot smadzeņu iebūvēto inerciālo sensoru vai ārēju inerciālo sensoru, kas pievienots viedportam.
Inerciālais sensors mēra robota kustību un griešanos. Žiroskops mēra pagriezienus, piemēram, virzienu, rotāciju, žiroskopa ātrumu un orientāciju. Akselerometrs mēra kustības izmaiņas, piemēram, paātrinājumu vai palēninājumu pa x, y un z asīm.
Klases konstruktori#
inertial(
int32_t index,
turnType dir = turnType::right );
Klases iznīcinātājs#
Iznīcina inerciālo inertial objektu un atbrīvo ar to saistītos resursus.
~inertial();
Parametri#
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Neobligāti. Viedports, kuram ir pievienots ārējais inerciālais sensors, kas pierakstīts kā |
|
|
Neobligāti. Virziens, kas atgriež pozitīvas vērtības:
|
Piemēri#
// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();
// Use an external Inertial Sensor connected to Port 1.
inertial Inertial1 = inertial(PORT1);
Dalībnieku funkcijas#
inertial klase ietver šādas dalībfunkcijas:
heading— Atgriež virzienu, kurā ir vērsts sensors.rotation— Atgriež, cik tālu sensors ir pagriezies.setHeading— Iestata sensora pašreizējo virzienu uz jaunu virziena vērtību.setRotation— Iestata sensora pašreizējo rotāciju uz jaunu rotācijas vērtību.calibrate— Kalibrē inerciālo sensoru.resetHeading— Atiestata sensora pašreizējo virzienu uz 0 grādiem.resetRotation— Atiestata sensora pašreizējo rotāciju uz 0 grādiem.isCalibrating— Atgriež, vai inerciālais sensors pašlaik kalibrē.changed— Reģistrē funkciju, kas tiks izsaukta, mainoties virsrakstam.installed— Atgriež, vai ir instalēts inerciālais sensors.acceleration— Atgriež, cik ātri sensors paātrinās vai palēninās pa atlasīto asi.gyroRate— Atgriež sensora griešanās ātrumu pa atlasīto asi.orientation— Atgriež inerciālā sensora rites, slīpuma vai novirzes leņķi.collision— Reģistrē funkciju, kas jāizpilda, kad tiek konstatēta sadursme.setTurnType— Nosaka, kurš pagrieziena virziens atgriež pozitīvas vērtības.getTurnType— Atgriež pagrieziena virzienu, kas dod pozitīvas vērtības.
Pirms jebkuru inertial locekļu funkciju izsaukšanas ir jāizveido inertial instance, kā parādīts zemāk:
/* 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#
Atgriež inerciālā sensora pašreizējo virzienu.
Virziens ir sensora skats, kas tiek mērīts grādos no 0 līdz 359,99. Ja sensors pagriežas vairāk nekā par 359,99 grādiem, kurss atgriežas pie 0 grādiem.
Available Functionsdouble heading( rotationUnits units = degrees );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
The heading unit:
|
Atgriež skaitli double un apzīmē sensora pašreizējo virzienu norādītajās mērvienībās.
Virsraksta vērtība tiek aplocīta starp 0 un 359,99 grādiem. Izmantojiet
rotation, lai piekļūtu nepārtrauktas rotācijas vērtībai.
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));
rotation#
Atgriež inerciālā sensora pašreizējo rotāciju.
Rotācija norāda, cik daudz sensors ir pagriezies. Atšķirībā no virziena, rotācija var palielināties virs 359,99 grādiem vai samazināties zem 0 grādiem. Piemēram, veicot divus pilnus pagriezienus pa labi, tiek panākta 720 grādu rotācija. Pagriežoties vienu pilnu pagriezienu pa kreisi no 0 grādiem, tiek panākta -360 grādu rotācija.
Available Functionsdouble rotation( rotationUnits units = degrees );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
The rotation unit:
|
Atgriež skaitli double un tas apzīmē pašreizējo rotāciju norādītajās vienībās.
Rotācijas vērtība ir nepārtraukta un neapgriežas starp 0 un 359,99 grādiem. Izmantojiet
heading, lai piekļūtu aplauztajai virsraksta vērtībai.
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));
setHeading#
Virziens ir sensora vērsts virziens, mērīts grādos no 0 līdz 359,99. Šī funkcija maina inerciālā sensora pašreizējo virzienu uz jaunu virziena vērtību.
Piemēram, ja sensors ir pagriezies pa labi, virziena iestatīšana uz 0 grādiem padara šo labo pusi vērsto pozīciju par jauno 0 grādu. Pēc tam sensors var izsekot citiem virzieniem, pamatojoties uz šo jauno virzienu.
Available Functionsvoid setHeading( double value, rotationUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Sensora iestatītā virziena vērtība grādos. Tā var būt vērtība no 0 līdz 359,99. |
|
|
The heading unit:
|
Šī funkcija neatgriež vērtību.
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
Rotācija ir sensora pagrieziena lielums, mērot grādos. Atšķirībā no virziena, rotācija var palielināties virs 359,99 grādiem vai samazināties zem 0 grādiem. Projekta sākumā rotācijas vērtība ir iestatīta uz 0 grādiem. Šī funkcija maina inerciālā sensora pašreizējo rotāciju uz jaunu vērtību.
Piemēram, ja sensors ir veicis divus pilnus pagriezienus pa labi, tā rotācijas vērtība būs 720 grādi. Iestatot rotāciju uz 0 grādiem, šī rotācija tiks atiestatīta no 720 uz 0 grādiem. Pēc tam sensors var izsekot rotācijām, pamatojoties uz šo jauno vērtību.
Available Functionsvoid setRotation( double value, rotationUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Sensora rotācijas vērtība grādos. Tā var būt vesels skaitlis vai decimālskaitlis. |
|
|
The rotation unit:
|
Šī funkcija neatgriež vērtību.
Examples// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);
calibrate#
Kalibrē inerciālo sensoru.
Kalibrēšana palīdz sensoram pareizi izmērīt pagriezienus. Kalibrēšanas laikā sensoram jābūt nekustīgam. Ja sensors kalibrēšanas laikā kustas, virziena, rotācijas, žiroskopiskā ātruma un orientācijas vērtības var netikt pareizi izmērītas.
Available Functionsvoid calibrate( );
Šī funkcija nepieņem nekādus parametrus.
Return ValuesŠī funkcija neatgriež vērtību.
NotesKalibrēšanas laikā sensoram jāpaliek nekustīgam.
Izmantojiet
isCalibrating, lai noteiktu, kad kalibrēšana ir pabeigta.
resetHeading#
Atiestata inerciālā sensora pašreizējo virzienu uz 0 grādiem.
Pēc šīs funkcijas izmantošanas sensora pašreizējais virziens kļūst par jauno 0 grādu virzienu.
Available Functionsvoid resetHeading();
Šī funkcija nepieņem nekādus parametrus.
Return ValuesŠī funkcija neatgriež vērtību.
resetRotation#
Atiestata inerciālā sensora pašreizējo rotāciju uz 0 grādiem.
Pēc šīs funkcijas izmantošanas sensors seko līdzi turpmākajiem pagriezieniem, sākot no jaunās 0 grādu rotācijas vērtības.
Available Functionsvoid resetRotation();
Šī funkcija nepieņem nekādus parametrus.
Return ValuesŠī funkcija neatgriež vērtību.
isCalibrating#
Atgriež, vai inerciālais sensors pašlaik kalibrē.
Available Functionsbool isCalibrating();
Šī funkcija nepieņem nekādus parametrus.
Return ValuesAtgriež Būla vērtību, kas norāda, vai inerciālais sensors kalibrē:
-
true— The sensor is currently calibrating. -
false— The sensor is not currently calibrating.
changed#
Reģistrē atzvanīšanas funkciju, kas darbojas, kad mainās inerciālā sensora virziena vērtība.
Available Functionsvoid changed( void (* callback)(void) );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Rādītājs uz funkciju, kas tiks izsaukta, mainoties virsraksta vērtībai. Funkcija nedrīkst pieņemt parametrus un atgriezt |
Šī funkcija neatgriež vērtību.
ExamplesDefinējiet atzvanīšanas funkciju (ārpus
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()); }Reģistrējiet atzvanīšanas funkciju
int main()iekšpusē/* 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#
Atgriež, vai inerciālais sensors ir uzstādīts un pievienots.
Available Functionsbool installed();
Šī funkcija nepieņem nekādus parametrus.
Return ValuesAtgriež Būla vērtību, kas norāda, vai inerciālais sensors ir uzstādīts un pievienots:
-
true— The sensor is connected and responding. -
false— The sensor is not connected or not detected.
acceleration#
Paātrinājums ir tas, cik ātri sensors paātrinās vai palēninās. Šī funkcija atgriež inerciālā sensora paātrinājumu atlasītajā asī no -4,0 G līdz 4,0 G.
G ir mērvienība, ko izmanto paātrinājuma mērīšanai. 1 G ir aptuvenais paātrinājums, ko jūtat no gravitācijas, sēžot nekustīgi. Vērtība var būt pozitīva vai negatīva atkarībā no paātrinājuma virziena pa izvēlēto asi.
double acceleration( axisType axis );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Ass, uz kuras mērīt paātrinājumu:
|
Atgriež skaitli double un tas apzīmē paātrinājumu pa norādīto asi G (gravitācijas vienībās).
Paātrinājuma vērtības tiek norādītas
Gvienībās.
gyroRate#
Žiroskopijas ātrums ir inerciālā sensora griešanās ātrums. Šī funkcija atgriež inerciālā sensora pašreizējo griešanās ātrumu uz atlasītās ass.
Vērtība var būt pozitīva vai negatīva atkarībā no sensora griešanās virziena ap šo asi.
Available Functionsdouble gyroRate( axisType axis, velocityUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Ass, no kuras jāatgriež žiroskopa ātrums:
|
|
|
Žiroskopijas ātruma mērvienība:
|
Atgriež skaitli double un tas apzīmē pašreizējo rotācijas ātrumu pa norādīto asi atlasītajās vienībās.
// 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#
Orientācija ir inerciālā sensora pašreizējais leņķis attiecībā pret atlasīto asi. Šī funkcija atgriež inerciālā sensora orientāciju no -180,00 līdz 180,00 grādiem.
Izvēlētā x, y vai z ass atbilst vienai no sensora orientācijas asīm.
Available Functionsdouble orientation(
axisType axis,
rotationUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Ass, kurai tiek atgriezta orientācija:
|
|
|
The rotation unit:
|
Atgriež skaitli double un kas apzīmē atlasīto orientācijas leņķi norādītajās vienībās.
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#
Reģistrē atzvanīšanas funkciju, kas darbojas, kad inerciālais sensors konstatē pēkšņu triecienu vai sadursmi.
Available Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Rādītājs uz funkciju, kas tiks izsaukta, kad tiks konstatēta sadursme. Atzvanīšanas funkcijai ir jāpieņem šādi parametri:
void. |
Šī funkcija neatgriež vērtību.
ExamplesDefinējiet atzvanīšanas funkciju (ārpus
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!"); }Reģistrējiet atzvanīšanas funkciju
int main()iekšpusē/* 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#
Kopas, kuru pagrieziena virziens atgriež pozitīvas vērtības.
Available Functionsvoid setTurnType( turnType dir );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Virziens, kas atgriež pozitīvas vērtības:
|
Šī funkcija neatgriež vērtību.
NotesŠis iestatījums ietekmē to, kā
headingunrotationziņo pozitīvas un negatīvas vērtības.Šīs funkcijas izsaukšana pārraksta
dirvērtību, kas norādīta, veidojot inerciāloinertialobjektu.
getTurnType#
Atgriežas vērtības, kas pagriežas virzienā, dod pozitīvas vērtības.
Available FunctionsturnType getTurnType();
Šī funkcija nepieņem nekādus parametrus.
Return ValuesAtgriež turnType kas norāda, kurš virziens rada pozitīvas vērtības:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
This value is set during construction of the
inertialobject or by callingsetTurnType.