Δύο «Πειράματα Εκπαιδευτικής Ρομποτικής»: Πώς το Thymio με δύο αισθητήρες «παγιδεύεται» σε μια γραμμή ή περιοχή; (23η Δραστηριότητα στο ScratchX)

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

Α. Εισαγωγή 

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

Στην 23η  Δραστηριότητα εφαρμογών προγραμματισμού του Thymio, θα μας απασχολήσουν αποκλειστικά συγκεκριμένα «Πειράματα Εκπαιδευτικής Ρομποτικής» με θέμα την «παγίδευση» του κινητού μέσα σε ποικίλες επιφάνειες διαφόρων σχημάτων και χρωμάτων.

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

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

Πρόκειται για απλές ενέργειες που θα μας βοηθήσουν να βρούμε οι ίδιοι τις τιμές των αισθητήρων ( 0 ) και ( 1 ) που αντιστοιχούν σε διάφορα χρώματα. Έτσι, οι ίδιοι οι αισθητήρες εδάφους μας «αποκαλύπτουν» συνεχώς τις τιμές τους, όταν το ρομποτάκι ακουμπάει σε μια χρωματιστή επιφάνεια ή ανυψώνεται πάνω από αυτήν. Βέβαια, το ίδιο επιτυγχάνεται όταν ένα χρωματιστό αντικείμενο πλησιάζει κοντά τους, οπότε στην πραγματικότητα είναι και «αισθητήρες χρωμάτων».

Πώς βρίσκουμε τις τιμές των αισθητήρων στο «Thymio+Scratchx»;

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

ground sensors   Αναφέρεται και στους δύο αισθητήρες

ground sensor ( 0 )   Αναφέρεται στις τιμές που παίρνουν οι αισθητήρες 0 ή 1 (αριστερός ή δεξιός)

[  ] ground sensors   Επιλέγεται με «τσεκάρισμα» η αναγραφή των τιμών στην οθόνη

οbject detecte ground   Δίνει δύο λογικές τιμές:true or false (αληθές ή ψευδές)

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

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

Με τον πρώτο τρόπο, παίρνουμε συνεχώς τις τιμές των δύο αισθητήρων που «ανακοινώνει» με το πες < ground sensors >  το εικονικό ρομπότ στην οθόνη.

Με τον δεύτερο επιτυγχάνουμε το ίδιο αλλά αυτή τη φορά χρησιμοποιώντας τις δύο λειτουργίες ground sensor 0 και ground sensor 1.

Και με τον τρόπο 3, έχουμε τις τιμές και των δύο αισθητήρων στην οθόνη, συνεχώς, αρκεί να «τσεκάρουμε» την λειτουργία [ ] ground sensor από τα blocks της διασύνδεσης.

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

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

Ας συνοψίσουμε τα συμπεράσματά μας:

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

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

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

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

Τα περισσότερα προβλήματα είναι συνήθως με λωρίδες μαύρου χρώματος και λευκού περιβάλλοντος. Επίσης, ορισμένα από αυτά αξιοποιούν δύο αισθητήρες εδάφους (έναν αριστερά και έναν δεξιά) ενώ άλλες διαθέτουν έναν και μοναδικό,  πάντα στο κάτω μπροστινό μέρος του ρομπότ εδάφους με δύο τροχούς. Μας βοηθούν, επίσης και δύο παλιότερες δραστηριότητες που αναρτήσαμε στο Eduportal με τη χρήση των γνωστών περιβαλλόντων «Οπτικού Προγραμματισμού ( VPL) και BLOCKLY.

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

Β.1. Αξιοποίηση της εντολών κίνησης του ρομπότ και σύγκριση των τιμών των δύο αισθητήρων εδάφους. Μια προσέγγιση στο περιβάλλον «Thymio+Scratchx»

Διαθέτουμε ένα κινητό ρομποτάκι Thymio με τους δυο αισθητήρες, τον αριστερό (0) και το δεξιό (1) στο μπροστινό κάτω μέρος του.

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

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

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

Το πρώτο πείραμα:  «παγίδευση του Thymio» στη διαχωριστική γραμμή δύο επιφανειών     

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

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

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

  • με το πάτημα του κουμπιού του Thymio «αριστερά», να κινείται στην εξωτερική πλευρά της κεντρικής επιφάνειας και
  • με το «κεντρικό κουμπί» να σταματάει.

Σκέψεις, συλλογισμοί και πειραματισμοί:

