Η διασύνδεση του ρομπότ Thymio με το αντίστοιχο sprite του στην οθόνη του υπολογιστή, ευκαιρία για πειραματισμούς (15η Δραστηριότητα)

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

Η ενασχόλησή μας με τους αισθητήρες του Thymio και τις ποικίλες εφαρμογές τους στην «Εκπαιδευτική Ρομποτική» θα γίνει, εφόσον, πρώτα εργαστούμε και κατανοήσουμε μέσα από πειραματισμό τη διασύνδεση των δύο «κόσμων» (που αναφέρονται στον τίτλο):

  • του κινητού-ρομπότ Thymio το οποίο κινείται εκτελώντας ένα πρόγραμμα μέσα σ’ ένα περιβάλλον με πραγματικά αντικείμενα (τραπέζι, δάπεδο, κεκλιμένο επίπεδο, επιφάνεια σφαίρας ή κυλίνδρου, μαύρες ή χρωματιστές πλαστικές λωρίδες κ.λ.π.). Από το ρομπότ μπορούμε να ζητάμε και να παίρνουμε πληροφορίες αναφορικά με την κατεύθυνσή του, την ταχύτητα των τροχών του καθώς και άλλων μεταβλητών που οι ίδιοι ορίζουμε. Επίσης, μπορούμε να παίρνουμε τιμές που αναφέρονται άμεσα στους αισθητήρες κ.α. όπως θα δούμε αναλυτικά παρακάτω.
  • του sprite που «ζει» στην οθόνη του υπολογιστή μας και αναπαριστάνει το ρομποτάκι Thymio καθώς και τις όποιες κινήσεις του. Επιπλέον, μπορούμε να ζητάμε και να παίρνουμε πληροφορίες αναφορικά με τη θέση του, την ταχύτητα του καθώς και άλλων μεταβλητών που οι ίδιοι ορίζουμε. Ο πλούτος των projects που είναι αναρτημένα στο Scratch website μπορεί να μας δώσει ιδέες και για την «Εκπαιδευτική Ρομποτική».

Με το «ενισχυμένο» περιβάλλον του «Scratch για το Thymio» εμπλουτίζεται κυρίως η επικοινωνία των χρηστών με το ρομποτάκι, συγκριτικά πάντα, με τα αυτόνομα περιβάλλοντα «Οπτικού Προγραμματισμού» και BLOCKLY. Τώρα, θα μπορούμε να χρησιμοποιούμε το ρομποτάκι για να στέλνουμε μηνύματα και εντολές στο sprite της οθόνης. Επίσης, θα αξιοποιούμε όλο το οπλοστάσιο του περιβάλλοντος του Scratch (το χρονόμετρο – timer, τις λίστες, τα blocks, το βίντεο, τις εντολές και λειτουργίες μαθηματικών, μηνυμάτων κ.λ.π.).

Σχήμα 1. Οι δύο «κόσμοι»: του ρομπότ και του αντίστοιχου sprite

Τώρα, ας δούμε τη διαδικασία που αναφέρεται στο sprite της οθόνης και συνδέει προγραμματιστικά το Thymio με το Scratch είτε με τη χρήση καλωδίου USB είτε ασύρματα με τη χρήση ενός USB adapter.  Ας την ονομάσουμε «διαδικασία σύνδεσης Scratch+Thymio».

Σχήμα 2. Κώδικας διασύνδεσης «Scratch+Thymio»

Από τον κώδικα αυτής της διαδικασίας (με επιλογή τα Ελληνικά) παρατηρούμε ότι το sprite τοποθετείται σε μια οποιαδήποτε θέση ως προς το «αόρατο» Καρτεσιανό σύστημα της οθόνης (εδώ, για παράδειγμα είναι (0,0)) και έχει κατεύθυνση προς τα πάνω δηλαδή έχει κατεύθυνση μηδέν.

Αμέσως, το sprite «μεταβιβάζει» στο ρομποτάκι Thymio τόσο την αρχική κατεύθυνση (direction) όσο και τις συντεταγμένες αρχικής θέσης του (0,0).

Στη συνέχεια το ρομποτάκι στέλνει τη κατεύθυνση και τη θέση του στο sprite οπότε  ανανεώνονται συνεχώς.

Τελικά,  στην οθόνη του υπολογιστή μας, παρατηρούμε συνεχώς αυτά που κάνει το ρομποτάκι-Thymio στον πραγματικό κόσμο. Με άλλα λόγια, βλέπουμε συνεχώς το sprite να «μιμείται» με, σχετική πάντα, ακρίβεια τη συμπεριφορά του ρομπότ-εδάφους.

(Ας σημειωθεί ότι χρειαστήκαμε μια εντολή και τρεις απλές λειτουργίες από τα blocks του «εμπλουτισμένου» Scratch)

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

Σημείωση: Όταν ασχολούμαι με ένα πείραμα ρομποτικής που απαιτεί και τη ενεργητική χρήση του ρομπότ-αντικειμένου (sprite) στην οθόνη, η παραπάνω διαδικασία διασύνδεσης Scratch+Thymio είναι τελείως απαραίτητη.

Σημείωση: Στον προγραμματισμό παίρνουμε υπόψη ότι οι τιμές ταχυτήτων των δύο κινητήρων βρίσκονται στην περιοχή (-200, 200) mm/s.

Στο ξεκίνημα του παραδείγματος σκέφτηκα να πειραματιστώ πραγματοποιώντας μόνο το πρώτο μέρος, σύμφωνα με την εκφώνηση, δηλαδή την κίνηση του ρομπότ με ταχύτητα 120 mm / s για ένα δευτερόλεπτο. Κι αυτό είναι πολύ απλό:

Σχήμα 3. Κώδικας λειτουργίας των δύο κινητήρων-τροχών του Thymio

Τοποθέτησα το ρομποτάκι σε μια θέση πάνω στο τραπέζι και προς μια κατεύθυνση. Από την πρώτη κιόλας δοκιμασία είδα το Thymio να κινείται ευθύγραμμα και το sprite στην οθόνη να μετακινείται προς τα πάνω μια απόσταση. Μόνο η παρακολούθηση δεν με ικανοποιούσε διόλου μια και μου δημιουργήθηκαν πολλά και … μικρά ερωτήματα ενός αρχάριου στη χρήση του Scratch με το Thymio.

  • Άραγε κατά πόσο είναι ευθύγραμμη η κίνηση του κινητού-ρομπότ;
  • Κατά πόσο είναι σταθερή η ταχύτητά του;
  • Πόση απόσταση σε εκατοστά κάλυψε το ρομποτάκι στο τραπέζι;
  • Πόσα pixels διάνυσε το sprite με όνομα Thymio-II στην οθόνη και ποια είναι η κατεύθυνση του;

Αυτά τα πρώτα ερωτήματα με οδήγησαν στον εμπλουτισμό του παραδείγματος με τα δύο ερωτήματα β) και γ).

Τώρα, σκέφτηκα ότι χρειάζομαι δύο λίστες στην οθόνη με ονόματα {κινητήρας 1} και {κινητήρας 2} που να αποθηκεύονται οι τιμές της ταχύτητας κάθε κινητήρα-τροχού του Thymio. Προφανώς θα πρέπει να φροντίζω ώστε οι λίστες να είναι κενές με το πάτημα του πλήκτρου space και στη συνέχεια να ανανεώνονται συνεχώς με νέες τιμές στη διάρκεια του ενός δευτερολέπτου κίνησης.

Επιπλέον χρειάζομαι τις λειτουργίες του Scratch οι οποίες μου δίνουν τις τιμές θέσης και προσανατολισμού του sprite της οθόνης (από την κατηγορία εντολών [κινήσεις]):

Τελικά, κατέληξα στον παρακάτω κώδικα του προγράμματος που συμπληρώνει την «διαδικασία διασύνδεσης «scratch+Thymio»:

Σχήμα 4: Κώδικας

Βασιζόμενος στα παραπάνω κατέληξα στο μικρό πρόγραμμα (project Scratch+Thymio) «εκπαιδευτικής ρομποτικής με το Thymio” (αρχείο 15_odometer_ex1.sb2).

Ένα στιγμιότυπο από μια σελίδα οθόνης του project:

Σχήμα 5: Σελίδα του αρχείου Scratch + Thymio 15_odometer_ex1.sb2

Διαπιστώνουμε ότι το sprite στην οθόνη κινείται ευθύγραμμα για χρόνο 1 sec και φτάνει στη θέση (0, 26). Επομένως, η ταχύτητα του είναι 26 pixels /1 s

άρα v = 26 pixels / s.

Επίσης, διαπιστώνουμε ότι το ρομποτάκι Thymio κινείται πάνω στο τραπέζι μου ευθύγραμμα με ταχύτητα που εύκολα υπολογίζεται: v = 125 mm / 1 s οπότε v = 12.5 cm/s περίπου.

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

Σχήμα 6: Σελίδα του αρχείου Scratch + Thymio 15_odometer_ex2.sb2

Τέλος, δίνουμε τον κώδικα του προγράμματος και μπορείτε να πειραματιστείτε οι ίδιοι.

Συνεχίζεται…………….Πολύ σύντομα και η επόμενη, 16η Δραστηριότητα, με τίτλο:

«Ας πειραματιστούμε με τους εννέα αισθητήρες του Thymio χρησιμοποιώντας τις βασικές εντολές angledistancetouching στο περιβάλλον «διασύνδεσης Thymio + Scratch»

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