Chaotic Robots 2.1¶
Il progetto nasce dall’idea di far dialogare l’artigianato con la robotica creativa. Un approccio virtuoso per il Design, teso a sottolineare tutti i vantaggi della stampa a tre dimensioni.
La scocca è stata realizzata grazie alla collaborazione con GreenTales, progettata per seguire e favorire il comportamento imprevedibile dei robot.
I robots sono costituiti da una scheda elettronica programmabile, in grado di controllare il senso di rotazione e la velocità dei motori per le ruote.
Alla scheda elettronica sono connessi due sensori infrarossi di prossimità in modo tale che i robots non possano entrare in collisione.
Lo spazio in cui si muovono i robots è un piano liscio di colore nero con bordi bianchi, in modo tale che i robots con particolari sensori di riflessione posti alla loro base siano in grado di riconoscere il bordo del piano d’azione, evitando così di uscire dalla zona di libero movimento.
I movimenti dei Rover sono tracciati riprendendoli con una Webcam ed utilizzando la libreria OpenCV per disegnare le linee dei percorsi svolti.
All'interno della pallina da ping pong c'è un LED ad alta intensità dove un'applicazione in openFrameworks cattura il video da una telecamera posta sopra l'arena dei robot ed estrae le coordinate x, y del blob bianco (forma analizzata dal software) formato dalla pallina da ping pong. Con queste informazioni una scia viene sovrapposta al video per mostrare le traiettorie dei robot.
Cahotic Robots Music
E’ un estensione del progetto Cahotic Robots 2.1, sviluppata da due tecnici del suono della Scuola di Ingegneria del Suono di Milano (http://www.limulo.net/it/templates/chaotic-robots-music.php).
Tale estensione permette ai robots caotici di cantare e suonare musica in tempo reale in accordo con i loro movimenti determinati da stimoli esterni.
In pratica è stato realizzato un software (patch) in linguaggio PureData, un linguaggio di programmazione visuale gratuito ed open source, in grado di ricevere informazioni dei movimenti caotici tracciati dai Robots, mediante protocollo OSC .
Design¶
La scocca è stata realizzata grazie alla collaborazione con GreenTales.
Vedi foto e descrizione sul loro profilo facebook
Il progetto nasce dall’idea di far dialogare l’artigianato con la robotica creativa. Un approccio virtuoso per il Design, teso a sottolineare tutti i vantaggi della stampa a tre dimensioni.
Funzionalità, personalizzazione, valorizzazione. Una scocca articolata creata per seguire e favorire il comportamento imprevedibile dei robot.
Modello 3D¶
Ecco il modello 3D dello scafo disinistra e didestra (i file sono in formato .stl)
Schede¶
Orangutan B-328¶
dimensioni: 30 x 18 mm
tensione di ingresso: 5-13.5V (15V absolute maximum)
- un microcontrollore programmabile Atmel ATmega328P AVR a con risonatore esterno a 20Mhz (32 KB flash, 2 KB RAM, 1 KB EEPROM)
- due canali motori con capacità di carico di 1A continui (3A di picco) per canale grazie al doppio ponte-H TB6612FNG datasheet
- un LED
- un trimmer collegato al canale ADC7
- 18 linee di I/O, 16 delle quali possono essere usate per I/O digitale, 8 anche come ingressi analogici (ADC6, da PC0 a PC5 e di cui ADC7 è un potenziometro) e 2 PWM (PB2 e PB4)
Vedi descrizione completa sul sito del produttore
Shield prototipo¶
Per ora ho realizzato una basetta millefori con le connessioni necessarie per far funzionare gli Orangutan B-328 con tutti i sensori necessari.
Montaggio¶
Per ora mancano le 2 resistenze da 10k che fanno da partitore resistivo tra GND w A0 w Vin.
Nella versione 2.0 questo partitore resistivo è stato usato per il monitorare il voltaggio del pacco batterie al fine di regolare la velocità finale dei robot in modo da mantenerla costante al diminuire della tensione.
Top¶
- in alto a destra si possono notare i cavi di alimentazione per il motore SX
- in basso da SX a DX
- cny70 SX
- cny70 DX
- sharp SX
- sharp DX
- morote DX
- alimentazione GND e VIN
Bottom¶
I collegamenti su questo lato sono stati realizzati saldando le strip sulla basetta millefori per ospitare i connettori dei sensori, dei motori, di alimentazione e la scheda B-328.
(qui sopra e sotto sono scambiati )
- M1A (motore SX +),M1B (motore SX -) 2pinF
- strip F per B-328 lato SX 14pinF
- +5v 1pinF
- vuoto
- vuoto
- vuoto
- vuoto
- strip F per B-328 lato DX 14pinF
- PC0 (A0), PC1 (A1), PC2 (A2), PC3 (A3), PC4 (A4), PC5 (A5) 6pinM | M2A (motore DX +), M2B (motore DX -),GND, Vin 4pinF
- GND 6pinM
- VCC (+5V) 6pinM
Shield definitiva¶
Il progetto è stato realizzato con Eagle
File Eagle¶
Per permettere uno sbroglio più agevole del circuito abbiamo sviluppato prima una libreria per l'Orangutan B-328 e successivamente lo Schema elettrico e il PCB
La scheda permette di alimentare tutti i sensori e/o attuatori grazie a connettori che dispongono di Segnale-GND-VCC o Segnale-VCC-GND (come supportato dai servo-motori)
Montaggio¶
Top¶
Bottom¶
Montaggio B-328 e Shield sul Chaotic Robot 2.1¶
inserire foto qui
Sensori¶
Sharp GP2Y0A21YK - Sensore infrarosso di prossimità 10-80cm¶
I due sensori montati sulla parte frontale dei robot con un angolo di circa 90° tra di loro permettono di rilevare la distanza dagli ostacoli per evitarli.
Gli Sharp rilevano la prossimità degli ostacoli e la programmazione effettua il confronto con una soglia massima e tra i sensori DX e SX. Quando questa viene superata e i robot curvano nella direzione più vantaggiosa.
//Se il robot si trova all'interno del "campo di gioco" i valori di val_cny70R e val_cny70L rilevano B (bianco) e if (val_cny70L == B && val_cny70R == B) { //Se il sensore di prossimità non rileva un ostacolo val_sharp <= distanza if (val_sharpL <= dist && val_sharpR <= dist) { // Vado dritto } else { //Se il sensore di prossimità di DX rileva un ostacolo e i valori di DX >= SX if (val_sharpR > dist && val_sharpR >= val_sharpL) { // Giro a destra } //Se il sensore di prossimità di SX rileva un ostacolo e i valori di DX <= SX if (val_sharpL > dist && val_sharpR <= val_sharpL) { // Giro a sinistra } } }
Grafico dei valori restituiti dai sensori
Vishay CNY70 - Reflective Optical Sensor with Transistor Output¶
I sensori montati verso il pavimento permettono di riconoscere il "campo di gioco" e permettono ai robot di restarvi all'interno. Il "campo di gioco" è costituito da un tappeto di TNT (tessuto-nontessuto) nero e delimitato da una striscia di carta bianca.
I due sensori di riflessione CNY70 rilevano il colore (in realtà misurano la riflessività agli infrarossi) della superficie su cui si trovano e la programmazione a stati finiti considera tutte le combinazioni possibili tra sensore DX e SX e li confronta con i valori immagazzinati.
Quando i robot giungono al bordo del campo incontrano la striscia bianca e curvano nella direzione più vantaggiosa per tornare sul tappeto nero.
Tabella degli stadi possibili
Questa tabella è stata disegnata per un "campo di gioco" bianco con bordo nero.
Schema¶
Montaggio¶
- Schema top - bottom
blu segnale, nero GND, rosso +5V
Il foro per la vite M3 è stato effettuato con una punta di trapano da 2.5mm ed allargato con un giravite a stella.
I fori fermacavi sono stati effettuati con una punta da 1mm
(2 quadratini = 1 foro basetta)
- Board top - bottom
verde segnale, bianco GND, giallo +5V
- Board lato SX - DX
verde segnale, bianco GND, giallo +5V
Software¶
Robot¶
Per la programmazione del B-328 utilizzeremo:- il programmatore ISP Pololu USB AVR Programmer e
- l'IDE di Arduino cui vanno aggiunte una serie di librerie per il controllo dei motori e la gestione degli ingressi analogici
Questo è un esempio di utilizzo delle librerie pololu per il controllo dei motori
Software da caricare sul Chaotic Robot 2.1
Realtà aumentata¶
All'interno della pallina da ping pong c'è un LED ad alta intensità, un'applicazione in openFrameworks cattura il video da una telecamera posta sopra l'arena dei robot ed estrae le coordinate x, y del blob bianco formato dalla pallina da ping pong. Con queste informazioni una scia viene sovrapposta al video per mostrare le traiettorie dei robot.
L'applicazione è modellata sull'esempio "example-contours-following", distribuito con l'addon "ofxCv" di Kyle McDonald per openFrameworks.
Download software
BlobFollowing in cui alla ripresa si sovrappone una traccia di diverso colore ad ogni blob rilevato o
BlobFluid come in questo video
Le traiettorie, in questa prova, vengono generate disegnando in aria con un led davanti alla webcam.
Musica generativa - ChaoticRobotsMusic by LIMULO¶
Il software è stato sviluppato da Limulo come progetto complementare al nostro lavoro.
Eccone una descrizione più che completa da parte dell'autore.
Link alla pagina del progetto su Limulo.net
Fonti¶
Per il firmware, i collegamenti e il posizionamento dei sensori (sia gli Sharp per la distanza che i CNY70) farei riferimento al progetto Ardusumo:
http://www.open-electronics.org/ardusumo-an-open-source-platform-for-fighting-robots/
Schema:
http://www.open-electronics.org/wp-content/uploads/2013/01/Ardusumo_Schema.jpg
La cartella con tutti i file raccolti è questa