Autore Topic: Leggere dati dall'accelerometro e capire quand'è una decelerazione  (Letto 2013 volte)

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
0
Ciao a tutti...
Riesco a leggere perfettamente i valori da parte dell'accelerometro ma ho un problema..
Come faccio a capire se un dato si riferisce a una decelerazione o a una accelerazione...?

se io sommo i dati ottenuti dagli assi x,y,z ottengo = 9,81 .... in macchina questo valore diminuisce e aumenta..
come faccio io a sapere se il valore che leggo è di accelerazione o di decelerazione?

Spero di essere stata chiara,
grazie mille

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #1 il: 02 Febbraio 2012, 11:45:12 CET »
0
Devi confrontare il valore di accelerazione attuale con l'accelerazione precedente. Se quello attuale è maggiore del precedente, l'accelerazione è positiva, altrimenti è negativa.

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #2 il: 02 Febbraio 2012, 11:47:35 CET »
0
ok quindi posto che accelerazione attuale sia a=10 e quella precedente sia b =12...
io devo fare a-b = -2 e questo significa che ho un accelerazione di -2 m/s^2 ?

« Ultima modifica: 02 Febbraio 2012, 12:06:15 CET da mary2501 »

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #3 il: 02 Febbraio 2012, 12:51:16 CET »
0
Dovresti fare a-b = -2. :) Significa che hai una variazione di accelerazione di -2 m/s^2, quindi una decelerazione, e che la tua accelerazione attuale è di 10 m/s^2.  L'accelerazione di cui parliamo è quella totale, ovvero proveniente da tutte e tre le direzioni x,y,z ed è riferito al modulo della somma dei tre valori.
Per ottenere il vettore accelerazione, quindi un vettore di cui calcolare modulo, direzione e verso, devi trasformare ogni valore di x, y e z in vettore e fare i calcoli con quelli.

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #4 il: 02 Febbraio 2012, 12:53:32 CET »
0
Io sto facendo un app per la rilevazione di urti.. Quindi mi basta solo fare la banale sottrazione... no ? devo vedere quando ho una decelerazione tale da poterla considerare un urto!

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #5 il: 02 Febbraio 2012, 13:05:49 CET »
0
Sì, certo, per quello sì. Però, per rilevare un urto, non ti serve la decelerazione ma la "variazione di accelerazione totale" in un certo delta tempo. In un'applicazione uso questo per rilevare uno shake:
Codice (Java): [Seleziona]
@Override
        public void onSensorChanged(SensorEvent event) {
                force = event.values[0] + event.values[1] + event.values[2];
                nowEvent = event.timestamp;
                if (lastEvent == 0) {
                        lastEvent = nowEvent;
                }
                if (nowEvent - lastEvent > INTERVAL) {
                        if ((Math.abs(force - lastForce) / (nowEvent - lastEvent) * 10E8) > limit) {
                                //Ho un urto
                        }
                        lastForce = force;
                }
                lastEvent = nowEvent;
        }
« Ultima modifica: 02 Febbraio 2012, 13:11:53 CET da Verandi »

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #6 il: 02 Febbraio 2012, 13:07:58 CET »
0
Ora provo.. grazie mille.. ma tu hai già fatto un app simile.... a quanto avevi impostato il tuo limite?

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #7 il: 02 Febbraio 2012, 13:11:11 CET »
0
Uso queste variabili:
Codice (Java): [Seleziona]
       
        private static final float INTERVAL = 100; //Intervallo minimo tra due rilevazioni consecutive

        // Questi sono i tre valori di limit in base alla sensibilità scelta dall'utente
        public static final float HIGH = 50;
        public static final float MEDIUM = 200;
        public static final float LOW = 400;

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #8 il: 02 Febbraio 2012, 13:20:50 CET »
0
Grazie mille!!! un'ultima cosa :
if (nowEvent - lastEvent > INTERVAL)
                        if ((Math.abs(force - lastForce) / (nowEvent - lastEvent) * 10E8) > limit)  //urto

Tu fai questo ..

guarda si è passato un periodo maggiore a quello fissato (intervallo minimo di tempo tra le rilevazioni)...

poi fai il valore assoluto tra le accelerazioni rilevate e le dividi per il tempo passato * 10E8 ... perchè???
cosa ottiene con questa operazione?

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere dati dall'accelerometro e capire quand'è una decelerazione
« Risposta #9 il: 02 Febbraio 2012, 13:32:13 CET »
0
Per trasformare il tempo in secondi e avere dei valori più comodi da utilizzare.