top of page

Il robot apprende da solo: cenni di A.I.

Oggi vi mostreremo come realizzare un robot Do It Yourself (fai da te) dotato di intelligenza artificiale (A.I.).


Alcuni libri utili

Iniziamo la lezione col dare alcuni riferimenti bibliografici utili:

Artificial Intelligence. 23 Projects to bring your microntroller to life!

Artificial Intelligence: 23 Projects to Bring Your Microcontroller to Life!

In esso sono contenuti esempi di progetti per dare vita al proprio microcontrollore. Non è basato su Arduino, ma fornisce un modello di riferimento per costruire un programma che dia al robot un’apparenza di comportamento intelligente.

All’interno dei progetti mostrati, si trovano modelli di codice per simulare comportamenti apparentemente intelligenti del robot (o del microcontrollore). In particolare, ci siamo soffermati sui capitoli: Roulette Wheel brain, Le reti neurali di Opfield (reinforcement machine learning, apprendimento automatizzato con rinforzo), Architettura a sussunzione (o behaviour robotics, robotica basata sui comportamenti)










Consigliamo, se si lavora con Arduino, di iniziare dal primo libro, se invece si lavora con Raspeberry Pi, meglio iniziare dal secondo.


HBRT

Il nostro è un progetto di robotica DIY (Do It Yourself) e lo abbiamo chiamato HBRT (How To Be a Robot Trainer).

Per una più chiara spiegazione, può essere scomposto nei 3 domini principali della robotica DIY:

  1. Stampa 3D;

  2. Elettronica;

  3. Coding.


HBRT intelligenza artificiale
HBRT


Stampa 3D

Il robot è stato interamente stampato in 3D. E’ possibile stamparlo anche con una stampante 3D di piccole dimensioni, con piatto di stampa di 12X10 cm.

Abbiamo modellato con Tinkercad tutte le parti meccaniche interne squadrate, mentre le parti curve (frontalino, ruote, dorso) sono state modellate con Rhino. E’ comunque possibile modellare il robot interamente con Tinkercad ottenendo un risultato funzionale, anche se con esteticamente diverso.



Elettronica

Il robot è alimentato con batterie ricaricabili da 2400/2450 mA/h, poiché la carica dura più a lungo e perché per muovere i servomotori serve più potenza.

Esso ha servomotori a 360°. I servomotori in genere ruotano da 0 a 180° e servono per riprodurre il movimento delle articolazioni (umane o animali).


servomotore robotica educativa
Servomotore

Solitamente i robot con le ruote montano i DC motors (motori in corrente continua, come ad esempio quelli che troviamo in Mbot), ma noi abbiamo scelto di non usarli per motivi tecnici (avremmo dovuto aggiungere nella scheda un componente che gestisce il verso di rotazione dei motori).

DC motors
DC motors

Abbiamo, invece, scelto di usare i servomotori a 360°, collegabili direttamente alla scheda e regolabili nel verso semplicemente dal codice, per risparmiare un po’ di spazio nell’hardware e nell’elettronica. Lo svantaggio è che sono un po’ più costosi e delicati dei motori in corrente continua e che, non essendo stati acquistati perfettamente tarati in coppia, possono presentare lievi differenze di velocità e impedire lo spostamento in linea retta del robot.

Troviamo poi nel robot una scheda Arduino Nano, inserita in una base, detta shield. Le schede Arduino, infatti, possono essere integrate con schede aggiuntive dette shield, che danno circuiti extra, oppure facilitano la gestione di servomotori o sensori perché sono già predisposte con ingressi a tre poli (polo +, polo -, polo che invia/riceve segnale dalla scheda), per collegare in maniera più semplice i servomotori e i sensori ad infrarossi. Gli shield fanno, quindi, risparmiare spazio e cavi.


Arduino Nano
Arduino Nano

Il robot ha:

  • il sensore ad ultrasuoni (grove);

  • un pulsantone sul dorso (arcade button);

  • un buzzer che emette un suono;

  • 5 sensori ad infrarossi, che inviano un messaggio on/off quando il campo è libero o quando l’ostacolo è vicino. Sono analogici, quindi il loro range di copertura di distanza può essere regolabile manualmente agendo con un cacciavite a stella su alcune viti. Come tutti gli infrarossi analogici risentono della presenza di elevata luce solare, quindi deve esserne regolata la sensibilità.


HBRT


Come funziona HBRT

Il robot, realizzato per un progetto europeo, è una sorta di animale domestico che il giocatore deve addestrare ad assumere determinati comportamenti in relazione a specifiche situazioni.

Il robot è dotato di 3 comportamenti di base:

  1. Comportamento di caccia (hunter): appena il robot rileva qualcosa con i sensori a ultrasuoni o con gli infrarossi, si orienta in quella direzione e segue quella preda;

  2. Comportamento di fuga (prey): il robot fugge dallo stimolo rilevato;

  3. Comportamento di disinteresse (spacelove): il robot si muove dove trova uno spazio aperto in cui i sensori non rilevano ostacoli ed evita quello che si frappone tra lui e la sua passeggiata.

Il giocatore assiste e osserva con attenzione il comportamento del robot.

Il robot, avvisando con un suono, decide autonomamente di cambiare comportamento ogni 5 secondi.

Il giocatore può dare un rinforzo al comportamento che gradisce, premendo il pulsante sul dorso. Tale rinforzo, piano piano, aumenterà la probabilità che quel comportamento si ripresenti.

All’inizio, quando il robot viene acceso, la probabilità che si manifestino i tre comportamenti è la stessa, in base ad un meccanismo casuale; rinforzandone uno, con la ricompensa del pulsante premuto, il robot lo farà prevalere, grazie al meccanismo dell’apprendimento con rinforzo.

Abbiamo, inoltre, inserito un meccanismo di oblio: se non vogliamo più rinforzare un certo comportamento, possiamo rinforzare gli altri due comportamenti oppure possiamo ignorare il robot, attivando, così, il meccanismo di oblio con il quale a poco a poco la percentuale più alta (quella del comportamento precedentemente rinforzato) inizia a decadere.





Modello di programma

Il modello seguente è ripreso dall’ultimo capitolo del libro Artificial Intelligence. 23 Projects to bring your microntroller to life!: Architettura a sussunzione (architettura che si usa nella robotica basata sui comportamenti).


Schema Artificial intelligence coding
Schema tratto dal libro: Artificial Intelligence. 23 Projects to bring your microntroller to life!

Questo modello non fa riferimento al nostro robot, ma un robot simile con altri sensori.

Si creano vari moduli (o stati) che chiamiamo behaviour che possono essere arrangiati con vari livelli gerarchici (dal basso verso l’alto).

Sulla sinistra del modello abbiamo i sensori: