Ας πειραματιστούμε με το ρομποτάκι Thymio και ένα πορτατίφ. Πώς να «πιλοτάρω» το Thymio με ένα …. φακό!

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

1. Εισαγωγή  

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

Στο ξεκίνημα παρατήρησα τις τιμές που παίρνουν οι δύο αισθητήρες εδάφους (ground sensors) (0) και (1) με το φωτισμό του δωματίου και το πορτατίφ σβηστό. Οι τιμές τους φαίνονται στον παρακάτω ΠΙΝΑΚΑ τιμών (ας σημειωθεί ότι αυτές οι τιμές βρίσκονται συνεχώς στη διάθεσή μας όταν δουλεύουμε στο περιβάλλον του Thymio, βλέπε Σημείωση 1).

Παρατηρούμε ότι:

Η ακτινοβολία του περιβάλλοντος, prox.ground.ambiant (με τιμή 0 – καθόλου φως και 1023 μέγιστο) είναι πάρα πολύ μικρή, ο αριστερός (0)—4 και ο δεξιός (1) —-5.

Η ανακλώμενη ακτινοβολία prox.ground.reflected (με τιμή 0 όταν δεν υπάρχει ανάκλαση και τιμή 1023 να είναι μέγιστη) είναι αρκετά μεγάλη, ο (0) —835 και ο (1) –940.

Από αυτές τις τιμές προκύπτει ότι, οι τιμές prox.ground.delta, που χρησιμοποιούμε στον προγραμματισμό του Thymio είναι:

prox.ground.delta = prox.ground.reflected – prox.ground.ambiant

δηλαδή (0) — 831 και (1) —- 935.

Στη συνέχεια, ανάβω το πορτατίφ και παρατηρώ ότι η ακτινοβολία περιβάλλοντος είναι πολύ μεγάλη ενώ η prox.ground.delta είναι πολύ μικρή όπως φαίνεται στον παρακάτω πίνακα τιμών.

Το πιο σημαντικό συμπέρασμα, που εδώ μας ενδιαφέρει, διατυπώνεται ως εξής:

«Όσο πιο μακριά από το πορτατίφ τοποθετείται το ρομποτάκι, τόσο πιο πολύ μεγαλώνουν οι τιμές του prox.ground.delta»

Μετά από αυτό οδηγήθηκα στη σκέψη:

2. Απλά πειράματα με το πορτατίφ και το Thymio

Θα χρειαστούμε ένα απλό πορτατίφ και το ρομποτάκι μας. Επιπλέον, θα πρέπει να επιλέξουμε το προγραμματιστικό περιβάλλον που επιθυμούμε να δουλέψουμε (Οπτικό Προγραμματισμό (VPL), BLOCKLY, SCRATCHX και Text Programming).

2.1α. Ας ξεκινήσουμε με το προχωρημένο VPL μια και αποτελεί απλή περίπτωση και ας διατυπώσουμε το πρόβλημα για τον πειραματισμό μας:

«Πώς να προγραμματίσω, το αρχικά ακίνητο ρομποτάκι και με όλα τα φώτα σβηστά, έτσι ώστε μόλις ανάψω το πορτατίφ να κινείται πέρα δώθε και μόλις το χτυπήσω, στο πάνω μέρος του, να σταματάει;»

Μετά από δοκιμές κατέληξα στο παρακάτω πρόγραμμα σε VPL και την … αυτόματη μετάφρασή του σε Text Programming  οπότε μπορούμε να δούμε ορισμένες αριθμητικές τιμές, όπως της ταχύτητας του ρομπότ καθώς και τους «κώδικες των χρωμάτων»:

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

 

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

        < Γεγονότα ή Συμβάντα > ———- < Δράσεις ή Ενέργειες >

είναι απλούστατος και επιτρέπει τον πειραματισμό:

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

Α)  να μετακινείται αργά – αργά το πορτατίφ

Β) να κινείται το ρομποτάκι σε διαφορετικές αποστάσεις από το πορτατίφ όπως και σε διαφορετικές κατευθύνσεις

