Αδρανειακός αισθητήρας#

Εισαγωγή#

The inertial class is used to control and access data from a V5 Inertial Sensor connected to a Smart Port.

Ο αδρανειακός αισθητήρας V5 μετρά τον τρόπο με τον οποίο το ρομπότ κινείται και στρέφεται. Το γυροσκόπιο μετρά τις στροφές, όπως την κατεύθυνση, την περιστροφή, τον ρυθμό γυροσκοπίου και τον προσανατολισμό. Το επιταχυνσιόμετρο μετρά τις αλλαγές στην κίνηση, όπως την επιτάχυνση ή την επιβράδυνση κατά μήκος των αξόνων x, y και z.

Κατασκευαστές κλάσεων#

inertial(
  int32_t  index,
  turnType dir = turnType::right );

Καταστροφέας κλάσης#

Καταστρέφει το αδρανειακό αντικείμενο inertial και απελευθερώνει τους σχετικούς πόρους.

~inertial();

Παράμετροι#

Παράμετρος

Τύπος

Περιγραφή

index

int32_t

Η Έξυπνη Θύρα στην οποία είναι συνδεδεμένος ο Αισθητήρας Αδράνειας, γράφεται ως PORTx, όπου x είναι ο αριθμός θύρας (για παράδειγμα, PORT1).

dir

turnType

Προαιρετικό. Η κατεύθυνση που επιστρέφει θετικές τιμές:

  • right (προεπιλογή) — Οι δεξιές στροφές επιστρέφουν θετικές τιμές.
  • left — Οι αριστερές στροφές επιστρέφουν θετικές τιμές.

Παραδείγματα#

// Create an inertial instance for the V5 Inertial Sensor
inertial myInertial = inertial(
    PORT1,      // Smart Port 1
    right);     // dir

Συναρτήσεις Μελών#

Η αδρανειακή κλάση inertial περιλαμβάνει τις ακόλουθες συναρτήσεις-μέλη:

  • heading — Επιστρέφει την κατεύθυνση προς την οποία είναι στραμμένος ο αισθητήρας.

  • rotation — Επιστρέφει την περιστροφή του αισθητήρα.

  • setHeading — Ορίζει την τρέχουσα κατεύθυνση του αισθητήρα σε μια νέα τιμή κατεύθυνσης.

  • setRotation — Ορίζει την τρέχουσα περιστροφή του αισθητήρα σε μια νέα τιμή περιστροφής.

  • calibrate — Βαθμονομεί τον Αδρανειακό Αισθητήρα.

  • resetHeading — Επαναφέρει την τρέχουσα κατεύθυνση του αισθητήρα στις 0 μοίρες.

  • resetRotation — Επαναφέρει την τρέχουσα περιστροφή του αισθητήρα στις 0 μοίρες.

  • isCalibrating — Επιστρέφει εάν ο Αισθητήρας Αδράνειας βρίσκεται σε διαδικασία βαθμονόμησης.

  • changed — Καταγράφει μια συνάρτηση επανάκλησης που εκτελείται όταν αλλάζει η επικεφαλίδα.

  • installed — Επιστρέφει εάν ο Αισθητήρας Αδράνειας είναι εγκατεστημένος.

  • acceleration — Επιστρέφει την ταχύτητα με την οποία ο αισθητήρας επιταχύνει ή επιβραδύνει στον επιλεγμένο άξονα.

  • gyroRate — Επιστρέφει την ταχύτητα περιστροφής του αισθητήρα στον επιλεγμένο άξονα.

  • orientation — Επιστρέφει τη γωνία κύλισης, κλίσης ή εκτροπής του αδρανειακού αισθητήρα.

  • collision — Καταγράφει μια συνάρτηση επανάκλησης που εκτελείται όταν ανιχνεύεται σύγκρουση.

  • setTurnType — Ορίζει ποια κατεύθυνση στροφής επιστρέφει θετικές τιμές.

  • getTurnType — Επιστρέφει ποια κατεύθυνση στροφής παράγει θετικές τιμές.

Πριν από την κλήση οποιασδήποτε αδρανειακής συνάρτησης μέλους inertial , πρέπει να δημιουργηθεί μια αδρανειακή συνάρτηση μέλους inertial , όπως φαίνεται παρακάτω:

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

// Create an inertial instance for the V5 Inertial Sensor connected to Port 1.
inertial myInertial = inertial(PORT1);

heading#

Μια κατεύθυνση είναι η κατεύθυνση προς την οποία είναι στραμμένος ο αισθητήρας, μετρούμενη σε μοίρες από 0 έως 359,99. Αυτή η συνάρτηση επιστρέφει την τρέχουσα κατεύθυνση του αισθητήρα.

