Κίνηση του ελεγκτή pid ev3 κατά μήκος της γραμμής. Διεθνείς διαγωνισμοί ρομπότ - Κανόνες - Παραδείγματα ρομπότ - Ρομπότ τροχιάς βασισμένο στο LEGO EV3. Έλεγχος ρομπότ με τέσσερις αισθητήρες φωτός

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

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

Στο παράδειγμά μας, τρία παραδείγματα ρομπότ θα αναλυθούν με βάση το κύριο εκπαιδευτικό μοντέλο του Robot Educator.

Αρχικά, συναρμολογούμε το βασικό μοντέλο του εκπαιδευτικού ρομπότ Robot Educator για αυτό μπορείτε να χρησιμοποιήσετε τις οδηγίες στο λογισμικό MINDSTORMS EV3.

Επίσης, για παράδειγμα, θα χρειαστούμε αισθητήρες ανοιχτού χρώματος EV3. Αυτοί οι αισθητήρες φωτός, όπως κανένας άλλος, είναι οι πλέον κατάλληλοι για την εργασία μας όταν εργαζόμαστε μαζί τους, δεν χρειάζεται να ανησυχούμε για την ένταση του περιβάλλοντος φωτός. Για αυτόν τον αισθητήρα, στα προγράμματα θα χρησιμοποιήσουμε τη λειτουργία ανακλώμενου φωτός, στην οποία υπολογίζεται η ποσότητα του ανακλώμενου φωτός από τον κόκκινο οπίσθιο φωτισμό του αισθητήρα. Τα όρια των ενδείξεων του αισθητήρα είναι 0 - 100 μονάδες, για "χωρίς ανάκλαση" και "ολική ανάκλαση", αντίστοιχα.

Ως παράδειγμα, θα αναλύσουμε 3 παραδείγματα προγραμμάτων για κίνηση κατά μήκος μιας μαύρης τροχιάς που απεικονίζεται σε επίπεδο, ανοιχτό φόντο:

· Ένας αισθητήρας, με ρυθμιστή P.

· Ένας αισθητήρας, με ρυθμιστή Η/Υ.

· Δύο αισθητήρες.

Παράδειγμα 1. Ένας αισθητήρας, με ρυθμιστή P.

Σχέδιο

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


Αλγόριθμος

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


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

Ως αποτέλεσμα, στο πρόγραμμα, η συνάρτηση αριθμομηχανής είναι ένας απλός αναλογικός ελεγκτής. Η λειτουργία του οποίου ( (α-50)*1,5 ) στο εύρος λειτουργίας του αισθητήρα φωτός δημιουργεί τιμές περιστροφής σύμφωνα με το γράφημα:

Παράδειγμα για το πώς λειτουργεί ο αλγόριθμος

Παράδειγμα 2. Ένας αισθητήρας, με ρυθμιστή PK.

Αυτό το παράδειγμα βασίζεται στην ίδια κατασκευή.

Πιθανότατα παρατηρήσατε ότι στο προηγούμενο παράδειγμα το ρομπότ ταλαντευόταν υπερβολικά, κάτι που δεν του επέτρεψε να επιταχύνει αρκετά. Τώρα θα προσπαθήσουμε να βελτιώσουμε λίγο αυτή την κατάσταση.

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

Αναλογικός ελεγκτής

Περιγραφή

Στον αυτόματο έλεγχο, η ενέργεια ελέγχου u(t) είναι συνήθως συνάρτηση του δυναμικού σφάλματος - η απόκλιση e(t) της ελεγχόμενης μεταβλητής x(t) από την καθορισμένη τιμή x0(t):

e(t) = x0(t) – x(t).

Αυτή είναι η αρχή Polzunov-Watt της ρύθμισης με απόκλιση ή η αρχή της ανάδρασης. Η μαθηματική έκφραση της λειτουργικής εξάρτησης της επιθυμητής ενέργειας ελέγχου u0(t) από τις ποσότητες που μετρήθηκαν από τον ελεγκτή ονομάζεται νόμος ή αλγόριθμος ελέγχου που συζητήθηκε παραπάνω.

