• Introduzione all’ambiente di lavoro di LabVIEW ed il modulo Lego Mindstorms Nxt

    Date: 2010.11.07 | Category: Lego Mindstorms NXT | Tags:

    Robot Lego Mindstorms NXT 2.0 In questo articolo farò una panoramica generale sulla programmazione dei Lego NXT 2.0 tramite l’ambiente di sviluppo LabVIEW (Laboratory Virtual Instrument Engineering Workbench).
    Prima di tutto è bene sapere che per poter programmare con LabVIEW gli NXT è necessario scaricare un kit aggiuntivo ed installarlo: KIT LEGO MINDSTORMS NXT 2.0.

    LabVIEW è diverso dai noti linguaggi di programmazione come il c, il java o il c++ in quanto è un linguaggio di tipo grafico, cioè i programmi sono scritti disegnando dei diagrammi a blocchi. Nei linguaggi di programmazione tradizionali l’esecuzione è in modo sequenziale (top-down) mentre In LabVIEW è il flusso di dati che determina l’ordine di esecuzione. LabVIEW, inoltre, è compatibile con numerosissimi di dispositivi hardware e include librerie per analisi avanzate e per la visualizzazione dei dati.
    Da questa introduzione è palese che in questo contesto non dovrete scrivere nessuna riga di codice del tipo:

    public class RegulateTest
    {
        Stopwatch sw = new Stopwatch();
        //build an array of motors
        Motor [] m = {Motor.A, Motor.B, Motor.C};
       
        /**
         * Display program name, wait for button, then call go/
         * @param args
         */

        public static void main( String[] args)
        {
            LCD.drawString(" Reg Test", 0, 0);
            Button.waitForPress();
            LCD.clear();
            new RegulateTest().go();  
        }
        /**
         * performs the test twice,  with and without speed regulation.
         */

        public void go()
        {
            for( int i = 0; i<3; i++)m[i].setSpeed(720);
            step();
           for( int i = 0; i<3; i++)m[i].regulateSpeed(false);
             step();      
        }
    ...
    ...

    Ma è molto più probabile che voi vediate una cosa del genere:
    Labview 2009 esempio diagramma blocchi lego mindstorms nxt

    Vediamo come si presenta l’ambiente di lavoro.

    Creare un progetto per i Lego NXT

    Per creare un progetto con cui programmare il vostro robot NXT, dopo aver installato il modulo Lego Mindstorms NXT, avviate LabVIEW e vedrete che all’inizio vi chiederà se desiderate creare un “Blank VI” oppure “Blank VI target to NXT“. Ovviamente la scelta da effettuare è la seconda.

    Labview 2009 create a blank VI targeted to NXT

    Perché si usa il termine “VI“? La risposta è semplice: i programmi creati con LabVIEW hanno estensione VI che sta per VIRTUAL INSTRUMENTS.

    Pannello frontale e diagramma a blocchi

    Un programma in LabVIEW (ossia un VI) è costituito da un pannello frontale, un diagramma a blocchi e un’icona.
    Il pannello frontale è la finestra che dovete utilizzare per creare l’interfaccia grafica della vostra applicazione, è in questo contesto che potrete disegnare dei pulsanti, inserire dei campi di testo atti a visualizzare, ad esempio, il valore letto da alcuni sensori, creare dei grafici, inserire delle immagini e molto altro ancora!

    Gli ingressi in LabVIEW vengono chiamati indicatori mentre le uscite controlli.

    La finestra da utilizzare per programmare la vostra applicazione è denominata diagramma a blocchi: attenzione labVIEW è un linguaggio di tipo grafico comandato dal flusso dei dati quindi non è necessario scrivere il codice ma bensì utilizzeremo dei blocchetti che collegheremo ad altri e cosi via. Quindi è una naturale conseguenza che questo ambiente è adatto per quel target di persone che non adorano la programmazione testuale (in cui occorre ricordare sintassi complicate, opzioni astruse , ecc. ;-) ) ad esempio gli elettronici o i telecomunicazionisti. Ma con questo non voglio escludere ovviamente gli informatici ;-)

    Poiché tutto si disegna, si hanno delle Palette: se dal pannello frontale provate a fare click destro compare la palette dei controlli e degli indicatori che potete utilizzare mentre se dal diagramma a blocchi fate click destro compare la palette delle funzioni.

    Vedremo che i blocchetti che inserirete nella vostra applicazione assumeranno un colore diverso a seconda del tipo di dato che contengono: arancioni se sono di tipo reale, blu se di tipo intero etc.

    Un altro aspetto da non sottovalutare è il fatto che quando si lavora nel diagramma a blocchi o nel pannello frontale il comportamento del mouse varia in base al contesto.

    Il Pannello Frontale

    Ecco come si presenta il pannello frontale:
    Labview 2009 target to NXT front panel

    Facendo click destro in un qualunque punto del foglio griglio compare la Palette suddivisa per categorie (indicatori e controlli di tipo numerico, booleano, grafici, decorazioni e molto altro).

    Il Diagramma a Blocchi

    Dal pannello frontale per passare al diagramma a blocchi scegliere la voce “Show Block Diagram” dal menu Window oppure premere la combinazione di tasti “CTRL+E“.

    Labview 2009 Show Block Diagram

    Ed ecco l’area in cui programmeremo il nostro robot tramite dei blocchetti collegati tra di loro:

    Labview 2009 Block Diagram con Palette Modulo NXT

    Anche qui facendo click destro con il mouse compare la palette dedicata al modulo NXT: le categorie che utilizzeremo in questa guida sono NXT Programming e NXT I/O.

    NXT Programming

    Sotto NXT Programming troviamo tutte i blocchetti dedicati alla programmazione del robot come:

    • Structures: qui troviamo i cicli while, for, gli switch etc
    • Numeric: qui troviamo sommatori, moltiplicatori, divisori etc
    • Boolean: qui troviamo gli operatori booleani come gli OR, AND etc
    • String, Comparison, Data Manipulation etc

    Ecco delle figure che rappresentano i vari blocchetti che sono presenti nelle rispettive categorie:

    Labview 2009 Block Diagramma NXT Toolkit Structures Labview 2009 Block Diagramma NXT Toolkit Numeric
    Labview 2009 Block Diagramma NXT Toolkit Boolean Labview 2009 Block Diagramma NXT Toolkit String
    Labview 2009 Block Diagramma NXT Toolkit Array Labview 2009 Block Diagramma NXT Toolkit Cluster
    Labview 2009 Block Diagramma NXT Toolkit Comparison Labview 2009 Block Diagramma NXT Data Manipulation
    Labview 2009 Block Diagramma NXT Toolkit Time Labview 2009 Block Diagramma NXT Toolkit Application Control

    NXT I/O

    Sotto la categoria NXT I/O troviamo tutti i blocchetti per interagire con i motori, i sensori, il display, il bluetooth e così via:

    Labview 2009 Block Diagramma NXT Toolkit INPUT OUTPUT

    Link Utili su LabVIEW e Lego Mindstorms NXT 2.0