Progetto

Generale

Profilo

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)

Questa scheda include:
  • 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
    1. cny70 SX
    2. cny70 DX
    3. sharp SX
    4. sharp DX
    5. morote DX
    6. 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 )

Descrizione colonne da SX a DX e dall'alto un basso
  1. M1A (motore SX +),M1B (motore SX -) 2pinF
  2. strip F per B-328 lato SX 14pinF
  3. +5v 1pinF
  4. vuoto
  5. vuoto
  6. vuoto
  7. vuoto
  8. strip F per B-328 lato DX 14pinF
  9. PC0 (A0), PC1 (A1), PC2 (A2), PC3 (A3), PC4 (A4), PC5 (A5) 6pinM | M2A (motore DX +), M2B (motore DX -),GND, Vin 4pinF
  10. GND 6pinM
  11. 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
      }
    }
  }


Modello cad 3D

Grafico dei valori restituiti dai sensori


Datasheet del sensore Sharp

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.


Datasheet Vishay CNY70

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