Αξιοποίηση του επιταχυνσιομέτρου και των αισθητήρων εδάφους σε 3+1 προγραμματιστικά περιβάλλοντα

Tο κινητό ρομποτάκι, αρχικά κινείται οριζόντια, συνεχίζει σε κεκλιμένο επίπεδο και τελικά σταματάει. Αξιοποίηση του επιταχυνσιομέτρου και των αισθητήρων εδάφους σε 3+1 προγραμματιστικά περιβάλλοντα (21η Δραστηριότητα με το Thymio)

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

Α. Εισαγωγή 

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

Στην «21η Δραστηριότητα με το Thymio», θα αξιοποιήσουμε  δύο κατηγορίες από αυτούς:  το επιταχυνσιόμετρο (accelerometer) και τους δύο αισθητήρες εδάφους (ground proximity sensors), μαζί βέβαια με τους δύο τροχούς – κινητήρες που διαθέτει το ρομποτάκι μας (βλέπε ιδιαίτερα την 11η δραστηριότητα στο eduportal)

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

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

Είναι φανερό ότι θα πρέπει να «διδάξουμε» στο ρομποτάκι Thymio να αξιοποιήσει σωστά τους αισθητήρες του ώστε να …….αντιλαμβάνεται:

πότε βρίσκεται σε οριζόντιο επίπεδο,

πότε συναντάει ανηφόρα (κεκλιμένο επίπεδο) και

πότε «ανιχνεύει» το ….. κενό (στην άκρη του κόκκινου επιπέδου).

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

Β. Ο Προγραμματισμός του Thymio σε 3+1 περιβάλλοντα  

Σκοπός της «21ης δραστηριότητας με το Thymio» είναι ο προγραμματισμός του καθήκοντος με το κεκλιμένο επίπεδο και στα τρία  περιβάλλοντα που διαθέτουμε:

  • Οπτικός Προγραμματισμός (VPL)
  • BLOCKLY
  • Scratch (πειραματικό scratchX)

Γνωρίζουμε από προηγούμενες δραστηριότητες ότι ο κώδικας προγραμματισμού στα περιβάλλοντα VPL και BLOCKLY μεταφράζονται αυτόματα στη γλώσσα «Text Programming» για το Thymio οπότε μιλάμε για 3+1 περιβάλλοντα.

Στόχοι της δραστηριότητας είναι:

  • Η γνωριμία με το «επιταχυνσιόμετρο» της διασύνδεσης “Thymio-Scratchx” μέσα από πειραματισμό
  • Η εξοικείωση με τους «αισθητήρες εδάφους» (ground proximity sensors) μέσα από πρακτική εφαρμογή στον προγραμματισμό καθώς και με την αλλαγή των χρωμάτων που έχουν οι επιφάνειες
  • Η μετάβαση από το ένα περιβάλλον στο άλλο (VPL-BLOCKLY-SCRATCH)
  • Ο εμπλουτισμός της δραστηριότητας με ποικίλους τρόπους

Ας επαναδιατυπώσουμε το πρόβλημα πιο συγκεκριμένα έτσι ώστε να μας διευκολύνει στην οικοδόμηση του κώδικα.

  • Όποτε το κινητό ρομποτάκι κινείται σε (περίπου) οριζόντια επιφάνεια

τότε,

η τιμή του επιταχυνσιομέτρου είναι (περίπου) μηδέν και η ταχύτητα σταθερή

 

  • Όποτε το κινητό ρομποτάκι κινείται στην «ανηφόρα» του κεκλιμένου επιπέδου

τότε,

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

 

  • Όποτε το κινητό ρομποτάκι συναντήσει στην επιφάνεια μια μαύρη λωρίδα ή …κενό

τότε,

το ρομποτάκι ακινητοποιείται (ταχύτητα μηδενική) εκεί που βρίσκεται.

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

B.1a) Ο κώδικας στον «Οπτικό προγραμματισμό» (VPL) για το ρομποτάκι Thymio

Θα δουλέψουμε στον “προχωρημένο προγραμματισμό” (Advanced Mode) εφόσον επιθυμούμε να πειραματιστούμε τόσο με την κλίση κεκλιμένου επιπέδου όσο και με τα χρώματα των επιφανειών όπου κινείται το ρομποτάκι.

Θυμίζουμε ότι, το εικονίδιο του επιταχυνσιόμετρου/κλίσης (μπρος-πίσω) ανήκει στην κατηγορία των γεγονότων (events) και προκύπτει από το κουμπί <tap ditection/tilt> κάνοντας κλικ στο τρίτο γκρι κυκλάκι:

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

