Αισθητήρας GPS#

Εισαγωγή#

Η κλάση gps χρησιμοποιείται για τον έλεγχο και την πρόσβαση σε δεδομένα από τον αισθητήρα V5 GPS (Game Positioning System™). Αυτός ο αισθητήρας παρέχει ακριβή παρακολούθηση θέσης και προσανατολισμού για ένα ρομπότ στο Πεδίο VEX. Χρησιμοποιεί τον Κώδικα Πεδίου GPS γύρω από την περίμετρο του Πεδίου για να υπολογίσει τις συντεταγμένες X και Y και την κατεύθυνση του ρομπότ σε πραγματικό χρόνο.

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

Για περισσότερες πληροφορίες σχετικά με τον αισθητήρα GPS, διαβάστε την ενότητα Χρήση του αισθητήρα GPS με το VEX V5 στη βιβλιοθήκη VEX.

Το σημείο αναφοράς λειτουργεί ως η θέση (0, 0) του αισθητήρα GPS, όπου όλες οι συντεταγμένες, οι κατευθύνσεις και οι κινήσεις που επιστρέφονται από τις μεθόδους GPS είναι σχετικές με αυτό το διαμορφωμένο σημείο.

Ο αισθητήρας GPS VEX V5.

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

1 — Δημιουργεί ένα αντικείμενο gps στην καθορισμένη Έξυπνη Θύρα χρησιμοποιώντας την προεπιλεγμένη προέλευση (0, 0).

gps(
  int32_t  index,
  double   heading_offset = 0,
  turnType dir = right );

2 — Δημιουργεί ένα αντικείμενο gps στην καθορισμένη Έξυπνη Θύρα και ορίζει μια προσαρμοσμένη θέση προέλευσης.

gps(
  int32_t       index,
  double        ox,
  double        oy,
  distanceUnits units = mm,
  double        heading_offset = 0,
  turnType      dir = right );

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

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

~gps();

Παράμετροι#

Παράμετρος

Τύπος

Περιγραφή

index

int32_t

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

ox

double

Η συντεταγμένη Χ της αρχικής θέσης.

oy

double

Η συντεταγμένη Y της αρχικής θέσης.

units

distanceUnits

Η μονάδα μέτρησης που χρησιμοποιείται για ox και oy:

  • mm (προεπιλογή) — χιλιοστά
  • distanceUnits::in / inches — ίντσες
  • distanceUnits::cm — εκατοστά

heading_offset

double

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

dir

turnType

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

  • right (προεπιλογή)
  • left

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

// Create the gps instance
gps GPS1 = gps(
    PORT1,      // Smart Port 1
    180);       // heading_offset


// Create the gps instance
gps GPS1 = gps(
    PORT1,   // Smart Port 1
    50.00,   // ox
    100.00,  // oy
    mm,      // units
    180 );   // heading_offset

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

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

  • calibrate — Βαθμονομεί τον αισθητήρα GPS.

  • setOrigin — Ορίζει την αρχική θέση για το σύστημα συντεταγμένων GPS.

  • setLocation — Ορίζει την τρέχουσα τοποθεσία και κατεύθυνση του αισθητήρα GPS.

  • xPosition — Επιστρέφει την τρέχουσα θέση X.

  • yPosition — Επιστρέφει την τρέχουσα θέση Y.

  • heading — Επιστρέφει την τρέχουσα επικεφαλίδα.

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

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

  • orientation — Επιστρέφει τον προσανατολισμό για τον καθορισμένο άξονα.

  • quality — Επιστρέφει την τρέχουσα ποιότητα σήματος GPS.

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

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

