Je voudrais détecter les mouvements d'un objet sur lequel je positionne un capteur accéléromètre-gyromètre (GY-521 à base MMA6050).
Haut/Bas, Droite/Gauche et Avant/Arrière.
L'accéléromètre fonctionne correctement (apparemment).
Sur le port I2C je récupère bien les informations accX, accY et accZ.
Elles sont presque nulles lorsque le capteur ne bouge pas (en tenant compte des 1° valeurs obtenues dues à l'apesanteur).
Lorsque le capteur est en mouvement toutes les valeurs sont modifiées.
Par contre, je n'arrive pas à trouver une logique des changements de valeur pour déduire le sens de déplacement.
Je précise que les déplacements que j'essaie d'identifier se font sur plusieurs centimètres.
J'ai aussi essayé avec les fonctions getMotion, en rajoutant un filtre sur 10 acquisitions et aussi en modifiant la sensibilité sans résultats significatifs.
Ce capteur est très peu documenté sur le net.
Si quelqu'un a une idée qui permettrai de trouver une solution, je suis preneur.
Le déplacement se fait à vitesse constante ? Si oui, l'accélération est différente de 0 pendant un court instant, le temps de passer de la vitesse nulle à cette vitesse constante. Ensuite, pendant le déplacement à vitesse constante, l'accélération est de nouveau nulle.
J'ai un peu étudié le sujet depuis quelques jours.
Comme j'aime bien voir les choses de mes propres yeux, j'ai enregistré les traces d'accélération de mon capteur avec des mouvements sur un seul axe.
Un fois les traces récupérées je les ai mises dans un fichier Excel pour voir les courbes.
J'ai ainsi pu ainsi créer une formule qui me permet de détecter le sens du mouvement (bien-sur sur le seul axe X).
Dans le fichier Excel joint, il y a 1 enregistrement avec les traces acc X, Y et Z (courbes du haut).
Ensuite j'ai appliqué quelques calculs pour supprimer l'apesanteur et permettre de détecter le sens de déplacement. Les résultats sont visibles dans les courbes du bas (en bleu la résultante et en rouge la détection du sens de mouvement).
Il reste un dernier phénomène que je n'explique pas. Pourquoi il y a cette pente constante qui décale les résultats progressivement vers le bas et qui m’empêche de détecter le sens du mouvement sur le 2° mouvement. Cette pente est illustrée par la courbe de tendance imprimée automatiquement par Excel. J'ai zippé le fichier car il est un peu gros.
Je vois bien qu'on ne peut pas tout résoudre par la pratique. S'il y a quelques théoriciens qui passent par là et peuvent me fournir une explication, voire une solution, je suis preneur.
Comme vous l'avez fait dans votre tableau, la vitesse est l'intégration de toutes les accélérations successives.
Le problème vient que la valeur que vous intégrez n'est pas la seule accélération concernée.
En effet, cette valeur, outre l'accélération concernée inclut des biais :
de construction du capteur,
dus au désalignement du capteur par rapport à l'axe considéré (ce que pepe a détaillé ci-dessus)
dus au couplage d'axe du capteur 3axes.
elle inclut aussi des dérives :
stabilité du capteur (thermique, mécanique)
et aussi des bruits :
propres au capteur
liés à son traitement.
Le problème est que si certains biais (ceux propres au capteur) peuvent être relativement bien compensés, vous ne pourrez pas faire grand chose sur les autres.
NOTA : une des grandes propriétés de l'intégration, c'est sa dérive liée aux imperfections matérielles.
Maintenant, vous pouvez toujours faire un traitement du signal du GY-521 pour en faire une "centrale de cap et de verticale", dit plus simplement un système de stabilisation. Mais ne vous attendez pas à des miracles.
Maintenant, si votre objet est en contact avec un référentiel fixe (le sol par exemple) par rapport auquel vous voulez connaître le signe de la vitesse, vous pouvez utilisez des moyens plus simples : roulettes, détecteurs de frottement.
Mieux vaut utiliser une IMU, la tendance des constructeurs c'est d’intégrer une fusion de capteurs et de faire le traitement du signal directement sur la puce.
Bosch le fait avec le BNO 055, mais je suis quasiment sur que d'autres sont déjà en train de travailler sur une technologie similaire.
Bon voilà, j'ai utilisé un capteur BNO 055. Et j'ai le même problème.
Surement que je ne l'utilise pas convenablement.
Mais je ne trouve pas d'information sur le sujet.
Pour plus de précision, je compte mettre mon montage au poignet pour enregistrer les déplacements des mains de haut en bas.
La seule info dont j'ai besoin c'est de détecter quand le bras descend et quand le bras monte.
La distance de déplacement n'est pas importante. La vitesse de déplacement non plus.
La seule info dont j'ai besoin c'est de détecter quand le bras descend et quand le bras monte.
Avez vous essayé avec un capteur de pression (genre BMP180 ou son prédécesseur BMP85) si ce qui vous intéresse c'est de savoir si la main monte ou descend et que la course est assez longue ce doit être jouable
Jetez un œil ici et leur exemple ou le capteur est utilisé en altimètre : Il est posé sur un tabouret, puis tenu en hauteur, puis posé au sol, puis remis en hauteur, et reposé au sol. Le tabouret fait 46 cm et on voit très bien les phases