Capteur Hitechnic : L'accéléromètre

Besoin d'informations sur une pièce précise ?
Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 50 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Mar Nov 17, 2009 8:38 pm

Voilà, je me suis procuré ce capteur, je vais donc vous montrer ce qu'on peut faire avec.
Je le classe dans les pièces LEGO car il est certifié par LEGO, donc conforme aux normes de fabrications, dimensions, tolérances, ...

Ce capteur mesure l'accélération ET l'inclinaison dans les 3 axes x, y et z. Les informations ci-dessous sont en programmant avec NXT-G.
Mesure de l'inclinaison : Le capteur renvoie une valeur par axe, permettant de savoir de combien l'axe est incliné.
Quand l'axe est orienté vers le bas, la valeur vaut -200, quand l'axe est horizontal la valeur vaut 0 et à la vertical la valeur atteint +200. La précision est donc d'un demi grade. Le capteur peut servir de niveau. Point important : pendant les mouvements la valeur est faussé, comme quand on déplace un niveau à bulles, cela fait bouger la bulle.

Mesure de l'accélération : A partir de la valeur de l'inclinaison, on peut mesurer l'accélération. Par exemple si l'axe est à l'horizontal on aura une valeur de 0. Si le capteur est déplacé il va se suivre 3 étapes :
1- Le capteur sans mouvement est accéléré, la valeur lue augmente en fonction (ou diminue),
2- Pendant le déplacement, si la vitesse de déplacement est constante la valeur lue revient à 0.
3- En fin de déplacement le capteur est décéléré, la valeur lue diminue puis revient à 0.
Il faut bien imaginer que le capteur fonctionne comme la bulle d'un niveau ou mieux comme une bille qui serait dans une sphère.

Le fonctionnement en statique (inclinaison) est assez simple à programmer, pour le dynamique je n'ai pas encore expérimenté d'application.

Vidéos à venir avec notamment la pilotage du bull 8275 en combinant ce capteur avec l'IR link.

N'hésitez pas à poser des questions, j'ai sûrement oublié des détails.

Avatar de l’utilisateur
BUZ
Level 9
Level 9
 
Messages: 1410
Localisation: Région de la quenelle // Avignon
expertgbb

Messagepar BUZ » Mar Nov 17, 2009 8:57 pm

Alban42800 a écrit:Point important : pendant les mouvements la valeur est faussé, comme quand on déplace un niveau à bulles, cela fait bouger la bulle


c'est con tout ça :/

Mais, la mesure de l'angle et de l'accélération sont elles confondues ou dissociées ?
parce-que là, on peut pas asservir un robot si la mesure est faussée quand il bouge... (donc il n'a plus d'intérêt ce capteur :dent: )

Alban42800 a écrit:Mesure de l'accélération : A partir de la valeur de l'inclinaison, on peut mesurer l'accélération.


déviré sur le temps ou mesure indépendante ? tu dois le calculer toi même ? (questions redondantes avec les précédentes),

wait and see

PS: idée pour un test dynamique => un segway ??

Avatar de l’utilisateur
Nico71
Level 14
Level 14
 
Messages: 9618
Âge: 35 ans
expertgbbexpertsoft3dexperttrialtruckmoceurtechnicexpertvainqueurconcours3

Messagepar Nico71 » Mar Nov 17, 2009 9:55 pm

Si le capteur est faux en mouvement, comment ce gars à fait pour interpoler avec autant de précision les mouvements ?



y'a pas moyen de corriger les erreurs en connaissant les valeurs du déplacement ? Et c'est sensible à haute vitesse (mouvement brusque) ?

;)

Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 50 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Mar Nov 17, 2009 10:11 pm

@Buz :
Effectivement les mesures sont confondues, pour les dissocier il faut faire la distinction entre une valeur qui ne change pas rapidement (angle) et une valeur qui change rapidement (accélération).
C'est finalement assez simple, en électronique on appelle ça des filtres passe bas et passe haut.
En programmation on fait une moyenne pour travailler sur l'angle.
Pour travailler sur l'accélération il faut s'initialiser avec la valeur d'angle puis travailler sur les données brutes.

Les sous marins déterminent leurs position grâce aux accéléromètres :
- En mesurant l'accélération et sa durée ils déterminent leurs vitesse.
- En mesurant la durée entre l'accélération et la décélérations ils déterminent la distance parcourue. Enfin c'est un peu plus compliqué mais c'est le principe ;)

Pour le segway je sais pas si c'est possible, ça a déjà été fait avec un capteur gyro.

@ Nico :
Effectivement j'ai écrit une bêtise : La valeur est faussée par les mouvements de déplacement mais apparemment (je viens de tester) les mouvements de rotation n'altèrent pas la valeur (ou alors trop rapidement pour que les moteurs réagissent).
Ensuite au niveau logiciel tu peux corriger les défauts. Il y a certainement des corrections dans la "main" de ta vidéo car c'est vraiment rapide, ma maquette est plus lente.

Avatar de l’utilisateur
killalot
Level 6
Level 6
 
Messages: 392
Localisation: amance 70
Âge: 31 ans

Messagepar killalot » Mar Nov 17, 2009 11:03 pm

c'est impressionnant toutes les possibilités du nxt
mon moteur V8 Stirling
(\_/)
(O.o)
(> <)
Voici Bunny. Copiez Bunny dans votre signature pour l'aider dans sa route vers la domination du monde.

efjie2002
Level 10
Level 10
 
Messages: 1752
Localisation: Bar Sur Seine, Aube, champagne-Ardennes
Âge: 49 ans
collectionneur

Messagepar efjie2002 » Mer Nov 18, 2009 9:15 am

très interessant ce post, cela me donne envie de me repencher sur le capteur gyro que j'avais acheté pour tenter de fabriquer un correcteur d'assiette: sans sucées du point de vue logiciel car j'avais été incapable de , déjà, comprendre les signaux fournis et encore moins de les exploiter... je vais y retourner

Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 50 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Sam Nov 28, 2009 12:56 am

Voici la vidéo de mes tests.

Avatar de l’utilisateur
Clément
Level 9
Level 9
 
Messages: 1017
Âge: 37 ans
experttrialtruck

Messagepar Clément » Sam Nov 28, 2009 11:34 am

les effets sont très sympas ! après, je trouve qu'il y a un mini temps de latence et/ou qu'il est pas super précis. sais pas si c'est du au fait que ça soit porté à la main (et non relié à une table comme un "vrai" joystick), ou si c'est une certaine latence ou un jeu dans les pièces lego (moteurs et capteurs).

en tous cas, le résultat est bluffant :) c'est comme la wii presque !

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Sam Nov 28, 2009 11:51 am

J'aime beaucoup ces tentatives de joystick universel, surtout avec le bulldozer. Le gyro offre une bonne maniabilité en débit du temps d'attente.
L'idéal serait de regrouper les capteurs pour en faire une seule commande, mais IR Link pose quelques problèmes: faible portée et bonne orientation vers le récepteur.
J'ai aussi réfléchi à la question. Que penses-tu d'un NXT embarqué avec un IR Link pointant vers le récepteur. Il ne resterait-plus alors qu'à utiliser un 2è NXT avec son capteur gyro en liaison Bluetooth avec l'embarqué.
Voila quelques idées qui me trottent dans la tête… J'aimerais connaître ton avis. ;)

A tout hasard une vidéo qui pourrait donner quelques idées:

PS: ce post aurait aussi sa place dans "de la théorie à la pratique".
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 19486
Âge: 37 ans
revieweurmoceurstarwarsexpertambassadeur

Messagepar Anio » Sam Nov 28, 2009 11:57 am

roboleo a écrit:PS: ce post aurait aussi sa place dans "de la théorie à la pratique".


A vous (Alban et toi principalement) de voir si vous voulez créer un topic qui montre vraiment les applications du capteur. Car il est vrai que ce topic (dans "les pièces Lego") est là principalement pour présenter une pièce. Et désormais, la pièce est présentée.
Think outside the box.

Tout plein de liens utiles dans mon profil ! :P

Avatar de l’utilisateur
Nico71
Level 14
Level 14
 
Messages: 9618
Âge: 35 ans
expertgbbexpertsoft3dexperttrialtruckmoceurtechnicexpertvainqueurconcours3

Messagepar Nico71 » Sam Nov 28, 2009 12:31 pm

impressionnant !

alban :tu penses que la précision du capteur et sa réactivité dépend du langage de programmation utilisé ? Si le gars arrive à faire une main robotisé comme la vidéo, je suis sur que c'est possible d'améliorer la précision et la réactivité du capteur.

En tout cas ce capteur est vraiment puissant je trouve ! ;)

Activation
Level 3
Level 3
 
Messages: 39

Messagepar Activation » Sam Nov 28, 2009 2:39 pm

moi j ai surtout l impression que c est la brique nxt qui traine à traiter les données plus que le capteur en lui même qui soit en cause

va falloir l overclocker :D

ça serait bien de voir la charge de calcul de la brique via un tools sur le PC en la reliant au PC via usb au pire
ou même via extrapolation dans le logiciel de programmation lego (vu que le dit logiciel est une version exclusive à la brique nxt)

la batterie était chargé à bloc sinon lors de ta video ?

sinon j ai ce fameux accelerometre, mais je songeais plus à l utiliser sur un modèle à centre de gravité élevé pour eviter qu il bascule si l inclinaison du modèle est trop critique sur le plan latéral (avec systeme de contre poids à changer de coté en fonction)... bref une grue mobile ou un sandcrawler star wars

maintenant l'idée de l'utiliser dans un système qui consiste à singer les mouvements (en bras robotisé) pour rendre des manutention de lourde charge moins pénible par exemple est sympa aussi

Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 50 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Sam Nov 28, 2009 5:00 pm

Le topik a effectivement sa place dans les deux rubriques, on parle de la pièce, de ses applications et de son utilisation qui est en grande partie de la programmation.
@roboléo :
Dans un modèle, mettre un nxt comme "récepteur" OK.
Utiliser l'IRlink : Seulement s'il y a plus de 3 moteurs. Sinon brancher les moteurs pfs sur le NXT avec les adaptateurs.

@ Activation : Très bonne idée d'application ;)

Pour les retards il y a plusieurs explications, mais la brique nxt n'est pas en cause.
- Il faut tenir compte du temps de démarrage des moteurs.
- Mon premier modèle ne prend tout simplement pas en compte la dynamique : Le fait que la consigne (inclinaison du capteur) change avant que le moteur ait atteint sa position n'est pas géré.
- Le bull : Les temps de retard sont du en grande partie aux récepteurs IR.
- Le shooter hitechnic : Il utilise une version simplifié d'asservissement PID, ou seul P et D sont pris en compte. Il me semble bien que c'est I qui améliore la réactivité. Je développe un peu le principe d'asservissement et de régulation :
(à ne pas prendre à la lettre, je n'ai pas tout compris moi même) :reflechi:
La puissance du moteur est régulée en fonction de sa position par rapport à la position voulue : Plus l'angle à parcourir est grand et plus on envoie de puissance au moteur, c'est la régulation Proportionnelle (le P de PID). L'angle à parcourir est appelé l'erreur car à un moment donné le moteur n'est pas à la position désirée.
Le problème est que quand le moteur est proche de sa position finale l'erreur est faible donc la puissance est trop faible et le moteur n'atteint jamais sa position finale, surtout s'il y a un effort à fournir.
La régulation proportionnelle utilise un coefficient K. K multiplié par l'erreur donne la puissance à envoyé au moteur. Plus K est grand plus le système réagit vite. Si K est trop grand le système oscille (le moteur va trop vite, dépasse la consigne et repart dans l'autre sens pour à nouveau dépasser la consigne, sans fin).
Pour combler ce problème la régulation prend en compte les paramètres I (intégrale) et D (dérivée).
Ces deux paramètre prennent en compte la durée, la dynamique. I permet d'atteindre plus vite l'angle souhaité et D doit éviter les oscillations.

Le calcul PID est fait en boucle, à chaque itération on recalcule la puissance à envoyer au moteur. Pour prendre en compte la dynamique, le calcul de I et D est basé sur la position précédente du moteur, c'est à dire l'itération d'avant dans le programme.

Je ne fais plus de math ni physique depuis de nombreuses années, je serais incapable de vous expliquer plus en détail... mais wikipédia si : http://fr.wikipedia.org/wiki/R%C3%A9gulateur_PID

Tout ça pour dire que c'est en grande partie la qualité du programme, des équations et des réglages qui fait que le système fonctionne bien.

Avatar de l’utilisateur
Klean
Level 1
Level 1
 
Messages: 6
Localisation: Le Mans
Âge: 40 ans

Messagepar Klean » Sam Juin 02, 2012 2:24 pm

J'ai lu quelque part que l'on pouvait déterminer la position d'un robot mobile à partir de ce capteur accéléromètre, ça te dit quelque chose ?

Mastermind
Level 6
Level 6
 
Messages: 315
Localisation: Paris
Âge: 35 ans

Messagepar Mastermind » Jeu Aoû 23, 2012 1:40 pm

Je me demandais, quelle est la différence entre ce capteur et le capteur gyro puisqu'il mesure aussi l'inclinaison ?


Retourner vers A propos des pièces Lego

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 3 invités