Visualizzazione post con etichetta SRTM. Mostra tutti i post
Visualizzazione post con etichetta SRTM. Mostra tutti i post

sabato 2 marzo 2013

Facciamo il punto

Talvolta, guardando le statistiche messe a disposizione dalla piattaforma Google Blogger, mi capita di osservare come alcuni articoli vengano letti dall'India, dalla Russia, dal Sud e Nord America, e in tutti i paesi dell'Europa. Il blog è in lingua italiana, quindi mi scuso con i lettori stranieri che devono usare Translator (http://translate.google.com/). Sono certo, tuttavia, che alcuni spunti siano fruibili indipendentemente dalla lingua nativa e, in fin dei conti, il codice ANSI C o VHDL, non ha una specifica nazionalità!


Oggi desidero ripercorrere sinteticamente il lavoro svolto fin qui, segnalandovi il contenuto dei progetti fondamentali che sono stati presentati durante questa prima fase (Nota: per ciascun progetto trovate anche un video estratto dal mio canale YouTube http://www.youtube.com/user/liberaelettronica):

* - * - *

1) Microcontrollore Low End





2) Sistema Linux per il controllo dell'Assetto e della Posizione





3) Processore di Immagini con Sensore Video CMOS





4) Esperimenti con database SRTM (Shuttle Radar Topography Mission)




Ripensando a tutto il lavoro svolto, rivivo anche i momenti di entusiasmo e fatica, ma sono contento di esserne l'autore, poiché scrivo sia per sistematizzare le mie ricerche personali, sia per condividere con voi queste esperienze :)
Vi ricordo che i codici sorgenti, gli schemi a blocchi e gli schemi elettrici, sono liberamente disponibili per tutti coloro che vorranno contribuire a migliorare, estendere o produrre, quanto fin qui sviluppato.

A presto, Ciro.



martedì 17 gennaio 2012

Navighiamo in 3D - Parte 3

Per coloro che seguono il blog dall'inizio, questo titolo non è una novità. Abbiamo già parlato nei mesi passati del data-base georeferenziato SRTM (Shuttle Radar Topography Mission) e nei post dal titolo "Un Robot alla guida" ho cercato di evidenziare come l'utilizzo delle tecnologie inerziali e di radio-localizzazione satellitare (GNSS), possono facilmente integrarsi con i dati SRTM, andando così a formare un utile strumento di Navigazione 3D. In questi articoli ho posto in evidenza, soprattutto, quelle tecnologie disponibili a basso costo ...quindi per tutti coloro che amano la Nautica da Diporto e l'Aeronautica da Diporto, anche con piccoli ed economici mezzi, perfino autocostruiti.

Queste tecnologie ci consentono di migliorare la nostra consapevolezza dell'ambiente circostante, indipendentemente dalle condizioni di visibilità, aumentando, in generale, la sicurezza  della nostra navigazione. Inoltre, alcune tecnologie aggiuntive quali: messaggistica vocale, comunicazione voce-dati via radio (es. rete GSM,  Thuraya, canali VHF), sensori accelerometrici, ecc., se opportunamente integrate nei sistemi tecnologici di bordo, possono contribuire all'automazione di alcune funzioni di emergenza (es. Teleallarme Collisione, Allagamento, Incendio, Soccorso Medico, Assetto Anomalo, ecc.). Nei precedenti post troverete numerosi spunti per la realizzazione di sottosistemi elettronici similari.

(SRTM Tile N42E010 - Modello Matematico 3D. Fare click per ingrandire)

Vorrei spendere due parole in più sulla precedente immagine.
Come avrete subito notato, essa rappresenta l'arcipelago nel quale è avvenuto il naufragio della Nave da Crociera "Costa Concordia", un tragico evento occorso nella notte tra il 13 e il 14 Gennaio 2012, recentissimo  quindi, tanto che sono ancora in atto i soccorsi e le indagini delle Autorità preposte. Non è possibile pertanto indicare con esattezza le cause e la dinamica di questa sciagura. Sappiamo però che si tratta di una collisione della nave con la terra ferma (in particolare alcuni bassi fondali rocciosi ubicati sulla costa Est dell'Isola del Giglio), avvenuta nell'oscurità. Per maggiori informazioni vi riporto il link Wikipedia.

Tornando all'immagine, N42E010 non è un nome casuale. Significa 42° NORTH - 10° EAST, cioè le coordinate ECEF (Earth Centered Earth Fixed) del primo dato numerico contenuto nella Tile  SRTM (...piastrella in italiano), costituita da 1201x1201 punti (1x1 Gradi, più un valore sovrapposto alla Tile adiacente). Tutti i dettagli dei rilievi e della costa sono numericamente rappresentati con una risoluzione di 3'' (secondi d'arco), corrispondendi a circa 90m alle nostre latitudini. Ogni pixel (picture element) georeferenziato, risulta centrato all'interno di un cubo di 90m di lato.
Non sono pochi 90m ...di più non è stato possibile fare nel post-processing dei dati radar acquisiti dalla NASA nel corso della missione SRTM. Tuttavia, tale risoluzione, risulta sufficientemente elevata per consentirci una navigazione di precisione, almeno su scala geografica, mentre al di sotto dei 90-100m dovremo dotarci di un sistema  integrativo (es. Carte nautiche, Plotter cartografico, ecc.).

Nell'immagine seguente vediamo come si presenta la vista dall'alto (vista sintetica ...intendo, dove i dettagli  essenziali ci sono tutti, ma con una risoluzione di 3'') dell'Isola del Giglio, comparata con una fotografia satellitare:

(A sinistra una foto da Google Map, a destra il Modello Matematico.
Ogni pixel Blu rappresenta il mare, ogni pixel non-Blu rappresenta la superfice terrestre.
Il nostro "Robot alla Guida" conosce queste informazioni con una risoluzione di 3'')

(Elaborazione 3D Modello SRTM - Vista Sud-Est --> Nord-Ovest)

 (Come sopra, ma con lo sfondo dell'Isola di Montecristo)

Nelle due immagini precedenti ho cercato di visualizzare il maggior numero possibile di dettagli delle aree costiere dell'isola, per consentirvi una comparazione con molte delle immagini  relative al naufragio, presenti in questi giorni su tutti i media nazionali e internazionali, e vorrei concludere ricordando che i dati SRTM sono liberamente accessibili all'indirizzo http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/ per chiunque volesse sperimentare delle nuove applicazioni di realtà aumentata.

A presto, Ciro.

Appendice:
riporto i link degli articoli precedenti...


venerdì 16 dicembre 2011

Navighiamo in 3D - Parte 2

Nella prima parte dell'articolo, che trovate qui, ho introdotto l'argomento delle mappe altimetriche georeferenziate. Il data base SRTM (Shuttle Radar Topography Mission) è stato realizzato e pubblicato, per offrire una copertura pressoché globale della superficie del nostro Pianeta Terra.

(Modello 3D realizzato con Blender)

Oggi voglio mostrarvi un video, che ho realizzato per Voi, per dimostrare come l'utilizzo di tali mappe rappresenti un metodo estremamente efficace per implementare un'applicazione di Realtà Aumentata (Agumented Reality), detta anche di Computer Mediated Reality, utile nelle applicazioni di geo-localizzazione 3D di veicoli.

Ora, guardiamo insieme il video...


Visto? I territori rappresentati sono quelli del basso Lazio e della Campania. Essi vengono fedelmente rappresentati con una risoluzione di 3 Secondi d'Arco (circa 90m alle nostre latitudini). Ho cercato di far corrispondere alcune viste aeree, con la stessa prospettiva geografica  realizzabile con  l'ombreggiatore (...virare a 45° di bank è una sensazione ...non descrivibile nel blog!!!).
Per la realizzazione dei video 3D, consiglio di utilizzare Blender, un CAD 3D Open-Source, liberamente scaricabile dal sito http://www.blender.org/ e di seguire il tutorial che trovate qui, grazie a John Flower.
Direi che non mi resta che ricevere i Vostri video di realtà virtuale. Li pubblico volentieri!

Qui Pianeta Terra, ...in 3D, a presto.


venerdì 28 ottobre 2011

Navighiamo in 3D

Cari Amici del blog, oggi desidero parlarvi delle Mappe Georeferenziate SRTM (Shuttle Radar Topography Mission). Il progetto SRTM è da considerare uno sforzo colossale, organizzato dalla NASA e da altre Agenzie spaziali (ASI compresa), finalizzato alla realizzazione di un Data Base in 3D dell'intera superficie del nostro Pianeta Terra.

 


Nella precedente immagine vedete graficamente in cosa consiste l'output del progetto SRTM: una miriade di file altimetrici, detti TILE, perfettamente georeferenziati, che riportano in formato numerico l'altezza sul livello del mare (S.l.m.) di ogni rilievo, collina, montagna (isole e isolette, comprese), sparse per il nostro globo terraqueo ...una vera e propria manna per chi è interessato alla realizzazione di un autopilota/navigatore che, scherzosamente, nei precedenti post ho definito come "Un Robot alla Guida".

Come possiamo utilizzare i file HGT del progetto SRTM3?
Procediamo per passi ...e guardiamo insieme le relative immagini!

1) Aggiungiamo il Mare