Τελικά, χρειαστήκαμε μόνο 3 γραμμές για να διαμορφώσουμε ένα απλούστατο πρόγραμμα  στο περιβάλλον του Οπτικού Προγραμματισμού (VPL):

Ο κώδικας σε «Text Programming» όπως αντιστοιχεί στο πιο πάνω VPL

Ο εμπλουτισμός μπορεί να γίνει με κάποιες προσθήκες στο παραπάνω μικρό πρόγραμμα:

α) προσθέτοντας φώς διαφορετικών χρωμάτων και ήχους σε κάθε μια από τις τρεις γραμμές του προγράμματος.

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

B.1b) Ο κώδικας σε BLOCKLY για το ρομποτάκι Thymio

Τώρα είναι πιο εύκολη η οικοδόμηση του κώδικα που επιτελεί το ίδιο καθήκον στο προγραμματιστικό περιβάλλον BLOCKLY.  Χρησιμοποιούμε τα ορίσματα της επιτάχυνσης του κινητού ρομπότ στον άξονα-y με τιμή μικρότερης του 1 για την κίνηση στα (περίπου) οριζόντια επίπεδα και μεγαλύτερης του 3 για το ανέβασμα στο κεκλιμένο επίπεδο.

Οι τιμές προέκυψαν μετά από πειραματισμό λαμβάνοντας υπόψη ότι η ταχύτητα του ρομπότ δεν μπορεί να είναι μεγάλη μια και οφείλει να σταματάει μόλις φτάνει στην άκρη του επιπέδου. Τελικά, έχουμε ταχύτητα 200 mm / s για την κίνηση στα οριζόντια επίπεδα και 500 mm / s για το κεκλιμένο επίπεδο όπως φαίνεται και στο παρακάτω «Text Programming».

B.1c) Ο κώδικας στο περιβάλλον διασύνδεσης “ThymioSCRATCHX

Όπως ανακοίνωσε, πριν από λίγο καιρό, ο επίσημος δικτυακός τόπους του Thymio, ένα πολύ νέο περιβάλλον διασύνδεσης με το Thymio (ScratchX Extensions) βρίσκεται σε πειραματική μορφή (https://aseba-community.github.io/thymio-scratchx/index-en.html). Παρόλα αυτά το φόρτωσα στον υπολογιστή μου και ξεκίνησα να το χρησιμοποιώ για πρώτη φορά. Πρόκειται για ένα ιδιαίτερα πλούσιο σε προγραμματιστικές δυνατότητες περιβάλλον, όπως μπορείτε να το διαπιστώσετε στην παραπάνω διεύθυνση, ρίχνοντας μια και μόνο ματιά στο σύνολο των εντολών και λειτουργιών διασύνδεσης που χρησιμοποιεί.

Μια από αυτές είναι και το επιταχυνσιόμετρο το οποίο, ας σημειωθεί, δεν λειτουργούσε στην προηγούμενη έκδοση που ήδη γνωρίσαμε παλιότερα (βλέπε τις δραστηριότητες 14η, 15η …19η  που αναρτήσαμε στο eduportal  https://www.eduportal.gr/el/ ).

Μια πρώτη εξοικείωση με το επιταχυνσιόμετρο του SCRATCHX

Η εντολή που εδώ μας ενδιαφέρει μπορεί να παρουσιαστεί ως:

  • Κλίση < μπροστάπίσω > (tilt on < front-back >
  • Κλίση < πάνωκάτω >  (tilt on < top-bottom >
  • Κλίση < αριστερά-δεξιά > (tilt on < left-right >

όπως στο σχήμα:

Στη συγκεκριμένη περίπτωση χρησιμοποιούμε την Κλίση < μπροστά-πίσω > με τιμές που βρίσκουμε με πειραματισμό και εμφανίζονται στον παρακάτω κώδικα:

Τέλος, για το σταμάτημα του ρομπότ μόλις αυτό «αντιληφθεί» το ΚΕΝΟ ή μια μαύρη λωρίδα, χρησιμοποιήσαμε και τη λειτουργία ground sensor < 0 ή 1 >  με το 0 και το 1 αναφέρονται στους δύο αισθητήρες εδάφους  (0 για τον αριστερό και 1 για το δεξιό) που διαθέτει το Thymio.

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

Share Button