Πίνακας περιεχομένων:

Προγραμματισμός βάσει γεγονότων σε FTC: 4 βήματα
Προγραμματισμός βάσει γεγονότων σε FTC: 4 βήματα

Βίντεο: Προγραμματισμός βάσει γεγονότων σε FTC: 4 βήματα

Βίντεο: Προγραμματισμός βάσει γεγονότων σε FTC: 4 βήματα
Βίντεο: Λόμπι, ΜΜΕ, Wall Street: Ποιος έχει πραγματικά την εξουσία στις ΗΠΑ; 2024, Νοέμβριος
Anonim
Προγραμματισμός βάσει γεγονότων σε FTC
Προγραμματισμός βάσει γεγονότων σε FTC

Φέτος, η ομάδα μας έχει κάνει μεγάλη δουλειά με την ανάπτυξη λογισμικού που βασίζεται σε γεγονότα για το ρομπότ μας. Αυτά τα προγράμματα επέτρεψαν στην ομάδα να αναπτύξει με ακρίβεια αυτόνομα προγράμματα και ακόμη και επαναλαμβανόμενα τηλεοπτικά γεγονότα. Καθώς το έργο του λογισμικού που απαιτεί είναι περίπλοκο, αποφασίσαμε να μοιραστούμε τη γνώση που έχουμε αποκτήσει σχετικά με την ανάπτυξη κώδικα που βασίζεται σε γεγονότα για ρομπότ FTC.

Βήμα 1: Τι είναι ο προγραμματισμός βάσει γεγονότων;

Σε γενικές γραμμές, ο προγραμματισμός που βασίζεται σε γεγονότα, σύμφωνα με την Techopedia, είναι η ανάπτυξη προγραμμάτων που ανταποκρίνονται στα στοιχεία του χρήστη. Υπό αυτή την έννοια, πολλά προγράμματα θεωρούνται καθοδηγούμενα από γεγονότα, συμπεριλαμβανομένου του τηλεοπτικού προγράμματος μιας ομάδας, το οποίο βασίζεται σε εισροές από έναν ελεγκτή που εκτελείται από άνθρωπο για τη διεξαγωγή οποιασδήποτε ενέργειας. Ωστόσο, όσον αφορά τη δουλειά που έχει κάνει η ομάδα μας, ο προγραμματισμός βάσει γεγονότων αφορά τη δημιουργία λογισμικού από διάφορες εισόδους. Με άλλα λόγια, τεκμηριώνουμε συμβάντα με βάση τις εισόδους των ελεγκτών και των αισθητήρων, τότε μπορούμε να βάλουμε στην ουρά αυτά τα συμβάντα και να χρησιμοποιήσουμε το αρχείο για να επαναλάβουμε το καταγεγραμμένο συμβάν.

Αυτή η μέθοδος ανάπτυξης προγραμμάτων για το ρομπότ μας έχει πολλά πλεονεκτήματα:

  • Μας επιτρέπει να δημιουργήσουμε ακριβή αυτόνομα προγράμματα. Δεδομένου ότι δημιουργούμε το λογισμικό σε πραγματικό χρόνο ενώ πραγματοποιούμε το συμβάν, οι τιμές των αισθητήρων που συλλέγονται και χρησιμοποιούνται θα είναι πολύ ακριβείς, καθώς προέρχονται απευθείας από το αρχικό συμβάν.
  • Μας επιτρέπει να δημιουργήσουμε γρήγορα αυτόνομα προγράμματα. Η δημιουργία αυτόνομων προγραμμάτων είναι τόσο απλή όσο η καταγραφή μιας σειράς γεγονότων και η προσαρμογή του γεγονότος όπως απαιτείται.
  • Μας επιτρέπει να δημιουργήσουμε αυτόματες διαδικασίες για το tele-op. Για επαναλαμβανόμενες ενέργειες στην τηλε-λειτουργία, ο προγραμματισμός που βασίζεται σε συμβάντα μας επιτρέπει να καταγράφουμε αυτές τις ενέργειες και να εκχωρούμε το συμβάν σε ένα κουμπί κατά τη διάρκεια περιόδων αγώνων που ελέγχονται από τον οδηγό. Αυτά τα αυτοματοποιημένα συμβάντα μπορούν να επηρεαστούν από αισθητήρες για να επιτρέψουν την ακριβή εκτέλεσή τους.

Βήμα 2: Λογική ροή προγραμματισμού βάσει γεγονότων

Λογική ροή προγραμματισμού βάσει γεγονότων
Λογική ροή προγραμματισμού βάσει γεγονότων

Τα παρακάτω απεικονίζουν τη λογική ροή ενός προγράμματος που βασίζεται σε γεγονότα: το κόκκινο απεικονίζει τη δημιουργία ενός γεγονότος και το μπλε απεικονίζει την κλήση του συμβάντος. Για τη δημιουργία ενός συμβάντος, μια ακολουθία εισόδων λαμβάνεται μέσω δράσης ρομπότ και καταγράφεται ως συμβάντα. αυτά τα συμβάντα γράφονται σε ένα αρχείο. Για την κλήση ενός συμβάντος, το αρχείο διαβάζεται και οι είσοδοι αποστέλλονται σε έναν επεξεργαστή συμβάντων για να μετατρέψουν τον κώδικα αρχείου σε ενέργεια ρομπότ.

Βήμα 3: Δημιουργός εκδηλώσεων

Δημιουργός εκδηλώσεων
Δημιουργός εκδηλώσεων
Δημιουργός εκδηλώσεων
Δημιουργός εκδηλώσεων

Οι δημιουργοί συμβάντων χρησιμοποιούνται για την τεκμηρίωση ενεργειών ή "συμβάντων" που βασίζονται σε μια ποικιλία αισθητήρων και κουμπιών. Καθώς το ρομπότ πραγματοποιεί ενέργειες στο γήπεδο, μια τάξη δημιουργού συμβάντων δημιουργεί εκδηλώσεις για κάθε μία από αυτές τις ενέργειες παράλληλα, αναφέροντας το συμβάν που ταξινομείται σε μια κατηγορία συμβάντων. Αφού δημιουργηθεί, το συμβάν τίθεται σε μια ουρά εκδηλώσεων στην κατηγορία εκδηλώσεων: το πρώτο συμβάν παίρνει την πρώτη θέση, έπειτα το δεύτερο συμβάν παίρνει την κορυφαία θέση και σπρώχνει τα γεγονότα κάτω από αυτό, και αυτό συνεχίζεται μέχρι να σταματήσει το πρόγραμμα. Όταν σταματήσει το πρόγραμμα, τα συμβάντα μεταφέρονται σε ένα αρχείο μορφής αναγνώσιμης από τον άνθρωπο, όπως ένα αρχείο JSON. Αυτό το αρχείο μπορεί να χρησιμοποιηθεί για τη βελτίωση της αυτόνομης ρουτίνας.

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

Βήμα 4: Επεξεργαστής συμβάντων

Επεξεργαστής συμβάντων
Επεξεργαστής συμβάντων
Επεξεργαστής συμβάντων
Επεξεργαστής συμβάντων

Οι τάξεις εκδηλώσεων λαμβάνουν το αρχείο που διαβάζεται από τον άνθρωπο και δημιουργείται στην κατηγορία δημιουργών συμβάντων και κάνει ό, τι του λέει κάθε ουρά στην ουρά, καλώντας μεθόδους που περιγράφονται σε μια κλάση επεξεργαστή συμβάντων. Στη συνέχεια, η κλάση επεξεργαστή συμβάντων λέει στο ρομπότ τι συμβάν να επαναλάβει. Είτε πρόκειται για ένα απλό γεγονός «οδήγησης προς τα εμπρός» είτε για ένα σύνθετο γεγονός γεμάτο αποστάσεις, στροφές και στροφές, ο επεξεργαστής θα αναπαράγει κάθε συμβάν που του έχει δοθεί. Αυτή η διαδικασία είναι πολύ χρήσιμη κατά τη διάρκεια της αυτόνομης λειτουργίας, αφού μια ομάδα μπορεί να καταγράψει αισθητήρες και ενέργειες Tele-Op πριν από την αντιστοίχιση και, στη συνέχεια, να επαναλάβει τα γεγονότα αυτόνομα. Αυτή η διαδικασία ονομάζεται Memory Replay. Αυτό επιτρέπει στο αυτόνομο πρόγραμμα να είναι 100% διαμορφώσιμο μέσω ενός αρχείου. Μόλις δημιουργηθεί ο δημιουργός και ο επεξεργαστής συμβάντων, μια ομάδα μπορεί απλώς να αλλάξει αυτόνομες ρουτίνες μέσω του αναγνώσιμου από τον άνθρωπο αρχείου.

Το παραπάνω παράδειγμα ξεκινά πρώτα ελέγχοντας το αρχείο JSON για ένα συμβάν και, στη συνέχεια, ελέγχοντας αυτό το συμβάν χρησιμοποιώντας μια δήλωση περίπτωσης για να δείτε τι είδους συμβάν είναι, σε αυτήν την περίπτωση μια στροφή χρησιμοποιώντας έναν αισθητήρα IMU. Μόλις μπορέσει να πει ότι πρόκειται για στροφή που χρησιμοποιεί το συμβάν IMU, στη συνέχεια ασχολείται με την επεξεργασία του συμβάντος, η οποία συνήθως περιλαμβάνει την εκτέλεση του κώδικα από το οποίο προήλθε το συμβάν χρησιμοποιώντας μεταβλητές από το συμβάν, που μεταδόθηκαν για να αναπαραγάγουν το συμβάν που είχε γίνει πριν.

Συνιστάται: