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

Bibliothèques, systèmes et outils C Discussion :

Reconnaissance de mouvements


Sujet :

Bibliothèques, systèmes et outils C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 56
    Points : 36
    Points
    36
    Par défaut Reconnaissance de mouvements
    Bonjour,

    Le but de mon petit projet (j'ai deux semaines) est de réaliser une sorte de clé électronique à l'aide d'un accéléromètre :
    Un utilisateur qui souhaite ouvrir sa porte par exemple, doit réaliser un mouvement précis avec l'accéléromètre en main. Le mouvement réalisé par l'utilisateur doit être analysé par un PC et comparé à un schéma de référence. Si le mouvement est bon la porte et dévérouillée. L'accéléromètre dont je dispose détecte l'accélération selon deux axes, donc le mouvement doit être plan.

    Pas de soucis pour récupérer les données, je trace deux courbes (voir l'image) : l'accélération horizontale (en rouge) et l'accélération verticale (en vert) en fonction du temps.
    Maintenant j'aimerais pouvoir comparer chacune de ces courbes à une courbe de référence, et c'est là que je bloque :
    • Il y a un décalage horizontal entre ma courbe de référence (Cref) et ma courbe mesurée (Cmes), comment m'en débarasser et ainsi "synchroniser temporellement" les deux courbes ?
    • Une fois que me courbes sont calées, comment les comparer ? Ce sont les pics qui sont intéressants, mais leur amplitude varie pas mal selon que le mouvement est rapide ou lent. Du coup, je ne peux pas sommer les écarts des points pris sur chacune des courbes. Approximer un ensemble de points pas une courbe ça me fait direct penser à Lagrange, mais en l'occurrence je ne vois pas trop comment m'en servir.


    Ma question est donc : connaissez vous des outils en C qui me permettraient de comparer deux courbes (qui sont en fait des nuages de points...) ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Up please.
    Je vois pas trop comment faire la... Jai bien trouve un programme concernant lagrange ici http://www.physics.unlv.edu/~pang/cp_c.html mais d une je ne le comprends pas, et de deux il est sous copyright donc je ne sais pas si jai le droit de lutiliser pour un devoir.

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 438
    Points
    2 438
    Par défaut
    Ton problème est mathématique.
    Si j'ai bien compris, tu cherches à comparer un mouvement, donc des vitesses/accélérations, à des valeurs prédéfinies.
    Je pense que la solution se trouve du côté des fonctions dérivés : tu dérives ce que te donne la courbe afin d'obtenir sa variation sous forme d'une autre courbe. Si la variation est comprises entre deux nombres précis, alors l'accélération est celle que tu voulais.

    Citation Envoyé par silma Voir le message
    Up please.
    Je vois pas trop comment faire la... Jai bien trouve un programme concernant lagrange ici http://www.physics.unlv.edu/~pang/cp_c.html mais d une je ne le comprends pas, et de deux il est sous copyright donc je ne sais pas si jai le droit de lutiliser pour un devoir.
    Dans le lien que tu as fourni il y a le programme 2.4 : Derivatives with the three-point formula qui me semble bien. La source est simple, tu remplis le f[] avec les valeurs de ton capteurs puis tu appelles three() et tu n'as plus qu'à manipuler f1[] et f2[].

    Cordialement.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Merci pour ta réponse, je vais regarder ça

  5. #5
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 429
    Points
    1 429
    Par défaut
    Mon humble avis est que ton problème revient à recherche un motif dans un signal => algorithme de corrélation http://fr.wikipedia.org/wiki/Corr%C3...n_crois%C3%A9e

    Méthode généralement utilisée les systèmes tel que les sonars et les radars.

    Bon courage

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    mith06, merci mille fois pour ce conseil salvateur !
    C'est par-fait !
    J'avais bien pensé à faire un calcul de covariance comme ça, mais il me manquait la notion de calage temporel pour que ça fonctionne.

    Bon, par contre j'avoue, j'ai triché... J'ai finalement fait mon programme en perl, parce que je m'en sortais pas en C et que je manquais de temps pour m'acharner

    Merci encore

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

Discussions similaires

  1. Android : bientôt la reconnaissance des mouvements
    Par Gordon Fowler dans le forum Actualités
    Réponses: 8
    Dernier message: 14/06/2010, 16h48
  2. Réponses: 106
    Dernier message: 13/05/2010, 15h34
  3. Reconnaissance de mouvement pour souris/touchscreen
    Par kamouminator dans le forum Linux
    Réponses: 0
    Dernier message: 12/06/2009, 17h30

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