Gruppo Cycloscope
Gruppo |
Cycloscope |
---|
Un'avventura in bicicletta attraverso l'Asia Centrale |
social network |
code repository |
Iscritti |
dancast78 Oloturia. Desmolupo |
Progetti in corso
Daniele ed Elena hanno in programma un viaggio in bici da Bologna all'Asia centrale per scoprire e documentare ad un ritmo lento ed ecologico come accadeva spesso nel passato.
L'itinerario che è visualizzato nella parte superiore della pagina li porterà a conoscere diverse culture che racconteranno con alcuni reportage.
Tra l'altro questo potrebbe essere solo il primo di una serie di viaggi e reportage in bicicletta.
Ci hanno contattato per avere supporto per realizzare il loro progetto di street sampling e nel frattempo è nata un'amicizia.
Quindi stiamo dando loro un contributo su vari fronti.
Stiamo preparando:
- un sistema per la ricarica delle batterie a cui collegare la fotocamera
- il controller per il sistema di street sampling
- supporti per la fotocamera, il ricevitore gps, il supporto per magnete per il conteggio della distanza percorsa
Ricarica batterie
Per la ricarica delle batterie è montata sulla bici di Daniele una dinamo Dynohub GH12 del 1936 - 12 volt 0.23 amp,2.7W, un vero pezzo di storia!
Abbiamo pensato per preservare la fotocamera di collegare un circuito raddrizzatore ed un convertitore dc/dc a un batteria al litio, che una volta caricata potrà essere collegata alla go pro, in questo modo evitiamo problemi derivanti da malfunzionamenti del circuito di ricarica o altri imprevisti anche se energeticamente non è la soluzione piuù efficiente.
Street sampling
Il controller per lo street sampling di per sè è abbastanza semplice concettualmente, contare 500 metri e scattare una foto.
Abbiamo diverse limitazioni dovute alla mancanza di una fonte d alimentazione costante, perciò è necessario utilizzare alcuni accorgimenti per ridurre i consumi ed evitare di aggiungere batterie esterne.
Grazie ad un prezioso suggerimento su questa pagina MSP430 Projects abbiamo pensato di collegare il circuito direttamente alla fotocamera, tra il pin 12 del bus I/O (scatto accensione) ed il pin 1 o 30 (a massa).
Con questo sistema si utilizza sempre la batteria della Go Pro per alimentare anche il circuito, ma la corrente massima disponibile è di 2 mA.
Quindi è necessario caricare un condensatore che alimenti il micro quando viene portato a massa il pin di alimentazione, inoltre il micro va programmato su base interrupt e mandato in sleep per ridurre i consumi.
La cpu va risvegliata periodicamente per la misurazione dei tempi, infatti c'è una sequenza temporale da rispettare per lo scatto:
- al raggiungimento della distanza impostata (500 metri) il segnale sul pin 12 va portato a massa per 250 millisecondi, in questo modo la Go Pro si accende
- attendere 3 secondi per far scattare la foto alla Go Pro impostata in modalità One Button con scatto ogni 2 secondi
- portare a massa il pin 12 per 3 secondi per farla spegnere
In pratica la stessa cosa si potrebbe fare manualmente con un pulsante semplicemente rispettando le tempistiche giuste e collegando il pin 30 e il 12 ad un pulsante.
Galleria
Materiale hardware e software del progetto
Tutto il materiale hardware e software per il progetto è disponibile:
Hardware:
- Fotocamera Go Pro Hero, un classico per usi sportivi, resistente e disponibile anche con il case subacqueo
- Supporti in alluminio per Go Pro personalizzati per le loro biciclette
- A3212ELHLT-T sensore di Hall a basso consumo (pochi microAmpére, contro alcuni milliAmpère)
- Atmega328p il microcontrollore usato su Arduino, perchè lo conosciamo abbastanza bene ed è abbastanza versatile.
- Connettori Sandisk compatibili con il connettore I/O GoPro e alcune info
- convertitori dc/dc da collegare alla dinamo al mozzo per la ricarica della batteria di riserva
Programmazione del controller:
settaggio dei fuses
sudo avrdude -p m328p -c usbasp -U lfuse:w:0x62:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m
nella cartella in cui si trova il file cycloscope_photo_trigger.hex lanciare il comando
sudo avrdude -p m328p -c usbasp -U flash:w:cycloscope_photo_trigger.hex
Documentazione utile
MSP430 Projects una bella spiegazione su come utilizzare la porta I/O della go pro a cui stiamo ispirando anche il nostro progetto
Il connettore che abbiamo adottato
Modifica dei metadati delle immagini
Il software da riga di comando più utilizzato per l'elaborazione dei meta dati delle immagini sembra essere ExifTool di Phil Harvey, quindi vediamo di utilizzarlo per i nostri scopi:
- marcare le foto aggiungendo nella descrizione il nome del progetto
- volendo geotaggare le foto (ma questo può essere fatto comodamente anche con altri tool), ad esempio Viking
- una volta geotaggate le foto farne il reverse geocoding (in pratica dalle coordinate ricavare info sul luogo in cui è stata scattata)
Partiamo con l'installazione del tool:
dalla home di ExifTool http://www.sno.phy.queensu.ca/~phil/exiftool/ scarichiamo l'ultima versione del software (potrebbe variare il numero di versione, ma non ho trovato un riferimento all'ultima che sia standard)
wget http://www.sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-9.58.tar.gz
ci troveremo un file Image-ExifTool-9.58.tar.gz
tar xvfz Image-ExifTool-9.58.tar.gz
ed entriamo nella dir
cd Image-ExifTool-9.58/
ora possiamo vedere i metadati di un file semplicemente con il comando
exiftool /tmp/GOPR1332.JPG
ora dopo aver fatto una copia di backup dei dati!! possiamo passare alla modifica dei metadati
prima verifichiamo ad esempio il campo description
exiftool -ImageDescription /tmp/GOPR1332.JPG
generalmente contiene dati servizio e poco utili
Image Description : DCIM\109GOPRO
passiamo alla modifica
exiftool -ImageDescription="Cycloscope project - http://itcycloscope.weebly.com/" /tmp/GOPR1332.JPG
ora verifichiamo con il tool
exiftool -ImageDescription /tmp/GOPR1332.JPG
il risultato dovrebbe essere questo
Image Description : Cycloscope project - http://itcycloscope.weebly.com/
in questo modo abbiamo modificato una foto ma allo stesso modo e dopo aver fatto una copia di backup dei dati!! possiamo passare alla modifica di tutte le foto usando i caratteri jolly
exiftool -ImageDescription /tmp/GOPR*.JPG
Reverse geocoding
Date le coordinate di una foto può essere utile capire in quale luogo è stata scattata questo può essere fatto interrogando i server di openstreetmap e gestendo la risposta
curl "http://nominatim.openstreetmap.org/reverse?%20lat=44.49443&lon=11.34298&format=xml&addressdetails=0"| grep -Po "(?<=>)(.*)(?=</result>)"| awk -F"," '{print $4$8}'
in questo caso abbiamo scelto di visualizzare città e paese a cui si riferiscono le coordinate
Bologna Italia
Appunti sparsi su informazioni utili per dati geografici
Visualizzare al volo sul browser una traccia gpx usando openlayers.
Visualizzazione del percorso di cycloscope
Dopo una prima visualizzazione del percorso sviluppata in proprio abbiamo deciso di utilizzare un servizio dedicato alla visualizzazione di dati geografici per il percorso. Qui di seguito l'antemprima della mappa. Cliccando sull'immagine si viene reindirizzati sul sito arcgis. La visualizzazione della mappa e' comunque onerosa per il pc che impiga diverso tempo per mostratrla.
La visualizzazione dei dati in dettaglio
Qualche dattaglio sulla gestione dei dati in arrivo dai ragazzi:
- Sul server di appoggio abbiamo predisposto una cartella in cui vengono create sottocartelle giornaliere con data e luogo di partenza ed arrivo, qui vengono appoggiati gli originali delle foto, e delle tracce gpx. Il trasferimento viene fatto con rsync per consentire anche in caso di interruzione della copia una sincronizzazione affidabile e veloce.
- Le tracce gpx vengono unite automaticamente con il tool gpsbabel che consente di concatenare i files.
/usr/bin/gpsbabel -i gpx $track_list -o gpx -F /var/www/cycloscope/cycloscope.gpx
- Le immagini vengono geotaggate come descritto sopra con il tool exiftool che partendo da lla traccia gpx include nei metadati le coordinate.
- Viene fatto reverse geocoding e scritto nel campo description dei metadati ell'immagine per risalire al luogo in cui e' stata scattata.
- Alle foto viene aggiunto anche il watermark con il logo di cycloscope in basso a destra.
- Vengono generate sia le thumbnails che immagino con una risoluzione adatta per essere visualizzate sul monitor del pc.
tutte queste operazioni vengono eseguite nello script photo_lab.sh
- Dalle immagini poi vengono lette le coordinate delle immagini e salvate in un file csv che sara' letto dalla pagina che visualizza i marcatori sulla mappa.
Tutto questo viene fatto su una pagina php markers2csv.php ed il risultato e' questo markers.csv
Evoluzione della visualizzazione delle immagini
Man mano che i ragazzi proseguono nel viaggio aumenta la quantita' di dati prodotta e inizia a diventare lento il caricamento della visualizzazione su mappa percio':
- I marcatori sulla mappa vengono visualizzati ogni 10 foto
- Si rende necessaria una pagina per la visualizzazione delle foto non associate al marcatore, abbiamo optato per l'uso del plugin jquery wookmark
- La traccia gpx diventa un po' troppo grande da renderizzare percio' va semplificata
for track in /home/dancast78/gpx_lab/*.gpx do track_list="$track_list -f $track " done /usr/bin/gpsbabel -i gpx $track_list -x simplify,count=200 -o gpx -F /var/www/cycloscope/cycloscope.gpx
- Capita che le tracce gps siano troppo complesse o contengano dati errati perciò a volte occore pulirle, e sicuramente ridurle a files giornalieri con il seguente comando:
gpsbabel -x simplify,count=100 -t -i gpx -f photo/GoPro/LUG-18-14\ 100814.gpx -x track,start=201407180000,stop=201407182359 -o gpx -F gpx/20140718.gpx
con il comando sopra indicato si estraggono dal file photo/GoPro/LUG-18-14\ 100814.gpx solo i dati del giorno 2014/07/18 dalle 00:00 alle 23:59 semplificando la traccia a max 100 punti
Per visualizzare la traccia in una applicazione grafica può fare comodo calcolare il centro delle coordinate contenute, questo è abbbastnza semplice aprendo il file gpx prodotto da gpbabel tra le prime righe compare:
grep bounds gpx/20140505.gpx <bounds minlat="44.516046000" minlon="11.351555000" maxlat="44.706296000" maxlon="11.782880000"/>
ad esempio con awk
grep bounds gpx/20140505.gpx | awk -F"\"" '{print ($4+$8)/2","($2+$6)/2}' 11.5672,44.6112
Aggiornamento sito web
Qui sotto sono riportati alcuni passaggi per la rielaborazione dei dati dopo la fine del viaggio
exiftool -n -filename -gpslatitude -gpslongitude -csv -T /cartella/che_contiene/le_foto/*/*.JPG > geotagged_photo_db.csv