Go Down

Topic: Filtrer des données bruitées (Read 2121 times) previous topic - next topic

Hexa Emails

Bonjour,

je tente d'utiliser des données des accéléromètres d'un Wii nunchuck:



mais les données sont bruitées (peu de répétabilité dans les mesures, c'est à dire que 2 mesures successives vont être différentes même si l'on ne bouge pas la manette)

j'applique un filtre du type: accélération = (précédente valeur d'accélération + nouvelle) /2

mais ça ne semble pas suffisant...

Si quelqu'un a déja vu ce cas de figure et a une solution efficace, je suis preneur!

merci!
J'apprends tous les jours!

Jean-François

#1
Jan 27, 2011, 08:39 pm Last Edit: Jan 27, 2011, 09:07 pm by Jean-François Reason: 1
Pour filtrer tes données tu peux utiliser ça (filtre passe-bas) :

Code: [Select]

float valeur_filtree;

void loop(){

valeur_filtree= lpfilter(float(valeur_lue)*.9+(valeur_filtree*.1), filterVal , valeur_filtree);
}


float lpfilter(float data, float filterVal, float filteredVal){

 if (filterVal > 1){
   filterVal = .99;
 }
 else if (filterVal <= 0){
   filterVal = 0;
 }

 filteredVal = (data * (1 - filterVal)) + (filteredVal * filterVal);

 return filteredVal;
}
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5<br />imac PPC G3 os X Pa

Hexa Emails

Ok si je comprends bien cela permet de pondérer l'ancienne valeur par rapport à la nouvelle?
par contre elle est filtrée par la fonction mais aussi dans la manière d'appeler la fonction?
je ne comprends pas trop la partie:

Code: [Select]
float(nums[3])*.9+(valeur_a_filter*.1)

je viens de tester une moyenne pondérée avec un coeff 0.9 et cela semble mieux. Il y a tout un travail d'étalonnage qui m'attends  :P
merci pour cette réponse très rapide!  :)
J'apprends tous les jours!

Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5<br />imac PPC G3 os X Pa

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy