venerdì 26 luglio 2024

ODMNode

 Un metodo per automatizzare ODM e' quello di utilizzare NodeODM

 


 In estrema sintesi si mette in esecuzione su un server il docker con la seguente sintassi

 

 docker run -p 3000:3000 opendronemap/nodeodm

 In seguito da un client si puo' usare il seguente script Python per effettuare l'upload automatico di tutte le immagini in un folder e per impostare i parametri di lavoro. Al termine del task sul server i dati saranno reinviati in automatico al client

 

import os
import sys
sys.path.append('..')
from pprint import pprint

from pyodm import Node, exceptions

node = Node("192.168.1.125", 3000)

files = []
for dirname, dirnames, filenames in os.walk('./images/'):
for subdirname in dirnames:
files.append(os.path.join(dirname, subdirname))
for filename in filenames:
files.append(os.path.join(dirname, filename))

pprint(files)
try:
# Start a task
print("Uploading images...")
task = node.create_task(files,{'dsm': True, 'orthophoto-resolution': 4})
print(task.info())


try:
# This will block until the task is finished
# or will raise an exception
task.wait_for_completion()

print("Task completed, downloading results...")

# Retrieve results
task.download_assets("./results")

print("Assets saved in ./results (%s)" % os.listdir("./results"))

# Restart task and this time compute dtm
task.restart({'dtm': True})
task.wait_for_completion()

print("Task completed, downloading results...")

task.download_assets("./results_with_dtm")

print("Assets saved in ./results_with_dtm (%s)" % os.listdir("./results_with_dtm"))
except exceptions.TaskFailedError as e:
print("\n".join(task.output()))

except exceptions.NodeConnectionError as e:
print("Cannot connect: %s" % e)
except exceptions.NodeResponseError as e:
print("Error: %s" % e)


 

sabato 20 luglio 2024

Ciclismo antico 2

 Maglia Magniflex, cappello Gemeaz Zor preso alla partenza del Giro Italia Firenze 




giovedì 27 giugno 2024

Led e sensori AS7265x

 Illuminando lo spectralon con tutti i led accesi di AS7265 la risposta in radianza e' la seguente. Come si vede il massimo di illuminazione e' intorno ai 400 nm e deriva da contributo del led UV e del led White

Il picco a 870 nm deriva dal centro di emissione del led IR

Non riesco a giustificare il picco a circa 600 nm

 


 Spettro di emissione dei led da datasheet
White Led (Visibile)

IR Led

UV Led

questo e' il grafico di risposta spettrale dei 18 canali dei sensori



 

 

mercoledì 26 giugno 2024

Primo spettro di riflettanza con SparkFun Triad Spectroscopy Sensor - AS7265x

 Lo spettro di riflettanza e' stato ottenuto dividendo il valore calibrato della foglia per il valore calibrato nel corrispondente canale dello spectralon

 


 


spettro spectralon foglia
410 0.104046939572376 7631.94 794.08
435 0.100663330010594 1916.09 192.88
460 0.0941060471276098 5496.99 517.3
485 0.0846332588803228 2220.64 187.94
510 0.127077186925102 2647.21 336.4
535 0.209306506039295 3170.9 663.69
560 0.204982889816192 1385.14 283.93
585 0.171727663387711 1473.03 252.96
610 0.0880803424432005 4555.5 401.25
645 0.121946929339632 795.92 97.06
680 0.123669783940664 1054.34 130.39
705 0.278338126099833 232.99 64.85
730 0.766924924721724 295.57 226.68
760 0.718044428259286 219.68 157.74
810 0.575862515972518 539.99 310.96
860 1.02470169644788 2543.55 2606.38
900 0.777308820373417 139.79 108.66
940 0.344453330286759 87.53 30.15


Primi passi con SparkFun Triad Spectroscopy Sensor - AS7265x

 Primi approcci per vedere se il sensore multispettrale e' affidabile per l'uso multispettrale 

In questo prova e' stata verificata la ripetibilita' nel tempo delle misure ponendo il sensore su uno spectralon ed effettuando 350 misure di bianco (il supporto del sensore e' stato ripreso da qui https://github.com/Scottapotamas/AS7265x-triad-ui/tree/master/mechanical)

 



 

Lo script per la misura ha previsto il massimo tempo di integrazione (con valori bassi in IR praticamente non c'era segnale)


sensor.setGain(AS7265X_GAIN_16X);
sensor.setMeasurementMode(AS7265X_MEASUREMENT_MODE_6CHAN_ONE_SHOT);

sensor.setIntegrationCycles(255);


L'errore per ogni canale e' stato stimato prendendo la standard deviation e dividendo per la media


A 0.44%
B 0.49%
C 0.25%
D 0.34%
E 0.05%
F 0.05%
G 0.07%
H 0.07%
R 0.10%
I 0.07%
S 0.09%
J 0.08%
T 0.13%
U 0.00%
V 0.37%
W 0.74%
K 1.55%
L 0.56%


Come si deve l'errore e' piuttosto vario tra i vari canali

 

Plottando la misura di ogni canale nel tempo si osserva una chiara deriva per ogni canale con in alcuni casi l'accenno di un valore asintotivo mentre in altri no 


 

 



 

 










La Dark Current e' stabile (prova su 450 misure)



A B C D E F G H R I S J T U V W K L
St Dev 0.00 0.00 0.00 0.00 0.00 0.00 0.03 0.00 0.00 0.00 0.46 0.00 0.40 0.40 0.27 0.00 0.00 0.00
Media 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.41 1.02 0.00 0.80 0.83 0.84 1.08 0.64 0.00

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...