Robot che insegue il volto con Arduino UNO Q ed Edge Impulse

Un nuovo progetto open source dimostra come unire computer vision e robotica su un’unica scheda. Il robot, grande quanto una scrivania, rileva un volto umano tramite machine learning eseguito localmente e si orienta verso di esso in tempo reale, lavorando a circa 10-15 fotogrammi al secondo. Tutto gira sulla nuova Arduino UNO Q, senza appoggiarsi al cloud.

Architettura a doppio processore

Il funzionamento sfrutta l’architettura ibrida della UNO Q, che integra due unità distinte. Il microprocessore MPU Qualcomm, con Linux, esegue il modello di intelligenza artificiale e la logica di controllo scritta in Python. Il microcontrollore MCU STM32, con Zephyr RTOS, pilota invece il segnale PWM dei servomotori con precisione real-time.

I due processori comunicano tramite Bridge RPC, un protocollo basato su MessagePack su collegamento seriale interno, con una latenza di andata e ritorno di circa 8 millisecondi. In questo modo l’inferenza pesante resta separata dal percorso real-time, mantenendo deterministico il controllo dei motori.

Visione, controllo e interfaccia web

Una webcam USB cattura il video, mentre un modello leggero di face-detection individua il volto nell’inquadratura. Di conseguenza un controllore proporzionale converte la posizione orizzontale del viso in comandi differenziali alle ruote. Il progetto usa due “bricks” di App Lab pronti all’uso: uno per il rilevamento oggetti su camera, l’altro per l’interfaccia web.

In particolare, la dashboard accessibile da browser permette di monitorare i rilevamenti e regolare in tempo reale i parametri di sterzata, senza ricompilare il codice. Ogni modifica ai cursori ha effetto immediato tramite Socket.IO, rendendo rapida la fase di taratura.

Dettagli tecnici e sicurezza del moto

Il robot adotta una trazione differenziale con due servo a rotazione continua: un impulso di 1500 microsecondi corrisponde allo stop, valori inferiori o superiori determinano la rotazione nei due versi. Inoltre il sistema limita le chiamate Bridge a un massimo di 20 Hz, perché inviare comandi troppo velocemente bloccherebbe il collegamento seriale.

Pertanto il progetto include diverse protezioni: un meccanismo di “coasting” che mantiene l’ultima posizione nota quando il volto sparisce per un istante, un watchdog che ferma il robot se i rilevamenti si interrompono, e uno stop di emergenza che ignora il rate limiting per arrestare immediatamente i motori. Il progetto, classificato di livello intermedio, è interamente documentato e rilasciato con licenza open source.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Menu