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

index

int32_t

Neobligāti. Viedports, kuram ir pievienots ārējais inerciālais sensors, kas pierakstīts kā PORTx, kur x ir porta numurs (piemēram, PORT1). Neiekļaujiet šo parametru, ja izmantojat smadzeņu iebūvēto inerciālo sensoru.

dir

turnType

Neobligāti. Virziens, kas atgriež pozitīvas vērtības:

  • right (pēc noklusējuma) — Pagriezieni pa labi atgriež pozitīvas vērtības.
  • left — Pagriezieni pa kreisi 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 Functions
double heading( rotationUnits units = degrees );

Parameters

Parametrs

Tips

Apraksts

units

rotationUnits

The heading unit:

  • deg / degrees (default) — degrees
  • turns / rev — revolutions

Return Values

Atgriež skaitli double un apzīmē sensora pašreizējo virzienu norādītajās mērvienībās.

Notes
  • 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.

Examples
// 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 Functions
double rotation( rotationUnits units = degrees );

Parameters

Parametrs

Tips

Apraksts

units

rotationUnits

The rotation unit:

  • deg / degrees (default) — degrees
  • turns / rev — revolutions

Return Values

Atgriež skaitli double un tas apzīmē pašreizējo rotāciju norādītajās vienībās.

Notes
  • 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.

Examples
// 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 Functions
void setHeading( double value, rotationUnits units );

Parameters

Parametrs

Tips

Apraksts

value

double

Sensora iestatītā virziena vērtība grādos. Tā var būt vērtība no 0 līdz 359,99.

units

rotationUnits

The heading unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

Šī 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 Functions
void setRotation( double value, rotationUnits units );

Parameters

Parametrs

Tips

Apraksts

value

double

Sensora rotācijas vērtība grādos. Tā var būt vesels skaitlis vai decimālskaitlis.

units

rotationUnits

The rotation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

Šī 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 Functions
void calibrate( );

Parameters

Šī funkcija nepieņem nekādus parametrus.

Return Values

Šī funkcija neatgriež vērtību.

Notes
  • Kalibrēš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 Functions
void resetHeading();

Parameters

Šī 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 Functions
void resetRotation();

Parameters

Šī funkcija nepieņem nekādus parametrus.

Return Values

Šī funkcija neatgriež vērtību.

isCalibrating#

Atgriež, vai inerciālais sensors pašlaik kalibrē.

Available Functions
bool isCalibrating();

Parameters

Šī funkcija nepieņem nekādus parametrus.

Return Values

Atgriež 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 Functions
void changed( void (* callback)(void) );

Parameters

Parametrs

Tips

Apraksts

callback

void (*)(void)

Rādītājs uz funkciju, kas tiks izsaukta, mainoties virsraksta vērtībai. Funkcija nedrīkst pieņemt parametrus un atgriezt void.

Return Values

Šī funkcija neatgriež vērtību.

Examples

Definē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 Functions
bool installed();

Parameters

Šī funkcija nepieņem nekādus parametrus.

Return Values

Atgriež 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.

Available Functions
double acceleration( axisType axis );

Parameters

Parametrs

Tips

Apraksts

axis

axisType

Ass, uz kuras mērīt paātrinājumu:

  • xaxis
  • yaxis
  • zaxis

Return Values

Atgriež skaitli double un tas apzīmē paātrinājumu pa norādīto asi G (gravitācijas vienībās).

Notes
  • Paātrinājuma vērtības tiek norādītas G vienī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 Functions
double gyroRate( axisType axis, velocityUnits units );

Parameters

Parametrs

Tips

Apraksts

axis

axisType

Ass, no kuras jāatgriež žiroskopa ātrums:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Žiroskopijas ātruma mērvienība:

  • dps — grādi sekundē
  • rpm — apgriezieni minūtē

Return Values

Atgriež skaitli double un tas apzīmē pašreizējo rotācijas ātrumu pa norādīto asi atlasītajās vienībās.

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#

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 Functions
double orientation(
  axisType      axis,
  rotationUnits units );

Parameters

Parametrs

Tips

Apraksts

axis

axisType

Ass, kurai tiek atgriezta orientācija:

  • xaxis
  • yaxis
  • zaxis

units

rotationUnits

The rotation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

Atgriež skaitli double un kas apzīmē atlasīto orientācijas leņķi norādītajās vienībās.

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(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 Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

Parametrs

Tips

Apraksts

callback

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

Rādītājs uz funkciju, kas tiks izsaukta, kad tiks konstatēta sadursme. Atzvanīšanas funkcijai ir jāpieņem šādi parametri:

  • axisType — Ass, uz kuras tika konstatēta sadursme.
  • Paātrinājuma vērtības trieciena brīdī šādā secībā:
    • double — Paātrinājums pa x asi (G).
    • double — Paātrinājums pa y asi (G).
    • double — Paātrinājums pa z asi (G).
Funkcijai ir jāatgriež void.

Return Values

Šī funkcija neatgriež vērtību.

Examples

Definē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 Functions
void setTurnType( turnType dir );

Parameters

Parametrs

Tips

Apraksts

dir

turnType

Virziens, kas atgriež pozitīvas vērtības:

  • right
  • left

Return Values

Šī funkcija neatgriež vērtību.

Notes

getTurnType#

Atgriežas vērtības, kas pagriežas virzienā, dod pozitīvas vērtības.

Available Functions
turnType getTurnType();

Parameters

Šī funkcija nepieņem nekādus parametrus.

Return Values

Atgriež turnType kas norāda, kurš virziens rada pozitīvas vērtības:

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