Δραστηριότητες Εκπαιδευτικής Ρομποτικής με τη χρήση των κουμπιών του Thymio και του τηλεκοντρόλ στο περιβάλλον BLOCKLY (1ο μέρος)

του Νίκου Δαπόντε

ΕΙΣΑΓΩΓΗ

Σε μια προσπάθεια να επινοηθούν παιχνίδια και πειραματικές δραστηριότητες εκπαιδευτικής ρομποτικής με τη χρήση των πέντε κουμπιών αφής που διαθέτει πάνω του το κινητό ρομποτάκιThymio και ενός τηλεκοντρόλ, έφτιαξα δοκιμαστικά εφτά μικρά προγράμματα στο περιβάλλον BLOCKLY για το Thymio (Thymio Blockly Standalone, https://developers.google.com/blockly/  )

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

Αυτό σημαίνει ότι δεν είχα ως αφετηρία μου την επίλυση συγκεκριμένου προβλήματος – καθήκοντος όπως, για παράδειγμα, να οικοδομήσω τον κώδικα ενός προγράμματος στο BLOCKLY αλλά ακριβώς το … αντίστροφο. Με άλλα λόγια σκέφτηκα να φτιάξω τις δικές μου προ-προγραμματισμένες συμπεριφορές του ρομπότ  αξιοποιώντας τη χρήση των κουμπιών αφής του Thymio και των κουμπιών του τηλεκοντρόλ. Τα εν λόγω προγράμματα είναι παρόμοια με αυτά που συνοδεύουν το ρομποτάκι (βλέπε τρεις αναρτήσεις μου στο Eduportal https://www.eduportal.gr/el/ με θέμα τις έξι προ-προγραμματισμένες συμπεριφορές του Thymio ).

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

ΤΑ 7 ΠΡΟΓΡΑΜΜΑΤΑ σχεδίασης και οδήγησης

Τα 7 προγράμματα που έφτιαξα σε γλώσσα BLOCKLY για το Thymio, τελικά,  επιχειρούν να απαντήσουν  σε τρία βασικά ερωτήματα:

Η οικοδόμησή τους περιλαμβάνει τόσο τις εντολές που αναφέρονται στα κουμπιά αφής και τα κουμπιά του τηλεκοντρόλ όσο και ορισμένους από τους αισθητήρες εγγύτητας και εδάφους. Τελικά, στα επτά προγράμματα σχεδίασης και οδήγησης χρησιμοποίησα εντολές, διαδικασίες και λειτουργίες, σχεδόν από όλες τις κατηγορίες blocks που μας διαθέτει το «BLOCKLY for Thymio», όπως παρακάτω:

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

1.Το πρώτο πρόγραμμα (BLOCKLY_buttons_turn1.aesl)

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

. Θέλω να προσδίδω μια ταχύτητα (speed) στο ρομποτάκι με το τηλεκοντρόλ. Για να το πετύχω, δεν έχω παρά να ορίσω από την αρχή κιόλας, μια μεταβλητή με όνομα <speed> και με τιμή, για παράδειγμα, 50 μονάδες με την εντολή του BLOCKLY {set <speed> to 50}. Αυτή η μεταβλητή μπορεί να αντιστοιχεί σε κάποιο «βαθμό δυσκολίας ενός καθήκοντος» με τη χρήση του συγκεκριμένου προγράμματος.

1β. Μόνο με το άγγιγμα (touched) των κουμπιών αφής (μπροστά, πίσω, δεξιά, αριστερά, κεντρικό) θα ήθελα να πραγματοποιούνται από το ρομποτάκι τα εξής:

1γ. Από την άλλη, με τα δύο κουμπιά (μπροστά, πίσω) του τηλεκοντρόλ θέλουμε να επιλέγουμε μεγαλύτερη ή μικρότερη ταχύτητα <speed> του κινητού μας. Έτσι, για την αύξηση της ταχύτητας, για παράδειγμα κατά 10 μονάδες, αγγίζουμε το κουμπί <μπροστά> και για την αντίστοιχη ελάττωση της το κουμπί <πίσω>. Γενικά, για τον προγραμματισμό των κουμπιών του τηλεκοντρόλ χρησιμοποιούμε τους αντίστοιχους κωδικούς, όπως στη φωτογραφία:

Ο κώδικας του δοκιμαστικού προγράμματος που διαμόρφωσα στο BLOCKLY, πριν από τις πειραματικές δοκιμές,  είχε τη μορφή:

Η εμπειρία με διάφορα καθήκοντα, στην πράξη, μας οδήγησε στη συμπλήρωση της διαδικασίας που αναφέρεται το τηλεκοντρόλ και αφορά την πρόσθεση μιας εντολής σταματήματος και απόδοσης τιμής (50) στη μεταβλητή <speed> :

Επιπλέον, σκέφτηκα να συμπεριλάβω στο πρόγραμμα, έναν εύκολο τρόπο που να μετράει το βαθμό επίτευξης ενός καθήκοντος. Και αυτός δεν είναι άλλος από τον προσδιορισμό μιας μεταβλητής με όνομα <time>, με την οποία μπορούμε να μετράμε το διαθέσιμο χρόνο. Μόλις τελειώνει αυτός, το πρόγραμμα σταματάει το ρομποτάκι και παίζει έναν ήχο. Εδώ, για παράδειγμα, η διαθέσιμη χρονική διάρκεια είναι 30000 ms ή 30 s δηλαδή 30 δευτερόλεπτα.

Ένα άλλο σημείο αφορά την έναρξη του πργράμματος μετά από τη φόρτωση του στο Thymio. Θεωρώ ότι είναι ενδιαφέρον  να ξεκινάει με ένα απλό χτύπημα στο πάνω μέρος του ρομπότ με την ενεργοποίηση του block {on shock detected} και να περιλαμβάνει τις αρχικές τιμές των μεταβλητών <speed> και <time>

Τελικά, το πρώτο πρόγραμμα σχεδίασης με τα κουμπιά αφής και το τηλεκοντρόλ, παίρνει μια πιο ολοκληρωμένη  μορφή. Παρακάτω δίνουμε και τις συνοπτικές οδηγίες χρήσης του BLOCKLY_buttons_turn1.aesl.

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

2.Το δεύτερο πρόγραμμα  (BLOCKLY_buttons_spin2.aesl)

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

[στρίψε δεξιά ή αριστερά] (turning right or left)

χρησιμοποιούμε την εντολή

[περιστρoφή δεξιά ή αριστερά] ( spinning clockwise or counterclockwise).

Το δεύτερο πρόγραμμα μάς επιτρέπει να σχεδιάζουμε με τα κουμπιά αφής και το τηλεκοντρόλ και έχει την ίδια ακριβώς δομή με το πρώτο:

3.Το τρίτο πρόγραμμα  (BLOCKLY_buttons_turn3.aesl)

Όμως, σ’ αυτήν την περίπτωση οφείλουμε να χρησιμοποιήσουμε πολλές και ξεχωριστές εντολές του τύπου:

Σημείωση  Εννοείται ότι και σ’ αυτό το πρόγραμμα, αν το κρίνουμε αναγκαίο για μια δραστηριότητα, θα μπορούσαμε να εισάγουμε τη μεταβλητή  <time> ως διάρκεια εκτέλεσης ενός καθήκοντος σχεδίασης ή οδήγησης. 

4.Το τέταρτο πρόγραμμα  (BLOCKLY_buttons_spin4.aesl)

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

turning right (touched) —à spinning clockwise (touched)

                    turning left (touched) —à spinning counterclockwise (touched)

Έτσι, δεν έχουμε δυνατότητα για στροφές δεξιά – αριστερά αλλά αντίστοιχες περιστροφές του ρομπότ  ως προς το μέσον του άξονα των δύο τροχών.

Αν θέλουμε εισάγουμε και εδώ τη μεταβλητή <time>, ακριβώς όπως στο τρίτο πρόγραμμα.

5.Το πέμπτο πρόγραμμα (BLOCKLY_telecontrol_1.aesl)

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

Με τα γνωστά κουμπιά του τηλεκοντρόλ <μπροστά> <πίσω> <δεξιά> <αριστερά> <στοπ> μπορούμε να οδηγήσουμε το Thymio, από απόσταση. Επίσης, με τα κουμπιά 1, 2 και 3 μπορούμε να επιλέγουμε την τιμή της ταχύτητας, για παράδειγμα, 100, 200 και 300 μονάδων. Εδώ, με το πάτημα του κουμπιού <δεξιά> ή <αριστερά> το ρομποτάκι περιστρέφεται, δεξιά ή αριστερά, γύρω από το ακίνητο κέντρο του άξονα των δύο τροχών.

Όλες αυτές οι απαιτήσεις ικανοποιούνται με το πέμπτο πρόγραμμα που ακολουθεί:

6. Το έκτο πρόγραμμα (BLOCKLY_telecontrol_2.aesl)

Στα πέντε προηγούμενα προγράμματα ασχοληθήκαμε, κυρίως, με τη σχεδίαση  κάνοντας χρήση των κουμπιών του Thymio και του τηλεκοντρόλ. Στη συνέχεια ήρθε και η ιδέα να εξετάσουμε και τις περιπτώσεις όπου «πιλοτάρουμε» το Thymio με το τηλεκοντρόλ – όπως προηγουμένως – έτσι ώστε να ακολουθεί μια διαδρομή, αποφεύγοντας τα εμπόδια που ανιχνεύονται με τρεις οριζόντιους μπροστινούς αισθητήρες: τον αριστερό (0), το δεξιό (4) καθώς και τον κεντρικό (2), όπως φαίνονται στο σχήμα.

Συγκεκριμένα, αν οι αισθητήρες (0), (2) και (4) ανιχνεύσουν ένα εμπόδιο, τότε, ακούγεται ένας ήχος και μια μεταβλητή <Ν> αυξάνει κατά μία μονάδα. Ειδικά για την περίπτωση του αισθητήρας (2) το ρομποτάκι οπισθοχωρεί. Από την άλλη, αν η τιμή της μεταβλητής ξεπεράσει μια τιμή Νmax, που εμείς μπορούμε να προσδιορίσουμε στον κώδικα (ανάλογα με την πίστα των εμποδίων), τότε, το ρομποτάκι σταματάει.  Αυτό σημαίνει ότι, «υπεύθυνος» για ένα πετυχημένο «πιλοτάρισμα» είναι ο χρήστης του τηλεκοντρόλ.

Σημείωση: Αν θέλει κάποιος μπορεί να συμπληρώσει τον κώδικα με μια μεταβλητή <Νmax> και να βρει τρόπο να τον αλλάζει.

Τελικά, το έκτο πρόγραμμα BLOCKLY_telecontrol_2 περιλαμβάνει τη διαδικασία με εντολές του τηλεκοντρόλ, όπως στο προηγούμενο (telecontrol_1) με μια μόνο βασική διαφορά: προσθέσαμε μια εντολή για το πάτημα του κουμπιού <GO> του τηλεκοντρόλ ώστε να αποδίδονται οι αρχικές τιμές στις μεταβλητές.

7. Το έβδομο πρόγραμμα BLOCKLY_telecontrol_3.aesl)

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

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

Συνεχίζεται με δραστηριότητες στο επόμενο………………………………………


Για περισσότερα…….