Πίστες «παγίδευσης ενός Εικονικού ρομπότ» στην οθόνη του υπολογιστή με τρεις προσεγγίσεις

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

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

Πρώτη προσομοίωση (πρώτος τρόπος).

Μετά από ποικίλες δοκιμές έφτιαξα ένα project, στο περιβάλλον του Scratch, όπου προσομοιώνεται η συμπεριφορά ενός εικονικού ρομπότ με δύο αισθητήρες εδάφους (όπως είναι το ρομποτάκι Thymio, για παράδειγμα). Πριν από λίγες μέρες το ανάρτησα στη διεύθυνση https://scratch.mit.edu/projects/180649555/  με τίτλο «Ground Sensors_ Robot Thymio on Scratch»).

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

Από την άλλη ο χρήστης θα πρέπει να γνωρίζει ότι:

  1. Με πάτημα του κουμπιού Space (ΚΕΝΟ) αλλάζουμε την πίστα «παγίδευσης»
  2. Χρησιμοποιούμε τα sliders <d> και <θ> που αναφέρονται στις μεταβλητές step και angle των απλούστατων εντολών προς το ρομποτάκι
    move < d steps (βήματα) > και turn < θ angle (γωνία) >
  3. Με το δείκτη του ποντικιού (click and drag) μετακινούμε το ρομποτάκιόπου εμείς θέλουμε ….

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

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

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

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

Ο κώδικας προγραμματισμού του virtual Thymio στην οθόνη,στα Ελληνικά, δίνεται αμέσως παρακάτω:

Γι’ αυτό το πρόγραμμα χρειαστήκαμε:

α) Τις πιο απλές εντολές του Scratch: move <βήματα> και turn < γωνία >

  • κινήσου μπροστά έναν αριθμό βημάτων (steps) και
  • στρίψε δεξιόστροφα η αριστερόστροφα έναν αριθμό μοιρών

(στρίψε 24 σημαίνει δεξιά στροφή 24 μοιρών και στρίψε -24 αριστερή στροφή).

β) Τη λειτουργία που «απαντάει» στο ερώτημα: Είναι αληθές ή ψυεδές ότι ένα χρώμα αγγίζει ένα άλλο χρώμα:

Με τον ίδιο τρόπο συντάσσεται και η λειτουργία:

γ) Την εντολή  πες { κείμενο-μήνυμα} :

Το εικονικό ρομποτάκι λέει το μήνυμα που του γράψαμε:

 

δ) Οι διαδικασίες για τη μουσική και την εναλλαγή των εικόνων του background:

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

Δεύτερη προσομοίωση (με άλλον τρόπο)

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

Στη δεύτερη προσομοίωση χρησιμοποιούμε και πάλι τις δύο μεταβλητές <d> και <angle> για την εντολή της κίνησης και της στροφής αντίστοιχα. Επιπλέον, φροντίζουμε ώστε το ρομποτάκι να μας αναφέρει, συνεχώς, τις τιμές αυτών των δύο μεταβλητών.

Ας παρακολουθήσουμε την προσoμοίωση με τις τέσσερις πίστες και ας πειραματιστούμε αλλάζοντας τις τιμές του <d> και της γωνίας< angle >.

Όμως, ο κώδικας προγραμματισμού βασίζεται σε διαφορετική λογική, όπως μπορεί να διακρίνει κανείς από την παρακάτω διαδικασία:

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

Τρίτη προσομοίωση (με …. τρίτο τρόπο)

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

Η λογική για τον προγραμματισμό περιλαμβάνει δύο αποφάσεις του τύπου:

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

Σημειώσεις

[1] Ο τίτλος αυτής της δραστηριότητας προέκυψε από μια συζήτηση που είχα με το Γιάννη Σαλονικίδη. Ενώ είχα προτείνει τη λέξη «Εγκλωβίζω» ένα ρομπότ σε μια συγκεκριμένη περιοχή, ο Γιάννης μου πρότεινε «Παγιδεύω». Είναι, νομίζω, πολύ καλύτερη από τη δική μου.

[2] Προγραμματίζω το ρομποτάκι Thymio ώστε να ακολουθεί μια μαύρη λωρίδα στο δάπεδο

[3] https://scratch.mit.edu/projects/180649555/ Η προσομοίωση της «παγίδευσης» ενός εικονικού ρομπότ στο περιβάλλον του Scratch.