Aller au contenu


xav12358

Inscrit(e) (le) 30 sept. 2013
Déconnecté Dernière activité févr. 15 2015 08:48
-----

Messages que j'ai postés

Dans le sujet : Question sur quadrirotor

05 juin 2014 - 06:29

Ba en fait il faut une valeur neutre de vitesse autour de laquelle on ajoute des valeurs de pid.

En fait pour chaque moteur on a une parti dédié au tangage, au roulis, au lacet et au pas.
Pour le pas, une valeur neutre est mise pour permettre au quadri de rester stable en altitude.

Dans le sujet : Integration de données

20 octobre 2013 - 10:34

C'était purement théorique, je n'ai pas deux capteurs qui captent de vitesse. C'etait juste pour savoir quelle serait la valeur de deltaT en fonction de différents capteurs ayant des temps d'acquisition complétement différents.

Pour compenser l'imprécision du capteur d'accélération notamment il y a les coefficients alpha1 et alpha2.
Comme dans ce lien qui explique comment intégrer les données gyros et accéléros pour faire une centrale inercielle: http://www.starlino.com/imu_guide.html

On fusionne les données de gyro et d'accéléros pour une estimation de la position angulaire :

Rest(n) = (Racc * w1 + Rgyro * w2 ) / (w1 + w2)
Rest(n) = (Racc * w1/w1 + Rgyro * w2/w1 ) / (w1/w1 + w2/w1)
Rest(n) = (Racc + Rgyro * wGyro ) / (1 + wGyro) = alpha1* Racc + RGyro*alpha2 avec alpha1+alpha2 =1

Dans le sujet : Integration de données

18 octobre 2013 - 08:02

Concernant la variance de la valeur estimée j'ai un document pour l'expliquer à la page 64 figure 1.6:

http://www.cs.unc.ed...ursePack_08.pdf

On voit que la variance du résultat est inférieure aux valeurs des deux données d'entrée.

Pour le code je me suis trompé, je voulais le faire sur la position, je recommence:

%% Initialisation
pk =0

tref = timenow;

while(1)
if(c1)
{
pk = pk + alpha1*vc1*(timenow-tref);
tref = timenow
}

if(c2)
{
pk = pk + alpha2*(time -tref)^2/2*ac1
tref = timenow
}


C'est mieux ?

Dans le sujet : Integration de données

17 octobre 2013 - 08:51

Merci Black Templar d'avoir enfin compris mon problème.

Donc en fait quand on voit des filtres de kalman (ou d'autre algo) ou on considère que deltaT est toujours égale a la fréquence d'acquisition du signal c'est faux ?

Je prend un autre exemple, je veux fusionner une donné de vitesse que je connais et une donné d'accélération que j'ai. J'ai deux capteurs c1 pour la vitesse et c2 pour l'accéléromètre avec des fréquences d'acquisitions différentes ca donnerait:

%% Initialisation
vk =0

tref = timenow;

while(1)
if(c1)
{
vk = vk + alpha1*vc1;
tref = timenow
}

if(c2)
{
vk = vk + alpha2*(time -tref)*ac1
tref = timenow
}

Ou alpha1 et alpha2 sont les coefficients de confiance des capteurs tel que alpha1 + alpha2 =1.

Je me suis trompé ?

Pour la question de R1D1 concernant l'intérêt de fusionner deux capteur qui donne la même donnée. Les deux capteurs peuvent avoir en pratique des écart types différents et donc dans le cas de l'utilisation du filtre de Kalman si sigma1 et 2 correspondent aux capteurs 1 et 2,on aura:
sigmaf = f(sigma1,sigma2) < min(sigma1,sigma2).

D'apres ce que j'ai cru comprendre ...

Dans le sujet : Integration de données

17 octobre 2013 - 11:27

Je crois que je me suis mal fait comprendre depuis le début.

Je n'ai pas de problème pour filtrer les signaux (filtre passe bas,...). Supposons que les signaux sont bon et qu'ils n'ont pas d'erreur mais qu'il donne la même information mais a des intervalles de temps différents.

Normalement pour intégrer une position on intégre les vitesse pour un capteur ca donne:

p(t) = p(t-1) + deltaT*v(t) ou deltaT est la fréquence d'acqusition de la données genre 10ms.

mais dans le cas ou on fusionne deux capteurs qui donne deux vitesses (à fréquence d'acquisition de 20 et 30ms) ca va donner quoi?
p(t) = p(t-1) + deltaT1*v1(t)
et p(t) = p(t-1) + deltaT2*v2(t)

Mais dans ce cas deltaT1 et deltaT2 ne vaudra pas 20 et 30ms ? Pour moi ca doit valoir la durée depuis la derniere fusion...
C'est a dire pour intégrer la vitesse du capteur c2 si depuis la derniere intégration il s'est passé 5ms deltaT2 vaudra 5ms et pas 30ms. Ai-je raison?
Sinon pour moi la position p(t) ne sera pas correcte si on carte deltaT1 et deltaT2 égaux à 20 et 30ms.

J'espere que j'ai été plus clair...