PROGRAMMARE LE MISSIONI DI VOLO DI UN APR CON QGIS E LITCHI

In questo articolo descriverò come si possono programmare delle missioni di volo per rilievi fotogrammetrici utilizzando il software open source QGIS e l’app Litchi. In realtà, come vedremo nel seguito, nel mezzo ci stanno altri due applicativi che permetteranno di impostare i parametri del volo (velocità, curve, altezza dal suolo, ecc.) e controllare i risultati. Detti applicativi sono Mission Hub-Litchi e Google Earth Pro. Come avrete già capito, l’intero processo è “low cost”. Infatti l’unico software a pagamento è Litchi. Sicuramente in commercio ci sono software che permettono di pianificare le missioni di volo con quatto click, ma io ne ho trovate solo a pagamento; oppure app freeware che fanno più o meno la stessa cosa, ma devi farlo su un tablet. Quello che propongo qui è un procedimento “ragionato”, sul quale l’utente ha il pieno controllo in quanto non ci si deve fidare degli algoritmi di software o app di terze parti, ma semplicemente utilizzando un foglio Excel, un GIS e dei visualizzatori si arriva al medesimo risultato, anzi, direi che la libertà di programmazione è maggiore. Il tutto quasi gratis. Ma ora entriamo nel dettaglio.

Per quanto riguarda l’esecuzione degli scatti fotografici per un rilievo fotogrammetrico, è molto importante conoscere le caratteristiche della fotocamera in uso per poter determinare i parametri del volo in grado di garantire una determinata accuratezza del rilievo. Tale accuratezza è il GSD (Ground Sample Distance), tipicamente espresso in cm/pixel. E’ un accuratezza teorica perché l’accuratezza reale sarà influenzata da molti altri fattori, primo fra tutti la qualità delle fotografie. Non mi soffermo a descrivere di cosa si tratta. Al termine dell’articolo rimanderò a valide risorse che descrivono compiutamente di cosa si tratta. Basti sapere che il GSD è il parametro di partenza per il calcolo dell’altezza di volo massima. Più si vola in alto e maggiore sarà il GSD.
Nel foglio Excel che allego, ho inserito i parametri della fotocamera di un DJI Phantom 4 Pro. Il procedimento di calcolo dei parametri di volo è del tutto generale, pertanto è possibile applicarlo ad una qualsiasi altra fotocamera avendo cura di inserire la lunghezza focale reale, non quella equivalente al formato 35 mm. Mi raccomando, altrimenti incapperesti in errori davvero importanti.

Il passo successivo è impostare il GSD che si vorrebbe ottenere e tramite il quale viene calcolata l’altezza di volo massima impostabile. Se impostassi un’altezza maggiore, il GSD aumenterebbe. Impostata la quota di volo effettiva, ottengo il GSD corrispondente e le dimensioni della superficie a terra della zona ripresa dal singolo fotogramma (footprint).

In base alla percentuale di sovrapposizione longitudinale dei fotogrammi e dell’intervallo tra gli scatti viene calcolata la velocità massima di crociera impostabile. Una velocità inferiore garantirà una sovrapposizione maggiore.

Per la sovrapposizione trasversale si fa riferimento alla distanza tra le strisciate.

Smanettate un po’ con il foglio Excel e vedrete come cambiano i valori.

A questo punto i parametri per tracciare la rotta sono noti. Per ottenere una sovrapposizione dei fotogrammi dell’82.2% si dovranno realizzare delle strisciate parallele distanti tra loro 16 m. Qui entra in gioco QGIS. In questo articolo descriverò come disegnare una rotta a forma di serpentina che giaccia su un piano orizzontale. Le quote verranno impostate in un secondo momento. Per tracciare la rotta sopra la zona corretta, utilizzerò come base la mappa di Google caricata in QGIS. Apriamo QGIS.
In tutti i passaggi bisogna prestare molta attenzione al sistema di riferimento in cui stiamo lavorando. Le mappe di Google vengono importate con la proiezione “EPSG:3857 – WGS 84 / Pseudo-Mercator – Proiettato” deducibile dalle proprietà della Connessione XYZ in QGIS. In realtà potrei scegliere anche un’altra proiezione ed alle trasformazioni ci penserebbe QGIS, ma preferisco essere congruente col sistema di riferimento della mappa.

La zona da rilevare è il prato al centro dell’immagine.
Per prima cosa va creato un vettore temporaneo che chiamerò DIREZIONE. Attenzione ad impostare correttamente il tipo di geometria ed il sistema di riferimento.

Ora va aggiunto un elemento lineare che definisce la direzione delle strisciate. Traccio la linea dall’alto verso il basso. E’ importante ricordarsi il verso di tracciamento.

Con uno strumento di processing vanno tracciate le strisciate parallele distanti tra loro 16 m. E’ un valore positivo perché le strisciate saranno a sinistra della linea sorgente (rispetto alla direzione con cui si è tracciata la linea). Sarebbe -16 se le strisciate fossero a destra. Per questo è necessario tenere a mente la direzione di tracciamento della linea. Questa volta facciamo in modo che venga memorizzato un file shape (.shp) così le strisciate saranno ancora disponibili all’apertura di QGIS; infatti, i vettori temporanei andranno persi. In realtà sarebbe possibile tracciare tutte le entità in modo che rimangano memorizzate, ma le linee di costruzione preferisco che spariscano e rimangano solo le strisciate e la rotta.

Come si può vedere nel pannello dei layer, è stato creato un layer che contiene le linee di offset. Il layer della linea sorgente (DIREZIONE) possiamo anche spegnerlo.

A questo punto abbiamo le strisciate che ci serviranno da guida per tracciare la rotta dell’APR. Questa può essere rappresentata da punti (tipo waypoint) oppure da linee. Graficamente rende meglio la seconda opzione, quindi va creato un nuovo vettore temporaneo (come abbiamo fatto prima) che chiamerò ROTTA. Occhio al tipo di geometria ed al sistema di riferimento!

Va creato un nuovo elemento lineare (come abbiamo fatto prima). In questa fase è utile abilitare la barra degli strumenti di aggancio (tasto destro su un’area vuota delle barre in alto).

Traccia la rotta avendo cura di far cadere i waypoint sulle strisciate.

Nel percorso ho inserito anche l’ultimo tratto che mi porta verso la zona di atterraggio.
Con lo strumento di processing “Geometria vettore -> Trasla”, spostiamo la rotta verso l’alto di 60 m, come impostato nel foglio Excel. Impostiamo il salvataggio in un file shape.

E’ stato creato il layer “Traslato”. Possiamo spegnere i layer “ROTTA” e “Linee di offset”.

A questo punto possiamo esportare il layer “Traslato” in .kml.

Apriamo Mission Hub, l’applicativo web di Litchi, ed effettuiamo i primi settaggi. Vanno impostate la velocità di crociera, così come calcolata nel foglio Excel, le curve, ecc.. Il modello di elevazione del terreno puoi trarlo da un database online oppure caricarlo con un file ASCII.

Ora importiamo il file .kml.

Selezionando i singoli waypoint, posso definire ulteriori parametri, tra i quali quello di considerare l’altezza di 60 m rispetto al suolo. Tale impostazione era già stata fatta in QGIS durante l’esportazione in .kml, ma Litchi sembra non accorgersene, cosa che, invece, Google Earth Pro fa bene (basta importarvi il file ROTTA.kml).

In Mission Hub controlla tutti i waypoint. E’ un po’ brigoso, lo so!

Terminata la fase di modifica/controllo, si esporta la rotta in formato .kml. Questo passaggio preferisco farlo per visualizzare la rotta in Google Earth Pro, ma non è necessario. La missione di volo potrebbe già essere caricata in Litchi ed eseguita.

Apriamo il file .kml in Google Earth Pro e nelle proprietà del percorso verifichiamo che l’altitudine venga considerata assoluta (in pratica è la quota).

Funziona!

Il procedimento che ho illustrato fin qui prende in considerazione un percorso che, se proiettato su un piano orizzontale, rappresenta una serpentina le cui strisciate parallele hanno una distanza tale da permettere la sovrapposizione minima dei fotogrammi impostata nel foglio Excel. Il ricorso al GIS permette di individuare correttamente le coordinate dei waypont, ma questo passaggio potrebbe essere evitato se in Mission Hub ci fosse la possibilità di tracciare delle rotte parallele. Il procedimento sembra lungo e complicato, ma basta poco per prenderci la mano. Un po’ di GIS non fa mai male! In termini del tutto generali, è possibile utilizzare un CAD 3D per tracciare qualsiasi rotta nello spazio, anche una serpentina posta su un piano verticale, magari per rilevare un fronte roccioso. Con QGIS poi è possibile generare la rotta da importare in Mission Hub. Ho in mente di fare un articolo o un video anche per quello.

Nel frattempo vi segnalo un sito nel quale potete trovare informazioni su come si calcola e si valuta il GSD e su molti altri aspetti tecnici che riguardano la topografia e la fotogrammetria in particolare: https://3dmetrica.it/

Qui sotto, invece, i file che ho utilizzato nell’esempio e dei video esplicativi. Sono i primi in assoluto che faccio, quindi vi prego di essere indulgenti. I primi due video si riferiscono alla programmazione del volo, mentre il terzo spiega come importare le mappe di sfondo in QGIS. Tra i file da scaricare c’è anche una lista di connessioni che è possibile realizzare nel software per accedere ai dati territoriali di Google e della Provincia Autonoma di Trento.

Vi ricordo che mi trovate anche su Telegram (https://t.me/giampaoloberetta) dove ho aperto un canale nel quale vi parlo della mia attività e condivido informazioni (https://t.me/inggiampaoloberetta).

Ciao!