Το ρομποτάκι Thymio κινείται πάνω σε χρωματιστά χαρτόνια και σε διάφορες πίστες με λωρίδες (25η Δραστηριότητα, VPL, BLOCKLY και ScratchΧ)

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

Α. Εισαγωγή 

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

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

Το ΠΡΟΒΛΗΜΑ

«Πάνω στο τραπέζι έχουμε βάλει ένα λευκό χαρτόνι και πάνω σ’ αυτό έχουμε τοποθετήσει τρεις ορθογώνιες επιφάνειες διαφορετικών χρωμάτων (κόκκινο, μαύρο, πράσινο) όπως στο σχήμα.

Πώς να προγραμματίσουμε το ρομποτάκι έτσι ώστε:

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

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

Μου ήρθε η ιδέα να κάνω μια προσομοίωση, στο οικείο ψηφιακό περιβάλλον του Scratch, για να δω τι συμβαίνει προτού καταπιαστώ με το πραγματικό ρομποτάκι. Γι αυτό το σκοπό, βασίστηκα στο project που λίγο καιρό πριν ανάρτησα https://scratch.mit.edu/projects/180649555/ με θέμα την «παγίδευση ενός εικονικού ρομπότ σε μια επιφάνεια».

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

Οι τρεις πρώτες εντολές απόφασης { IF ….. THEN } αναφέρονται στην κίνηση του εικονικού ρομπότ {κινήσου <απόσταση>} στις αντίστοιχες περιπτώσεις των χρωματιστών περιοχών (κόκκινο, μαύρο, πράσινο). Όσο για την τέταρτη εντολή απόφασης, όπου ο αισθητήρας αγγίζει το λευκό, έχουμε αλλαγή κατεύθυνσης του ρομπότ με την εντολή:

{στρίψε προς την κατεύθυνση < – τρέχουσα κατεύθυνση > }.