Η αρχική κατεύθυνση είναι 0 μοίρες. Εάν ο αισθητήρας περιστραφεί πέραν των 359,99 μοιρών, η κατεύθυνση επιστρέφει στις 0 μοίρες.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

Παράμετρος

Τύπος

Περιγραφή

units

rotationUnits

Μονάδα κατεύθυνσης:

  • deg / degrees (προεπιλογή) — μοίρες
  • turns / rev — περιστροφές

Return Values

Επιστρέφει ένα double που αντιπροσωπεύει την τρέχουσα κατεύθυνση του αισθητήρα στις καθορισμένες μονάδες.

Notes
  • Η τιμή της επικεφαλίδας περιλαμβάνεται μεταξύ 0 και 359,99 μοιρών. Χρησιμοποιήστε rotation για να αποκτήσετε πρόσβαση στην τιμή συνεχούς περιστροφής.

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

rotation#

Επιστρέφει την τρέχουσα περιστροφή του αδρανειακού αισθητήρα.

Η περιστροφή είναι η περιστροφή του αισθητήρα. Σε αντίθεση με την κατεύθυνση, η περιστροφή μπορεί να αυξηθεί πέραν των 359,99 μοιρών ή να μειωθεί κάτω από τις 0 μοίρες. Για παράδειγμα, κάνοντας δύο πλήρεις στροφές προς τα δεξιά επιστρέφει μια περιστροφή 720 μοιρών. Στρέφοντας μία πλήρη στροφή προς τα αριστερά από τις 0 μοίρες επιστρέφει μια περιστροφή -360 μοιρών.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

Παράμετρος

Τύπος

Περιγραφή

units

rotationUnits

Η μονάδα περιστροφής:

  • deg / degrees (προεπιλογή) — μοίρες
  • turns / rev — περιστροφές

Return Values

Επιστρέφει ένα double που αντιπροσωπεύει την τρέχουσα περιστροφή στις καθορισμένες μονάδες.

Notes
  • Η τιμή περιστροφής είναι συνεχής και δεν αναδιπλώνεται μεταξύ 0 και 359,99 μοιρών. Χρησιμοποιήστε heading για να αποκτήσετε πρόσβαση στην τιμή αναδιπλωμένης επικεφαλίδας.

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

setHeading#

Μια κατεύθυνση είναι η κατεύθυνση προς την οποία είναι στραμμένος ο αισθητήρας, μετρούμενη σε μοίρες από 0 έως 359,99. Αυτή η συνάρτηση αλλάζει την τρέχουσα κατεύθυνση του αδρανειακού αισθητήρα σε μια νέα τιμή κατεύθυνσης.

Για παράδειγμα, εάν ο αισθητήρας έχει στραφεί προς τα δεξιά, η ρύθμιση της κατεύθυνσης σε 0 μοίρες καθιστά αυτήν τη θέση προς τα δεξιά τις νέες 0 μοίρες. Στη συνέχεια, ο αισθητήρας μπορεί να παρακολουθήσει άλλες κατευθύνσεις με βάση αυτήν τη νέα κατεύθυνση.

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

value

double

Η τιμή κατεύθυνσης, σε μοίρες, που θα οριστεί για τον αισθητήρα. Αυτή μπορεί να είναι μια τιμή από 0 έως 359,99.

units

rotationUnits

Μονάδα κατεύθυνσης:

  • deg / degrees — μοίρες
  • turns / rev — περιστροφές

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

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

setRotation#

Η περιστροφή είναι η περιστροφή του αισθητήρα, μετρούμενη σε μοίρες. Σε αντίθεση με την κατεύθυνση, η περιστροφή μπορεί να αυξηθεί πέραν των 359,99 μοιρών ή να μειωθεί κάτω από τις 0 μοίρες. Στην αρχή ενός έργου, η τιμή περιστροφής ορίζεται σε 0 μοίρες. Αυτή η συνάρτηση αλλάζει την τρέχουσα περιστροφή του Αδρανειακού Αισθητήρα σε μια νέα τιμή.

Για παράδειγμα, εάν ο αισθητήρας έχει κάνει δύο πλήρεις στροφές προς τα δεξιά, η τιμή περιστροφής του θα είναι 720 μοίρες. Η ρύθμιση της περιστροφής σε 0 μοίρες θα επαναφέρει αυτήν την περιστροφή από 720 σε 0 μοίρες. Στη συνέχεια, ο αισθητήρας μπορεί να παρακολουθεί τις περιστροφές με βάση αυτήν τη νέα τιμή.

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

