Lego Mindstorms

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

Η πρώτη λιανική έκδοση των Lego Mindstorms κυκλοφόρησε το 1998 και πωλήθηκε εμπορικά με την επωνυμία Robotics Invention System (RIS). Η τρέχουσα έκδοση κυκλοφόρησε το 2006 ως Lego Mindstorms NXT. Η αρχική έκδοση Mindstorms Robotics Invention System περιείχε δύο μηχανές, δύο αισθητήρες αφής και έναν αισθητήρα φωτός. Η έκδοση NXT έχει τρεις σερβομηχανές και τέσσερις αισθητήρες για την αφή, το φως, τον ήχο, και την απόσταση. Τα Lego Mindstorms μπορούν να χρησιμοποιηθούν για να κατασκευαστεί ένα μοντέλο ενσωματωμένου συστήματος με ηλεκτρομηχανικά μέρη ελεγχόμενα από υπολογιστή. Πολλά είδη πραγματικών ενσωματωμένων συστημάτων, από ελεγκτές ανελκυστήρων έως βιομηχανικά ρομπότ, μπορούν να διαμορφωθούν χρησιμοποιώντας τα Mindstorms. 

Τα Mindstorms kits πωλούνται επίσης και χρησιμοποιούνται ως εκπαιδευτικά εργαλεία, αρχικά μέσω μιας συνεργασίας μεταξύ της Lego και του Εργαστηρίου Πολυμέσων του MIT (MIT Media Laboratory).

Η εκπαιδευτική έκδοση των προϊόντων καλείται Lego Mindstorms for Schools, και έρχεται με το γραφικό λογισμικό προγραμματισμού ROBOLAB, που αναπτύχθηκε στο Πανεπιστήμιο Tufts χρησιμοποιώντας  ως μηχανή το LabVIEW της National Instruments.

## Robotics Invention System - RCX brick

thumb|RCX Brick πρώτης γενιάς προγραμματιζόμενο από το χρήστη.

Η πρώτη γενιά LEGO Mindstorms χτίστηκε γύρω από το κομμάτι της LEGO με τη μορφή τούβλου γνωστό ως RCX. Το RCX περιέχει έναν μικροελεγκτή Renesas H8/300 ως εσωτερική ΚΜΕ του. Το τούβλο προγραμματίζεται με τη φόρτωση ενός προγράμματος (που γράφεται σε μια από τις διαθέσιμες γλώσσες προγραμματισμού) από ένα PC ή MAC στη RAM του τούβλου μέσω μιας ειδικής υπέρυθρης διεπαφής (IR). 

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

Υπάρχει επίσης μία LCD που μπορεί να εμφανίζει το επίπεδο φόρτισης των μπαταριών, την κατάσταση των θυρών εισόδου-εξόδου, ποιο πρόγραμμα εκτελείται, και άλλες πληροφορίες. Τα τούβλα RCX έκδοσης 1.0 διαθέτουν παροχή ρεύματος για να επιτρέπουν τη συνεχή λειτουργία αντί της λειτουργίας περιορισμένου χρόνου κατά τη χρησιμοποίηση μπαταριών. Στην έκδοση RCX 2.0, η παροχή ρεύματος αφαιρέθηκε. Τα τούβλα RCX με παροχή ρεύματος είναι δημοφιλή για τα στατικά προγράμματα ρομποτικής (όπως τα ρομπότ βραχίονες) ή για τα πρότυπα μοντέλα τρένων Lego.

## Υποστηριζόμενες Γλώσσες προγραμματισμού

* RCX Code (περιέχεται στις Mindstorm εκδόσεις λιανικής) 
* ROBOLAB (βασίζεται στο LabVIEW και αναπτύχθηκε στο Tufts University) 

Δημοφιλείς Γλώσσες τρίτων κατασκευαστών:

* C και C++ σε BrickOS (πρώην LegOS) 
* Java σε leJOS ή TinyVM 
* NQC ("Not Quite C") 
* pbFORTH (επεκτάσεις της γλώσσας προγραμματισμού Forth)
* Visual Basic (μέσω του COM+ interface παρεχόμενο με το CD) 
* RobotC (νέα γλώσσα συμβατή με την έκδοση NXT )

## Κατασκευή του RCX

Το RCX (Robotic Control X), είναι ένας αυτόνομος μικροελεγκτής  που μπορεί να προγραμματιστεί χρησιμοποιώντας τον υπολογιστή. Το RCX χρησιμεύει ως ο εγκέφαλος των εφευρέσεων LEGO MINDSTORMS. Χρησιμοποιεί τους αισθητήρες που παρέχουν τα Mindstorms ως είσοδο από το περιβάλλον του, επεξεργάζεται αυτά τα στοιχεία, και με βάση αυτά δίνει κίνηση στους κινητήρες.

### Προγραμματίζοντας το RCX

Οι χρήστες χτίζουν αρχικά το ρομπότ τους χρησιμοποιώντας τα κομμάτια LEGO και το RCX. Κατόπιν δημιουργούν ένα πρόγραμμα της αρεσκείας τους χρησιμοποιώντας όποια διαθέσιμη γλώσσα θέλουν (Robolab, NQC ή LEJOS) και το φορτώνουν στο RCX χρησιμοποιώντας μια ειδική υπέρυθρη συσκευή αποστολής σημάτων. Η δημιουργία τους μπορεί πλέον να αλληλεπιδράσει με το περιβάλλον, πλήρως αυτόνομα. Η επικοινωνία γίνεται με τη βοήθεια του υπέρυθρου φωτός. Ένας υπέρυθρος αισθητήρας συνδέεται σε σειριακή θύρα ή σε θύρα USB. Μια ασύρματη σύνδεση με το ίδιο το RCX του επιτρέπει να κινηθεί ελεύθερα, ειδικά ως τμήμα της κίνησης των οχημάτων ρομπότ.

### Η επικοινωνία μεταξύ PC και RCX

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

### Η γλώσσα LEJOS
Το LEGO Java Operating System (LeJOS) είναι μια γλώσσα προγραμματισμού βασισμένη σε JAVA που χρησιμοποιείται για να προγραμματίζουμε το RCX. Από τη στιγμή που η JAVA είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού, η LeJOS προσφέρει όλα τα πλεονεκτήματα του αντικειμενοστρεφούς προγραμματισμού. Το LeJOS αναπτύχθηκε εξ’ολοκλήρου από τον Jose Solorzano, αλλά τώρα συντηρείται από τους Paul Andrews και Jürgen Stuber.

Το γεγονός ότι το leJOS είναι ένα καινούργιο firmware για το RCX σημαίνει ότι μπορούμε να κάνουμε τα προγράμματα μας πιο εξελιγμένα από ότι ήταν δυνατό χρησιμοποιώντας είτε το προγραμματιστικό περιβάλλον της LEGO (Robolab) είτε το NQC (Not Quite C).

## Lego Mindstorms ΝΧΤ
### Η ανανέωση των Ρομπότ
Με τη νέα γενιά ΝΧΤ, η Lego προχωρεί ένα βήμα πιο πέρα από την επανάσταση των ρομπότ «οικιακής κατασκευής» που η ίδια είχε ξεκινήσει πριν από οκτώ χρόνια με τα Lego Mindstorms. Πολύ πιο εύκολα και γρήγορα στην κατασκευή τους, τα κιτ Mindstorms ΝΧΤ δίνουν τη δυνατότητα στους ερασιτέχνες λάτρεις της ρομποτικής κάθε ηλικίας να φτιάξουν και να προγραμματίσουν το δικό τους μίνι ρομπότ μέσα σε μόλις 30 λεπτά της ώρας.