Ένας αναλογικός ελεγκτής είναι μια συσκευή που ασκεί ένα αποτέλεσμα ελέγχου σε ένα αντικείμενο ανάλογα με την απόκλισή του από μια δεδομένη κατάσταση:

Εδώ το k είναι το κέρδος του ελεγκτή.

Η δεδομένη κατάσταση x0 συνήθως ονομάζεται σημείο ρύθμισης και η απόκλιση από αυτήν e ονομάζεται υπολειπόμενη. Στη συνέχεια, για λόγους βεβαιότητας, θα υποδηλώσουμε το υπόλοιπο με τη συντομογραφία err (από Αγγλική λέξη"λάθος" - σφάλμα).

Έλεγχος κινητήρα

Ένας έμπειρος πολεμιστής δεν θα κουνήσει το σπαθί του όπως κάνει ένα ρομπότ σε έναν ελεγκτή ρελέ. Πρέπει να καταλήξουμε σε έναν αλγόριθμο που θα κρατά τον κινητήρα που κρατά το σπαθί σε μια αυστηρά σταθερή θέση (Εικ. 7.1). Ο ρυθμιστής P θα βοηθήσει σε αυτό.

Έστω e 1 - οι ενδείξεις του αισθητήρα ταχύτητας 1 στον κινητήρα Α - είναι μια ρυθμιζόμενη μεταβλητή. Η ρύθμιση x0 = 45, και το υπόλοιπο e = 45 – e 1. Στη συνέχεια, η ενέργεια ελέγχου στον κινητήρα δίνεται από τον τύπο

u = k ∙ (45 – e 1).

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

1 Μην συγχέετε τον μαθηματικό προσδιορισμό του υπολειπόμενου e (από σφάλμα) με τις ενδείξεις του κωδικοποιητή e 1 (από τον κωδικοποιητή), μια προκαθορισμένη μεταβλητή περιβάλλοντος Robolab.

Εάν υπάρχει απόκλιση στο θετική πλευράμια είσοδος αρνητικού ελέγχου θα εφαρμοστεί στον κινητήρα και αντίστροφα. Αυτός ο έλεγχος μπορεί να εφαρμοστεί στον κινητήρα σε έναν κύκλο με μικρή καθυστέρηση 1-10 ms για να ανακουφιστεί ο ελεγκτής (Εικ. 7.8).

Ρύζι. 7.8. Αλγόριθμος ελέγχου κινητήρα με χρήση αναλογικού ελεγκτή.

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

Η γλώσσα RobotC δεν έχει τόσο βολικό συμβολισμό για αναγνώσεις κωδικοποιητή όπως στο Robolab, επομένως το πρόγραμμα φαίνεται λίγο μεγαλύτερο:

int k=5, u; nMotorEncoder=0; ενώ (αλήθεια)

u=k*(45-nMotorEncoder); κινητήρας=u;

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

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

Ο ελεγκτής NXT έχει τέσσερα ενσωματωμένα χρονόμετρα, καθένα από τα οποία μπορεί να μετρήσει τον χρόνο σε δέκατα, εκατοστά και χιλιοστά του δευτερολέπτου. Ας κατακτήσουμε το πρώτο χρονόμετρο, το οποίο εκτελεί 10 «συμβουλές» ανά δευτερόλεπτο.

κοβ». Στο Robolab ορίζεται T1 ή Timer100ms1 και στο RobotC είναι timer100.

Ας κάνουμε τη γωνία εκτροπής κινητήρα άλφα, που καθορίστηκε στο προηγούμενο παράδειγμα στο 45, εξαρτώμενη από τις ενδείξεις του χρονοδιακόπτη με τον συντελεστή επιτάχυνσης k 2:

άλφα = k2 ∙ T1.

Δράση ελέγχουθα παραμείνει το ίδιο με τον συντελεστή ενίσχυσης k 1:

u = k 1 ∙ (άλφα – e 1).