value

double

Η τιμή περιστροφής, σε μοίρες, που θα οριστεί για τον αισθητήρα. Μπορεί να είναι ακέραιος ή δεκαδικός αριθμός.

units

rotationUnits

Η μονάδα περιστροφής:

  • deg / degrees — μοίρες
  • turns / rev — περιστροφές

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

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

calibrate#

Βαθμονομεί τον αδρανειακό αισθητήρα.

Η βαθμονόμηση βοηθά τον αισθητήρα να μετρά σωστά τις στροφές. Διατηρήστε τον αισθητήρα ακίνητο κατά τη βαθμονόμηση. Εάν ο αισθητήρας κινηθεί κατά τη βαθμονόμηση, οι τιμές κατεύθυνσης, περιστροφής, γυροσκοπικού ρυθμού και προσανατολισμού ενδέχεται να μην μετρώνται σωστά.

Available Functions
void calibrate( );

Parameters

Αυτή η συνάρτηση δεν δέχεται καμία παράμετρο.

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Notes
  • Ο αισθητήρας θα πρέπει να παραμένει ακίνητος κατά τη διάρκεια της βαθμονόμησης.

  • Χρησιμοποιήστε την συνάρτηση isCalibrating για να προσδιορίσετε πότε έχει ολοκληρωθεί η βαθμονόμηση.

resetHeading#

Επαναφέρει την τρέχουσα κατεύθυνση του αδρανειακού αισθητήρα στις 0 μοίρες.

Αφού χρησιμοποιηθεί αυτή η λειτουργία, η τρέχουσα κατεύθυνση του αισθητήρα γίνεται η νέα κατεύθυνση 0 μοιρών.

Available Functions
void resetHeading();

Parameters

Αυτή η συνάρτηση δεν δέχεται καμία παράμετρο.

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

resetRotation#

Επαναφέρει την τρέχουσα περιστροφή του αδρανειακού αισθητήρα στις 0 μοίρες.

Αφού χρησιμοποιηθεί αυτή η λειτουργία, ο αισθητήρας παρακολουθεί τις μελλοντικές στροφές από τη νέα τιμή περιστροφής 0 μοιρών.

Available Functions
void resetRotation();

Parameters

Αυτή η συνάρτηση δεν δέχεται καμία παράμετρο.

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

isCalibrating#

Επιστρέφει εάν ο Αισθητήρας Αδράνειας βρίσκεται σε διαδικασία βαθμονόμησης.

Available Functions
bool isCalibrating();

Parameters

Αυτή η συνάρτηση δεν δέχεται καμία παράμετρο.

Return Values

Επιστρέφει μια λογική τιμή που υποδεικνύει εάν ο Αισθητήρας Αδράνειας βαθμονομείται:

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

changed#

Καταγράφει μια συνάρτηση επανάκλησης που εκτελείται όταν αλλάζει η τιμή επικεφαλίδας του Αδρανειακού Αισθητήρα.

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

callback

void (*)(void)

Ένας δείκτης σε μια συνάρτηση που θα κληθεί όταν αλλάξει η τιμή της επικεφαλίδας. Η συνάρτηση δεν πρέπει να δέχεται παραμέτρους και να επιστρέφει void.

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Examples

Ορίστε τη συνάρτηση επανάκλησης (εκτός από 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());
}

Καταχωρίστε την επανάκληση μέσα στο int main()

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

installed#

Επιστρέφει εάν ο Αισθητήρας Αδράνειας είναι εγκατεστημένος και συνδεδεμένος.

Available Functions
bool installed();

Parameters

Αυτή η συνάρτηση δεν δέχεται καμία παράμετρο.

Return Values

Επιστρέφει μια λογική τιμή που υποδεικνύει εάν ο Αδρανειακός Αισθητήρας είναι εγκατεστημένος και συνδεδεμένος:

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

acceleration#

Η επιτάχυνση είναι η ταχύτητα με την οποία ο αισθητήρας επιταχύνει ή επιβραδύνει. Αυτή η συνάρτηση επιστρέφει την επιτάχυνση του αδρανειακού αισθητήρα στον επιλεγμένο άξονα, από -4,0 G έως 4,0 G.

Το G είναι μια μονάδα που χρησιμοποιείται για τη μέτρηση της επιτάχυνσης. Το 1 G αντιστοιχεί περίπου στην επιτάχυνση που αισθάνεστε από τη βαρύτητα ενώ κάθεστε ακίνητοι. Η τιμή μπορεί να είναι θετική ή αρνητική ανάλογα με την κατεύθυνση της επιτάχυνσης στον επιλεγμένο άξονα.

