mercoledì 31 agosto 2011

L'Umanoide NAO Parte 2



Grazie a tutti coloro che hanno visitato oggi il blog.
Per ricambiare la Vostra cortesia, ho deciso di aggiungere un altro video di NAO ( ...il mio umanoide preferito), ricordando che è possibile dotarsi del SDK (Software Development Kit) open-source, per sviluppare la vostra applicazione "umanoide".


NAO è davvero sorprendente!!!

Ma, attenzione non tutti gli umanoidi sono uguali e non sempre è facile fargli compiere le più semplici attività. Guardiamo insieme l'imbarazzante performance di ASIMO (...poverino!) prodotto dalla nota casa giapponese Honda.


...senza parole

Qui Pianeta Terra, a presto.

Anatomia di un Robot Umanoide

Bentrovati,
oggi vi parlerò del mio umanoide preferito: NAO prodotto dalla Aldebaran Robotics

(Cortesia di AR, click per ingrandire)

Da cosa è costituito un Robot Umanoide? Quali sono i suoi "organi"?

Prima di provare a dare delle risposte, guardiamo insieme questo video che introduce alcune delle caratteristiche di NAO.


Visto? E' un simpatico personaggio, ma è sopratutto un computer embedded basato sul Kernel Linux, un insieme di motori e attuatori (25 gradi di liberà), una rete di sensori e vari dispositivi di input/output.

...e non perdetevi quest'altro video!!!


Vediamo più nel dettaglio i singoli componenti, anche con l'aiuto dei precedenti post ove ho trattato componenti o tecniche similari:

  • Unità di calcolo basata su Linux (qui e qui)
  • Sensore inerziale per il controllo dell'assetto e della posizione (qui)
  • Motori passo-passo per il movimento degli arti, della testa e delle dita (qui)
  • Un generatore di audio e messaggi vocali (qui)
  • Controllore PWM per effetti di luce ...con i LED (qui)
  • Sonar ad ultrasuoni per il riconoscimento di ostacoli
  • Sensori tattili per l'interazione con gli oggetti manipolati
  • Sensori di immagini per il riconoscimento di pattern visuali
  • Microfoni per il riconoscimento di pattern acustici
  • Emettitori e Ricevitori nello spettro infrarosso per il riconoscimento di ostacoli e per la comunicazione
  • Ricetrasmettitore radio per la comunicazione wireless (WiFi)
  • Batteria ricaricabile per un'autonomia di 1,5 ore ...poi deve mangiare!!!

E, poi, tanto ...tantissimo software, poiché ogni piccolo passo, ogni movimento è regolato da appositi algoritmi e tutte le azioni sono assolutamente deterministiche, dalle capacità cognitive ai movimenti di risposta.

Quali applicazioni può avere un robot umanoide?
Beh, qui siamo ancora nel campo della ricerca e della sperimentazione. A differenza di un robot industriale che opera essenzialmente in un ambiente strutturato ed è programmato per eseguire delle operazioni prestabilite (es. movimentazione di parti, saldatura, taglio, verniciatura, ecc.), un Umanoide opera nell'ambiente circostante, adattando il proprio comportamento agli stimoli che riceve dall'ambiente stesso e operando al fine di raggiungere uno scopo. La programmazione di un simile robot richiede nuovi algoritmi (es. reti neurali, algoritmi genetici, ecc.) e tecniche di riconoscimento dell'ambiente (es. riconoscimento acustico, visuale, spaziale) che sono in continua evoluzione nell'ambito dei centri di ricerca sia pubblici e sia privati.

Se vi è venuta voglia di sperimentare i possibili utilizzi di un robot, potete richiedere l'SDK Open-source fornito dalla casa costruttrice di NAO, visitando il sito http://www.aldebaran-robotics.com/.

Qui Pianeta Terra, a presto.

giovedì 28 luglio 2011

Computer Linux fai-da-te! - Parte 2

Salve a Tutti,
oggi Vi propongo le specifiche preliminari del sistema che chiameremo Linux Embedded ToolBox e che è basato, almeno in linea di principio, sul dimostratore hardware/software che ho descritto e utilizzato nei precedenti post e video (vi ricordo anche il canale YouTube "liberaelettronica"), per diversi scopi dimostrativi.



Nella figura seguente vi propongo lo schema a blocchi con le caratteristiche dei singoli moduli:

(fare click per ingrandire)

Come potete vedere, si tratta di utilizzare un modulo CPU (PortuxG20) un modulo display TFT (L35) ed una scheda custom (Support & Backplane) che mi accingo a progettare e realizzare.
Il sistema prevede anche uno slot di espansione per futuri sviluppi (...sto già pensando ad un video decoder, un modem GSM/GPRS e, per gli altri Vostri suggerimenti, resto in attesa di commenti, critiche costruttive e desideri!).

Perché realizzare questo sistema, vi starete domandando?
Le risposte sono tante e proverò a fornire quelle per me  più importanti:

  • Perché è un sistema completamente open-source (sia per quanto riguarda il software e sia per le parti hardware che proverranno da questo blog ...il resto potrete vederlo come una black-box).
  • Perché più lo utilizzo e più scopro che può fare molto di più di quanto io stesso immagini.
  • Perché, utilizzando anche un FPGA (Field Programmable Gate Array), il ciclo di vita dell'hardware si allunga sensibilmente e, poi, la struttura modulare si presta bene a graduali miglioramenti, senza dover rottamare il tutto ogni volta che le esigenze cambiano (...product-lifecycle, vi dice nulla?).
  • Perché realizzare una filiera corta tra produttore e utilizzatore, ha enormi benefici tecnici e sociali.
  • Perché, così, sarete Voi lettori un elemento determinante per il successo del progetto.

Nella speranza di interpretare al meglio i Vostri desideri, auguro Buone Vacanze a Tutti!!!

Qui Pianeta Terra, a presto.

martedì 26 luglio 2011

Computer Linux fai-da-te!

Ciao a Tutti,
ho sempre desiderato costruire un Computer con le mie mani (...un computer fai-da-te o make-it-yourself ...come preferite).
Negli anni '80 sarebbe bastato un microprocessore da 1MHz, pochi Kbyte di memoria e nulla più.



Oggi, un computer embedded (es. uno Smart-Phone) richiede 500-1000 MIPS (Million Instructions Per Second), un display TFT, un File System nello spazio dei Gbyte, un Sistema Operativo, una "porta" USB, ecc.

Linux è il sistema ideale per realizzare il mio/Vostro desiderio!

Guardiamo insieme il video che ho realizzato per Voi, poi vi dirò cosa ho pensato per venire incontro ai desideri dei miei stimatissimi lettori del blog!



Visto? Talvolta, mi sorprendo di me stesso (...non sono mica un Robot!). 

Negli anni '80 Linus Torvalds (vedi qui) non aveva ancora ideato il suo mitico Sistema Operativo ...just an hobby come egli stesso lo definì.

Volete realizzare anche Voi un sistema Linux, totalmente open-source?
Volete utilizzare le indicazioni che troverete su questo blog? Benissimo! Partite da qui.
Volete un kit hardware già pronto all'uso?
Ok, cercherò di produrlo con l'aiuto di qualche azienda. Mi metto subito all'opera!

Qui Pianeta Terra ...dove i desideri si realizzano, a presto.

sabato 16 luglio 2011

Laboratorio: l'evoluzione dei display

Carissimi,
oggi, voglio parlarvi di come le nostre applicazioni elettroniche, pervasive, comunicano con noi umani. Naturalmente stimolano i nostri sensi e, la vista, è uno di quelli maggiormente sviluppati nella nostra specie, evolutasi mediante la raccolta, diurna, delle risorse spontaneamente presenti sul nostro Pianeta.
Pertanto, la rappresentazione a colori delle immagini, rappresenta uno dei nostri metodi, privilegiati, di comunicazione!


Guardiamo insieme il video che ho preparato per Voi e, poi, parleremo dei componenti e delle tecniche hardware/software, per realizzare i nostri "liberi" progetti con i Display TFT.



Ok, avrete apprezzato la qualità delle immagini a colori e, sono sicuro, non vi accontenterete più dei soliti display LED a 7-Segmenti oppure dei Moduli LCD.
Prima di abbandonare definitivamente le tecnologie più mature, è opportuno ricordare che i display a 7-Segmenti hanno il grande vantaggio di essere completamente allo stato solido e di poter operare in un'ampia gamma di temperature (es. -55°C, +125°C) e che i Moduli LCD Transflettivi restano egualmente visibili sia in piena luce solare e sia al buio, grazie alla presenza del circuito di retroilluminazione a LED o fluorescente. Mentre, i Display TFT, devono essere scelti in funzione dell'ambiente nel quale dovranno operare, sia in termini di temperatura e sia di luminosità dell'ambiente circostante.

Vi ricordo che il Display TFT è stato comandato dal nostro sistema tuttofare Linux-ToolBox che ho già descritto qui.

Nella seguente figura vengono riportati i segnali utilizzati per la comunicazione con il modulo Display TFT.


Mentre, nel seguito, potete vedere il diagramma temporale con cui la CPU trasferisce i dati al display.


Qui vi riporto un frammento di codice per leggere il contenuto di un file Bitmap di 320x240 pixel. Cosa sono i pixel? Quarda questo link su Wikipedia!

void read_file(char* name)
{
    int x, y;
    unsigned char color_r, color_g, color_b;
    FILE* fdesc;

    /* show test bitmap */
    fdesc = fopen(name,"r");
    if (fdesc == (void*) -1) {   
        printf("File open error.\n");
        fflush(stdout);
        exit(0);
    }
 
    /* skip header */
    for (x=0; x<54; x++) {
        color_r = fgetc(fdesc);
    }
 
    /* read rgb color from file */
    for (y=0; y<240; y++) {
        for (x=0; x<320; x++) {
          color_b = fgetc(fdesc);
          color_g = fgetc(fdesc);
          color_r = fgetc(fdesc);
          qvga_buffer[x][239-y] = rgb(color_r, color_g, color_b);
        }
    }
 
    fclose(fdesc);
    printf("QVGA buffer write complete.\n");

    return;
}

Qui Pianeta Terra (non vivo mica su Saturno, Mimas o Titano!), a presto.