Η νέα έκδοση του λογισμικού για το δημοφιλές σύστημα εφευρέσεων ρομποτικής LEGO MINDSTORMS NXT απελευθερώνεται.
Η νέα έκδοση λογισμικού LEGO MINDSTORMS NXT1.1 τώρα παρέχει την υποστήριξη για Vista και Macintosh Windows. Με τη βελτιωμένη χρήση μνήμης του λογισμικού, το LEGO MINDSTORMS NXT περιλαμβάνει μικρότερα συνταγμένα προγράμματα και συμπιεσμένα αρχεία.

Το ΝΧΤ βασίζεται στο επιτυχημένο Robotics System Invention της εταιρείας, το οποίο έχει βελτιωθεί με την πρόσθεση νέων τεχνολογιών και αισθητήρων αυξημένων ικανοτήτων. Το «τουβλάκι» ΝΧΤ που αποτελεί τον εγκέφαλο του ρομπότ είναι ένας αυτόνομος  μικροεπεξεργαστής των 32 bit (σε αντίθεση με τα 16 bit της πρώτης γενιάς), ο οποίος μπορεί να προγραμματιστεί μέσω ηλεκτρονικού υπολογιστή PC ή - άλλη καινοτομία - Mac. Αφού κατασκευάσει το ρομπότ του, ο χρήστης δημιουργεί ένα δικό του πρόγραμμα χρησιμοποιώντας ένα εύχρηστο αλλά πλούσιο σε χαρακτηριστικά λογισμικό LabVIEW, το οποίο έχει σχεδιαστεί από τη National Instruments.

### Λογισμικό LABVIEW
Το λογισμικό LEGO MINDSTORMS NXT τροφοδοτείται από το LabVIEW, ένα διαισθητικό γραφικό λογισμικό προγραμματισμού που χρησιμοποιείται από τους επιστήμονες και τους μηχανικούς παγκοσμίως στα καταναλωτικά προϊόντα σχεδίου, ελέγχου και δοκιμής και τα συστήματα όπως MP3 και DVD, τα κινητά τηλέφωνα, και τα συστήματα ασφάλειας αερόσακων οχημάτων. Οι εφαρμογές περιλαμβάνουν την εξερεύνηση ανιχνευτών της NASA  στον Άρη, αλλά και τη δοκιμή του Microsoft Xbox.
                                         
### Απεικόνιση του ΝΧΤ – Ανάλυση των μερών που το αποτελούν
Το NXT είναι ο εγκέφαλος ενός ρομπότ MINDSTORMS®. Είναι ένα ευφυές, ελεγχόμενο από υπολογιστή τούβλο LEGO® που δίνει τη δυνατότητα σε ένα ρομπότ MINDSTORMS να ζωντανέψει και να εκτελέσει διάφορες διαδικασίες.

#### Θύρες μηχανών
Το NXT έχει τρεις θύρες παραγωγής για την ένωση των μηχανών –
θύρες Α, Β και Γ θύρες αισθητήρων 

Το NXT έχει τέσσερις εισαγμένες θύρες για την ένωση των αισθητήρων - θύρες 1, 2, 3 και 4.

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

#### Μεγάφωνο
Κάνετε ένα πρόγραμμα με τους πραγματικούς ήχους και ακούστε τους όταν τρέχετε το πρόγραμμα .

#### Αισθητήρας αφής
Ο αισθητήρας αφής δίνει στο ρομπότ σας μια αίσθηση της αφής. Ο αισθητήρας αφής ανιχνεύει πότε πιέζεται από κάτι και πότε απελευθερώνεται πάλι.
 
**Προτάσεις χρήσης**: Μπορείτε να χρησιμοποιήσετε τον αισθητήρα αφής για να κάνετε το ρομπότ σας να πάρει τα πράγματα: ένας ρομποτικός βραχίονας που εξοπλίζεται με έναν αισθητήρα αφής ενημερώνει το ρομπότ εάν υπάρχει ή όχι κάτι στο βραχίονά του που αρπάζει. Ή μπορείτε να χρησιμοποιήσετε έναν αισθητήρα αφής για να κάνετε την πράξη ρομπότ σας σε μια εντολή. Παραδείγματος χάριν, με τη συμπίεση του αισθητήρα αφής μπορείτε να κάνετε το ρομπότ σας να περπατήσει, να μιλήσει, να κλείσει μια πόρτα, ή να ανοίξει τη TV σας.

#### Αισθητήρας ήχου
Ο υγιής αισθητήρας μπορεί να ανιχνεύσει και τα δύο decibels [DB] και ρυθμισμένο decibel [DBA]. Decibel είναι μια μέτρηση της υγιούς πίεσης. DBA: στην ανίχνευση ρυθμισμένων decibels, η ευαισθησία του αισθητήρα προσαρμόζεται στην ευαισθησία του ανθρώπινου αυτιού. Με άλλα λόγια, αυτοί είναι οι ήχοι ότι τα αυτιά σας είναι σε θέση να ακούσουν. DB: στην ανίχνευση τυποποιημένων [χωρίς διόρθωση] decibels, όλοι οι ήχοι μετριούνται με την ίση ευαισθησία. Κατά συνέπεια, αυτοί οι ήχοι μπορούν να περιλάβουν μερικοί που είναι πάρα πολύ υψηλοί ή πάρα πολύ χαμηλοί για το ανθρώπινο αυτί για να ακούσουν. Ο υγιής αισθητήρας μπορεί να μετρήσει τα επίπεδα υγιούς πίεσης μέχρι 90 DB - για το επίπεδο ενός χαρτοκόπτη. Τα επίπεδα υγιούς πίεσης είναι εξαιρετικά περίπλοκα, έτσι οι υγιείς αναγνώσεις αισθητήρων στο MINDSTORMS NXT επιδεικνύονται σε ποσοστό [%]. Όσο χαμηλότερα τα τοις εκατό τόσο πιο ήρεμο το παράδειγμα soundFor:
* 4-5% είναι όπως ένα σιωπηλό καθιστικό
* 5-10% θα ήταν κάποιος που μιλά κάποια απόσταση μακριά
* 10-30% είναι κανονική συνομιλία κοντά στον αισθητήρα ή τη μουσική που παίζεται σε κανονικό επίπεδο
* 30-100% είναι να φωνάξει ή μουσική που παίζεται σε μια μεγάλη ποσότητα

#### Αισθητήρας φωτός
Ο αισθητήρας φωτός είναι ένας από τους δύο αισθητήρες που δίνουν όραση στο ρομπότ σας [ο υπερηχητικός αισθητήρας είναι άλλος]. Ο αισθητήρας φωτός επιτρέπει στο ρομπότ σας να διακρίνει μεταξύ του φωτός και του σκοταδιού. Μπορεί να διαβάσει την ένταση του φωτός σε ένα δωμάτιο και να μετρήσει την φωτεινή ένταση των χρωματισμένων επιφανειών.

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

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

#### Αισθητήρας Υπέρηχων
Ο αισθητήρας  υπέρηχων είναι ένας από τους δύο αισθητήρες που δίνουν όραση στο ρομπότ σας [ο αισθητήρας φωτός είναι άλλος]. Ο υπερηχητικός αισθητήρας επιτρέπει στο ρομπότ σας για να δει και να ανιχνεύσει τα αντικείμενα. Μπορείτε επίσης να το χρησιμοποιήσετε για να κάνετε το ρομπότ σας να αποφύγει τα εμπόδια, την απόσταση αίσθησης και μέτρου, και να ανιχνεύσει τη μετακίνηση. Ο υπερηχητικός αισθητήρας μετρά την απόσταση στα εκατοστόμετρα και στις ίντσες. Είναι σε θέση να μετρήσει τις αποστάσεις από 0 έως 255 εκατοστόμετρα με μια ακρίβεια +/- 3 εκατ. Ο υπερηχητικός αισθητήρας χρησιμοποιεί την ίδια επιστημονική αρχή με τις νυχτερίδες: μετρά την απόσταση με τον υπολογισμό του χρόνου που παίρνει ένα  κύμα για να χτυπήσει ένα αντικείμενο και να επιστρέψει - ακριβώς όπως μια ηχώ. Τα μεγάλου μεγέθους αντικείμενα με τις σκληρές επιφάνειες επιστρέφουν τις καλύτερες αναγνώσεις. Τα αντικείμενα φτιαγμένα από μαλακό ύφασμα ή τα κυρτά [όπως μια σφαίρα] ή τα πολύ λεπτά ή μικρά μπορεί να είναι δύσκολα για τον αισθητήρα να ανιχνευθούν.

