Progetto 2012/2013: Arduguardia

FIXME questa pagina è un po' disordinata :-\ in realtà buona parte delle info sono nel repo git o… nella nostra testa :-(

Descrizione

Un robottino (roomba-like) che possa girare per casa a monitorare ciò che succede

Che lavori sia in modalità telecontrollata (via web) sia in autonomia (in seconda battuta)

Eventualmente con qualche tipo di attuatore (stun gun, braccio robotico, lanciamissili, gauss gun)

Probabile che serva qualcosa di più del solo Arduino per farlo andare (serve wifi, webcam, webserver, filesystem, etc.), scelto Carambola

Foto e video

Montaggio finale Nuovo case Prima versione (nel vecchio contenitore "pentola da forno") Prima versione (nel vecchio contenitore "pentola da forno")

The Adobe Flash Plugin is needed to display this content.
The Adobe Flash Plugin is needed to display this content.

Architettura

FIXME

L'arduino fa da servo, è l'attuatore per i vari motori, etc. Così sfruttiamo la sua capacità di I/O senza impazzire sul GPIO del Carambola, inoltre per Carambola al momento non ci sono “shield” già pronti…

Carambola fa da master, gestisce il wifi, eventuale interfaccia web, eventuale cervello per navigazione autonoma, pilota l'Arduino via USBserial (/dev/ttyACM0) cosi' possiamo sia pilotare l'arduino che eventualmente riprogrammarlo

Layers

NEWS: carambola nun gliela fa', R.I.P.

Ergo passiamo a Raspberry PI + chiavetta wifi etc.

Lista della spesa

HW
  • raspberry PI [c'è]
  • chiavetta wifi [atrent ne ha un po', da provare se supporto]
  • hub usb [c'è]
  • arduino rimane + motor shield [c'è]
  • webcam recuperarne qualcuna
SW
  • ruby (verificare se ok su PI)
  • web server (nginx/apache)
  • dokuwiki per le strategie editate collaborativamente
  • shell varie ma ci sono
  • motion (recuperiamo config di MatteoP)

Old notes

  • (a parte) motion per webcam
  • interfaccia web che raccoglie le indicazioni di strategia da adottare dagli utenti, raccoglie le votazioni e a votazioni terminate attiva la strategia chiamando lo strato sotto, funzioni da realizzare:
    • login (definiamo noi a priori gli utenti, su file config)
    • submit strategie
    • voting
    • attivazione strato sottostante
  • python/java/etc. su carambola che comunica con arduino via seriale
  • arduino+motorshield
  • motori etc.

TODO verificare eventualmente possibilita' di attaccarsi ad AP unimi etc. (filtri?)

oppure installiamo un router avulso da tutto con login open

Collab strategy - Voting???

TODO verificare che funzioni nginx/apache su carambola

Alla minima si puo' usare un wiki (tipo dokuwiki con pagine testo su file) e ArduGuardia legge le pagine opportune (decidere naming convention) eseguendo il contenuto, es:

  • 2013-05-02-1700 è una strategia che viene eseguita il 2 maggio 2013 alle 17:00

FATTO, cfr. ArduSlave: trovare/creare una lib per pilotare l'arduino dal pc via usbserial, sul pc e' facile, basta decidere un protocollo semplicissimo, inviare comandi (AT-like ma più compatti) e ricevere risultati, BTW se non esiste già una lib potrebbe essere un progetto a sè stante interessante… direi che qualcosa c'è già:

FIXME decidere/sperimentare struttura fisica del robot, perche' in funzione dei (ad es.) motori (stepper o normali) abbiamo modalita' diverse di gestione

DONE verificare che su carambola si possano usare tranquillamente python e librerie varie (problemi RAM? pacchetti mancanti?)

Funzioni dell'Arduguardia

  • Trasmettere quello che vede/sente
  • Scattare foto
  • Modalita' indipendente
  • Evitare ostacoli
  • Da studiare: Sistemi di posizionamento/navigazione

Componenti

  • Arduino/Arduslave: pilota i motori, gli attuatori (luci, cannone, etc.), legge i sensori
  • Carambola:
    • comunica con Arduslave per le funzioni di basso livello
    • gestisce webcam (con motion)
    • eventualmente audio (in ingresso e in uscita)
    • costruisce le strategie di comportamento (in modo collaborativo tramite gli utenti?)
    • gestisce website per l'accesso da parte degli utenti

Roadmap

  • Creare una libreria per poter comandare Arduino direttamente da Carambola. Stato avanzamento: Quasi completo ArduSlave
    • Come effettuare il parsing dei comandi (carattere per carattere con switch vs bufferizzazione in stringhe)
    • Se inserire o meno un segnale di termine del comando
    • Come trattare i comandi a lunghezza variabile
    • Come gestire i comandi “temporizzati”, senza rendere l'arduino “sordo” a tutto quello che arriva nel frattempo.
    • Verificare firmata!!! (fatto, ancora poco maturo…)
  • Creare controller da far girare su carambola
    • scelto python
    • TODO verificare che su carambola giri java, temo di no, CONFERMO NO

cfr. packages: http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/

Repo

gitolite@sl-lab.it:arduguardia

Riferimenti

Tor addresses per raggiungere i vari servizi:

Temp finche' non lo monto in ufficio: http://159.149.159.242/dokuwiki

TODO

  • fissare batteria
  • Controllare funzioni direzioni: direzioni.pdf
  • wifi (ancora da provare, cmq non credo ci siano problemi)
  • controller ruby (verificare che ci siano tutte le funzioni e magari correggerle o aggiungerle)
  • arduslave (testing ulteriore, verifica PWM)
  • aggiornare QUESTO wiki (fare qualche schema) ;)
  • problema porta seriale (si resetta resettando quindi l'arduino, trovare modo di tenerla aperta, con stty o setserial?) → controllare le opzioni per non alzare o abbassare DTR
  • [parzialmente fatto da Luca e Simone] script (o aggiunta in ruby) per pescare le strategie di percorso dal wiki
  • fissare tutte le cose nella scatola
  • gauss gun (palmi)