2010-04-19 11 views
5

Ho bisogno di ottenere la velocità di un dispositivo Android, in base ai valori dell'accelerometro. Ho creato un codice che mi consente di ottenere i valori dell'accelerometro e quindi calcolo la velocità utilizzando la formula: v = v0 + at. (calcolo vettoriale)Velocità Android basata sui valori dell'accelerometro

Il mio problema è che la mia velocità aumenta e non diminuisce mai. Penso che il problema sia che il dispositivo non ottiene mai un'accelerazione negativa.

Potete aiutarmi con questo?

risposta

6

Ottenere la velocità dagli accelerometri potrebbe non essere possibile (dimenticare l'affidabilità) perché a velocità costante non ci sarà accelerazione (diversa dalla gravità). Potrebbe essere meglio ottenere dati sulla posizione GPS e i loro campioni di tempo associati e velocità di calcolo per distanza nel tempo.

+1

Beh, il problema è che sto provando ad applicare una tecnica di stima morta per compensare un guasto temporaneo del GPS. Quindi, quando inizio a ottenere i valori dall'accelerometro, non ho la connessione GPS. So che avrò un errore cumulativo, e so che i valori non sono affidabili, ma è un lavoro accademico, solo per verificare che sia possibile. – nunolourenco

+0

Ecco il mio esempio http://maephv.blogspot.com/2011/10/android-computing-speed-and-distance.html – Maep

4

Stai sottraendo la forza di gravità? Il dispositivo è sempre in accelerazione, anche se è seduto sulla tua scrivania, sta accelerando a 9,8 m/s^2 lontano dal centro della Terra.

+0

Sì, lo sto facendo. e penso che i 9.8 m/s^2 siano applicati al componente Z. – nunolourenco

+0

Ciò vale solo se il dispositivo è seduto su una scrivania o su un'altra superficie completamente orizzontale. – CommonsWare

+0

Sì, hai ragione. Dato che stavo considerando che il telefono era orizzontale, l'ho dimenticato. Grazie;) – nunolourenco

1

È possibile utilizzare una combinazione dell'accelerometro e della bussola digitale, nei telefoni che li hanno, per determinare una velocità e una direzione come indicato in questo post.

Se tutto ciò che devi fare è determinare se la persona sta camminando, tutto ciò che serve è l'accelerometro. Elabora la sua produzione per i passi del piede.

Ci sono molti tutorial sul web per rilevare passi del piede con un accelerometro.

C'è una nota app qui: http://www.analog.com/library/analogDialogue/archives/41-03/pedometer.html che fornisce uno sfondo matematico decente e un algoritmo di esempio. È naturalmente a te estrarre la matematica e riscriverla per Android (il codice di esempio è scritto in C). Al momento non conosco una libreria Android open source con un algoritmo di rilevamento passo.

Se si implementa qualcosa, mi piacerebbe ottenere il codice, non dimenticare di pubblicare i risultati.

Problemi correlati