Πριν από μήνες αναρτήθηκε στην επίσημη σελίδα του Thymio μια δραστηριότητα (στα Γαλλικά) του Eric Schrafstetter https://www.thymio.org/creations-fr:initiation-aux-memoires με θέμα το σταμάτημα του κινητού – ρομπότ σε μια συγκεκριμένη διάβαση. Μ’ άρεσε η ιδέα του σταματήματος του κινητού στη δεύτερη διάβαση (όπως η δεύτερη μαύρη λωρίδα της φωτογραφίας) κάτι που σημαίνει πώς προγραμματιστικά, το θέμα, γενικεύοντάς το, παραπέμπει στη ιδέα «της απομνημόνευσης του αριθμού των λωρίδων που μπορεί να συναντάει τοThymio». Μετά από αυτό ανοίγεται και ένας δρόμος για την επινόηση δραστηριοτήτων τύπου «Barcode».
Χρησιμοποιώντας το BLOCKLY ως προγραμματιστικό περιβάλλον πειραματίστηκα με το πρόβλημα της αρίθμησης των λωρίδων. Σημείο αφετηρίας μας είναι η αναγνώριση ότι υπάρχει μια προβληματική κατάσταση και η …. περιέργειά μας να τη διερευνήσουμε με όσο γίνεται πιο συστηματικό τρόπο.
Τελικά, κατέληξα στην προτεινόμενη δραστηριότητα που έχει ως αντικείμενο το «να διδάξει το κινητό ρομποτάκι να μετράει τις μαύρες λωρίδες που συναντάει στη διαδρομή του» με την αξιοποίηση ενός τηλεκοντρόλ τύπου Universal ή αυτού που συνοδεύει το ρομποτάκι Thymio.
Β. Η δραστηριότητα στο περιβάλλον BLOCKLY
Η επίλυση του προβλήματος και η γραφή του κώδικα δεν έρχεται όλες τις φορές με αυτόματο τρόπο. Στην αρχή, για διερεύνηση, σκέφτηκα να ξεκινήσω από κάτι πολύ πιο απλό χωρίς να έχω καν στο μυαλό μου ότι θα χρειαστώ το τηλεκοντρόλ.
Πρώτη φάση επίλυσης και οικοδόμησης του προγράμματος.
Ας δούμε τη διατύπωση του απλού προβλήματος και τον κώδικα προγραμματισμού στο BLOCKLY.
Διαθέτω μόνο μία μαύρη λωρίδα σε λευκή επιφάνεια. Πώς να προγραμματίσω το κινητό ρομποτάκι έτσι ώστε:
a) να ξεκινάει με το κουμπί <μπροστά> του Thymio και
β) να σταματάει μόλις συναντήσει τη μαύρη λωρίδα η το σηκώσω ψηλά με το χέρι μου;
Το πρόβλημα απαιτεί τόσο τη χρήση του κουμπιού < μπροστά > όσο και των δύο αισθητήρων εδάφους (δεξιό και αριστερό) του Thymio.
Διατυπώνω, με τη μορφή if …… then, τη σκέψη μου:
Για το πρώτο χρησιμοποιούμε την εντολή:
On < buttonvalues > updated
και για το δεύτερο την ακόλουθη:
On < proximitysensors > updated
Τελικά, κατέληξα στον παρακάτω κώδικα, με το V να παριστάνει την ταχύτητα των τροχών:
Στον πρώτο πειραματισμό, εύκολα διαπίστωσα, ότι για τη λωρίδα πάχους περίπου 2 cm το ρομποτάκι σταματάει για ταχύτητες μικρότερες του 560 mm / s. Επίσης, διαπίστωσα ότι το Thymio σταματάει και από ποικίλες κατευθύνσεις κινούμενο και όχι υποχρεωτικά κάθετα στη λωρίδα. Βέβαια, η λωρίδα δεν είναι ανάγκη να είναι ορθογώνια αλλά να παίρνει διάφορες μορφές και τέλος μπορεί να αξιοποιηθεί, για ευκολία μας, μόνο ο ένας από τους δύο αισθητήρες εδάφους.
Δεύτερη φάση επίλυσης και οικοδόμησης του προγράμματος.
Επομένως, για να περάσουμε στη δεύτερη φάση της επίλυσης του προβλήματος, παίρνουμε υπόψη τα παραπάνω. Τελικά, η «πίστα» της κίνησης του ρομπότ που «μετράει τις μαύρες λωρίδες που συναντάει στη διαδρομή του» διαμορφώνεται όπως δείχνει η φωτογραφία:
Το πρόβλημα μπορεί να διατυπωθεί ως εξής:
Διαθέτω μια σειρά από επτά μαύρες λωρίδες, όπως στην φωτογραφία, σε λευκή επιφάνεια. Πώς να προγραμματίσω το κινητό ρομποτάκι έτσι ώστε:
a) να ξεκινάει με το κουμπί <μπροστά> του Thymio και
β) να σταματάει μόλις συναντήσει μια επιθυμητή (1η, 2η, . . .7η) μαύρη λωρίδα;
Η απάντηση στο α) είναι ίδια με αυτήν που γνωρίσαμε προηγουμένως. Όσον αφορά το σταμάτημα στην επιθυμητή λωρίδα μια λύση μπορεί να προκύψει με την ιδέα που εφαρμόζεται στο block On <proximitysensors> updated:
Ορίζω μια ΜΕΤΑΒΛΗΤΗ με όνομα < item > η οποία να «αυξάνει κατά ένα» μόλις το ρομποτάκι συναντάει την επόμενη μαύρη λωρίδα, Set <item> <item> + 1
Αν θέλουμε να σταματήσει, για παράδειγμα, στην 6η λωρίδα, τότε, έχουμε την εντολή
Αν <item> = 6, TOTE, σταμάτα (θέσε V = 0)
Αν θέλουμε να σταματήσει, για παράδειγμα, στην 3η λωρίδα, τότε, έχουμε την εντολή
Αν <item> = 3, TOTE, σταμάτα (θέσε V = 0)
Ο κώδικας του προγράμματος τόσο σε BLOCKLY όσο και σε Text Programming (της πλατφόρμας ASEBA που μοιάζει με τη γνωστή γλώσσα C++) παίρνει τη μορφή:
Σ’ αυτήν την προσέγγιση επιτυγχάνω, βέβαια, τη λύση στο πρόβλημα αλλά θα πρέπει κάθε φορά να μπαίνω στο BLOCKLY και να επιλέγω σε ποια λωρίδα θα ήθελα να σταματάει το κινητό μου. Προφανώς, μια τέτοια λύση δεν μας εξυπηρετεί οπότε σκέφτηκα τη χρήση του τηλεκοντρόλ!. Αν θέλω να σταματήσει στην 6η λωρίδα, τότε, πατώντας τον αριθμό 6 του τηλεκοντρόλ το ρομποτάκι ξεκινάει από τη θέση που βρίσκεται και σταματάει όταν ανιχνεύσει την 6η λωρίδα.
Τρίτη φάση επίλυσης και οικοδόμησης του προγράμματος
Τώρα ισχύουν οι προηγούμενες διαδικασίες που έφτιαξα και κάνω μία μόνο αλλαγή: δημιουργώ μια μεταβλητή με όνομα N που αναπαριστάνει τον αριθμό της θέσης της λωρίδας που με ενδιαφέρει. Έτσι, έχουμε την αρχική τιμή της ταχύτητας V του Thymio και την υπο-ρουτίνα σταματήματος (V=0) στην επιθυμητή μαύρη λωρίδα Ν.
Αυτό που απομένει είναι να δίνουμε με τα πλήκτρα του τηλεκοντρόλ την επιθυμητή τιμή του Ν οπότε χρειαζόμαστε την εντολή on < remotecontrolsignal > received.
Μια σειρά από εντολές τύπου if …….then μας εξυπηρετούν στην επιλογή του N με το πάτημα των κουμπιών 1, 2, 3….7. Βέβαια, χρειαζόμαστε και μια τελευταία εντολή σταματήματος του ρομπότ με το κουμπί < STOP > του τηλεκοντρόλ.
Ο τελικός κώδικας προγραμματισμού του τηλεκοντρόλ, για την επιλογή του Ν, ακολουθεί:
Ευχαριστώ πολύ το φίλο Παναγιώτη Ζάφειρα, καθηγητή Μαθηματικών στο Γυμνάσιο Σύρου, για τη βοήθεια του στη φωτογράφηση και στη βιντεοσκόπηση ορισμένων εφαρμογών.
Για περισσότερα………
www.thymio.org Το επίσημο siteαφιερωμένο στο κινητό – ρομποτάκι Thymio.
https://www.eduportal.gr/el/ Εδώ δημοσιεύτηκαν οι πρώτες 20 δραστηριότητες γνωριμίας με το κινητό – ρομποτάκι Thymio και τα προγραμματιστικά περιβάλλοντα (VPL, BLOCKLY και SCRATCH)
https://scratch.mit.edu/scratch2download/ Από εδώ κατεβάζεται την τελευταία έκδοση offline του Scratch (Αγγλικά)
https://www.eduportal.gr/programmatizo-to-rompotaki-thymio-oste-na-akolouthi-mia-mavri-lorida-sto-dapedo-3i-drastiriotita/ Προγραμματίζω το ρομποτάκι Thymio ώστε να ακολουθεί μια μαύρη λωρίδα στο δάπεδο (3η Δραστηριότητα)
https://wn.com/thymio_programming_using_blockly_in_aseba_studio Video για τον προγραμματισμό του Thymio με BLOCKLY (2015)
Χρησιμοποιούμε cookie για την εξατομίκευση περιεχομένου και διαφημίσεων, την παροχή λειτουργιών κοινωνικών μέσων και την ανάλυση της επισκεψιμότητάς μας. Αποδέχεστε το cookie; ΑποδοχήΠερισσότερα
Ιδιωτικότητα & Cookies
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are as essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
wpDiscuz
0
0
Θα θέλαμε να γνωρίζουμε την άποψή σας, παρακαλούμε αφήστε ένα σχόλιο!x
Αυγ 31 2017
Tο κινητό-ρομποτάκι Thymio μαθαίνει να μετράει τις μαύρες λωρίδες που συναντάει στο έδαφος (20η Δραστηριότητα με BLOCKLY)
του Νίκου Δαπόντε
Α. Εισαγωγή
Πριν από μήνες αναρτήθηκε στην επίσημη σελίδα του Thymio μια δραστηριότητα (στα Γαλλικά) του Eric Schrafstetter https://www.thymio.org/creations-fr:initiation-aux-memoires με θέμα το σταμάτημα του κινητού – ρομπότ σε μια συγκεκριμένη διάβαση. Μ’ άρεσε η ιδέα του σταματήματος του κινητού στη δεύτερη διάβαση (όπως η δεύτερη μαύρη λωρίδα της φωτογραφίας) κάτι που σημαίνει πώς προγραμματιστικά, το θέμα, γενικεύοντάς το, παραπέμπει στη ιδέα «της απομνημόνευσης του αριθμού των λωρίδων που μπορεί να συναντάει τοThymio». Μετά από αυτό ανοίγεται και ένας δρόμος για την επινόηση δραστηριοτήτων τύπου «Barcode».
Χρησιμοποιώντας το BLOCKLY ως προγραμματιστικό περιβάλλον πειραματίστηκα με το πρόβλημα της αρίθμησης των λωρίδων. Σημείο αφετηρίας μας είναι η αναγνώριση ότι υπάρχει μια προβληματική κατάσταση και η …. περιέργειά μας να τη διερευνήσουμε με όσο γίνεται πιο συστηματικό τρόπο.
Τελικά, κατέληξα στην προτεινόμενη δραστηριότητα που έχει ως αντικείμενο το «να διδάξει το κινητό ρομποτάκι να μετράει τις μαύρες λωρίδες που συναντάει στη διαδρομή του» με την αξιοποίηση ενός τηλεκοντρόλ τύπου Universal ή αυτού που συνοδεύει το ρομποτάκι Thymio.
Β. Η δραστηριότητα στο περιβάλλον BLOCKLY
Η επίλυση του προβλήματος και η γραφή του κώδικα δεν έρχεται όλες τις φορές με αυτόματο τρόπο. Στην αρχή, για διερεύνηση, σκέφτηκα να ξεκινήσω από κάτι πολύ πιο απλό χωρίς να έχω καν στο μυαλό μου ότι θα χρειαστώ το τηλεκοντρόλ.
Πρώτη φάση επίλυσης και οικοδόμησης του προγράμματος.
Ας δούμε τη διατύπωση του απλού προβλήματος και τον κώδικα προγραμματισμού στο BLOCKLY.
Διαθέτω μόνο μία μαύρη λωρίδα σε λευκή επιφάνεια. Πώς να προγραμματίσω το κινητό ρομποτάκι έτσι ώστε:
a) να ξεκινάει με το κουμπί <μπροστά> του Thymio και
β) να σταματάει μόλις συναντήσει τη μαύρη λωρίδα η το σηκώσω ψηλά με το χέρι μου;
Το πρόβλημα απαιτεί τόσο τη χρήση του κουμπιού < μπροστά > όσο και των δύο αισθητήρων εδάφους (δεξιό και αριστερό) του Thymio.
Διατυπώνω, με τη μορφή if …… then, τη σκέψη μου:
Για το πρώτο χρησιμοποιούμε την εντολή:
On < button values > updated
και για το δεύτερο την ακόλουθη:
On < proximity sensors > updated
Τελικά, κατέληξα στον παρακάτω κώδικα, με το V να παριστάνει την ταχύτητα των τροχών:
Στον πρώτο πειραματισμό, εύκολα διαπίστωσα, ότι για τη λωρίδα πάχους περίπου 2 cm το ρομποτάκι σταματάει για ταχύτητες μικρότερες του 560 mm / s. Επίσης, διαπίστωσα ότι το Thymio σταματάει και από ποικίλες κατευθύνσεις κινούμενο και όχι υποχρεωτικά κάθετα στη λωρίδα. Βέβαια, η λωρίδα δεν είναι ανάγκη να είναι ορθογώνια αλλά να παίρνει διάφορες μορφές και τέλος μπορεί να αξιοποιηθεί, για ευκολία μας, μόνο ο ένας από τους δύο αισθητήρες εδάφους.
Δεύτερη φάση επίλυσης και οικοδόμησης του προγράμματος.
Επομένως, για να περάσουμε στη δεύτερη φάση της επίλυσης του προβλήματος, παίρνουμε υπόψη τα παραπάνω. Τελικά, η «πίστα» της κίνησης του ρομπότ που «μετράει τις μαύρες λωρίδες που συναντάει στη διαδρομή του» διαμορφώνεται όπως δείχνει η φωτογραφία:
Το πρόβλημα μπορεί να διατυπωθεί ως εξής:
Διαθέτω μια σειρά από επτά μαύρες λωρίδες, όπως στην φωτογραφία, σε λευκή επιφάνεια. Πώς να προγραμματίσω το κινητό ρομποτάκι έτσι ώστε:
a) να ξεκινάει με το κουμπί <μπροστά> του Thymio και
β) να σταματάει μόλις συναντήσει μια επιθυμητή (1η, 2η, . . .7η) μαύρη λωρίδα;
Η απάντηση στο α) είναι ίδια με αυτήν που γνωρίσαμε προηγουμένως. Όσον αφορά το σταμάτημα στην επιθυμητή λωρίδα μια λύση μπορεί να προκύψει με την ιδέα που εφαρμόζεται στο block On <proximity sensors> updated:
Ορίζω μια ΜΕΤΑΒΛΗΤΗ με όνομα < item > η οποία να «αυξάνει κατά ένα» μόλις το ρομποτάκι συναντάει την επόμενη μαύρη λωρίδα, Set <item> <item> + 1
Αν θέλουμε να σταματήσει, για παράδειγμα, στην 6η λωρίδα, τότε, έχουμε την εντολή
Αν <item> = 6, TOTE, σταμάτα (θέσε V = 0)
Αν θέλουμε να σταματήσει, για παράδειγμα, στην 3η λωρίδα, τότε, έχουμε την εντολή
Αν <item> = 3, TOTE, σταμάτα (θέσε V = 0)
Ο κώδικας του προγράμματος τόσο σε BLOCKLY όσο και σε Text Programming (της πλατφόρμας ASEBA που μοιάζει με τη γνωστή γλώσσα C++) παίρνει τη μορφή:
Σ’ αυτήν την προσέγγιση επιτυγχάνω, βέβαια, τη λύση στο πρόβλημα αλλά θα πρέπει κάθε φορά να μπαίνω στο BLOCKLY και να επιλέγω σε ποια λωρίδα θα ήθελα να σταματάει το κινητό μου. Προφανώς, μια τέτοια λύση δεν μας εξυπηρετεί οπότε σκέφτηκα τη χρήση του τηλεκοντρόλ!. Αν θέλω να σταματήσει στην 6η λωρίδα, τότε, πατώντας τον αριθμό 6 του τηλεκοντρόλ το ρομποτάκι ξεκινάει από τη θέση που βρίσκεται και σταματάει όταν ανιχνεύσει την 6η λωρίδα.
Τρίτη φάση επίλυσης και οικοδόμησης του προγράμματος
Τώρα ισχύουν οι προηγούμενες διαδικασίες που έφτιαξα και κάνω μία μόνο αλλαγή: δημιουργώ μια μεταβλητή με όνομα N που αναπαριστάνει τον αριθμό της θέσης της λωρίδας που με ενδιαφέρει. Έτσι, έχουμε την αρχική τιμή της ταχύτητας V του Thymio και την υπο-ρουτίνα σταματήματος (V=0) στην επιθυμητή μαύρη λωρίδα Ν.
Αυτό που απομένει είναι να δίνουμε με τα πλήκτρα του τηλεκοντρόλ την επιθυμητή τιμή του Ν οπότε χρειαζόμαστε την εντολή on < remote control signal > received.
Μια σειρά από εντολές τύπου if …….then μας εξυπηρετούν στην επιλογή του N με το πάτημα των κουμπιών 1, 2, 3….7. Βέβαια, χρειαζόμαστε και μια τελευταία εντολή σταματήματος του ρομπότ με το κουμπί < STOP > του τηλεκοντρόλ.
Ο τελικός κώδικας προγραμματισμού του τηλεκοντρόλ, για την επιλογή του Ν, ακολουθεί:
Δύο φωτογραφίες …
και δύο βίντεο από τον πειραματισμό
https://youtu.be/qzuMqtjSiNg
https://youtu.be/lF59_HIknYI
Ευχαριστώ πολύ το φίλο Παναγιώτη Ζάφειρα, καθηγητή Μαθηματικών στο Γυμνάσιο Σύρου, για τη βοήθεια του στη φωτογράφηση και στη βιντεοσκόπηση ορισμένων εφαρμογών.
Για περισσότερα………
Κοινοποιήστε:
Σχετικά
By eduportal • Εκπαιδευτικό Λογισμικό • 0 • Tags: blocκly, thymio, Νίκος Δαπόντες, ρομποτική