+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Futur Membre du Club
    Inscrit en
    novembre 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 56
    Points : 15
    Points
    15

    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
    Futur Membre du Club
    Inscrit en
    novembre 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 56
    Points : 15
    Points
    15

    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 éprouvé
    Avatar de Daïmanu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2011
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2011
    Messages : 178
    Points : 461
    Points
    461

    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.

  4. #4
    Futur Membre du Club
    Inscrit en
    novembre 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 56
    Points : 15
    Points
    15

    Par défaut

    Merci pour ta réponse, je vais regarder ça

  5. #5
    Membre chevronné

    Ingénieur développement matériel électronique
    Inscrit en
    juillet 2010
    Messages
    307
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2010
    Messages : 307
    Points : 606
    Points
    606

    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
    Futur Membre du Club
    Inscrit en
    novembre 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 56
    Points : 15
    Points
    15

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •