Bonsoir,
du coup, je suis aller faire quelques tests avec un accéléromètre (monté sur un arduino), sur le sol de ma chambre (cf image en pièce jointe). Je suis aller le poser à 6 endroits différents (qui correspondent aux plateaux). Les pics correspondent au moment où je déplace l'accéléromètre. A noter que les plusieurs lignes horizontales lors des plateaux sont du au bruit du capteur et/ou au vibrations du sol (à noter que j'ai pas cherché à adapté le calibre pour l'optimiser pour une mesure en statique). Ce bruit pourrait être éliminé en moyennant plusieurs valeurs successives (vue que je mesure à 100Hz, je peux largement me le permettre).
Comment faut-il interpréter ces résultats :
- on remarque que la moyenne des plateaux est environ -0.2 m/s² : cela correspond au fait que le capteur n'est pas horizontal (il est pas monté très droit, sur y c'est plutôt -0.8m/s²), et/ou que le capteur a un offset (c'est sur qu'il en a un, mais probablement pas assez pour expliquer l'erreur sur y, probablement pas non plus toute celle sur x) et/ou que le sol de ma chambre est globalement en pente. A noter que cette erreur peut être compensée (l'offset_x vaut environ la moyenne des 6 plateaux)
- on remarque aussi des écarts de l'ordre de 0.05 m/s² entre cette moyenne des 6 plateaux et les plateaux individuels. Cette "erreur" là vient probablement du fait que le sol de ma chambre n'est pas à 100% plat. Cette erreur là ne peut pas être compensée en restant en 2D (si tu veux pouvoir la compenser, il faut utiliser le gyromètre pour connaître ton orientation en 3D pour ensuite corriger cette erreur).
Donc si on suppose que tu calibre ton capteur, et que ton sol est aussi plat que celui de ma chambre, alors il te restera une erreur de l'ordre de da=0.05 m/s².
Du coup dv=0.05 * t et dx=0.5*0.05*t²
Donc à t=10s, tu aurais dv=0.5 m/s et dx = 2.5 m (et à t=15s, dv=0.75 m/s et dx = 5.6m). Est-ce que ça te conviens? A toi de nous le dire, mais probablement pas.
A noter qu'en pratique se pose un problème similaire en y et en orientation, donc ce sera probablement encore pire.
Une autre solution consiste à faire de petites durées puis t'arrêter pour réinitialiser la vitesse avant de reprendre.
Supposons que tu t'arrêtes à chaque fois au bout de T secondes, et que tu fasse N de ces trajets.
Pour un trajet : dv(T)=0.05*T et dx(T)=0.5*0.05*T²
L'erreur en vitesse ne se cumulera pas entre les parcours, par contre les erreurs en positions continueront à se sommer (mais moins vite) :
dx(N*T)=N*dx(T) si les erreurs sont systématiques, ou dx(N*T)=racine(N)*dx(T) si les erreurs sont indépendantes. Je pense qu'en pratique tu sera quelque part entre les deux.
Supposons que tu veuilles rouler un temps t (on ne compte pas le temps passé à l'arrêt). Tu doit alors le faire en N=t/T étapes.
Ton erreur sera donc comprise entre dx(t)=(t/T)*dx(T)=0.5*0.05*T*t et dx(t)=racine(t/T)*dx(T)=0.5*0.05*T^(3/2)*t^(1/2)
Si on prend T=1 (tu t'arrête au bout d'une seconde) et t=10, alors tu es entre dx=0.25m et dx=0.08m
Si on prend T=2 (tu t'arrête au bout de 2 secondes) et t=10, alors tu es entre dx=0.5m et dx=0.22m
Là pour le coup, on se rapproche de quelque chose de plus acceptable (à toi de nous dire si ça peut faire l'affaire ou non)?
Attention, plusieurs points peuvent empirer le résultat :
- si ton robot roule à 2.5 m/s en extérieur, il risque de parcourir une distance assez importante, augmentant le risque que la pente change un peu
- en extérieur, le sol est souvent moins plat qu'en extérieur
- à cette vitesse, tu risque d'avoir des vibrations dans le robot, qui risquent de rajouter du bruit (je sais pas si c'est négligeable ou pas)
- là j'ai pris que en x, mais tu as la même chose en y (du coup pour l'erreur totale tu multiplie par racine carrée de 2)
- et surtout, j'ai supposé que le robot allait bien droit : si tu commence à tourner, tu doit le prendre en compte dans les calculs (le changement de référentiel de celui du robot vers le référentiel lié au sol). Pour cela il faut utiliser ton gyro, mais lui aussi à des erreurs. Le gyro de donne la vitesse de rotation, que tu intègre pour obtenir ton angle de rotation. Si tu as une erreur de 1° sur la direction dans lequel tu avance, et que tu avance 10m, tu te retrouve décalé de dy=sin(1°)*10m=0.17m
Si j'ai bien compris, tu as déjà ton accéléromètre/gyro? Si c'est le cas, alors je te suggère de faire un test similaire à celui que j'ai fait (ie prendre ton capteur, le poser à divers endroit au sol, et mesurer les valeurs d'accélération ET celles du gyro, sur les 3 axes). Je te conseille de mesurer en continu, et de laisser ton capteur posé pendant 10 secondes à chaque endroit : on identifie ensuite très facilement sur le graphique quand est ce qu'il bouge ou pas.
Avec ces données, il sera possible d'estimer les erreurs que tu peux espérer atteindre avec ton robot en utilisant l'accéléromètre. Si tu as besoin d'aide pour les interpréter, n'hésite pas à demander.
Sinon, est-ce que ton robot est déjà construit? Les pièces sont-elles déjà commandées? Si oui, est-ce que tu pourrais envoyer des photos (en particulier des roues et des moteurs)?
Je te demande cela en pensant à une forme artisanale et très bon marché d'encodeurs : tu prends une LED et une photodiodes que tu mets fasse à fasse, et entre les deux tu fais passer une "roue" avec des trous, et tu mesure le temps entre 2 passages de trous. Sachant que la roue peut soit être celle que tu utilise déjà (si c'est une roue à rayons ou qu'elle a des trous ou que tu peux en percer), soit un simple disque en carton que tu attache d'une manière ou d'une autre à l'axe (ce qui peut être plus ou moins facile/difficile selon comment est construit ton robot).
Ce ne sera pas super précis, mais l'erreur en vitesse ne se cumulera pas sans avoir à t'arrêter. A noter qu'il te faudra aussi 4 résistances (ça ton labo de physique en a très probablement en stock). Il est aussi possible qu'il te faille un moyen de convertir le signal analogique de la photodiode en un signal binaire (ie soit un comparateur, soit un convertisseur analogique numérique, soit un clone d'arduino (tu en pour 6€ sur la boutique)). Mais probablement en testant un peu tu peux te passer de cette conversion et envoyer le signal analogique directement sur une pin numérique du raspberry pi qui la considérera comme 0 si elle est en dessous d'un certain seuil et comme 1 si elle est au dessus (et c'est la seule chose qui nous intéresse). Si ça passe sans convertisseur, alors tu en as pour moins de 10€, il est même possible que ton labo ait déjà tout en stock (à noter qu'une photorésistance ou un phototransistor peut remplacer la photodiode).
Bonne soirée
Sandro
Bonjour, merci d'avoir pris le temps de faire une expérience pour m'éclaircir les choses =)
Pour la vitesse j'ai essayé de trouver un ordre de grandeur et je me suis rendu compte que je l'avais surestimé , en fait c'est plutôt environ 1m/s.
Et oui on a déjà construit notre robot ( binôme ) d'ailleurs je te mets des photos juste en dessous. Vu que mon robot représente une sorte de prototype, normalement dans le cadre de mon tipe, je ne suis pas obligé d'avoir quelque chose de très sophistiqué, normalement la mesure de la vitesse devrait me permettre de l'asservir et donc d'appliquer une partie de notre programme de SI dans la pratique. Donc c'est vraiment l'apport scientifique qui est important pour moi. Hier j'ai essayé de faire une mesure avec l’accéléromètre juste pour avoir une idée de son fonctionnement, j'ai pu remarquer qu'on pouvait choisir le nombre de mesures effectuées par unité de temps, mais du coup je voulais savoir quand on met par exemple 1 mesure tous les 5 secondes, est ce que ca mesure l’accélération à l'instant t = 5s , t= 10s, t=15s etc ou est ce que ca fait une sorte de moyenne des 5 premières secondes pour la première valeur puis une moyenne de de t=5s à t=10s pour la 2ieme valeur etc ?
Ensuite est ce que c'est normal que ça affiche des valeurs super grandes ? genre de l ordre de 1000 des fois pour une accélération, je suppose que c'est parce qu’il n'est pas calibré c'est ça ? Si c'est le cas comment je peux le calibrer ?
Enfin vu que mon but n'est pas l'accélération mais la vitesse, pour intégrer faut-il utiliser une simple méthode des trapèzes ? ou est ce que c'est plus dur que ça ?
Petit lien qui peut aider éventuellement aider :
J'arrive pas à accéder au lien :/ ( page introuvable )