Εν συντομία, στο πρόγραμμα στη γλώσσα Robolab, θα εφαρμόσουμε την ενέργεια ελέγχου απευθείας στον κινητήρα, έχοντας προηγουμένως αρχικοποιήσει το χρονόμετρο

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

Ο συντελεστής k 2 = 36 καθορίζει ότι σε ένα δευτερόλεπτο η τιμή άλφα αυξάνεται σε 360, που αντιστοιχεί σε μία πλήρη περιστροφή του κινητήρα:

int k1=2, k2=36, u, άλφα; nMotorEncoder=0; ClearTimer(T1); ενώ (αλήθεια)

alpha=timer100*k2; u=k1*(alpha-nMotorEncoder); κινητήρας=u;

Χρησιμοποιώντας διαίρεση ακεραίων, όπως υιοθετήθηκε στο C (και στο Robolab) για μεταβλητές ακέραιου τύπου, είναι δυνατό να επιτευχθούν διακριτές αλλαγές γωνίας, π.χ. το αυξάνει μία φορά το δευτερόλεπτο:

άλφα = T 1 / 10 ∙ k 2.

Με συντελεστή k 2 = 60, η κίνηση της δέσμης θα αντιστοιχεί στην κίνηση του δεύτερου χεριού στο καντράν του ρολογιού. Αλλά αυτό δεν είναι αρκετό

αξιοπρόσεχτος. Για λόγους σαφήνειας, μπορείτε να ορίσετε k2 = 30, τότε το βέλος θα κάνει μια πλήρη περιστροφή σε 12 "τικ" των 30 μοιρών το καθένα. Να είστε προσεκτικοί με την ακολουθία των πράξεων διαίρεσης και πολλαπλασιασμού, η αλλαγή της σειράς τους ή η «μείωση» τους σίγουρα θα αλλάξει το αποτέλεσμα (Εικ. 7.10).

Ρύζι. 7.10. Επιταχυνόμενη μίμηση της κίνησης ενός δείκτη του ρολογιού.

Και τέλος, ένα παράδειγμα μαθηματικού ντράμερ. Αντί να κινείται συνεχώς προς τα εμπρός, η βελόνα θα ταλαντώνεται μπρος-πίσω υπό τον έλεγχο του ρυθμιστή P. Σε αυτό θα βοηθήσει η λειτουργία της διαίρεσης με ένα υπόλοιπο, που στο C συμβολίζεται με το σύμβολο %. Το υπόλοιπο ενός μη αρνητικού ακέραιου αριθμού διαιρούμενο με το 2 θα είναι πάντα 0 ή 1:

άλφα = T 1% 2 ∙ k 2.

Αυξάνοντας την απόκλιση κατά k 2 = 15 φορές, παίρνουμε ένα ταλαντευόμενο σημείο ρύθμισης άλφα, το οποίο θα αναγκάσει τον ελεγκτή να κινεί τον κινητήρα 5 φορές ανά δευτερόλεπτο, είτε 0º είτε 15 μοίρες. Οι αλλαγές στο πρόγραμμα είναι μικρές. Ας δούμε ένα παράδειγμα στο RobotC:

int k1=3, k2=15, u, άλφα; nMotorEncoder=0; ClearTimer(T1); ενώ (αλήθεια)

alpha=timer100%2*k2; u=k1*(alpha-nMotorEncoder); κινητήρας=u;

Αυτός ο πρωτότυπος ντράμερ χτυπάει στο τραπέζι σε τακτά χρονικά διαστήματα. Το κύριο πράγμα είναι να ξεκινήσετε στη σωστή θέση. Χρησιμοποιώντας μαθηματικά ακέραιων αριθμών, μπορείτε να ορίσετε ένα πιο περίπλοκο ρυθμικό μοτίβο, για παράδειγμα (Πίνακας 7.1):

άλφα = T 1% 5% 2 ∙ k 2.

κέντρο = S3.

Ο συντελεστής καθορίζεται στον κύκλο:

k 1 = c + (S 3 - κέντρο) / k 2.

Ρύζι. 7.36. Κίνηση κατά μήκος της γραμμής σε αναλογικό ελεγκτή με αιωρούμενο συντελεστή.

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

