Μάι 2 2016
Δραστηριότητες εξοικείωσης με τη ρομποτική και τον προγραμματισμό με το ρομποτάκι Thymio
Του Νίκου Δαπόντε, Φυσικού
Εισαγωγικό σημείωμα
Πληροφορήθηκα, τυχαία, την ύπαρξη του εκπαιδευτικού ρομπότ Thymio ii από τον επίσημο δικτυακό τόπο https://www.thymio.org/. Το “Thymio Project” γεννήθηκε στην Ελβετία σε ένα εργαστήριο της “Πολυτεχνικής Σχολής της Λωζάννης” πριν μερικά χρόνια (2008) και σήμερα (2016) υποστηρίζεται με ποικίλους τρόπους από διάφορους οργανισμούς και ιδρύματα ως ένα ρομπότ κατάλληλο για την λεγόμενη «εκπαιδευτική ρομποτική».
Η φιλοσοφία του project είναι εξ’ ολοκλήρου προσανατολισμένη στο πνεύμα του «Open Licenses” σε όλα (hardware, software, documentation)!
Από τον παραπάνω δικτυακό τόπο (με επιλογή γλώσσας: Αγγλικά, Γαλλικά, Γερμανικά, Ιταλικά, Ισπανικά, Γιαπωνέζικα) οδηγήθηκα σε μια σειρά από βίντεο τόσο της παρουσίασης του ρομπότ-Thymio όσο και ποικίλων εφαρμογών που πραγματοποίησαν εκπαιδευτικοί και μαθητές.
(ιδιαίτερα κατατοπιστικό είναι το βίντεο εισαγωγικής παρουσίασης του Thymio)
Όμως, εκείνο που μου προκάλεσε ιδιαίτερη εντύπωση ήταν το γεγονός ότι θα μπορούσε κανείς όχι μόνο να εξοικειωθεί με τις βασικές έννοιες και ιδέες της εκπαιδευτικής ρομποτικής αλλά και να προγραμματίζει το κινητό – ρομποτάκι σε τέσσερα προγραμματιστικά περιβάλλοντα:
Α) Visual Programming (Οπτικός Προγραμματισμός βασισμένος σε εικονίδια και στην ιδέα του ζεύγους EVENT (γεγονός) –> ACTION (Δράση))
B) Blockly Programming (Προγραμματισμός βασισμένος στο BLOCKLY της Google με άμεσο επηρεασμό από το Scratch)
Γ) Scratch Programming (Προγραμματισμός βασισμένος σε εμπλουτισμένο Scratch)
Δ) Text Programming (Προγραμματισμός σε γλώσσα κειμένου ASEBA για το Thymio)
(για περισσότερα βλέπε στο δικτυακό τόπο https://www.thymio.org/en:start καθώς και τα τέσσερα βίντεο παρουσίασης τόσο του Visual Programming όσο και του Text Programming στη σειρά:
https://www.youtube.com/watch?v=Qc6nL8twWSI Βασικές συμπεριφορές του Thymio
https://www.youtube.com/watch?v=dA-BW38kl6E Visual Programming του Thymio
https://www.youtube.com/watch?v=l2JRdcBNIdY Προχωρημένος Visual Programming του Thymio
https://www.youtube.com/watch?v=IpL5k78kXVI ) Text Programming του Thymio)
Πείστηκα, τελικά, ότι αξίζει τον κόπο να πειραματιστώ ο ίδιος τόσο με το Thymio όσο και με τα τέσσερα προγραμματιστικά περιβάλλοντα που το υποστηρίζουν. Έτσι, παρήγγειλα (από την εταιρεία διανομής στην Ελβετία μια και δεν το βρήκα σε κατάστημα στην Ελλάδα) δύο ρομποτάκια Thymio (το δεύτερο πρόσφατα μια και είναι ασύρματο-wireless) με τις έξι προ-προγραμματισμένες συμπεριφορές.
Πολύ γρήγορα, παίζοντας με το ρομποτάκι στο πάτωμα του σπιτιού μου ή σ’ ένα τραπέζι, εξοικειώθηκα τουλάχιστον με τις προτεινόμενες συμπεριφορές και τους αισθητήρες που κρύβονται πίσω από αυτές και στρώθηκα στη δουλειά του προγραμματισμού αυτού του μικρού ρομπότ-κινητού.
Τελικά, είχα την αίσθηση μιας υπόσχεσης για μετάβαση από το γνωστό slogan του Scratch Website
στο slogan του Thymio όπως παρουσιάζεται στην επίσημη ιστοσελίδα του αλλά με τη δική μου «κυκλική ακολουθία»:
Σκέφτομαι ότι μια πρώτη και καλή γνωριμία με τη ρομποτική και τον προγραμματισμό θα μπορούσε να επιτευχθεί μέσα από απλές δραστηριότητες, όπως για παράδειγμα:
- Πώς να «πιλοτάρω» το ρομπότ Thymio με τηλεχειριστήριο (Remote Control);
- Πώς να προγραμματίσω το Thymio ώστε να ακολουθεί μια μαύρη λωρίδα στο δάπεδο;
- Πώς να «πιλοτάρω» το ρομποτάκι με τα πέντε κουμπιά (μπροστά, πίσω, δεξιά, αριστερά και κέντρο) που διαθέτει πάνω του;
- Πώς να προγραμματίζω μουσικούς ήχους με τη χρήση των πέντε κουμπιών που διαθέτει το ρομποτάκι;
- Πώς να προγραμματίζω το Thymio σε διαφορετικά περιβάλλοντα προγραμματισμού ώστε να σχεδιάζω βασικά γεωμετρικά σχήματα;
- …
- …
- …
- …
- …
Πώς να πιλοτάρω το ρομπότ Thymio με τηλεχειριστήριο (Remote Control);
Πριν από μερικούς μήνες, μαζί με το πρώτο μου ρομποτάκι Thymio, προμηθεύτηκα και ένα μικρό τηλεχειριστήριο (με πρωτόκολλο επικοινωνίας RC5 που ανάπτυξε η γνωστή εταιρεία Philips) με σκοπό να πιλοτάρω από απόσταση το Thymio.
Βέβαια, γνώριζα ότι ο «Thymio» είναι ένα ρομπότ εφοδιασμένο όχι μόνο με μια σειρά από αισθητήρες – μεταξύ των οποίων και ένα πομπό-δέκτη υπέρυθρων ακτινοβολιών – αλλά συνοδεύεται και με ορισμένα προγραμματιστικά περιβάλλοντα, όπως «Text Programming» – Aseba και «BLOCKLY για το Thymio». Έτσι, θα μπορούσα ο ίδιος να προγραμματίζω τη συμπεριφορά του ρομπότ με τα πλήκτρα του τηλεχειριστήριου. Με άλλα λόγια, με το πάτημα κάθε πλήκτρου το robot θα αντιδρούσε αναλόγως.
Από την πρώτη στιγμή η επικοινωνία μου με αυτό το συμπαθητικό ρομπότ, κινητό με δύο τροχούς – κινητήρες και πολλούς αισθητήρες, άρχισε να αποκτά ιδιαίτερο ενδιαφέρον. Σκέφτηκα ότι «αυτή τη φορά δεν θα περιορίζομαι στην οθόνη του υπολογιστή προγραμματίζοντας τη συμπεριφορά ιδεατών αντικειμένων με τη βοήθεια των πλήκτρων ή του ποντικιού, όπως συμβαίνει με τον κλασικό προγραμματισμό».
Η διατύπωση του προβλήματος
Τώρα, η πρόκληση είναι μπροστά μου και το πρόβλημα διατυπώνεται συγκεκριμένα:
Πώς να προγραμματίσω ορισμένα πλήκτρα του τηλεχειριστήριου έτσι ώστε με το πάτημα τους να προκαλώ επιθυμητές αντιδράσεις του Thymio, όπως για παράδειγμα:
το ρομπότ
—- να προχωράει μπροστά / πίσω,
—- να σταματάει την κίνηση,
—- να στρίβει δεξιά / αριστερά,
—- να περιστρέφεται δεξιόστροφα / αριστερόστροφα ;
Ρίχνοντας μια ματιά στις εντολές του περιβάλλοντος προγραμματισμού BLOCKLY διαπίστωσα ότι στην κατηγορία Sensors του «Thymio Blockly interface» περιλαμβάνεται το block: received remote control < command > value όπως φαίνεται παρακάτω:
Τώρα, θα πρέπει να απαντηθεί το ερώτημα:
Ποιες τιμές αντιστοιχούν
i) στα πλήκτρα-βέλη του τηλεχειριστήριου;
«προχώρα μπροστά»
«προχώρα πίσω»
«στρίψε δεξιά»
«στρίψε αριστερά»
«σταμάτα»
ii) στα πλήκτρα με τους αριθμούς 1 και 3 που επιθυμώ να προκαλούν δικές μου επιλογές, όπως για παράδειγμα «δεξιόστροφη περιστροφή» και «αριστερόστροφη περιστροφή» αντίστοιχα;
Ευτυχώς, το περιβάλλον του «Text Programming» του Aseba Studio μας προσφέρει τη δυνατότητα να παρακολουθούμε τις «τρέχουσες τιμές» διαφόρων μεταβλητών και αισθητήρων του Thymio – όταν αυτός συνδέεται είτε μέσω καλωδίου USB με τον υπολογιστή μας είτε ασυρμάτως (wireless) – όπως μας δείχνει το παρακάτω στιγμιότυπο:
Έτσι, με το τηλεχειριστήριο στο χέρι, πατάω τα πλήκτρα για τα οποία θα ήθελα να μάθω τις τιμές τους (μεταβλητή rc5.command) και καταγράφω τις παρακάτω αντιστοιχίες:
«προχώρα μπροστά» –> 80
«προχώρα πίσω» –> 81
«στρίψε δεξιά» –> 85
«στρίψε αριστερά» –> 86
«σταμάτα» –> 87
κουμπί « 1 » –> 1
κουμπί « 3 » –> 3
Μετά από όλα αυτά τα αναγκαία προκαταρκτικά είμαι έτοιμος να προγραμματίσω το ρομπότ ώστε να υπακούει στις εντολές που θα του στέλνω από το τηλεχειριστήριο μου.
Ο Προγραμματισμός του Thymio στο περιβάλλον BLOCKLY
Το προγραμματιστικό περιβάλλον BLOCKLY εμπεριέχεται στην πλατφόρμα Aseba Studio του Thymio και την κατεβάζουμε δωρεάν από το επίσημο site.
Από την εμπειρία με το Scratch γνωρίζω πολύ καλά ότι για να προγραμματίσω, πρώτα απ’ όλα, οφείλω να διατυπώνω ρητά και συγκεκριμένα τι θέλω να γίνεται κατά την επικοινωνία [τηλεχειριστήριο-ρομπότ]
Σκέφτομαι τα γεγονότα (στο τηλεχειριστήριο) και τις δράσεις του Thymio
Αν πατήσω το πλήκτρο–βέλος «προχώρα μπροστά» [τηλεχειριστήριο]
ΤΟΤΕ
να ξεκινήσουν και οι δύο τροχοί με ίσες ταχύτητες (100) [ρομπότ Thymio]
διαφορετικά (else if) αν πατήσω το πλήκτρο-βέλος «πίσω»
ΤΟΤΕ
να ξεκινήσουν και οι τροχοί με ίσες ταχύτητες ( -100)
διαφορετικά (else if) αν πατήσω το πλήκτρο-βέλος «δεξιά»
ΤΟΤΕ
να στρίψει προς τα δεξιά: ο ένας τροχός με ταχύτητα 0 και ο άλλος 100
διαφορετικά (else if) αν πατήσω το πλήκτρο-βέλος «αριστερά»
ΤΟΤΕ
να στρίψει προς τα αριστερά: ο ένας τροχός με ταχύτητα 100 κι ο άλλος 0
διαφορετικά (else if) αν πατήσω το πλήκτρο STOP
ΤΟΤΕ
να σταματήσει: οι τροχοί έχουν μηδενική ταχύτητα
Μεταφράζω τις παραπάνω σκέψεις σε γλώσσα – κώδικα που καταλαβαίνει το Thymio στο προγραμματιστικό περιβάλλον BLOCKLY (αρχείο τύπου .aesl με όνομα remote_control3.aesl)
Με έκπληξη διαπιστώνει κανείς ότι καθώς προγραμματίζει το Remote Control χρησιμοποιώντας τα «τουβλάκια» του BLOCKLY, μπορεί ταυτόχρονα να συμβουλεύεται και την αυτόματη δημιουργία του κώδικα στο Text Programming του Thymio! (Aseba Studio) όπως στην παρακάτω εικόνα:
Μ’ αυτόν τον τρόπο συνειδητοποιώ τη διαφορά των εντολών turning right / left και spinning clockwise / counterclockwise.
Προσωπικά αισθάνθηκα πολύ πιο άνετα βλέποντας τη μετάφραση του κώδικα με τα blocks του BLOCKLY σε απλές εντολές γραμμένες σε «Text Programming» αλλά και να καταλαβαίνω καλύτερα το νόημα των εντολών. Μάλλον, ισχύει και εδώ ότι:
η «Πολλαπλότητα των Αναπαραστάσεων» και η μετάβαση από τη μία στην άλλη διευκολύνει τη διαδικασία της μάθησης!
Τι εξυπηρετεί η δραστηριότητα με το τηλεχειριστήριο;
- Πρώτα απ’ όλα προσφέρει μια πρώτη επαφή με το περιβάλλον προγραμματισμού BLOCKLY για το Thymio βασισμένη στο γνωστό Blockly της Google. Πρόκειται για πλατφόρμα ανοιχτού κώδικα που οικοδομήθηκε στη βάση της φιλοσοφίας του Scratch του ΜΙΤ και συνεπώς πολύ πιο κοντά στους μαθητές Δημοτικού και Γυμνασίου όσον αφορά τον προγραμματισμό ενός ρομπότ.
Για περισσότερα επισκεφτείτε τους παρακάτω δικτυακούς τόπους:
https://blockly-demo.appspot.com/static/demos/index.html μερικά απλά Blockly-demos
https://en.wikipedia.org/wiki/Blockly τι είναι το Blockly (στα Αγγλικά)
https://fr.wikipedia.org/wiki/Blockly τι είναι το Blockly (στα Γαλλικά)
https://blockly-games.appspot.com/?lang=el παιχνίδια με Blockly σε διάφορες γλώσσες (και στα Ελληνικά)
Απ’ όσο γνωρίζω υπάρχει το αντίστοιχο Blockly for Arduino και Blockly for Sphero (ή Spherly)
2. Στους μαθητές και στους ερασιτέχνες δίνεται μια πολύ καλή ευκαιρία να έρθουν σε επαφή με τον τρόπο προγραμματισμού ενός τηλεχειριστηρίου που ο ίδιος ή κάποιος από την οικογένεια του μπορεί να χρησιμοποιεί στο σπίτι (αλλαγή καναλιών τηλεόρασης, ρύθμιση έντασης ήχου στην τηλεόραση, άνοιγμα γκαραζόπορτας, ρύθμιση κλιματιστικού, άνοιγμα πόρτας του αυτοκινήτου κ.λ.π.).
3. Πρόκειται για δραστηριότητα που επιτρέπει όχι απλά και μόνο την επικοινωνία του χρήστη με το μικρό κινητό-ρομπότ αλλά και τον παρακινεί να επινοήσει δικές του δραστηριότητες αξιοποιώντας και τους άλλους αισθητήρες και παρελκόμενα που διαθέτει ο Thymio. Για παράδειγμα, θα μπορούσε:
3α. Να χρησιμοποιήσει χρωματιστούς μαρκαδόρους για να μπορεί να σχεδιάζει στο χαρτί τη διαδρομή του ρομπότ καθώς το πιλοτάρει με τη βοήθεια του τηλεχειριστήριου.
3β. Να προγραμματίσει τα κουμπιά του τηλεχειριστήριου ώστε να ανάβει/σβήνει τα λαμπάκια που διαθέτει ο Thymio και να παίζει με τα χρώματα.
3γ. Να προγραμματίσει τα κουμπιά του τηλεχειριστήριου έτσι ώστε να ακούγονται επιθυμητοί ήχοι από το μεγαφωνάκι του Thymiο και να παίζει με τους ήχους.
Χρήσιμες διευθύνσεις στο διαδίκτυο
- https://en.wikipedia.org/wiki/Remote_control Μια πρώτη γεύση για το τι είναι «τηλεχειριστήριο» (Remote control), στα Αγγλικά, από τη Wikipedia
- https://fr.wikipedia.org/wiki/T%C3%A9l%C3%A9commande Ενδιαφέρον είναι και το αντίστοιχο άρθρο στα Γαλλικά (télécommande)
- https://www.thymio.org/en:thymioirremote Universal τηλεχειριστήρια που προτείνονται για το πιλοτάρισμα του ρομπότ από τον επίσημο δικτυακό τόπο του Thymio
- http://www.skroutz.gr/c/291/tilexeiristiria.html?keyphrase=universal+remote+control Αν σας ενδιαφέρει να αγοράσετε ένα Universal τηλεχειριστήριο ώστε να «πιλοτάρετε» εκτός από άλλες συσκευές του σπιτιού σας και το Thymio
- https://fr.wikipedia.org/wiki/Portail:Robotique Μια ενδιαφέρουσα θεματική συλλογή αναφορικά με τη ρομποτική (στα Γαλλικά)
- https://en.wikipedia.org/wiki/Portal:Robotics Ένα θεματικό portal για την ρομποτική (στα Αγγλικά)
- http://makolas.blogspot.gr/2013/12/mitch-resnick.html Mitch Resnick: Ο προγραμματισμός δεν αφορά μόνο ειδικούς υπολογιστών, είναι για όλους (βίντεο)
- http://makolas.blogspot.gr/2011/12/applets-scratch-xt.html Επινόηση δραστηριοτήτων «Πολλαπλών αναπαραστάσεων» με applets Scratch Κινηματικής: Το γράφημα (x , t)
Οπότε, αγαπητέ Νίκο,
Μας έδωσες ιδέες για την 1η δραστηριοτητα…
1. Πώς να «πιλοτάρω» το ρομπότ Thymio με τηλεχειριστήριο (Remote Control);
Να αναμένουμε κάτι για τη 2η; [Πώς να προγραμματίσω το Thymio ώστε να ακολουθεί μια μαύρη λωρίδα στο δάπεδο;]
Γιάννη,
σήμερα επέστρεψα στη βάση μου και μπορώ να απαντήσω στο σχόλιο σου. Σκέφτομαι να ακολουθήσει ο προγραμματισμός των πέντε κουμπιών του Thymio σε διαφορετικά περιβάλλοντα και στη συνέχεια το θέμα που λες.
Τα λέμε, Νίκος