Canali

Rivoluzionando la programmazione

Se in passato era il programmatore a dover imparare un linguaggio di programmazione, oggi abbiamo capovolto la prospettiva: è la CPU a dover imparare a interpretare la lingua e i gesti dell’operatore.

di Giambattista Gruosso *

* Dipartimento di Elettronica, Informazione e Bioingegneria – Politecnico di Milano

“Hey, Siri…”. Stiamo vivendo un momento tecnologico abbastanza ricco di meraviglie, dove la commistione tra linguaggi naturali e comando di dispositivi sta facendo passi da gigante. L’idea di fondo è quella di tradurre modi naturali di dare comandi e istruzioni in una lista codificata di istruzioni che possano poi essere eseguite dalla CPU nella lingua che lei è abituata a parlare. È un grande cambiamento epocale, iniziato già decenni fa, ma oggi fortemente accelerato. Si è passati dalla necessità del programmatore di imparare la lingua dei processori al cambio completo di direzione in cui è la CPU a dover imparare la lingua dell’utente, non necessariamente un programmatore. Ma a parte la suggestione che suscitano in noi motti come “Hey, Siri…”, “Alexa, ascolta…”, il tema nel mondo dell’industria è approcciato a livelli differenti e con modalità molto diverse da quelle usate oggi nel mondo consumer. E non è soltanto una questione di dare comandi vocali al proprio sistema, è qualcosa che va ben oltre. Si tratta di pensare schemi di controllo che siano più vicini al modo con cui li immaginiamo, lasciando poi ad algoritmi il compito di trasformarli in linguaggi che possano essere compresi dal calcolatore.

L’approccio basato sui modelli

Il primo approccio all’uso di linguaggi non strutturati per la programmazione è quello del cosiddetto Model Based Design. In questa metodologia ci si focalizza nel modellizzare con tool opportuni il sistema fisico comprensivo delle logiche di controllo per poi generare in modo automatico il codice che verrà eseguito dal controllore. Il linguaggio di modellizzazione è vicino all’utente ma molto lontano dal modo con cui il codice verrà eseguito, per cui dietro si nasconde un’evoluta tecnologia in grado di tradurre il modello in equazioni e le equazioni poi in istruzioni macchina. Ma non basta. La programmazione dei sistemi di controllo ha una normazione molto spinta in termini di sicurezza e affidabilità che deve essere rispettata nelle fasi di codifica. Quindi il lavoro più grande è quello di partire dalla descrizione di requisiti espressi nella lingua dell’utente (in questo caso la lingua dei modelli) e aggiungerci dei requisiti non espressi, tra cui quelli di sicurezza, per poi scrivere un programma che si occupi di aspetti di basso livello (configurazione dei dispositivi), di sicurezza e interazione con altri componenti, e infine la parte applicativa.

Questo approccio nel mondo industriale è il cuore del Virtual Commissioning basato su digital twins del sistema, dove il progetto meccatronico si abbina a quello delle logiche di controllo, e solo alla fine viene generato in modo automatico il codice da implementare sulla macchina. Metodologia questa ben consolidata in molti fornitori di automazione, anche se non ancora compresa a fondo dagli utilizzatori.

La sfida dei linguaggi naturali

Il livello successivo di questa rivoluzione è basato su quello che è il riconoscimento dei linguaggi naturali soprattutto di tipo vocale, come viene oggi negli smartphone. Alla base di questa metodologia c’è la creazione di una libreria dei comandi e di azioni prememorizzate sul controllore sia questo un robot, una macchina utensile, un PLC. Il comando vocale viene elaborato da schede elettroniche su cui girano algoritmi di intelligenza artificiale che sono in grado di riconoscere le istruzioni e di scegliere, all’ interno degli algoritmi prememorizzati, quello più opportuno o più vicino all’azione che si vuole compiere. Lo scenario che si prefigura è quello di un’interfaccia di controllo di una macchina utensile a controllo numerico che non è un pannello pieno di pulsanti, ma un auricolare connesso a un assistente digitale in grado di comprendere i comandi verbali di un macchinista. Quell’assistente è il regista in grado di fare funzionare tutte le diverse macchine utensili CNC nell’officina, con vari controllori, esattamente nella stessa modalità. Ma è molto di più: l’assistente potrebbe anche parlare all’operatore e avendo accesso immediato a tutte le informazioni della macchina essere in grado di suggerire all’utente le migliori operazioni da fare, inclusi gli interventi di manutenzione.

La tecnologia in grado di effettuare queste operazioni è la stessa di quella consumer usata nei dispositivi di comunicazione personale, e sono diversi i produttori di macchine utensili e PLC che stanno guardando all’applicazione massiccia di questi algoritmi. Ma non è solo voce. I sistemi di riconoscimento automatici possono basarsi anche su gesti o movimenti degli occhi, per cui è possibile usare questi sistemi anche in ambienti molto rumorosi dove non sia facile riconoscere un comando vocale. Di fatto la stessa tecnologia alla base della robotica collaborativa. Ed è proprio questa la nuova direzione: le macchine collaborative, dove l’interazione con l’utente avviene a un livello sempre più alto, senza dover ricorrere a istruzioni complesse a livello di officina. E anche il ruolo del programmatore avrà una nuova vita: sempre più rivolto a sviluppare algoritmi e sistemi evoluti che non rivolto alla programmazione spicciola.

Athena, l’interfaccia vocale che esiste già

Un’applicazione concreta di riconoscimento dei linguaggi naturali di tipo vocale nel mondo delle macchine industriali è rappresentata da Athena, l’innovativa soluzione per la comunicazione M2M (machine-to-machine, proposta dal costruttore di macchine utensili Makino). Athena è progettato per controllare tramite voce qualsiasi tipo di macchina – fresatrici, torni, elettroerosioni e così via – e funziona perfettamente anche in officine che non dispongono di una rete Internet. Athena prepara report, effettua il controllo della macchina, offre assistenza in caso di necessità ed esegue calcoli per fornire un supporto prezioso nei processi di produzione all’avanguardia.