Ελεγκτής PID

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

Ρύζι. 7.37. Κύκλωμα ελεγκτή PID.

Αυτό είναι ένα απλοποιημένο διάγραμμα. Η τιμή του δυναμικού σφάλματος e (t) παρέχεται στην είσοδο του ελεγκτή και η ενέργεια ελέγχου u (t) δημιουργείται στην έξοδο:

u (t) = p + i + d = k p ∙ e (t) + k i ∙ ò t

e (τ)d τ + k d ∙

de.

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

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

Το διαφορικό εξάρτημα (συστατικό D) παρακολουθεί τον ρυθμό αλλαγής στην κατάσταση του συστήματος και αποτρέπει πιθανή υπέρβαση. Σε ορισμένες περιπτώσεις, η συνιστώσα D είναι αντίθετη σε πρόσημο με την αναλογική και σε άλλες είναι η ίδια.

Γνωρίζουμε ήδη την αναλογική συνιστώσα, η διαφορική περιγράφεται στο προηγούμενο κεφάλαιο 6. Ας πάρουμε την ολοκληρωτική. Αυτό το στοιχείο προσδιορίζεται δυναμικά, αθροίζοντας με την προηγούμενη τιμή:

i = i + ki × e(t) × dt.

Η φυσική σημασία της ποσότητας e(t) × dt είναι ότι είναι

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

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

Μορφή RAW

Τα δεδομένα αισθητήρα εισέρχονται στον ελεγκτή NXT σε μη επεξεργασμένη, ακατέργαστη μορφή. Όλοι οι αισθητήρες εκπέμπουν λειτουργικό σύστημαμια ψηφιακή τιμή από 0 έως 1023, η οποία στη συνέχεια επεξεργάζεται από το αντίστοιχο πρόγραμμα οδήγησης και μειώνεται σε πιο κατανοητή μορφή (απόσταση 0...255, φωτισμός 0...100, άγγιγμα 0 ή 1 κ.λπ.). Αλλά τα δεδομένα μπορούν να ληφθούν απευθείας, παρακάμπτοντας το πρόγραμμα οδήγησης. Αυτή η ακατέργαστη μορφή ονομάζεται συνήθως RAW (από τα αγγλικά "raw"). Σε ορισμένες περιπτώσεις, μπορεί να χρησιμοποιηθεί για να επιτευχθεί μεγαλύτερη ακρίβεια. Για παράδειγμα, το εύρος τιμών του αισθητήρα φωτός μπορεί να αυξηθεί κατά περίπου 10 φορές. Αυτή η ευκαιρία είναι που χρησιμοποιείται περαιτέρω.

Μπορείτε να λάβετε δεδομένα σε μορφή RAW τόσο στο Robolab όσο και στο RobotC. Για να γίνει αυτό, ο αισθητήρας αρχικοποιείται ανάλογα και τα δεδομένα διαβάζονται από αυτόν χρησιμοποιώντας μια ειδική προκαθορισμένη μεταβλητή.

Ρομπότ εξισορρόπησης

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

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

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

Ρύζι. 7.38. Εξισορρόπηση ρομπότ Segway.

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

Ρύζι. 7.39. Ο αλγόριθμος εξισορρόπησης βασίζεται σε έναν ελεγκτή PID.

Ακολουθώντας την παράδοση της κίνησης κατά μήκος της γραμμής, χρησιμοποιούμε τη γκρι μεταβλητή ως σημείο ρύθμισης - τις μέσες μετρήσεις του αισθητήρα φωτός στη θέση ισορροπίας. Η νέα παράμετρος κλίμακας καθορίζει την κλιμάκωση της ενέργειας ελέγχου. Αυτό είναι ουσιαστικά ένας παράγοντας εξασθένησης επειδή η τιμή που παράγεται από τον ρυθμιστή είναι πολύ υψηλή για τους κινητήρες NXT. Θα ήταν δυνατό να το προσθέσετε μέσα στους υπάρχοντες συντελεστές, αλλά για το RobotC αυτή η παράμετρος θα είναι διαφορετική, αλλά οι συντελεστές θα είναι ίδιοι.

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