2) Aggiungiamo il Sole

3) Aggiungiamo una Foto Satellitare dell'area di interesse

4) Elaboriamo l'immagine con un Ombreggiatore 3D ...e il gioco è fatto!!!
(Click per ingrandire - Golfo di Napoli, Penisola sorrentina, Capri)

Nella precedente foto abbiamo visto il risultato in una delle tante possibili viste prospettiche. Ma andiamo più in dettaglio e vediamo, con la prossima foto, cosa ci offre il Data Base SRTM3 con la sua risoluzione di 3'' Arco per Pixel.

Questa non è un immagine del Paneta Luna, il nostro caro satellite naturale, ma rappresenta una mappa ombreggiata dei Campi Flegrei, ovvero un'area vulcanica che si estende dalla Collina di Posillipo (Napoli) al Golfo di Pozzuoli e che comprende numerosi Comuni, situati in questa meravigliosa area storico-paesaggistica, ricchi di panorami mozzafiato e reperti archeologici.

Nella prossima immagine, estendendo un pò lo sguardo verso Sud, vediamo...


 ...in primo piano i Campi Flegrei, poi, il monte Vesuvio e, poi, un tratto della Penisola sorrentina.
Qui il tutto si vede meglio salendo sugli appennini al confine con la Provincia di Avellino...

...e qui in vista aerea.


Per gli amanti del "codice C", riporto il listato di un semplice programma utilizzabile per convertire un file HGT in formato BMP, meglio "digeribile" dai nostri PC.

/* SRTM Tile to BMP simple program */

#include <stdio.h>
union t_height {
    unsigned char in_chr[2];
    short height;
} t_height;
/* image buffer */
char buffer[1200][1200][3];

int main() {
    /* file pointer */
    FILE * fdin;
    FILE * fdout;
    /* array index */
    int x,y;
    /* color components */   
    char color_r;
    char color_g;
    char color_b;
    /* other */
    int min = 0;
    int max = 0;

    char bmp_header[] = {
        0x42, 0x4D, 0x36, 0xEB, 0x41, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
        0x00, 0x00, 0xB0, 0x04, 0x00, 0x00, 0xB0, 0x04,
        0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0xEB, 0x41, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00   
    };
   
    /* open SRTM tile file */
    fdin = fopen("N40E014.hgt", "r");
    if(fdin != NULL) {
        printf("Input file opened.\n");
    } else {
        exit(0);
    }   
    /* transcondig loop */   
    for(y=0; y<1200; y++) {
        for(x=0; x<1200; x++) {
            t_height.in_chr[1] = fgetc(fdin);
            t_height.in_chr[0] = fgetc(fdin);

            /* set color pixel */
            if (t_height.height == 0) {
                color_r = 0;
                color_g = 0;
                color_b = 128;
            } else if (t_height.height > 0) {
                color_r = t_height.height / 7;
                color_g = color_r;
                color_b = color_r;
            }
            buffer[x][y][0] = color_r; //red
            buffer[x][y][1] = color_g; //green
            buffer[x][y][2] = color_b; //blu      
            /* update min, max */
            if (t_height.height > max) {
                max = t_height.height;
            }
            if (t_height.height < min) {
                min = t_height.height;
            }                      
        }
        /* discard pixel 1201 */
        t_height.in_chr[1] = fgetc(fdin);
        t_height.in_chr[0] = fgetc(fdin);
    }   
    /* close .hgt files */
    fclose(fdin);
    /* open BMP file */
    fdout = fopen("SRTM.bmp", "w");
    if(fdout) printf("Output file opened.\n");
    /* write BMP 1200x1200 header */
    for(x=0; x<54; x++) {
        fputc(bmp_header[x], fdout);
    }
    /* write image buffer to BMP data area */
    for(y=1199; y>=0; y--) {
        for(x=0; x<1200; x++) {
            fputc(buffer [x][y][2], fdout); //blu
            fputc(buffer [x][y][1], fdout); //green
            fputc(buffer [x][y][0], fdout); //red
        }
    }   
    fclose(fdout);
    /* message */
    printf("Min: %d  Max: %d\n", min, max);
    printf("Conversion complete.\n");
    /* terminate program */
    return 0;
}

Nei prossimi post vedremo come utilizzare le Mappe SRTM nel nostro navigatore fai-da-te e vedremo anche come utilizzare il file-system Linux in abbinamento al Displey TFT a colori.

Qui Pianeta Terra ...in 3D, a presto.