AO_437
Robotica APRILE 2022 AUTOMAZIONE OGGI 437 | 103 motori, uno per ogni dito, pilotati programma- ticamente da un computer a cui chiedere, ad esempio, di chiudersi o aprirsi. Elettronica, conosci Arduino? Se la meccanica del robot è costituita esclusiva- mente di parti realizzate in PLA e assemblate in alcuni casi in modo rigido, quindi incollate, in altri casi in modo da formare punti di snodo in corrispondenza delle articolazioni, la sua elet- tronica è rappresentata da due schede Arduino, una per comandare l’emisfero destro e l’altra per quello sinistro, nonché l’articolazione della testa. Potremmo dire che Arduino è un fratellominore di un computer. Alimentato a 6 Volt, ha capa- cità più limitate rispetto a un computer. Non ha capacità computazionali particolarmente sofisticate, non ha una scheda grafica, periferi- che complesse o giga di memoria. Le periferiche che può comandare sono più elementari, come servomotori, motori passo passo, sensori di mo- vimento, luci led, interruttori. Si usa oggi spesso anche in domotica per remotizzare il controllo di dispositivi come tapparelle, impianti antifurto, sistemi di illuminazione o di irrigazione. È pro- grammabile con linguaggio derivato dal C. Su una scheda Arduino, gira un solo programma alla volta che è possibile caricare a bordo della scheda flashando la sua Eprom. Dipendesse solo da Arduino, un robot sarebbe poco più di un bu- rattino senza fili, capace di eseguire movimenti, rilevare la presenza di ostacoli e altre operazioni di base. Quello che però rende un robot come questo simile a un essere umano sta nella capa- cità di Arduino di colloquiare attraverso una (o più) porte seriali con un vero computer. Come fa questo burattino a muoversi senza fili? Programmazione dei movimenti di base La magia che muove InMoov sta nel suo sof- tware di base, scritto in un linguaggio derivato dal C, a bordo delle sue schede Arduino. Que- ste due schede sono collegate in serie, una delle due è il cosiddetto master che riceve sequenze di caratteri dalla sua porta seriale e li reinvia alla seriale della seconda Arduino, detta slave. Il software presente a bordo di entrambe le schede è relativamente elemen- tare e sostanzialmente trasforma sequenze di caratteri ricevuti sulla porta seriale in impulsi elettrici che comandano dei motori. L’esoscheletromonta in totale 29 servomotori, di cui 22 collegati ad Arduinomaster e i restanti allo slave che ne conferiscono movimenti molto re- alistici. Ad esempio, sul mio esemplare di robot, inviare il carattere ‘c’ sulla seriale dell’Arduino master provoca la chiusura di entrambe le mani, la sequenza ‘#@c#’ gli fa chiudere solo la mano destra ecc. Come interpretare le sequenze di ca- ratteri Ascii e convertirli in movimenti di base di uno o più servomotori è la prerogativa principale del software a bordo delle due schede Arduino. I fili invisibili del burattino, in questo caso, sono sequenze di caratteri Ascii inviati a una scheda elettronica. Ma senza burattinaio, il burattino non si muove. Per rendere autonomo un robot abbiamo bisogno di maggiore potenza elabo- rativa di quella che sa dare Arduino. L’upgrade ‘cognitivo’, lo si fa collegando un vero computer. Prime forme di intelligenza, Face Detection Il primo upgrade cognitivo di cui ho dotato il mio esemplare e per il quale ho avuto bisogno di un computer (o per la precisione di un ta- blet con Windows 10 come sistema operativo) è stato renderlo capace di vedere attraverso una telecamera montata in uno dei suoi occhi, riconoscere la forma di un volto e seguirne il movimento. L’effetto è stupefacente. La testa dell’InMoov monta due microservomotori per supportare il movimento degli occhi, due ser- vomotori ‘giant’ per muovere la testa lungo due assi di rotazione ortogonali e un servomotore per il movimento della mandibola, che è stato programmato per eseguire un numero di mo- vimenti, dipendente dalle sillabe presenti nelle parole che il robot pronuncia, in modo da imi- tare verosimilmente il movimento di una bocca che parla. Per il face detection ho utilizzato una libreria software in grado di identificare e cir- coscrivere con un quadrato un volto all’interno di ciascun fotogramma ripreso da una vide- ocamera. Un semplice algoritmo, poi, si assi- cura che questo quadrato sia sempre centrato rispetto alla scena ripresa dalla telecamera, compensando in offset x e y lo scostamento dal centro dovuto al movimento del soggetto di fronte alla telecamera. Questi scostamenti vengono trasferiti ad Arduino master e tradotti in movimenti dei motori presenti nella testa e negli occhi. Il risultato è che la testa del robot segue i movimenti di chi gli sta di fronte, dando l’impressione di seguire consapevolmente una figura umana. Il principio dell’algoritmo utiliz- zato si chiama ‘pattern recognition’ e si basa sul riconoscimento all’interno di un’immagine di tratti riconducibili a un volto, come naso, occhi e bocca e la proporzionata distanza tra le parti. Un passo oltre, il face recognition Se il face detection è una branca della computer vision che si concentra nell’identificazione all’in- terno di un’immagine di caratteristiche generi- camente riconducibili a quelle di un volto, il face recognition va oltre e consente di riconoscere che si tratti di uno specifico volto tra quelli ca- talogati in una base dati. Perché questo sia pos- sibile, è necessario che attraverso il computer di cui è dotato, InMoov possa classificare i volti che dovrà poi successivamente saper riconoscere. In questa fase di apprendimento, cattura attraverso L’elettronica di InMoov è rappresentata da due schede Arduino, una per comandare l’emisfero destro e l’altra per quello sinistro del cervello, nonché l’articolazione della testa Il tablet con Windows 10 installato su InMoov
Made with FlippingBook
RkJQdWJsaXNoZXIy Mzg4NjYz