Ένα παρόμοιο παράδειγμα στο RobotC είναι ελαφρώς διαφορετικό για διάφορους λόγους. Πρώτον, η απόδοση του NXT με το υλικολογισμικό αυτού του περιβάλλοντος είναι περίπου 1,4 φορές υψηλότερη από αυτή του Robolab, επομένως ο παράγοντας κλίμακας θα πρέπει να αυξηθεί. Δεύτερον, οι τιμές RAW μεταδίδονται με τη σωστή σειρά και θα χρειαστεί να ρυθμίσετε τους κινητήρες να αντιστρέφονται ή απλά να εφαρμόσετε μια ενέργεια αρνητικού ελέγχου:

int gray=SensorRaw; int err, errold=0;

float kp=25, ki=350, kd=0,3; float scale=14;

float dt=0,001; float p, i=0, d, u; ενώ (αλήθεια)

err= grey-SensorRaw; //Απόκλιση με το αντίθετο πρόσημο p=kp*err;

i=i+ki*err*dt; d=kd*(err-errold)/dt; errold=err; u=(p+i+d)/κλίμακα; κινητήρας=u; κινητήρας=u; wait1Msec(1);

Στοιχεία της θεωρίας αυτόματο έλεγχοστο σχολείο 1

Ένα σημαντικό και ενδιαφέρον μεθοδολογικό έργο είναι να «ρίξει μια γέφυρα» μεταξύ των τομέων γνώσης ενός ειδικού και ενός μαθητή, βοηθώντας τους μαθητές να δουν το μέλλον μελλοντική ειδικότητα, δηλ. πραγματοποιούν επαγγελματικό προσανατολισμό και οι μαθητές βλέπουν την πρακτική εφαρμογή των επαγγελματικών τους γνώσεων. Για να επιτευχθεί ένα παρόμοιο αποτέλεσμα, αναπτύχθηκαν μέθοδοι για τον υπολογισμό των ρυθμιστών με χρήση μαθηματικών συσκευών που δεν υπερέβαιναν το πεδίο εφαρμογής των σχολικών προγραμμάτων σπουδών στα μαθηματικά και τη φυσική. Συγκεκριμένα, αντί για διαφορικές εξισώσειςΧρησιμοποιήθηκαν διαφορετικά, τα οποία αντιστοιχούν καλά στη διακριτή φύση της αλληλεπίδρασης μεταξύ του αντικειμένου και του ελεγκτή στον έλεγχο υπολογιστή.

Ας εξετάσουμε, για παράδειγμα, το πρόβλημα της κατασκευής ελεγκτών αναλογικής (P) και αναλογικής παραγώγου (PD) στο πρόβλημα ελέγχου της κίνησης ενός κινητού ρομπότ κατά μήκος ενός τοίχου. Ας συμβολίσουμε με x t την απόσταση μεταξύ του ρομπότ και του τοίχου, με θt - τη γωνία κατεύθυνσης του ρομπότ, και με u t - την ενέργεια ελέγχου τη στιγμή με τον αύξοντα αριθμό t, αντίστοιχα, όπου t = 0, 1, 2, ... - αριθμοί στιγμών αλλαγής

ρήνιο. Πιστεύεται ότι η μέτρηση των αισθητήρων και οι αλλαγές στο μέγεθος της δράσης ελέγχου πραγματοποιούνται σε ίσα χρονικά διαστήματα h. Για τις εργασίες ελέγχου των ρομπότ Lego NXT, είναι φυσικό να υποθέσουμε ότι η ενέργεια ελέγχου είναι η διαφορά γωνιακές ταχύτητεςπεριστροφή τροχού, ανάλογη με το ρυθμό μεταβολής της γωνίας κατεύθυνσης:

Υποθέτοντας ότι οι αποκλίσεις πορείας από την ονομαστική θt =0 είναι μικρές και η μέση ταχύτητα του ρομπότ είναι σταθερή: vt=v, η δυναμική των αλλαγών στις μεταβλητές κατάστασης του ρομπότ μπορεί να περιγραφεί σε μια πρώτη προσέγγιση με γραμμικές εξισώσεις κατάστασης :

