ΠΡΟΣΟΜΟΙΩΣΗ ΘΕΩΡΙΑ 1 Πριν ξεκινήσουμε να δημιουργούμε και να προγραμματίζουμε τα ρομπότ και ιδιαίτερα το EV3 της Lego, καλό θα ήταν να δοκιμάσουμε τις γνώσεις και τις ικανότητές μας στον προσομοιωτή. Ο προσομοιωτής είναι μια ιδιαίτερα πολύπλοκη κατασκευή ή ένα πολύπλοκο πρόγραμμα στον υπολογιστή, με το οποίο μπορούμε να κάνουμε οτιδήποτε θα κάναμε με ένα πραγματικό ρομπότ, χωρίς όμως το φόβο να το καταστρέψουμε είτε από λάθος χειρισμό είτε από απροσεξία. Ο προσομοιωτής που θα χρησιμοποιήσουμε για το EV3 βρίσκεται στη διαδικτυακή διεύθυνση http://lab.open-roberta.org/ και ονομάζεται OPEN Roberta lab. Πρόκειται για μια ελεύθερη πλατφόρμα προγραμματισμού του EV3 που βασίζεται σε λειτουργίες σύρε κι άσε (drag and drop), αποθηκεύοντας δεδομένα στο «σύννεφο» (cloud). Περισσότερες πληροφορίες για την πλατφόρμα μπορείτε να βρείτε στη διεύθυνση http://www.open-roberta.org/en/welcome/ δυστυχώς όμως στα Αγγλικά. H αρχική οθόνη του Open Roberta lab Η λειτουργία της πλατφόρμας είναι διπλή: Αν έχουμε στη διάθεσή μας το ρομποτικό κιτ EV3 της Lego τότε μπορούμε να δημιουργήσουμε το πρόγραμμα και να το μεταφέρουμε στο ρομπότ μέσω της πλατφόρμας, αφού δημιουργήσουμε την κατάλληλη σύνδεση. Αν όμως δεν διαθέτουμε το κιτ (αυτή είναι η περίπτωση που μας ενδιαφέρει) τότε υπάρχει η δυνατότητα χρησιμοποίησης του ενσωματωμένου ρομπότ προσομοίωσης. Έτσι, στην παραπάνω αρχική οθόνη σύνδεσης επιλέγουμε το δεξί μεγάλο κουμπί με τίτλο: You don t have an EV3 robot? Start coding with our simulated robot, click here! (=Δεν έχεις ένα ρομπότ EV3; Ξεκίνα να προγραμματίζεις με το ρομπότ προσομοίωσης, πατώντας εδώ!).
Δημιουργία λογαριασμού Επειδή η πλατφόρμα είναι διαδικτυακή είναι απαραίτητο πριν αρχίσουμε να τη χρησιμοποιούμε να δημιουργήσουμε έναν λογαριασμό χρήστη. Πατώντας το κουμπί στην πάνω αριστερή γωνία, εμφανίζεται ένα παράθυρο, με τη βοήθεια του οποίου διαχειρίζομαι τους χρήστες. login: Σύνδεση του χρήστη logout : Αποσύνδεση του χρήστη new : Δημιουργία νέου χρήστη delete user : Διαγραφή υπάρχοντος χρήστη Επιλέγοντας new εμφανίζεται ένα νέο πλαίσιο, όπου εισάγω τα στοιχεία του νέου χρήστη: Username (=όνομα χρήστη) Password (=Κωδικός) Repeat password (Επανάληψη κωδικού για επιβεβαίωση) Name (=Όνομα μόνο το μικρό μας όνομα) E-mail (=Διεύθυνση ηλεκτρονικού ταχυδρομείου) Η διαδικασία ολοκληρώνεται με το Αμέσως βρισκόμαστε στο περιβάλλον της πλατφόρμας και έχουμε πλέον τη δυνατότητα να δημιουργήσουμε το πρόγραμμά μας, να το δοκιμάσουμε στο ρομπότ προσομοίωσης και να το αποθηκεύσουμε στο λογαριασμό μας. Όλες αυτές οι λειτουργίες βρίσκονται πατώντας το κουμπί edit (= επεξεργασία, πάνω αριστερά). Οι διαθέσιμες εντολές είναι: run (=εκτέλεση του προγράμματος) check (=έλεγχος του προγράμματος) new (=δημιουργία νέου προγράμματος) list (=εμφάνισης σε λίστα όλων των προγραμμάτων μου) save (=αποθήκευση με το υπάρχον όνομα αρχείου) save as... (=αποθήκευση με νέο όνομα αρχείου) show code (=εμφάνιση του κώδικα του προγράμματος) ΝΕΡΟ-Blocks beginner (=εντολές για αρχάριους χρήστες) NEPO-Blocks expert (=εντολές για προχωρημένους χρήστες) Η δημιουργία ενός προγράμματος στην πλατφόρμα Open Roberta είναι παρόμοια με το Scratch. Κι εδώ υπάρχουν εντολές ως τουβλάκια, ταξινομημένα σε κατηγορίες. Κάθε εντολή τουβλάκι συνδέεται με κάποιο άλλο, ενώ σε μερικά από αυτά ο προγραμματιστής μπορεί να αλλάξει τις παραμέτρους λειτουργίας του.
Εντολές της ομάδας των αρχάριων χρηστών Στη συνέχεια θα μεταφράσουμε και θα περιγράψουμε τις εντολές των αρχάριων χρηστών, ώστε κι όσοι δεν καταλαβαίνουν καλά αγγλικά να έχουν τη δυνατότητα να χρησιμοποιήσουν την πλατφόρμα. Υπάρχουν επτά ομάδες εντολών, με ξεχωριστό χρώμα η καθεμιά, όπως στο Scratch. Αυτές είναι: Actions: Εντολές δράσης κίνησης Sensors: Εντολές αισθητήρων Control: Εντολές ελέγχου Logic: Λογικές εντολές Math: Μαθηματικές εντολές Colours: Χρώματα Variables: Μεταβλητές Οι εντολές δράσης κίνησης (Action) είναι: Εντολή Λειτουργία Παράμετροι Κίνηση εμπρός / πίσω με συγκεκριμένη ταχύτητα Κίνηση εμπρός / πίσω με συγκεκριμένη ταχύτητα και για συγκεκριμένη απόσταση σε εκατοστά (cm) Σταμάτημα κίνησης Στρίψε δεξιά / αριστερά με συγκεκριμένη ταχύτητα Στρίψε δεξιά / αριστερά με συγκεκριμένη ταχύτητα και για συγκεκριμένη γωνία Άναψε το φως του EV3 σε συγκεκριμένο χρώμα Σβήσε το φως του EV3 forwards (=εμπρός) backwords (=πίσω) Forwards (=εμπρός) backwords (=πίσω) distance cm (=απόσταση σε cm) right (=δεξιά) left (=αριστερά) right (=δεξιά) left (=αριστερά) degree (=γωνία) colour (=χρώμα) green (=πράσινο) orange (=πορτοκαλί) red (=κόκκινο)
Οι εντολές αισθητήρων (Sensors) είναι: Εντολή Λειτουργία Παράμετροι Πατήθηκε ο αισθητήρας αφής στη θύρα 1 ή 2 ή 3 ή 4; Διάβασε την απόσταση από τον αισθητήρα υπερήχων Διάβασε το χρώμα / το φως από τον χρωματικό αισθητήρα port (=θύρα) 1, 2, 3 ή 4 touch sensor (=αισθητήρας αφής) distance (=απόσταση) ultrasonic sensor (=αισθητήρας υπερήχων) colour (=χρώμα) light (=φως) colour sensor (χρωματικός αισθητήρας) Οι εντολές ελέγχου (Control) είναι: Εντολή Λειτουργία Παρατηρήσεις εντολών με συνθήκη (αν.. τότε) εντολών με συνθήκη (αν.. τότε.. αλλιώς.) Επανάληψη εντολής ή ομάδας εντολών για πάντα Επανάληψη εντολής ή ομάδας εντολών συγκεκριμένες φορές Αναμονή για συγκεκριμένο χρονικό διάστημα σε χιλιοστά του δευτερολέπτου Αναμονή μέχρι να πατηθεί ο αισθητήρας αφής εντολών με συνθήκες (αν.. τότε.. αλλιώς αν. τότε.) εντολών με συνθήκες (αν.. τότε.. αλλιώς αν. τότε. αλλιώς.) Αν ισχύει η συνθήκη (if..) τότε εκτέλεσε τις παρακάτω εντολές (do.) Αν ισχύει η συνθήκη (if..) τότε εκτέλεσε τις παρακάτω εντολές (do.). Αν δεν ισχύει τότε εκτέλεσε τις άλλες εντολές (else.) Επανέλαβε για πάντα τις εντολές (do.) Επανέλαβε για συγκεκριμένες φορές (.. times) τις εντολές (do.) Περίμενε για. ms (1 δευτερόλεπτο = 1000 ms) Περίμενε μέχρι η τιμή του αισθητήρα αφής να γίνει true (=αληθής). Δηλαδή περίμενε μέχρι να πατηθεί ο αισθητήρας αφής Αν ισχύει η συνθήκη (if.) εκτέλεσε τις εντολές (do.) αλλιώς αν ισχύει η άλλη συνθήκη (else if.) τότε εκτέλεσε τις άλλες εντολές (do.) Αν ισχύει η συνθήκη (if.) εκτέλεσε τις εντολές (do.) αλλιώς αν ισχύει η άλλη συνθήκη (else if.) τότε εκτέλεσε τις άλλες εντολές (do.). Αν δεν ισχύει καμία από τις παραπάνω τότε εκτέλεσε τις εντολές (else.)
Προσοχή: Στις παραπάνω εντολές με συνθήκη, κάθε φορά που πατάω το + προστίθεται στην εντολή μια επιπλέον συνθήκη. Αντίστοιχα, πατώντας το αφαιρείται μια συνθήκη από την εντολή. Οι λογικές εντολές (Logic) είναι: Εντολή Λειτουργία Παρατηρήσεις Τι είναι μια ποσότητα σε σύγκριση με μια άλλη Ισχύουν και (=and) οι δύο συνθήκες ή ισχύει η μία ή (=or) η άλλη Τιμή συνθήκης true (=αληθής) ή false (=ψευδής) Χρησιμοποιούνται οι τελεστές: = < > (=διαφορετικό) Χρησιμοποιούνται οι τελεστές and (=και), or (=ή) Χρησιμοποιούνται οι τιμές true (=αληθής) και false (=ψευδής) Οι μαθηματικές εντολές (Math) είναι: Εντολή Λειτουργία Παρατηρήσεις Ανάθεση τιμής Εκτέλεση πράξεων μεταξύ αριθμών ή μεταβλητών Ακέραιοι και δεκαδικοί αριθμοί Χρησιμοποιούνται οι τελεστές + - * / ^ (=ύψωση σε δύναμη) Χρώματα (Colours): Επιλέγοντας την ομάδα εντολών Χρώματα εμφανίζεται η παλέτα με τα 8 χρώματα που μπορούν να χρησιμοποιηθούν στα προγράμματά μας. Τα χρώματα χρησιμοποιούνται όταν θέλουμε το ρομπότ μας να ακολουθήσει μια διαδρομή συγκεκριμένου χρώματος, να αποφύγει κάποιο εμπόδιο με ορισμένο χρώμα, να ξεχωρίσει διαφορετικά χρωματισμένα αντικείμενα, κλπ Μεταβλητές (Variables): Κάθε πρόγραμμα ξεκινάει με την εντολή κι ακολουθείται από τις υπόλοιπες, σε σειρά η μία με την άλλη. Αν θέλω να προσθέσω μία ή περισσότερες μεταβλητές τότε πατώντας το + εμφανίζεται κάθε φορά και μια νέα μεταβλητή. Ορίζω το όνομά της (VariableName, VariableName2, κλπ) και την αρχική της τιμή (Number) στο διπλανό πεδίο. Αφαιρώ μια μεταβλητή που δεν χρειάζομαι πλέον πατώντας το δίπλα από το όνομα της μεταβλητής που θέλω να απομακρύνω.
Το ενημερωτικό μήνυμα που εμφανίζεται πατώντας περιγράφει την παραπάνω διαδικασία και αναφέρει ότι οι μεταβλητές που δηλώνονται εδώ είναι global, δηλαδή είναι ορατές σε ολόκληρο το πρόγραμμα. Εντολές της ομάδας των προχωρημένων χρηστών Επιπλέον από τις παραπάνω εντολές, επιλέγοντας NEPO-Blocks expert (=εντολές για προχωρημένους χρήστες) έχουμε στη διάθεσή μας επιπλέον εντολές ώστε να κάνουμε τις εφαρμογές μας πιο ευέλικτες και πιο εντυπωσιακές. Στη συνέχεια θα αναλύσουμε για κάθε ομάδα εκείνες τις εντολές που δεν περιλαμβάνονται στα Blocks αρχαρίων. Εντολές δράσης κίνησης (Action): Στην περίπτωση των εντολών δράσης κίνησης εμφανίζονται 3 υποομάδες: Move (=Κίνηση), Drive (=Οδήγηση) και Lights (=Φώτα). Οι εντολές της υποομάδας Drive (=οδήγηση) παραμένουν ίδιες. Οι εντολές της υποομάδας Lights (=φώτα) παραμένουν ίδιες. Υποομάδα εντολών Move (κίνηση): Εντολή Λειτουργία Παράμετροι Κίνηση του δεξιού / αριστερού μοτέρ με συγκεκριμένη ταχύτητα Κίνηση του δεξιού / αριστερού μοτέρ με συγκεκριμένη ταχύτητα και για ορισμένη περιστροφή / γωνία Σταμάτημα δεξιού / αριστερού μοτέρ right (=δεξιό) left (=αριστερό) right (=δεξιό), left (=αριστερό),, rotation (=περιστροφή), degree (=μοίρεςγωνία) right (=δεξιό) left (=αριστερό)
Οι εντολές αισθητήρων (Sensors) είναι ίδιες. Οι εντολές ελέγχου (Control) είναι ίδιες. Οι λογικές εντολές (Logic) είναι ίδιες. Οι μαθηματικές εντολές (Math) είναι ίδιες. Τα χρώματα (Colours) και οι μεταβλητές (Variables) είναι κι αυτές ίδιες. Χαρακτηριστικά του ρομπότ Κάθε ρομπότ, για να είναι σε θέση να καταλαβαίνει το χώρο γύρω του, διαθέτει αισθητήρες. Με τους αισθητήρες, το ρομπότ μας μπορεί να καταλάβει ένα χρώμα, να «ακούσει» έναν ήχο, να μετρήσει την απόστασή του από κάποιο εμπόδιο ή να σταματήσει μόλις ακουμπήσει σε κάποιο σταθερό σημείο. Οι αισθητήρες αυτοί λειτουργούν πάντα σε συνδυασμό με τους τροχούς και τους κινητήρες (μοτέρ) ώστε το ρομπότ να είναι σε θέση να αξιοποιεί τα δεδομένα που λαμβάνει από αυτούς. Για παράδειγμα, να στρίβει όταν βρίσκεται σε συγκεκριμένη απόσταση από κάποιο εμπόδιο, να ακολουθεί μια διαδρομή συγκεκριμένου χρώματος, να αναγνωρίζει αντικείμενα συγκεκριμένου χρώματος, κλπ.