Lego Mindstorms NXT

kit robotico programmabile

LEGO Mindstorms NXT è un kit robotico programmabile sia da computer sia manualmente, messo in commercio dalla LEGO alla fine del luglio 2006.[1] Rimpiazza il kit LEGO Mindstorms di prima generazione, che era chiamato Robotics Invention System. Il kit base è composto da due versioni: The Retail Version[2] e The Education Base Set.[3] Questi possono essere utilizzati per competere nelle gare FIRST Lego League. Viene utilizzato soprattutto con il linguaggio di programmazione NXT-G, ma esiste una gran varietà di altri linguaggi come: NXC, NBC, RobotC, e BricxCC. Una nuova versione del set, Mindstorms NXT 2.0 è stata annunciata nel gennaio 2009; questa vanta un sensore avanzato a colori e parecchie caratteristiche migliorate. Questo set è stato disponibile prima in Gran Bretagna e Germania nei negozi on-line Lego; successivamente (1º agosto 2009) ha iniziato a vendere negli USA ed è numerato 8547.

"Golf bot", robot costruito con il kit NXT

Il mattone NXT modifica

 
NXT brick

Il componente principale del kit è il computer a forma di mattone chiamato "NXT brick" (brick vuol dire mattone in inglese). Può ricevere l'input da un massimo di quattro sensori e controlla fino a tre motori elettrici, attraverso cavi RJ12 molto simili, ma incompatibili con i cavi del telefono RJ11. Il "mattone" ha un display LCD monocromatico di 100x64 pixel e quattro pulsanti che possono essere utilizzati per navigare nell'interfaccia utente a menu gerarchici. Esso ha anche un altoparlante che può riprodurre file sonori campionati a 8 kHz. La corrente è fornita nella versione per utenti normali da 6 batterie AA (1.5 V ognuna) mentre nella versione "educational" da una batteria ricaricabile Li-Ion e il relativo carica batterie.

Specifiche tecniche modifica

  • microprocessore centrale a 32-bit AT91SAM7S256 @ 48 MHz (256 KB flash memory, 64 KB RAM, 48 MHz di cicli di clock)
  • microcontroller a 8-bit ATmega48 @ 4 MHz (4 KB flash memory, 512 Bytes RAM)
  • CSR BlueCore 4 Bluetooth controller @ 26 MHz (Memoria flash esterna da 8 MBit, 47 KB RAM)
  • Display LCD con matrice da 100×64 pixel
  • Può essere programmato usando Windows o Mac OS (NBC/NXC supporta anche Linux)
  • L'utente crea un programma con un nuovo software, derivato da LabVIEW di National Instruments
  • Una sola porta USB 1.1 a piena velocità (12 Mbit/s)
  • Connettività wireless Bluetooth (Classe II), per trasferire programmi all'NXT senza fili o per poter controllare il robot remotamente (attraverso cellulare o possibilmente da un PDA)
  • 4 porte di input, piattaforma digitale a 6 fili (una porta include una porta di espansione conforme IEC 61158 Fieldbus Type 4/EN 50 170 (P-NET) per usi futuri)
  • 3 porte di output, piattaforma digitale a 6 fili
  • Digital Wire Interface, permettendo a terze parti di sviluppare dispositivi esterni

Possono essere usati anche altri software.

Firmware e kit di sviluppo modifica

LEGO ha distribuito il firmware per l'NXT Intelligent Brick come Open Source.[4]

Sono disponibili parecchi kit di sviluppo che contengono documentazione per l'NXT:

  • Software Developer Kit (SDK), include informazioni sugli host USB drivers, formato dei files eseguibili e informazioni sul bytecode
  • Hardware Developer Kit (HDK), include documentazione e schemi elettrici per NXT brick e i sensori
  • Bluetooth Developer Kit (BDK), documenta i protocolli usati per la comunicazione via Bluetooth

Programmazione modifica

Programmi molto semplici possono essere scritti usando il menu dell'NXT. Programmi più complicati e file sonori possono essere scaricati usando la porta USB o senza fili usando il Bluetooth. I file possono anche esser copiati tra due NTX brics diversi attraverso l'interfaccia wireless, inoltre diversi telefoni cellulari possono essere utilizzati come telecomando per comandare da remoto il sistema. Fino a quattro NXT brick possono comunicare simultaneamente attraverso Bluetooth quando sono eseguiti programmi generati dall'utente.

La versione retail del kit include software per scrivere programmi che possono essere eseguiti su PC e Macintosh. Il software è basato su LabVIEW di National Instruments e fornisce un linguaggio di programmazione visuale per scrivere semplici programmi e per farne il download sul "mattone" NXT.

NXT-G modifica

NXT-G v1.0 è il software di programmazione che si trova incluso con l'NXT. Ci sono due differenti interfacce di programmazione. Una è inclusa con i kit retail ed educational e l'altro può essere comprato separatamente. Questo software è adeguato per la programmazione base, come guidare i motori, collezionare gli input dei sensori, fare calcoli e imparare strutture di programmazione semplificate e controlli di flusso. Riportiamo qui alcuni vantaggi/svantaggi nell'utilizzo della versione 1.0 di questo software:

Pro:

  • NXT-G è semplice da installare su macchine Windows XP e Vista, ed è anche supportato il Mac OS X.
  • NXT-G può trasferire i dati via Bluetooth o attraverso l'incluso cavo USB.
  • NXT-G fornisce un ambiente grafico facile da usare di tipo drag and drop.
  • I grafici includono l'installazione dei cavi che mostrano il flusso dei dati da blocco a blocco.

Contro:

  • i Programmi NXT possono essere molto più grossi di identici programmi sviluppati con un linguaggio di programmazione fornito da terze parti (es: 12 kiB contro 2 kiB).
  • I programmi prendono sostanzialmente tempi più lunghi di caricamento rispetto programmi di terze parti.
  • Quando si creano programmi di grosse dimensioni, NXT-G tende ad andare in crash e a perdere i dati non salvati.
  • Il software NXT-G solitamente è lento in fase di esecuzione, perfino su PC potenti.

La maggior parte di questi problemi sono stati risolti con la versione v1.1 del software NXT-G.[5]

LabVIEW Toolkit modifica

NXT-G è basato su LabVIEW, uno standard industriale della programmazione. Creato da National Instruments, LabVIEW usa una programmazione a flusso di dati (data flow) per creare uno strumento virtuale. Per permettere una programmazione più avanzata, in senso grafico, National Instruments ha prodotto un Toolkit per l'NXT. La versione 1.0 è in vendita dal dicembre 2006. Dalla data di distribuzione, sono stati trovati parecchi bugs e sono stati creati nuovi sensori. Mentre il toolkit permette la creazione di nuovi sensori, National Instruments non ha ancora formalmente distribuito un aggiornamento.

Next Byte Codes & Not eXactly C modifica

Next Byte Codes (NBC) è un semplice linguaggio open source con una sintassi da linguaggio assembly che può essere usato per programmare il "mattone NXT".

Not eXactly C (NXC) è un linguaggio open source di alto livello[6], simile al linguaggio C, costruito a partire dal compilatore NBC. Esso può essere anche usato per programmare il mattone NXT. NXC è essenzialmente l'NQC per l'NXT.[7]

RobotC modifica

RobotC è un altro linguaggio di programmazione basato sul linguaggio linguaggio C per il Vex, il First Tech Challenge, e il Lego Mindstorms.

URBI modifica

URBI è un linguaggio parallelo e guidato dagli eventi (event-driven) con interfacce verso il C++/Java e il MATLAB. Ha anche una architettura a componenti (UObject) per il calcolo distribuito. Urbi è compatibile con molti robot come il NAO (vedi Robocup), Bioloid o Aibo.[8].

leJOS NXJ modifica

leJOS NXJ è un linguaggio di alto livello open source basato sul linguaggio Java che usa un firmware ad-hoc sviluppato dal team leJOS.[9]

LEJOS OSEK modifica

Per riuscire a scrivere in C/C++, può essere usato il LEJOS OSEK. Anche in questo caso è richiesto un firmware ad-hoc.[10]

MATLAB e Simulink modifica

  • MATLAB è un linguaggio di programmazione ad alto livello per il calcolo numerico, di acquisizione dati e analisi. Esso può essere utilizzato per controllare i robot Lego Mindstorm NXT attraverso una porta seriale Bluetooth.
  • Simulink è un ambiente basato su MATLAB per la modellazione e la simulazione di sistemi dinamici. Utilizzando Simulink, un utente è in grado di progettare algoritmi di controllo, generare automaticamente il codice C per questi algoritmi, e scaricare il codice compilato su Lego Mindstorm NXT.

FLL NXT Navigation modifica

FLL Nxt Navigation Archiviato il 24 dicembre 2017 in Internet Archive. è un programma open source per aiutare i movimenti sul tavolo della competizione FLL (First Lego League). Usa file NXT-G e .txt per scrivere programmi.

Sensori modifica