Available Functions
double acceleration( axisType axis );

Parameters

Παράμετρος

Τύπος

Περιγραφή

axis

axisType

Ο άξονας για τη μέτρηση της επιτάχυνσης:

  • xaxis
  • yaxis
  • zaxis

Return Values

Επιστρέφει ένα double που αντιπροσωπεύει την επιτάχυνση κατά μήκος του καθορισμένου άξονα σε G (βαρυτικές μονάδες).

Notes
  • Οι τιμές επιτάχυνσης αναφέρονται σε μονάδες G.

gyroRate#

Ο ρυθμός γυροσκοπίου είναι η ταχύτητα περιστροφής του αδρανειακού αισθητήρα. Αυτή η συνάρτηση επιστρέφει την τρέχουσα ταχύτητα περιστροφής του αδρανειακού αισθητήρα στον επιλεγμένο άξονα.

Η τιμή μπορεί να είναι θετική ή αρνητική ανάλογα με την κατεύθυνση περιστροφής του αισθητήρα σε αυτόν τον άξονα.

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

axis

axisType

Ο άξονας από τον οποίο θα επιστρέφεται ο ρυθμός γυροσκοπίου:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Η μονάδα ρυθμού γυροσκοπίου:

  • dps — μοίρες ανά δευτερόλεπτο
  • rpm — περιστροφές ανά λεπτό

Return Values

Επιστρέφει ένα double που αντιπροσωπεύει την τρέχουσα ταχύτητα περιστροφής κατά μήκος του καθορισμένου άξονα στις επιλεγμένες μονάδες.

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#

Ο προσανατολισμός είναι η τρέχουσα γωνία του αδρανειακού αισθητήρα σε έναν επιλεγμένο άξονα. Αυτή η συνάρτηση επιστρέφει τον τρέχοντα προσανατολισμό του αδρανειακού αισθητήρα για τον καθορισμένο άξονα.

Ο επιλεγμένος άξονας x, y ή z αντιστοιχεί σε έναν από τους άξονες προσανατολισμού του αισθητήρα.

Available Functions
double orientation(
  axisType      axis,
  rotationUnits units );

Parameters

Παράμετρος

Τύπος

Περιγραφή

axis

axisType

Ο άξονας για τον οποίο επιστρέφεται ο προσανατολισμός:

  • xaxis
  • yaxis
  • zaxis

units

rotationUnits

Η μονάδα προσανατολισμού:

  • deg / degrees — μοίρες
  • turns / rev — περιστροφές

Return Values

Επιστρέφει μια τιμή double που αντιπροσωπεύει την επιλεγμένη γωνία προσανατολισμού στις καθορισμένες μονάδες.

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#

Καταγράφει μια συνάρτηση επανάκλησης που εκτελείται όταν ο Αισθητήρας Αδράνειας ανιχνεύει ξαφνική πρόσκρουση ή σύγκρουση.

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

callback

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

Ένας δείκτης σε μια συνάρτηση που θα κληθεί όταν ανιχνευθεί σύγκρουση. Η συνάρτηση επανάκλησης πρέπει να δέχεται τις ακόλουθες παραμέτρους:

  • axisType — Ο άξονας στον οποίο ανιχνεύθηκε η σύγκρουση.
  • Τιμές επιτάχυνσης κατά τη στιγμή της πρόσκρουσης, με τη σειρά:
    • double — Επιτάχυνση κατά μήκος του άξονα x (σε G).
    • double — Επιτάχυνση κατά μήκος του άξονα y (σε G).
    • double — Επιτάχυνση κατά μήκος του άξονα z (σε G).
Η συνάρτηση πρέπει να επιστρέψει void.

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Examples

Ορίστε τη συνάρτηση επανάκλησης (εκτός από 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!");
}

Καταχωρίστε την επανάκληση μέσα στο int main()

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

setTurnType#

Ορίζει ποια κατεύθυνση στροφής επιστρέφει θετικές τιμές.

Available Functions
void setTurnType( turnType dir );

Parameters

Παράμετρος

Τύπος

Περιγραφή

dir

turnType

Η κατεύθυνση που επιστρέφει θετικές τιμές:

  • right
  • left

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Notes

getTurnType#

Επιστρέφει τις τιμές των οποίων η κατεύθυνση στροφής παράγει θετικές τιμές.

Available Functions
turnType getTurnType();

Parameters

Αυτή η συνάρτηση δεν δέχεται καμία παράμετρο.

Return Values

Επιστρέφει μια στροφή turnType που υποδεικνύει ποια κατεύθυνση παράγει θετικές τιμές:

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