Autore Topic: Ricavare nuova posizione tramite accelerometro  (Letto 9135 volte)

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Ricavare nuova posizione tramite accelerometro
« Risposta #15 il: 08 Luglio 2012, 12:11:14 CEST »
0
Quello che dico io è che tra la posizione di riposo e la velocità costante ci sono delle situazioni "intermedie" con accelerazione non nulla.
Certo puoi avere accelerazione non nulle o nulle.

Prendiamo il caso più generico possibile di conoscenza della sole accelerazioni istantanee. La soluzione del problema di trovare la posizione non ha una soluzione analitica esatta in molti casi. Per risolvere l'equazione del moto bisogna integrare due volte, prima l'accelerazione per trovare la velocità instantanea ma il risultato dipende dalla velocità iniziale, la seconda volta è la velocità ottenuta prima ma il risultato dipende dalla posizione iniziale. Nel caso più generico possibile uno si trova davanti a funzioni trascendenti non integrabili.

L'utilizzo di tecniche numeriche aprossimate per il calcolo degli integrali introducono degli errori che si accumulano e col passare del tempo diventano non trascurabili, non possono essere compensati, non hai altri dati per farlo. Anche gli accelometri non sono perfetti, introducono degli errori che si propagano e l'integrazione con tecniche numeriche amplificano questi errori, possono essere attenuati con opportuni filtri senza azzerargli.
adb logcat | tee /tmp/logcat | grep TAG

Offline maurytheking

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    NGM polaris
  • Sistema operativo:
    android 4.03
Re:Ricavare nuova posizione tramite accelerometro
« Risposta #16 il: 24 Luglio 2015, 09:57:45 CEST »
0
Scusa se rispondo solo dopo tre anni spero di esserti sempre di aiuto.
Allora partiamo da un discorso più fisico che informatico non è vero che se lo sposti di poco grazie alla mano ferma l'accelerazione resta sempre a zero perché dalla fisica sappiamo che ad ogni variazione di velocità corrisponde un accelerazione anche infinitesima ma non zero, quindi se il tuo dispositivo parte da fermo e lo sposti avrai comunque un'accelerazione .
detto questo è possibile ricavarsi la posizione grazie alla variazione di velocità ma la formula che hai proposto te è solo una parte ed è valida solo per un moto uniformemente accelerato cioè con a costante.
Bene detto questo se te campioni i valori del sensore in un delta t che potrebbe essere di 1 secondo, la tua formula non è vera, ma se prendi delta t infinitesimi allora puoi vedere la tua a come un valore costante, quindi dalle formule noi sappiamo che la posizione è uguale alla derivata della velocità rispetto al tempo x=dv/dt e la velocità è uguale alla derivata dell'accelerazione rispetto al tempo cioè v=da/dt quindi avendo solo la variazione di velocità dobbiamo eseguire in integrale definito di a in dt per t che va da t0 a t1 (dove t0 è l'istante di tempo dell'ultima lettura del sensore) e otteniamo la velocità integrando nuovamente otterremo la posizione.
Arrivati a questo punto dobbiamo stare molto attenti perché l'accelerometro tiene conto anche della gravità e quindi dovrai rimuoverla (altrimenti sembra che si sposti il telefono quando in realtà sta fermo!!), noi sappiamo che g è 9.81m/s^2 ma non potrai semplicemente sottrarla perché essendo di tipo vettoriale dovrai scomporla si tutti e tre gli assi e ottenere cosi i valori scalari da sottrarre alle coordinate x,y,z (non approfondisco la scomposizione perchè ci sarebbero troppo calcoli, se sei sempre interessato posterò direttamente una funzione che la esegue!).
Bene detto questo la tua idea è fattibile con una precisione assai maggiore rispetto al GPS(ovviamente dipende anche dal sensore montato sul dispositivo) quando frequentavo ingegneria un mio compagno di università realizzò un progetto per un esame che appunto disegnava il percorso semplicemente utilizzando l'accelerometro, non sarà un progetto cosi banale ma è comunque fattibile!
spero di esserti stato di aiuto anche a distanza di molti anni .
cordiali saluti

Offline arlabs

  • Utente normale
  • ***
  • Post: 434
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS7
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Ricavare nuova posizione tramite accelerometro
« Risposta #17 il: 27 Luglio 2015, 15:20:04 CEST »
0
Mamma che thread vecchio!

Visto che qualcuno l'ha rispolverato, vi dico la mia, visto che ho provato a farlo.
Cioé, usando giroscopio ed accelerometro, ho cercato di individuare la posizione relativa a quella di partenza. Il tutto finalizzato alla realtà aumentata.

Niente, anche campionando alla massima velocità possibile, il valore di posizione aveva solo qualche vago sentore di quella che avrebbe dovuto essere.
Provato con diversi dispositivi.

Il problema principale è che per ottenere una posizione, il valore dell'accelerometro alla fine deve essere integrato 2 volte (acc -> vel -> pos).
E la poca precisione che già ha va a farsi friggere del tutto.

Probabilmente esistono sensori molto più precisi che consentono questo (credo che dispositivi come HoloLens, usino meccanismi del genere).
E magari futuro dispositivi mobile li integreranno, nell'ottica di interagire sempre più e meglio con l'ambiente circostante.

Ciao.