Differenze tra le versioni di "Gruppo Cycloscope"

Da raspibo.
Jump to navigation Jump to search
(8 versioni intermedie di uno stesso utente non sono mostrate)
Riga 84: Riga 84:
 
!align="center"| [[File:IMG 20140427 161402.jpg|thumb|300px|Controller nel contenitore a prova di pioggia]]
 
!align="center"| [[File:IMG 20140427 161402.jpg|thumb|300px|Controller nel contenitore a prova di pioggia]]
 
!align="center"| [[File:IMG 20140427 152815.jpg|thumb|400px|Circuito di ricarica nel contenitore a prova di pioggia]]
 
!align="center"| [[File:IMG 20140427 152815.jpg|thumb|400px|Circuito di ricarica nel contenitore a prova di pioggia]]
 +
|}
 +
 +
 +
{|
 +
! align="center"| [[File:IMG_20140504_175758.jpg|thumb|1024px|La bici di Daniele]]
 +
|-
 +
! align="center"| [[File:P1100036.JPG|thumb|512px|right|dettaglio bici Elena]]
 +
! align="center"| [[File:P1100034.JPG|thumb|512px|right|dettaglio bici Elena]]
 
|}
 
|}
  
Riga 97: Riga 105:
 
Programmazione del controller:
 
Programmazione del controller:
  
nella cartella in cui si trova il file cycloscope_photo_trigger.hex lanciare il comandp
+
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
 
  sudo avrdude -p m328p -c usbasp -U flash:w:cycloscope_photo_trigger.hex
Riga 177: Riga 189:
  
 
= Visualizzazione del percorso di cycloscope =
 
= 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.
 +
[[File:Cycloscope map.png|link=https://www.arcgis.com/home/item.html?id=a2a95855fbb947bf9befbd0d5db09b18|800px|thumb|center|Mappa]]
 +
 +
= 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 [https://github.com/raspibo/cycloscope/blob/master/geotag_scripts/photo_lab.sh 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 [https://github.com/raspibo/cycloscope/blob/master/web/markers2csv.php markers2csv.php] ed il risultato e' questo [https://github.com/raspibo/cycloscope/blob/master/web/markers.csv 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 [http://www.wookmark.com/jquery-plugin 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
  
[[File:Cycloscope map.png|link=http://lela.ismito.it/cycloscope/cycloscope.php|800px|thumb|center|Mappa]]
+
exiftool -n -filename -gpslatitude -gpslongitude -csv -T /cartella/che_contiene/le_foto/*/*.JPG > geotagged_photo_db.csv

Versione delle 14:04, 9 mar 2017

{{#if: http://raspibo.ofpcina.net/groups/profile/4202/cycloscope%7C }} {{#if: | }} {{#if: https://github.com/raspibo/cycloscope/%7C }}
Gruppo
Cycloscope.png }}Cycloscope
Un'avventura in bicicletta attraverso l'Asia Centrale

Cycloscope project

social network
[ mailing list]
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

Cycloscope
Il percorso


Materiale hardware e software del progetto

Tutto il materiale hardware e software per il progetto è disponibile:


Caricabatteria per la batteria di riserva (USB)
Supporti per la camera, magnete per la ruota e per il ricevitore gps realizzati su misura
La scheda per lo street sampling su breadboard
Pcb del controller visualizzato in kicad
Schema elettrico visualizzato in kicad
Rendering del nuovo controller
Test consumi scheda comando fotocamera
Programmazione per i test hardware
Programmazione per i test hardware
Controller nel contenitore a prova di pioggia
Circuito di ricarica nel contenitore a prova di pioggia


La bici di Daniele
dettaglio bici Elena
dettaglio bici Elena

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

Piedinatura I/O in dettaglio

Il connettore che abbiamo adottato

Un archvio di hacks per GoPro

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.

Mappa

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