Βασιζόμαστε στο ότι το ρομποτάκι μας διαθέτει:  i) δύο τροχούς – κινητήρες με ταχύτητες V_αριστερά, V_δεξιά αντίστοιχα, που μπορούμε να ελέγχουμε τις τιμές τους ώστε το ρομποτάκι να περιστρέφεται δεξιά ή αριστερά και ii) δύο αισθητήρες εδάφους (0) και (1) με τον καθένα να παίρνει διαφορετικές τιμές ανάλογα με το χρώμα της επιφάνειας που κάθε φορά ανιχνεύει.

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

Είναι φανερό ότι, σε κάθε θέση που μπορεί να βρεθεί το ρομποτάκι, θα ισχύει η λογική πρόταση του τύπου: Αν  …. Τότε …..Αλλιώς (If ….then …else) :

Με βάση αυτή τη λογική πρόταση δεν έχουμε παρά να τη μεταφράσουμε στη γλώσσα του Scratchx, οπότε προκύπτει μια διαδικασία που ενεργοποιείται με το πάτημα του κουμπιού «αριστερά»:

Πρόσθεσα και μια τρίτη διαδικασία ώστε οι τιμές των δύο αισθητήρων να αναγράφονται στην οθόνη με την εντολή πες <τιμές> όπως δείχνονται παρακάτω:

Θεωρώ ότι θα είναι χρήσιμο, σε κάθε project πειραμάτων ρομποτικής που προγραμματίζεται στο περιβάλλον «Thymio+Scratchx», να υπάρχει και αυτή η διαδικασία.

  • Έλεγχος της διαδικασίας με διάφορες επιφάνειες

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

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

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

Εύκολα, βρίσκω ότι οι τιμές των δύο αισθητήρων που αγγίζουν τη «σκούρα» επιφάνεια να είναι {263, 294} ενώ για την λευκή που την περιβάλλει είναι {670, 730}.

Από αυτές τις τιμές σκέφτομαι ότι θα πρέπει να παρέμβω στη βασική υπόθεση της διαδικασίας (project_pagida_0000.sbx):

           Αν η <τιμή αισθητήρα (0)>  ΜΕΓΑΛΥΤΕΡΗ από την  <τιμή αισθητήρα (1)> 

και να την αντιστρέψω. Έτσι, οδηγήθηκα στην διαδικασία που ενεργοποιείται με το πάτημα του κουμπιού <δεξιά>:

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

Το δεύτερο πείραμα: «παγίδευση του Thymio» μέσα σε σκουρόχρωμη ή ανοιχτόχρωμη επιφάνεια 

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

Πώς να προγραμματίσω το Thymio έτσι ώστε:

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

 

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

Έτσι, από τη στιγμή που και οι δύο αισθητήρες του ανιχνεύουν ένα χρώμα (που εδώ είναι «σκουρόχρωμο», με τιμές μικρότερες του 400) τότε, το ρομπότ πραγματοποιεί ευθύγραμμη ομαλή κίνηση με ταχύτητα 150 mm / s.

Από την άλλη, αν οι τιμές και των δύο αισθητήρων είναι μεγαλύτερες του 450, τότε το ρομπότ περιστρέφεται με ταχύτητες αριστερού και δεξιού τροχού 100 mm / s και -100 mm /s, αντίστοιχα.

Ας κωδικοποιήσουμε τα παραπάνω με τους όρους ΑΝ ….. ΤΟΤΕ  (IF____ THEN) συνεχώς θα γίνονται οι έλεγχοι των αποφάσεων και αν είναι αληθείς θα εκτελούνται:

Ο έλεγχος της ορθότητας του κώδικα δεν είναι άλλος από το πείραμα:

Χρησιμοποίησα τρεις γυαλιστερές επιφάνειες διαφορετικών χρωμάτων (πράσινο, λευκό, κόκκινο) και πάνω τους «κόλλησα» μια μαύρη επιφάνεια, όπως φαίνεται στις τρεις φωτογραφίες.

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

Συμπέρασμα 1: Το ρομποτάκι εδάφους «παγιδεύεται» εντός της μαύρης επιφάνειας η οποία περιβάλλεται από μια ανοιχτόχρωμη περιβάλλουσα.

Αν θέλουμε να έχουμε μια ανοιχτόχρωμη επιφάνεια «παγίδευσης» και ένα σκουρόχρωμο περιβάλλον, τότε θα πρέπει να κάνουμε δύο αλλαγές στον κώδικα: στην πρώτη υπόθεση αντί για τιμές < 400 θέτουμε > 450 και στη δεύτερη αντί για > 450 θέτουμε < 400. Όλα τα άλλα παραμένουν ίδια.

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

Συμπέρασμα 1: Το ρομποτάκι εδάφους «παγιδεύεται» εντός της λευκής επιφάνειας η οποία περιβάλλεται από μια μαύρη περιβάλλουσα.


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

Share Button