(Το project – test αναρτήθηκε στη διεύθυνση  https://scratch.mit.edu/projects/194141685/ )

Συμπέρασμα: Ο πειραματισμός με το εικονικό ρομπότ στην οθόνη μπορεί να μας δίνει ιδέες για δραστηριότητες χωρίς αυτό να σημαίνει ότι εξασφαλίζουμε και τον προγραμματισμό του πραγματικού ρομπότ εδάφους. Το καθένα από τα περιβάλλοντα, το εικονικό και το πραγματικό, έχουν τη …γοητεία τους.

Β. Ας πειραματιστούμε με τις τιμές των  δύο «αισθητήρων εδάφους»

Ο καλύτερος τρόπος για την κατανόηση τόσο της λειτουργίας αυτών των αισθητήρων όσο και των διαθέσιμων εντολών και λειτουργιών τους δεν είναι άλλος από τον πειραματισμό (βλέπε την 24η Δραστηριότητα στο eduportal)

Υπενθυμίζουμε ότι, οι «αισθητήρες εδάφους» μας χρησιμεύουν για την εύρεση των τιμών τους όταν το ρομποτάκι ακουμπάει σε μια χρωματιστή επιφάνεια ή ανυψώνεται πάνω από αυτήν οπότε και οι τιμές αλλάζουν. Το ίδιο επιτυγχάνεται με χρωματιστές λωρίδες όταν αυτές πλησιάζουν κοντά τους, οπότε μπορούμε να τους αξιοποιήσουμε κατά προσέγγιση και ως «Αισθητήρες Χρωμάτων». Οι τιμές των αισθητήρων εδάφους κυμαίνονται μεταξύ 0 και1000.

Σημείωση: Διακρίνουμε δύο περιπτώσεις

Αν χρησιμοποιώ το περιβάλλον διασύνδεσης «Thymio+Scratch» τότε έχουμε πρόσβαση στις τιμές αυτές με τη βοήθεια συγκεκριμένων εντολών και λειτουργιών (βλέπε https://www.eduportal.gr/thymio-23/).

Αν χρησιμοποιώ το περιβάλλον ASEBA (VPL, Text Programming, BLOCKLY) τότε για τις τιμές που κάθε φορά μας ενδιαφέρουν μπορούμε να τις «βλέπουμε» ταυτόχρονα με τον προγραμματισμό (βλέπε προηγούμενη δραστηριότητα https://www.eduportal.gr/thymio-24/ )

Εφαρμογή 1: Πώς το ρομπότ εδάφους μπορεί να διακρίνει τις ανοιχτόχρωμες λωρίδες από τις σκουρόχρωμες, σε τρία προγραμματιστικά περιβάλλοντα);

Η ανίχνευση ενός χρώματος μιας επιφάνειας γίνεται προσεγγιστικά με τη βοήθεια του ενός από τους δύο αισθητήρες που διαθέτει το ρομπότ Thymio. Σ’ αυτήν την εφαρμογή περιοριζόμαστε, γενικά, στις σκουρόχρωμες κα ανοιχτόχρωμες επιφάνειες. Θέλουμε να φτιάξουμε μια διαδικασία (και στα τρία περιβάλλοντα προγραμματισμού του Thymio: Visual Programming (VPL), BLOCKLY και ScratchX) με τη βοήθεια της οποίας το ρομπότ θα μπορεί να διακρίνει τις δύο επιφάνειες που αναφέρθηκαν παραπάνω.

1.1 Ο κώδικας Προγραμματισμού στο ScratchX

Γνωρίζουμε ότι:

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

Σκέφτομαι τι θα ήθελα:

Το ρομπότ να κινείται με σταθερή ταχύτητα και στη σκουρόχρωμη ενώ σε οποιαδήποτε άλλη περίπτωση να παραμένει ακίνητο.

………..και το μεταφράζω στη γλώσσα του Scratch:

Οι τιμές των μεταβλητών  < Τ1 > = 0 και < Τ2 > = 400 είναι τα όρια των τιμών που ανιχνεύει ο αριστερός αισθητήρας για τις σκουρόχρωμες επιφάνειες. Ο έλεγχος μπορεί να γίνει εύκολα χρησιμοποιώντας χάρτινες λωρίδες με χρώματα όπως μαύρο, μπεζ κ.α που καλύπτουν, ως ένα βαθμό, το φάσμα (0-à 400).

Από την άλλη, μπορούμε να ρυθμίζουμε τόσο τις τιμές των < Τ1 > και < Τ2 > όσο και της ταχύτητας του ρομπότ, με τα αντίστοιχα sliders.

Γεννιέται το ερώτημα: Πώς να φτιάξω μια διαδικασία που να αφορά τις ανοιχτόχρωμες επιφάνειες;

Η διαδικασία είναι ακριβώς η ίδια με μόνη διαφορά τις τιμές των ορίων: τώρα οι τιμές τους είναι 450 και 950 αντίστοιχα.

Στο διάγραμμα απεικονίζονται τα όρια τιμών για τις δύο περιπτώσεις: σκουρόχρωμες και ανοιχτόχρωμες επιφάνειες.

1.2 Ο κώδικας Προγραμματισμού στο BLOCKLY

Τώρα, εύκολα μεταφράζουμε τον προηγούμενο κώδικα, στη γλώσσα BLOCKLY:

1.3 Ο κώδικας στον «Οπτικό Προγραμματισμό VPL»

Σκέφτομαι σύμφωνα με τα παραπάνω και… τα μεταφράζω στη γλώσσα του VPL:

 

1.4 Ο κώδικας στον «Text Programming»

Εδώ, ο κώδικας δημιουργείται….. αυτόματα από το περιβάλλον ASEBA του Thymio. Με διευκολύνει πάρα πολύ μια και μεταφράζει σε αριθμητικές τιμές που αντιστοιχούν στα sliders ή εικονίδια που διαμορφώνω στο VPL.

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

Εφαρμογή 2: Πώς το ρομπότ εδάφους, μπορεί να διακρίνει χρωματιστές λωρίδες, σε διάφορα προγραμματιστικά περιβάλλοντα;

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

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

 

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

Για παράδειγμα, σύμφωνα με την εφαρμογή 1, η διαδικασία ανίχνευσης μιας κόκκινης λωρίδας παίρνει την παρακάτω μορφή (άλλαξα μόνο τα ονόματα των μεταβλητών για τα όρια) και ενεργοποιείται με το πάτημα του κεντρικού κουμπιού του Thymio:

 

Με τον ίδιο τρόπο μπορούμε να οικοδομούμε τις διαδικασίες και για άλλα χρώματα (δίνοντας τις αντίστοιχες τιμές στις μεταβλητές < όριο_1 > και < όριο_2 >).

Στην περίπτωση των τεσσάρων χρωμάτων σε λευκή επιφάνεια φτιάξαμε ένα project στο οποίο χρησιμοποιούμε τη δυνατότητα δημιουργίας μιας νέας εντολής με εισόδους τις μεταβλητές <όριο _1>,  <όριο _ 2> , <ταχύτητα> και την ονομάσαμε

ΧΡΩΜΑ όριο_1  όριο_2 ταχύτητα.

Με το πάτημα των κουμπιών του Thymio [μπροστά], [δεξιά], [πίσω], [αριστερά] ανιχνεύουμε τα χρώματα μαύρο, μπεζ, πράσινο και κόκκινο. Έτσι, το κινητό αποκτάει μια σταθερή ταχύτητα διαφορετικά ακινητοποιείται.

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

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

Εφαρμογή 3: Πώς το ρομπότ εδάφους, μπορεί  να ακολουθεί μια ευθύγραμμη διαδρομή που αποτελείται από  χρωματιστές λωρίδες με διαφορετικές ταχύτητες σε καθεμιά απ’ αυτές;

 

Πάνω σε μια λευκή επιφάνεια θέτουμε λωρίδες με τρία διαφορετικά χρώματα, τη μια μετά την άλλη, ώστε να σχηματίζουν μια ευθύγραμμη διαδρομή όπως αυτή του project στο Scratch. Σκέφτομαι ότι θα διευκολύνει τον προγραμματισμό αν τα χρώματα των λωρίδων να ξεκινάνε από τα σκουρόχρωμα και να τελειώνουν με ένα χρώμα πριν από το λευκό.

3.1. Ο κώδικας προγραμματισμού στο BLOCKLY

Text Programming

 3.2. Ο κώδικας προγραμματισμού στο ScratchX

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

Share Button