Γ) να μετριέται η απόσταση που διανύει το ρομπότ για διαφορετικές θέσεις του πορτατίφ κ.α.

2.2. Ας δοκιμάσουμε την επίδραση του φωτός, από ένα πορτατίφ, στο ρομποτάκι με προγραμματισμό στο BLOCKLY

Πρώτη περίπτωση 

Τι θέλουμε:

  • ΑΝ ο αριστερός αισθητήρας έχει τιμή μικρότερη των 123 μονάδων

ΤΟΤΕ,

το ρομποτάκι εδάφους να κινείται μπροστά με ταχύτητα 100 mm / s

  • ΑΝ ο αριστερός αισθητήρας έχει τιμή μεγαλύτερη των 700 μονάδων

ΤΟΤΕ,

το ρομποτάκι οπισθοχωρεί με ταχύτητα 100 mm / s

  • ΑΝ χτυπήσω το πάνω μέρος του Thymio,

TOTE,

το ρομποτάκι σταματάει.

Μεταφράζοντας αυτές τις σκέψεις οδηγούμαστε στις παρακάτω διαδικασίες:

Δεύτερη περίπτωση 

Τι θέλουμε:

Α) Το ρομποτάκι να ξεκινάει μόλις πατήσω το κουμπί του πορτατίφ

Β) Πλησιάζοντας το χέρι μας στο μπροστινό μέρος του ρομπότ, αυτό να οπισθοχωρεί

Γ) Ανεβάζοντας πιο ψηλά το χέρι μου, το ρομποτάκι κινείται μπροστά.

3. Οι πρώτες δοκιμές για να «πιλοτάρω» το ρομπότ με ένα φακό.

Δοκίμασα να προγραμματίσω το Thymio να κινείται ή να στρίβει χρησιμοποιώντας  ένα φακό που φώτιζε πολύ κοντά τους αισθητήρες εδάφους στο περιβάλλον «Οπτικού Προγραμματισμού», αλλά απέτυχα. Προτού μεταβώ στο ScratchX για δοκιμές μου ήρθε η ιδέα να προσπαθήσω με το Text Programming (γλώσσα ASEBA) αλλά αυτή τη φορά να αξιοποιήσω την λειτουργία prox.ground.ambiant αντί της συνηθισμένης και γνωστής μας στα άλλα περιβάλλοντα prox.ground.delta.

Αποφάσισα να ξεκινήσω με το φως του λαμπτήρα στο δωμάτιο που δούλευα και διατύπωσα το τι θέλω:

«Καθώς με πλησιάζει το ρομποτάκι με μια ταχύτητα ΤΟΤΕ, οπισθοχωρεί αν σκοπεύσουμε με το φακό μας τον αισθητήρα (0)»

Αυτό το καταφέρνουμε αν αξιοποιήσουμε τις τιμές prox.ground.ambiant για τον αισθητήρα (0) και μάλιστα με τιμές <= 2 για την κίνηση χωρίς το φακό και >= 3 για την οπισθοχώρηση του.  Σχετικά γρήγορα και εύκολα κατέληξα στο παρακάτω προγραμματάκι που ικανοποιεί αυτό που ήθελα να συμβαίνει.

Στη συνέχεια μου ήρθε η ιδέα να το προγραμματίσω έτσι ώστε να «πιλοτάρω» το ρομποτάκι Thymio, μετακινώντας προσεκτικά έναν … αναμμένο φακό σκοπεύοντας κατάλληλα τους αισθητήρες (0) ή (1)!

Κάτι τέτοιο επιτυγχάνεται αν φροντίσω τα εξής:

α) Το ρομποτάκι να κινείται μπροστά με ταχύτητα 100 mm / s  αν δεν ανάβει ο φακός

  1. b) Το ρομποτάκι να στρίβει δεξιά αν η φωτεινή δέσμη από τον φακό κατευθύνεται προς το αριστερό αισθητήρα (0)
  2. c) Το ρομποτάκι να στρίβει αριστερά αν η φωτεινή δέσμη από τον φακό κατευθύνεται προς το δεξιό αισθητήρα (0)
  3. d) Το ρομποτάκι να σταματάει αν το χτυπήσω ελαφρά στο πάνω μέρος.

Τελικά το πρόγραμμα διαμορφώνεται ως εξής:

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

4. Για όσους ενδιαφέρονται να πειραματιστούν με « φως και σκιές » στο SCRATCHX

Στο περιβάλλον SCRATCHX έχω την ευκολία να παρακολουθώ κάθε στιγμή τις τιμές των δύο αισθητήρων εδάφους, κι αυτό αποδεικνύεται χρήσιμο ιδιαίτερα όταν πειραματίζομαι με το Thymio. Βλέπε το μήνυμα στην οθόνη με τη λειτουργία:

Thymio: ground sensors {τιμή του (0), τιμή του (1)}.

4α) Ανάβω – σβήνω το πορτατίφ ή αλλάζω της τιμές αισθητήρα με το slider < α >

Φτιάχνω ένα απλό πρόγραμμα (μιας διαδικασίας) έτσι ώστε να ελέγχω την κίνηση του Thymio με τρεις τρόπους:

Ι) Με μεταβολή της τιμής του αισθητήρα (0) με το μεταβολέα (slider) < a >

  1. II) Με το να ανάβω ή να σβήνω το πορτατίφ που βρίσκεται κοντά στο ρομποτάκι

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

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

1. Μόνο με το φως του δωματίου, οι  τιμές των αισθητήρων είναι (820, 936) και ο μεταβολέαs (slider) a = 647. Αν ξεκινήσω με το πράσινο σημαιάκι, τότε, το ρομποτάκι κινείται μπροστά (ενεργοποιείται η εντολή move < 50 > ) μια και ισχύει τιμή (0) > α.

Καθώς κινείται, μεταβάλλω την τιμή του α έτσι ώστε να ισχύει τιμή (0) < α οπότε, το ρομποτάκι κινείται προς τα πίσω (ενεργοποιείται η εντολή move < -50 >).

Συμπέρασμα πρώτο:

Σύμφωνα με το παραπάνω πρόγραμμα, μπορώ να «πιλοτάρω» το ρομποτάκι μόνο μπροστά – πίσω αξιοποιώντας το μεταβολέα < α >.

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

Συμπέρασμα δεύτερο:

Μπορώ να «πιλοτάρω» τοThymio, κατά βούληση, με την κίνηση του χεριού μου και τις σκιές του, προκαλώντας κίνηση μπροστά ή πίσω.

4β) Οι ταχύτητες των κινητήρων παίρνουν τιμές οι οποίες εξαρτώνται από τις τιμές ενός  αισθητήρα 

Στην προηγούμενη δραστηριότητα χρησιμοποιήσαμε την εντολή move < 50 > και πετύχαμε την κίνηση έστω και με την ατέλεια της. Τώρα, θα αξιοποιήσουμε την εντολή motor all < ταχύτητα > με την ταχύτητα να παίρνει τις τιμές του ενός από τους δύο αισθητήρες, για παράδειγμα του αριστερού (ground sensor (0). Αυτό σημαίνει ότι η κίνηση μπορεί να «ρυθμίζεται» καθώς το ρομποτάκι απομακρύνεται ή πλησιάζει στο ακίνητο πορτατίφ. Με άλλα λόγια μπορούμε να πετύχουμε μια επιταχυνόμενη ή επιβραδυνόμενη κίνηση με κατάλληλη μεταβολή στις τιμές του αισθητήρα (0).

Μετά από αυτές τις σκέψεις κατέληξα στην απλή διαδικασία όπου η ταχύτητα του ρομπότ ισούται με το ¼ της τιμής του αισθητήρα (0):

Και με αυτό το πρόγραμμα είμαστε σε θέση να πειραματιστούμε είτε με το μεταβολέα < α > είτε με μετακίνηση του πορτατίφ….

Σημείωση: Υπενθυμίζουμε τα σχετικά με τις τιμές των αισθητήρων εδάφους από προηγούμενη ανάρτηση στο Eduportal


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