Usando TYPE_LINEAR_ACCELERATION
suppongo di aver scoperto che il dispositivo si sta muovendo a 4 m / s².
a(t)=s"(t)=+4
v(t)=∫4tdt
s(t)=2/3t³
s(3)=18m
Quanto sarebbe accurato?
Qui ci sono due fonti di errori: (a) imprecisioni numeriche derivanti da rappresentazioni a virgola mobile e (b) errori di misurazione generali, che a loro volta sono entrambi (b.1) errori di calibrazione (il tuo accelerometro ha una inclinazione o scala di deriva) o (b.2) incertezza statistica.
Gli errori di (a) sono difficili, ma è possibile quantificare esattamente. Tuttavia, sono probabilmente piccoli se confrontati con (b).
Gli errori da (b.1) possono essere compensati calibrando l'accelerometro con altri dispositivi. Nel caso generale, ciò comporta la trasformazione dei dati lungo una curva di calibrazione. Nota che questo può amplificare gli errori da (b.2).
Gli errori da (b.2) non possono essere corretti, ma possiamo usarli per dire quanto sia esatto il nostro risultato finale. In primo luogo, l'incertezza deve essere quantificata misurando l'accelerazione in un esperimento (ad esempio facendo cadere il dispositivo e raccogliendo dati di accelerazione in modalità wireless) che viene ripetuta il più spesso possibile. Dal set di dati, possiamo calcolare la media μ a e la deviazione standard σ a per l'accelerazione . Poiché il tuo dispositivo Android medio ha una resistenza all'aria variabile a seconda dell'orientamento, le misurazioni verranno probabilmente distribuite su un ampio intervallo.
Ora desideriamo stimare la deviazione standard dello spostamento s in dipendenza dell'accelerazione a . Innanzitutto, sono correlati tramite:
s(t) = ½ a · t²
perché a = d²/dt² s ⇔ s = ∫∫ a dt² ⇔ ∫ a·t dt
.
Ora, σ s può essere calcolato come:
σs = ( ∂/∂a s(t) )² · σa²
che è terribilmente conveniente, perché poi
σs = (½ · t²)² · σa² = ¼ · t4 · σa²
Nota che l'incertezza dipende dal tempo t .
Lascia che l'accelerazione sia a = 4 m·s-2
con σa = 0.3 m·s-2
, e la durata sia t = 3 s
. Quindi otteniamo:
s(t) = 18 m
σa = 1.8225 m
in modo che l'errore relativo σ / s sia del 10,1%.
Se cambiamo t = 0.7 s
, otterremmo
s(t) = 0.98 m
σa = 5.402E-3 m
in modo che σ / s = 0,6%.
Che cosa significa? Per brevi periodi / distanze, anche errori di grandi dimensioni danno risultati abbastanza precisi. Potresti anche ignorarli. Tuttavia, l'errore aumenta in O(t4)
, che è abbastanza veloce. Quindi, per una distanza / durata più lunga, tendi a ottenere risultati molto incerti (che potrebbero comunque essere utili, a seconda del dominio del problema).
Possiamo calcolare le distanze o le volte in cui il σ / a -ratio rimane all'interno di un certo valore p :
p ≥ (¼ · t4 · σa²) / (½ a · t²) = ½ · σa²/a · t²
t ≤ √( 2 · p · a/σa² )
Quindi con i valori precedenti di accelerazione e deviazione e un limite per p al 5%, ora sappiamo che qualsiasi estrapolazione più lunga di t = √4.44 s = 2.11 s
(equivalente a una distanza di 8.89 m) è troppo incerto.
Per ulteriori letture, devi consultare Propagazione dell'incertezza su Wikipedia.
La precisione della misurazione sarà specifica per il dispositivo che stai utilizzando e per i chip usati per creare il sensore.
La precisione (precisione) del calcolo dipenderà dal tipo di variabile (int, float, double, ecc ...) che usi.
La precisione dell'integrazione che stai suggerendo per calcolare la distanza dipenderà dal numero di campioni che puoi raccogliere, dalla frequenza di tali campioni e dalla precisione dei campioni stessi.
La tua domanda è un piccolo esempio del problema di errore di composizione. Molto probabilmente vieni limitato dalla lettura del sensore. Tutte le operazioni successive su quella lettura / quelle letture comporranno quell'errore.
La soluzione migliore è prendere molte letture e vedere quanto sono vicine alle aspettative per ciò che è necessario fare.
Leggi altre domande sui tag algorithms integration