όπου g = h2vr / b.

Ας ορίσουμε την επιθυμητή απόσταση στον τοίχο x*> 0 και προσδιορίζουμε τον στόχο ελέγχου (CT) από τη σχέση

xt → x* ως t→∞.

Τώρα φυσικάΑς εισαγάγουμε σε ουσιαστικό επίπεδο την έννοια της ασυμπτωτικής σταθερότητας ως ιδιότητα λύσεων στο σύστημα (4), διασφαλίζοντας την επίτευξη της τιμής στόχου (5) κάτω από οποιεσδήποτε αρχικές συνθήκες που διαφέρουν ελάχιστα από τις στοχευόμενες. Είναι εύκολο να δούμε ότι για u t = 0, η λύση της εξίσωσης (4) είναι οποιαδήποτε σταθερή τιμή x t = x*. Επειδή όμως η εξίσωση (4), που αντιστοιχεί στο μοντέλο ενός διπλού ολοκληρωτή (διπλός αθροιστής), δεν έχει την ιδιότητα της ασυμπτωτικής σταθερότητας, το κέντρο ελέγχου (5) δεν επιτυγχάνεται με σταθερό έλεγχο. Αυτό αποδεικνύεται εύκολα αναλυτικά συνοψίζοντας έναν αριθμό από

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

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

Θα περιγράψω πώς το υλοποιούμε στο περιβάλλον EV3, αφού υπάρχουν διαφορές.

Το πρώτο πράγμα που πρέπει να γνωρίζει το ρομπότ είναι η έννοια του «ιδανικού σημείου» που βρίσκεται στο όριο του μαύρου και του λευκού.

Η θέση της κόκκινης κουκκίδας στο σχήμα αντιστοιχεί ακριβώς σε αυτή τη θέση.

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

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

Έτσι, μπορείτε να πάρετε ένα ρομπότ για να το κάνει.

Κατά τη διάρκεια των πειραμάτων, ανακαλύψαμε ότι δεν είναι απαραίτητο να μετρήσουμε τόσο το μαύρο όσο και το άσπρο. Μόνο το λευκό μπορεί να μετρηθεί. Και η ιδανική τιμή σημείου υπολογίζεται ως η τιμή του λευκού διαιρούμενο με το 1,2 (1,15), ανάλογα με το πλάτος της μαύρης γραμμής και την ταχύτητα του ρομπότ.

Η υπολογισμένη τιμή πρέπει να γραφτεί σε μια μεταβλητή για να αποκτήσετε πρόσβαση αργότερα.

Υπολογισμός του «ιδανικού σημείου»

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

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

Για ευκολία, αυτές οι παράμετροι μπορούν επίσης να γραφτούν σε μεταβλητές.

Αναλογία στροφών και ισχύς βάσης

Η λογική της κίνησης κατά μήκος της μαύρης γραμμής είναι η εξής: μετράται η απόκλιση από το ιδανικό σημείο. Όσο μεγαλύτερο είναι, τόσο πιο δυνατό το ρομπότ θα πρέπει να προσπαθήσει να επιστρέψει σε αυτό.

Για να γίνει αυτό, υπολογίζουμε δύο αριθμούς - την τιμή ισχύος καθενός από τους κινητήρες B και C ξεχωριστά.

Σε μορφή τύπου μοιάζει με αυτό:

Όπου Isens είναι η τιμή των μετρήσεων του αισθητήρα φωτός.

Τέλος, η υλοποίηση στο EV3. Είναι πιο βολικό να το τακτοποιήσετε με τη μορφή ξεχωριστού μπλοκ.

Υλοποίηση του αλγορίθμου

Αυτός είναι ακριβώς ο αλγόριθμος που εφαρμόστηκε στο ρομπότ για μεσαία κατηγορία WRO 2015

Λεπτομέρειες Συγγραφέας: Konovalov Igor     Ο αναλογικός ελεγκτής είναι μια βελτίωση. Το κύριο μειονέκτημα του ρελέ είναι ότι δεν τον ενδιαφέρει πόσο διαφέρουν οι τιμές ρεύματος από την κανονική τιμή του αισθητήρα. Έχει μόνο δύο καταστάσεις - είτε προσπαθήστε να αυξήσετε τις τιμές του αισθητήρα κατά ένα συγκεκριμένο σταθερό αριθμό εάν είναι μικρότερες από την κανονική τιμή είτε αυξήστε τις. Εξαιτίας αυτού, οι ταλαντώσεις συμβαίνουν με σταθερό πλάτος, το οποίο είναι πολύ αναποτελεσματικό.
    Είναι πολύ πιο λογικό να προσδιορίσουμε πόσο «μακριά» είναι οι τρέχουσες μετρήσεις από το κανονικό και να αλλάξουμε το πλάτος ανάλογα με αυτό. Για να γίνει πιο σαφές, ας δούμε ένα παράδειγμα. Το παράδειγμα, όπως και στο προηγούμενο άρθρο, είναι το ίδιο: ένα ρομπότ από το Lego Mindstorms EV3 οδηγεί κατά μήκος μιας μαύρης γραμμής χρησιμοποιώντας έναν έγχρωμο αισθητήρα σε λειτουργία φωτισμού.

Το ρομπότ προσπαθεί να οδηγήσει κατά μήκος του ορίου μεταξύ λευκού και μαύρου και εκεί ο αισθητήρας δείχνει περίπου το 50% του φωτισμού. Και όσο πιο μακριά βρίσκεται από την κανονική θέση, τόσο μεγαλύτερη προσπάθεια κάνει το ρομπότ για να επιστρέψει στο 50%.
    Για να γράψουμε ένα πρόγραμμα, θα χρησιμοποιήσουμε τους όρους «σφάλμα» και «ενέργεια ελέγχου». Το σφάλμα είναι η διαφορά μεταξύ της τρέχουσας ένδειξης του αισθητήρα και της κανονικής. Στην περίπτωσή μας, εάν το ρομπότ βλέπει τώρα το 20% του φωτισμού, τότε το σφάλμα είναι 20-50 = -30%. Το σύμβολο σφάλματος υποδεικνύει ποια κατεύθυνση πρέπει να στρίψει το ρομπότ για να απαλλαγεί από το σφάλμα. Τώρα πρέπει να πούμε στους κινητήρες με ποιον τρόπο να γυρίσουν το ρομπότ, με ποια ταχύτητα και πόσο απότομα. Είναι απαραίτητο να ασκήσετε μια επίδραση ελέγχου στους κινητήρες, πράγμα που σημαίνει πόσο γρήγορα θα πρέπει να επιστρέψει στην κανονική του θέση. Η ενέργεια ελέγχου (UP) υπολογίζεται ως το σφάλμα (σφάλμα) πολλαπλασιασμένο με τον παράγοντα αναλογικότητας (k). Αυτός ο συντελεστής χρησιμοποιείται για να ενισχύσει ή να μειώσει την επίδραση του σφάλματος στη δράση ελέγχου. Η είσοδος ελέγχου αποστέλλεται στο τιμόνι, όπου ρυθμίζεται η μέση ταχύτητα του ρομπότ.
    Πώς να προσαρμόσετε τον παράγοντα αναλογικότητας; Επιλέξτε τις τιμές πειραματικά για τη διαδρομή της τροχιάς μπορεί να είναι, για παράδειγμα, από 0,2 έως 1,5, ανάλογα με την ταχύτητα και το σχεδιασμό του ρομπότ. Εάν ο συντελεστής είναι πολύ μεγάλος, τότε το ρομπότ θα ταλαντεύεται πολύ εάν είναι μικρό, θα κινείται ομαλά, αλλά κάποια στιγμή θα γλιστρήσει όταν στρίβει λόγω ανεπαρκούς εισόδου ελέγχου. Ας γράψουμε δύο εκδόσεις του προγράμματος - με μεταβλητές (για όσους τις έχουν ήδη μελετήσει) και χωρίς.


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