#### Σερβομηχανές
Οι τρεις σερβομηχανές δίνουν στο ρομπότ σας τη δυνατότητα να κινηθούν. Εάν χρησιμοποιήσετε το φραγμό κίνησης στο λογισμικό LEGO MINDSTORMS NXT για να προγραμματίσετε τις μηχανές σας, οι δύο μηχανές θα συγχρονίσουν αυτόματα, έτσι ώστε το ρομπότ σας να κινηθεί σε μια ευθεία γραμμή.

#### Αισθητήρας περιστροφής

Κάθε μηχανή έχει έναν ενσωματωμένο αισθητήρα περιστροφής. Αυτό επιτρέπει τον ακριβή έλεγχο των μετακινήσεων ρομπότ. Ο αισθητήρας περιστροφής μετρά τις περιστροφές μηχανών στους βαθμούς ή τις πλήρεις περιστροφές [ακρίβεια +/- ενός βαθμού].
Μια περιστροφή είναι ίση με 360 βαθμούς, έτσι εάν μια μηχανή τεθεί στη στροφή 180 βαθμοί, ο άξονας παραγωγής του θα κάνει μισή στροφή. Ο ενσωματωμένος αισθητήρας περιστροφής σε κάθε μηχανή επιτρέπει διαφορετικές ταχύτητες για τις μηχανές (με τον καθορισμό των διαφορετικών παραμέτρων δύναμης στο λογισμικό).

*Το άρθρο αυτό δημοσιεύεται ως αποτέλεσμα εργασίας στο Τμήμα Μηχανικών Η/Υ Τηλ. & Δικτύων του Πανεπιστημίου Θεσσαλίας http://www.inf.uth.gr , για το μάθημα Διδακτική της Πληροφορικής.*

## Αναφορές
* Bagnall, Brian. *Maximum LEGO® NXT: Building Robots with Java Brains* Variant Press. 2007. ISBN 0-9738649-1-5
* Erwin, Benjamin. *Creative Projects with LEGO® Mindstorms* (book and CD-ROM). Addison-Wesley. 2001. ISBN 0-201-70895-7.
* [Frank Klassner - Villanova University, Villanova, PA]A case study of LEGO Mindstorms'™ suitability for artificial intelligence and robotics courses at the college level
* [David J. Barnes - The Computing Laboratory The University Canterbury] Teaching Introductory Java through LEGO MINDSTORMS Models
* [Prof. David Mindell] LEGO Mindstorms - The Structure of an Engineering (R)evolution

## Εξωτερικοί σύνδεσμοι

* Official Lego Mindstorms (NXT), κεντρική σελίδα της εταιρείας
* LEGO - Company and brand history
* LEGO - MINDSTORMS Robotics Invention System 2.0
* LEGO.com - MINDSTORMS Building Instructions
* LEGO Mindstorms – Άρθρο στην εφημερίδα το Βήμα
* LEGOMINSTORMSNXT.GR -Η Ελληνική σελιδα για τα Lego Mindstorms NXT 
* -Η Ελληνική κοινότητα χρηστών Lego Mindstorms NXT 

Κατηγορία:Εκπαιδευτικά παιχνίδια
Κατηγορία:Lego