IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Algorithme de cinématique


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut Algorithme de cinématique
    Bonjour,

    Dans la continuité d'un post précédent (sur l'accéléromètre), ayant réussi à obtenir les données d'accélération, j'ai de nouveau un petit problème.

    Pour expliquer un peu, l'accéléromètre est donc censé être positionné sur un chariot, avec lequel je dois être capable d'obtenir la vitesse de déplacement du chariot (sens avant ou arrière), ainsi que le déplacement effectué par rapport au "départ" du programme.

    Le hic c'est que je n'arrive pas à obtenir quelque chose de correct.

    Déjà étant donné que l'accéléromètre subi la gravité, les données sont constamment en mouvement, j'ai donc dû filtrer un peu tout ça, pour ne tenir compte que d'un vrai déplacement.
    Ensuite, lors d'une accélération (ou décélération) j'arrive bel et bien à obtenir ma vitesse, mais lorsque j'arrête de bouger l'accéléromètre, la vitesse ne passe pas à 0, elle garde toujours une certaine valeur, et de ce fait, le déplacement lui continue à augmenter.

    Quelqu'un aurait-il un algorithme permettant de filtrer tout ça correctement, ainsi que de calculer correctement ?

    PS : Mon accéléromètre est un JoyWarrior 24F8, données d'accélération récupérées toutes les 100ms.

  2. #2
    Membre actif Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Points : 281
    Points
    281
    Par défaut
    Pour ca il faut calibrer l'accéléromètre. C'est a dire mesurer l'accélération à un moment où tu sais qu'il est au repos, afin de soustraire cette valeur à tes mesures ensuite.
    Ca suppose que l'orientation de l'accéléromètre reste constante (a plat sur une table par exemple), s'il doit tourner sur un autre axe que vertical, c'est plus chaud et je ne peux plus t'aider, mais la base doit rester la même.

  3. #3
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Note que même en calibrant ton accéléromètre, tu n'auras pas une précision absolue sur tes mesures d'accélération. Or, le passage de l'accélération à la vitesse se fait par intégration, tu cumules donc des erreurs (ça sera encore pire avec la position).

    Du coup, tu retomberas difficilement sur le zéro absolu pour la vitesse lorsque ton chariot s'arrêtera.

    Je ne connais pas de moyen de filtrage "magique" dans le cas d'un accéléromètre seul.

    En général, la mesure de l'accélération à d'autres mesures (position, vitesse). On calcul alors la position non pas à partir de l'accélération seule, mais à partir des différentes mesures.

    Tu peux jeter un oeil à cette page wiki qui détaille ça un peu plus, jette ensuite un oeil au filtre de Kalman :
    http://fr.wikipedia.org/wiki/Centrale_inertielle

    PS : Dans quel cadre tu essaies de mesurer la position de ton charriot?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    Alors pour donner un peu plus de détails, on doit faire un contrôle de pose d'un rail de tramway, donc pour ça on a un chariot etc (je vais pas détailler tout le système, c'est pas la question).
    Lorsque l'on pousse le chariot pour mesurer, on souhaite avoir la vitesse de déplacement, et donc le déplacement effectué, pour situer approximativement quand on "change" de rail (un rail mesurant environ 11m), afin de situer avec plus de précision lors de l'exploitation ultérieure des mesures, l'emplacement des erreurs, si erreur il y a.

    En plus de ça, on souhaite pouvoir détecter la "marche arrière", pour être relativement précis au niveau de la distance parcourue réelle, et ne pas fausser le "changement" de rail.

    Donc pour le moment on a bien nos accélérations normales, il y a environ 70 sur l'axe lié à la gravité, on a donc considéré que 70 = 9,81m/s², on fait donc une règle de trois pour toutes les autres valeurs, afin d'afficher une valeur "réelle".

    Ensuite on a bien nos fonctions de récupération de vitesse / position (les équations V=a*t+V0, X=1/2*a*t²+V0*t+X0), mais du coup on a pas un "zéro" très bien calibré.
    Ce qui implique donc que lorsque l'accéléromètre n'est pas parfaitement plat (ou du moins par rapport à sa calibration actuelle), les mesures sont perturbées par la gravité sur chacun des axes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formalisation graphique des algorithmes
    Par David R. dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 08/12/2012, 10h21
  2. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo