mBlock e intelligenza artificiale

autore: Marco Picarella

 

mblock è l’ambiente di programmazione sviluppato dall’azienda cinese Makeblock, nota per essere la produttrice di mBot, un robot dal grande successo mondiale che ormai è molto diffuso anche in ambito scolastico, nonché del drone Air Block.

Questo software, arrivato alla versione 3.4.11 al momento in cui viene scritto questo articolo, è basato sulla versione off-line di Scratch 2.0; è quindi un programma che si installa sul computer e non è necessaria la connessione a internet. Va comunque detto che Makeblock ha appena lanciato la versione 5 basata su Scratch 3.0, cosa che può sembrare strana visto che il il team di Scratch ha previsto il suo rilascio solo ad agosto 2018. Scratch 3.0 è stato completamente ridisegnato rispetto alla versione che lo precede essendo stato scritto in HTML5 e JavaScript. Ricordo che fino alla versione attuale, Scratch è stato scritto in Flash, una tecnologia da tempo abbandonata dalla stessa Adobe che lo aveva sviluppato e che tra l’altro ne impedisce l’uso sui dispositivi mobili. 

mblock è disponibile in versione desktop per i sistemi operativi Windows, MacOs e Linux, nonché per i dispositivi mobili con Android e IOS.

È usato per programmare non solo mBot, ma anche altri dispositivi di Makeblock (come la scheda Orion), diverse versioni di Arduino (Uno, Leonardo, Nano, Mega) e infine la Picoboard. Quindi si tratta di un sistema di programmazione assai versatile. Avendo questo legame forte con il mondo Arduino (lo stesso mbot monta una scheda – mcore – basata su Arduino Uno), risulta molto conveniente la possibilità di programmare, non solo con i blocchi in stile Scratch, ma anche con l’IDE di Arduino; anzi dal punto di vista della didattica dell’informatica avere affiancati i due riquadri (dal menù “Modifica” selezionare “Modalità Arduino”), quello con i blocchi e quello con l’IDE di Arduino, rappresenta un ottimo strumento di studio di questi linguaggi di programmazione.

Le opzioni disponibili però non finiscono qui perché mblock è dotato anche di diverse estensioni che però risultano un po’ criptiche ai più. Ed è così che abbastanza per caso mi sono imbattuto in un’estensione molto particolare, indicata come Microsoft Cognitive Services. Si tratta dei servizi di intelligenza artificiale, come il riconoscimento facciale e quello vocale, sviluppati per l’appunto da Microsoft. L’attivazione di questa estensione è molto semplice (vedi foto a lato); basta mettere un segno di spunta sulla voce “Microsoft Cognitive Services” presente nel menù “Estensioni”.

A questo punto compare nella categoria “Robots” dei blocchi di programmazione la nuova voce “Microsoft Cognitive Services” sotto la quale sono disponibili i blocchi specifici di questa estensione. Li elenco brevemente:

  • ferma il riconoscimento vocale
  • inizia il riconoscimento vocale
  • quando il riconoscimento vocale viene riconosciuto
  • risultato riconoscimento vocale
  • capture photo of face
  • when face recognition result received
  • face’s <> value (<> = “Età,” “sorriso”)
  • capture photo of text
  • when text recognition result received
  • risultato ocr
  • capture photo of emotion
  • when emotion recognition result received
  • emotion’s <> value (<> = “rabbia”, “disprezzo”, “disgusto”, “paura”, “felicità”, “neutro”, “tristezza”, “sorpresa”)
  • show frame
  • hide frame

 

Come si può constatare la traduzione in italiano non è stata sempre adottata; inoltre in un caso è anche del tutto sbagliata. Ho scoperto infatti che il blocco “start voice recognition” è stato tradotto con “ferma il riconoscimento vocale” e così il blocco “stop  voice recognition” con “inizia voice recognition”. Ho segnalato l’errore al supporto tecnico tramite il forum di makeblock e mi hanno scritto che provvederanno. Quindi attenzione all’uso di questi due blocchi.

Ora passiamo ad una prima sperimentazione dei blocchi di questa affascinante e al tempo stesso preziosa estensione.

A questo scopo ho creato un progetto contenente diversi sprite ad ognuno dei quali ho associato degli script specifici per le diverse opzioni offerte dall’estensione (riconoscimento facciale e riconoscimento vocale). Il file, in formato sb2, è disponibile per il download alla fine di questa pagina

Prima di iniziare la presentazione delle mie prove mi preme fare una richiesta. Sono consapevole che non avendo mai seguito una scuola di recitazione, le varie espressioni “emozionali” in cui mi sono cimentato risultano molto goffe. Chiedo quindi comprensione a voi tutti, così come lo è stato il software della Microsoft che è stato molto abile a riconoscerle. 😉

Riconoscimento facciale per età e sorriso (sprite: il ragazzo mago)

Si inizia con i blocchi del riconoscimento facciale che permettono di valutare l’età della persona e la presenza del sorriso sul suo volto.

I blocchi chiave sono: capture photo of face per rilevare il volto e face’s <> value che restituisce il valore. In questo test ho creato due script distinti, uno per l’età e uno per il sorriso, in modo da avere la possibilità di scegliere alternativamente le due opzioni.

Il valore del sorriso viene restituito come numero compreso tra 0 e 100, dove il primo indica assenza e il secondo presenza di sorriso. Divertente è provare diversi stati di sorriso che restituiscono valori intermedi.

Per quanto riguarda l’età il sistema si avvicina molto alla realtà considerando che io ho 51 anni e mezzo. Nel mio test il servizio Microsoft prima mi ha assegnato un’età di 52,3 e poi di 49,8. Ho constatato in altre prove che l’età può variare (in genere in più) con la presenza di occhiali.

Riconoscimento vocale (sprite: la ragazza maga)

In questo test i blocchi chiave sono: ferma il riconoscimento vocale (ti ricordo che i programmatori hanno invertito le traduzioni per avvia e ferma) e risultato riconoscimento vocale.

Questo servizio di riconoscimento ascolta le mie parole e le trasforma in testo che io riproduco come vignetta dello sprite.

Riconoscimento vocale per muovere il robot (sprite: car-bug)

Un’interessante applicazione del riconoscimento vocale è la possibilità di guidare mBot con la voce.

In questo caso i comandi vocali “avanti”,  “indietro”,  “stop”, “destra” e “sinistra” sono associati a blocchi di movimento del robot. Possiamo quindi combinare blocchi relativi a due estensioni diverse, “mBot” e “Microsoft Cognitive Services”.

(Nota: Ahimé! Il motore di sinistra del mio mBot gira più lentamente di quello di destra per cui il robot tende a deviare verso sinistra nel suo moto rettilineo)

Si può constatare che esiste una certa latenza tra la mia voce e l’esecuzione dei comandi da parte del robot. Ciò dipende dal fatto che il servizio di riconoscimento viaggia in internet e dipende quindi tra l’altro dalla velocità e della continuità della connessione (che nel mio caso è comunque assicurata dalla fibra ottica a 30 Mb in download). Inoltre si deve considerare che il servizio, essendo gratuito, ha alcune limitazioni (numero di interrogazioni al server); non sono riuscito però a capire quanto questo influisca nella efficienza del riconoscimento.

Nel progettare possibili applicazioni di questo servizio a me viene innanzitutto in mente il mondo della disabilità con cui sono entrato qualche volta in contatto per motivi di lavoro. Pensate al caso di persone con forti limitazioni nella capacità motoria che possono comandare a distanza con la loro voce dispositivi che assolvono alcuni loro bisogni (accendere/spegnere una luce, alzare/abbassare una persiana, ecc). Si tratta di  servizi in realtà già esistenti, ma oggi questa tecnologia è resa ampiamente disponibile e relativamente economica.

Riconoscimento delle emozioni (sprite: squirrel)

E veniamo infine alla parte più divertente di questi servizi cognitivi di Microsoft: le emozioni. Paura, felicità, rabbia,  disgusto, tristezza, disgusto e sorpresa vengono letti sul nostro volto e tradotti in numeri da 0 a 100. Al di là delle proprie abilità mimiche, il servizio riesce a riconoscere in modo molto efficace questi sentimenti. Io ho provato paura e felicità.

Possiamo sfruttare questa capacità di riconoscimento per interpretare gli stati d’animo di un personaggio di un racconto creato da noi, riuscendo così ad ottenere uno story-telling molto partecipativo.

 

Ora non ci resta che sperimentare il più possibile questi entusiasmanti servizi di intelligenza artificiale.

MicrosoftCognitiveServices.sb2

 

Vai alla barra degli strumenti