Questo è quello che è incluso nel kit base del Lego Mindstorms:[11]

  • Tre identici servo motori insieme ad ingranaggi di riduzione, assemblati con encoder di rotazione ottici interni che misurano la loro rotazione con un alto grado di accuratezza.[12]
  • Un sensore touch che rileva se è premuto, urtato, o rilasciato. Il pulsante arancione Enter e il pulsante grigio destro e sinistro possono essere programmati per funzionare come sensori. Nel software di programmazione NXT-G, un valore 0 è dato quando non viene premuto, e un valore di 1 è dato se è premuto.[13]
  • Un sensore di luce che rileva il livello di luce in una direzione, e comprende anche un LED per l'illuminazione di un oggetto. Il sensore di luce in grado di percepire la luce ambientale con il LED impostato su off, oppure in grado di percepire la luce riflessa, con il LED impostato per generare luce.[14]
  • Un sensore sonoro che ha un microfono che può essere utilizzato per rilevare l'ampiezza di un suono. Utilizzando il sensore di suono, è possibile programmare un robot a muoversi quando si applaude[15]
  • Un sensore ad ultrasuoni in grado di misurare la distanza tra il sensore e un ostacolo, e di rilevare il movimento. Può mostrare la distanza sia in centimetri che in pollici. La distanza massima che può misurare è di 233 cm con una precisione di 3 centimetri.[16]

Questi pezzi non sono inclusi nel kit Lego Mindstorms NXT base e possono essere acquistati separatamente:[17]

I sensori vengono assemblati e programmati. Nel software Lego Mindstorms, si può decidere cosa fare con le informazioni che provengono dai sensori (per esempio, è possibile programmare il movimento del robot in avanti fino a toccare qualcosa).

LEGO vende anche un adattatore per la linea di prodotti Vernier; quest'ultima produce dispositivi per la raccolta dei dati e relativo software per l'uso in materia di istruzione.

Parti modifica

Inclusi nel kit base:

Inclusi nel set base education:

Parti addizionali vendute separatamente:

Note modifica

  1. ^ What's NXT? LEGO Group Unveils LEGO MINDSTORMS NXT Robotics Toolset at Consumer Electronics Show, 4 gennaio 2006. URL consultato il 2 maggio 2019 (archiviato dall'url originale il 15 giugno 2009).
  2. ^ 8527Mindstorms NXT Kit, in Mindstorms Website, Lego Group. URL consultato il 26 dicembre 2008 (archiviato dall'url originale il 3 febbraio 2009).
  3. ^ LEGO MINDSTORMS Education NXT Base Set, in LEGO Education Website, Lego Group. URL consultato il 26 dicembre 2008.
  4. ^ All the tools to take your LEGO MINDSTORMS NXT to the Extreme!, su mindstorms.lego.com. URL consultato il 29 marzo 2009 (archiviato dall'url originale il 6 ottobre 2009).
  5. ^ The LEGO MINDSTORMS NXT Software version 1.1 to be released in August 2007 Archiviato il 12 aprile 2009 in Internet Archive. (LEGO.com MINDSTORMS NXT News. 2007-05-07) - Retrieved 2007-06-12
  6. ^ Not eXactly C
  7. ^ NBC/NXC - NeXT Byte Codes and Not eXactly C<
  8. ^ URBI NXT Page, su gostai.com. URL consultato il 29 marzo 2009 (archiviato dall'url originale il 30 aprile 2007).
  9. ^ LeJOS, Java for Lego Mindstorms
  10. ^ SourceForge.net: nxtOSEK - Project Web Hosting - Open Source Software
  11. ^ Lego Mindstorms NXT kit base, su mindstorms.lego.com. URL consultato il 29 marzo 2009 (archiviato dall'url originale il 29 maggio 2012).
  12. ^ Servo motori
  13. ^ Sensore touch, su mindstorms.lego.com. URL consultato il 29 marzo 2009 (archiviato dall'url originale il 17 febbraio 2012).
  14. ^ Sensore luminoso, su mindstorms.lego.com. URL consultato il 29 marzo 2009 (archiviato dall'url originale il 17 febbraio 2012).
  15. ^ Sensore sonoro, su mindstorms.lego.com. URL consultato il 29 marzo 2009 (archiviato dall'url originale il 18 marzo 2009).
  16. ^ Sensore ad ultrasuoni
  17. ^ Pezzi Extra, su mindstorms.lego.com. URL consultato il 29 marzo 2009 (archiviato dall'url originale il 6 ottobre 2009).

Altri progetti modifica

Collegamenti esterni modifica