/* This constructor is required when using VS Code.
GPS Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Create the gps instance in Smart Port 1
gps GPS1 = gps(PORT1);

Μέθοδοι Κλάσης#

calibrate#

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

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

Available Functions
void calibrate();

Parameters

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

Return Values

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

Examples
// Turn to face the lower Field wall using data from the GPS Sensor.
GPS1.calibrate();
Drivetrain.turnToHeading(180, degrees)

setOrigin#

Ορίζει την αρχή του συστήματος συντεταγμένων GPS.

Available Functions

1 — Ορίζει την αρχή των αξόνων στην καθορισμένη θέση X και Y.

void setOrigin( 
  double        x, 
  double        y, 
  distanceUnits units = mm );

2 — Ορίζει την προέλευση στην τρέχουσα θέση του αισθητήρα.

void setOrigin();

Parameters

Παράμετρος

Τύπος

Περιγραφή

x

double

Η συντεταγμένη Χ της νέας αρχικής θέσης.

y

double

Η συντεταγμένη Y της νέας αρχικής θέσης.

units

distanceUnits

Η μονάδα μέτρησης που χρησιμοποιείται για x και y:

  • mm (προεπιλογή) — χιλιοστά
  • distanceUnits::cm — εκατοστά
  • distanceUnits::in — ίντσες

Return Values

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

Notes
  • Η αλλαγή της αρχής επηρεάζει τις τιμές που επιστρέφονται από τις μεταβλητές xPosition και yPosition.

setLocation#

Ορίζει την τρέχουσα θέση και κατεύθυνση GPS.

Available Functions

1 — Ορίζει την τρέχουσα τοποθεσία χρησιμοποιώντας καθορισμένες μονάδες απόστασης και περιστροφής.

void setLocation(
  double        x,
  double        y,
  distanceUnits units = mm,
  double        angle = 0,
  rotationUnits units_r = degrees );

2 — Ορίζει την τρέχουσα τοποθεσία χρησιμοποιώντας χιλιοστά και μοίρες.

void setLocation( double x, double y, double angle );

Parameters

Παράμετρος

Τύπος

Περιγραφή

x

double

Η συντεταγμένη Χ της τρέχουσας τοποθεσίας.

y

double

Η συντεταγμένη Y της τρέχουσας τοποθεσίας.

units

distanceUnits

Η μονάδα μέτρησης που χρησιμοποιείται για x και y:

  • mm (προεπιλογή) — χιλιοστά
  • distanceUnits::in / inches — ίντσες
  • distanceUnits::cm — εκατοστά

angle

double

Η τιμή κατεύθυνσης για την τρέχουσα τοποθεσία.

units_r

rotationUnits

Η μονάδα μέτρησης που χρησιμοποιείται για τη γωνία angle:

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

Return Values

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

Notes
  • Η κλήση αυτής της συνάρτησης ενημερώνει τις εσωτερικές τιμές θέσης και κατεύθυνσης που αναφέρονται από τις xPosition, yPosition και heading.

xPosition#

Επιστρέφει την τρέχουσα θέση X του αισθητήρα GPS.

Available Functions
double xPosition( distanceUnits units = distanceUnits::mm );

Parameters

Παράμετρος

Τύπος

Περιγραφή

units

distanceUnits

Η μονάδα μέτρησης για την επιστρεφόμενη θέση X:

  • mm (προεπιλογή) — χιλιοστά
  • distanceUnits::cm — εκατοστά
  • distanceUnits::in — ίντσες

Return Values

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

Notes
  • Η θέση X μετριέται σε σχέση με την τρέχουσα αρχή.

  • Η προέλευση μπορεί να αλλάξει χρησιμοποιώντας setOrigin.

Examples
// Drive slowly towards the center of the Field
Drivetrain.setDriveVelocity(20.0, percent);
Drivetrain.drive(forward);
// Stop driving when the GPS returns an x position
// near the center of the Field
waitUntil((GPS1.xPosition(mm) < 0.0));
Drivetrain.stop();

yPosition#

Επιστρέφει την τρέχουσα θέση Y του αισθητήρα GPS.

Available Functions
double yPosition( distanceUnits units = distanceUnits::mm );

Parameters

Παράμετρος

Τύπος

Περιγραφή

units

distanceUnits

Η μονάδα μέτρησης για την επιστρεφόμενη θέση Y:

  • mm (προεπιλογή) — χιλιοστά
  • distanceUnits::cm — εκατοστά
  • distanceUnits::in — ίντσες

Return Values

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

Notes
  • Η θέση Y μετριέται σε σχέση με την τρέχουσα αρχή.

  • Η προέλευση μπορεί να αλλάξει χρησιμοποιώντας την συνάρτηση setOrigin().

Examples
// Drive slowly towards the center of the Field
Drivetrain.setDriveVelocity(20.0, percent);
Drivetrain.drive(forward);
// Stop driving when the GPS reports an y position
// near the center of the Field
waitUntil((GPS1.yPosition(mm) < 0.0));
Drivetrain.stop();

heading#

Επιστρέφει την τρέχουσα κατεύθυνση (γωνία εκτροπής) του αισθητήρα GPS.

Available Functions
double heading( rotationUnits units = rotationUnits::deg );

Parameters

Παράμετρος

Τύπος

Περιγραφή

units

rotationUnits

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

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

Return Values

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

Notes Examples
// Turn slowly to face the right wall
Drivetrain.setTurnVelocity(20.0, percent);
Drivetrain.turn(right);
// Stop turning when the GPS reports a heading 
// greater than 90 degrees
waitUntil((GPS1.heading() > 90.0));
Drivetrain.stop();

acceleration#

Επιστρέφει τη γραμμική επιτάχυνση που μετράται από τον αισθητήρα GPS κατά μήκος του καθορισμένου άξονα.

Available Functions
double acceleration( 
  axisType axis );

Parameters

Παράμετρος

Τύπος

Περιγραφή

axis

axisType

Ο άξονας για τον οποίο θα επιστραφεί η επιτάχυνση:

  • xaxis
  • yaxis
  • zaxis

Return Values

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

Notes
  • Οι τιμές επιτάχυνσης αναφέρονται σε μονάδες G, όπου 1 G ισούται με την επιτάχυνση λόγω της βαρύτητας στην επιφάνεια της Γης.

gyroRate#

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

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

axis

axisType

Ο άξονας για τον οποίο θα επιστραφεί η γωνιακή ταχύτητα:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Η μονάδα μέτρησης για την επιστρεφόμενη γωνιακή ταχύτητα:

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

Return Values

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

orientation#

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

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

axis

orientationType

Ο άξονας προσανατολισμού προς ανάκτηση:

  • roll
  • pitch
  • yaw

units

rotationUnits

Η μονάδα μέτρησης για την επιστρεφόμενη τιμή προσανατολισμού:

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

Return Values

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

quality#

Επιστρέφει την αντιληπτή ποιότητα σήματος GPS.

Available Functions
int32_t quality();

Parameters

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

Return Values

Επιστρέφει μια τιμή int32_t που αντιπροσωπεύει την ποιότητα του σήματος GPS ως ποσοστό:

Πιθανές τιμές

Περιγραφή

100

Όλα τα αναφερόμενα δεδομένα θέσης και κατεύθυνσης από τον αισθητήρα GPS είναι έγκυρα.

~90

Τα δεδομένα θέσης δεν υπολογίζονται πλέον απευθείας από τον Κώδικα Πεδίου GPS και αντ’ αυτού εκτιμώνται μέσω εναλλακτικών μέσων.

0 – 80

Μόνο οι τιμές κατεύθυνσης είναι έγκυρες. Καθώς ο χρόνος περνάει χωρίς επαρκή σάρωση του Κωδικού Πεδίου GPS, η ποιότητα του σήματος συνεχίζει να μειώνεται μέχρι 0, οπότε τα δεδομένα GPS ουσιαστικά παγώνουν και δεν είναι πλέον έγκυρα.

changed#

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

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

callback

void (*)(void)

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

Return Values

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