Utilisation pratique de quaternion
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Utilisation pratique de quaternion



  1. #1
    invited8d9cb00

    Utilisation pratique de quaternion


    ------

    Bonjour

    La partie théorique des quaternions ne me pose pas trop de problème. Par contre j'ai des difficultés dans la mise en place pratique de ceux-ci ainsi que dans leur interprétation.
    Dans mon application je souhaite utiliser les quaternions pour calculer un angle entre 2 membres du corps humain.
    Je possède 2 capteurs fixés sur les deux membres. Et je récupère les quaternions fourni par ces capteurs, qui représentent selon moi la rotation entre le repère mobile du capteur et le repère terrestre.
    Les capteurs travail dans un repère indirect, et l'angle que je cherche à calculer dépend de la rotation selon l'axe Z de ceux ci (cf. pièces jointes).
    J'ai essayé 2 méthodes qui n'ont pas abouti, et je ne sais pas si c'est une erreur de programmation ou une erreur mathématique.

    Tous les quaternions sont unitaires, ou je les force à devenir unitaire.

    - La première méthode consiste à calculer un angle entre deux vecteurs.
    C'est à dire que je défini 2 vecteurs, dans les 2 repères mobiles, qui sont colinéaire dans le repère absolue lorsque l'angle rechercher est nul.
    Puis je leur applique à chacun le quaternion correspondant. Et grâce à un produit scalaire je récupère l'angle entre les deux vecteurs qui correspond à celui rechercher.
    Cette méthode ne fonctionne que lorsque les quaternions ne sont composé que de la rotation qui m’intéresse et est inopérant lorsque il y a des composantes parasites, comme par exemple avec une abduction du bras de 30°.

    - La seconde méthode envisagée consiste en l'utilisation directe des quaternions.
    Si l'on effectue le quotient des 2 quaternions nous sommes censé obtenir le quaternion exprimant la rotation de l'un vers l'autre, et l'extraction de l'angle de celui-ci est l'angle recherché.
    Cette méthode donne également des résultats complètement absurdes.

    Ces méthodes sont elles mathématiquement correct?
    Si oui, auriez vous une piste pour la rendre fonctionnelle.
    Si non, pouvez vous me mettre en évidence mon (mes) erreur(s).

    La capture s'effectue avec des centrales inertielles BNO055 :
    https://learn.adafruit.com/adafruit-...ensor/overview
    https://cdn-shop.adafruit.com/datash...5_DS000_12.pdf

    Le traitement est réalisé avec un microcontrôleur Arduino DUE :
    https://www.arduino.cc/en/Main/ArduinoBoardDue

    Je mets en pièce jointe des schémas (sûrement plus explicite), ainsi que les algorithmes que j'utilise pour traiter les quaternions.

    PJ : - schéma-1 : Schéma de principe du système
    - schéma-2 : Définition de l'angle recherché
    - schéma-3 : Définition de l'angle recherché en fonction de plusieurs paramètres
    - Méthode-1 et 2 : Algorithme utilisé pour le traitement

    Merci d'avance
    PS: Si cette discussion n'est pas à ça place n'hésité pas à me le dire, j'essayerai de la déplacer dans un topic plus adapté.

    -----
    Images attachées Images attachées

  2. #2
    Antoane
    Responsable technique

    Re : Utilisation pratique de quaternion

    Bonsoir,

    je pense que ce sera davantage à sa place en physique ?
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    invite6dffde4c

    Re : Utilisation pratique de quaternion

    Bonjour.
    Je n’ai jamais travaillé avec des quaternions.
    Quels sont les données que les capteurs vous fournissent ? Leurs coordonnées (x,y,z) ?
    Si c’est le cas, vous ne pouvez pas avoir l’orientation du segment avec une seule acquisition. Elle ne vous donne qu’un point dans l’espace. Mais même avec deux point dans l’espace vous ne pouvez par déduire le centre de rotation (en admettant qui soit fixe). Avec trois positions dans l’espace, et si le centre de rotation est fixe, on peut déduire ce centre de rotation et le vecteur qui va de ce centre au capteur.

    Pour le deuxième segment le calcul doit être un peu plus compliqué, mais il est peut-être faisable, avec aussi 3 mesures.

    Une fois qu’on a réussi à calculer les deux vecteurs, l’angle entre les deux est enfantin.

    Pour votre première méthode, le vecteur que vous obtenez avec les données est celui qui va de l’origine du repère au capteur. Donc, l’angle entre les deux vecteurs n’a rien à voir avec l’angle entre les deux segments.
    Même erreur de base pour votre seconde méthode.

    Au revoir.

  4. #4
    invite417be55c

    Re : Utilisation pratique de quaternion

    Citation Envoyé par lap1formatik Voir le message
    - La première méthode consiste à calculer un angle entre deux vecteurs.
    C'est à dire que je défini 2 vecteurs, dans les 2 repères mobiles, qui sont colinéaire dans le repère absolue lorsque l'angle rechercher est nul.
    Puis je leur applique à chacun le quaternion correspondant. Et grâce à un produit scalaire je récupère l'angle entre les deux vecteurs qui correspond à celui rechercher.
    Cette méthode ne fonctionne que lorsque les quaternions ne sont composé que de la rotation qui m’intéresse et est inopérant lorsque il y a des composantes parasites, comme par exemple avec une abduction du bras de 30°.
    Je ne comprends pas très bien. Tu veux l’angle de l’avant-bras par rapport à quoi ?

    Citation Envoyé par lap1formatik Voir le message
    - La seconde méthode envisagée consiste en l'utilisation directe des quaternions.
    Si l'on effectue le quotient des 2 quaternions nous sommes censé obtenir le quaternion exprimant la rotation de l'un vers l'autre, et l'extraction de l'angle de celui-ci est l'angle recherché.
    Cette méthode donne également des résultats complètement absurdes.
    Ben non… si tu effectues une rotation à un quaternion u par exemple, et admettons que q soit le quaternion représentant la rotation, le quaternion tourné u’ s’écrit :
    u’ = q u q^-1
    donc le rapport de u’ et u ne donne pas q

  5. A voir en vidéo sur Futura
  6. #5
    invited8d9cb00

    Re : Utilisation pratique de quaternion

    Bonjour

    Merci Antoane, je n'étais pas sur de moi

    Citation Envoyé par LPFR Voir le message
    Quels sont les données que les capteurs vous fournissent ? Leurs coordonnées (x,y,z) ?
    Les capteurs sont programmé pour me ressortir directement le quaternion, un algorithme de fusion est présent dans le capteur pour faire une première interprétation des données fourni par le gyroscope, l’accéléromètre et le magnétomètre.

    Citation Envoyé par bongo1981 Voir le message
    Je ne comprends pas très bien. Tu veux l’angle de l’avant-bras par rapport à quoi ?
    L'angle que je recherche à calculer est entre l'axe de l'avant bras et l'axe du bras, il est plus explicite sur les schéma que j'ai posté en pièce jointe schéma 2 et 3.

    Citation Envoyé par bongo1981 Voir le message
    Ben non… si tu effectues une rotation à un quaternion u par exemple, et admettons que q soit le quaternion représentant la rotation, le quaternion tourné u’ s’écrit :
    u’ = q u q^-1
    donc le rapport de u’ et u ne donne pas q
    Je croyais que cette formule s'appliquais dans le cas ou u est un vecteur. Et que q1*q2 correspondait (où q1 et q2 sont deux quaternions) à la composition de 2 rotations et donc à 2 rotation successive ?

  7. #6
    invited8d9cb00

    Re : Utilisation pratique de quaternion

    J'ai essayé d'approfondir ma 2 eme méthode et je suis tombé sur la formule suivante :

    alpha=2*Arctan(Real(q1^-1*q2)/Img(q1^-1*q2)) où q1 est le quaternion associé au bras et q2 à l'avant bras.

    Avec ça j'obtiens des résultats cohérents pour des cas particuliers, mais dés que j'en sors c'est n'importe quoi.

  8. #7
    invited8d9cb00

    Re : Utilisation pratique de quaternion

    CA MARCHE

    Merci a vous, vous m'avez permit de remettre en cause tout mon raisonnement, et j'ai trouvé mon erreur.
    Pour conclure la méthode 2 fonctionne avec la formule de l'arctan, il faut juste faire attention a la non commutativité de la multiplication des quaternions. J'ai inversé 2 rotations lorsque j'effectuais mes changement de repères.

    Merci a tous
    a la revoyure autour d'une autre discussion

  9. #8
    invitece9419fa

    Re : Utilisation pratique de quaternion

    Bonjour,
    Je cherche aussi à mesurer les angles entre deux capteurs BNO, et j'ai même problématique. Pouvez détailler plus en détail la méthode 2 avec les formules que vous utilisez ?
    Merci

  10. #9
    Deedee81

    Re : Utilisation pratique de quaternion

    Citation Envoyé par beunoha Voir le message
    Je cherche aussi à mesurer les angles entre deux capteurs BNO, et j'ai même problématique. Pouvez détailler plus en détail la méthode 2 avec les formules que vous utilisez ?
    Bonjour,

    Bienvenue sur Futura.

    lap1formatik n'est malheureusement plus venu sur Futura depuis trois ans.
    Mais peut-être quelqu'un d'autre pourra-t-il t'aider.

    Normalement on évite de déterrer des sujets et on l'indique en vert mais le sujet ici est tellement spécifique qu'il vaut peut-être le laisser ici. ..... En espérant une réponse !
    "Il ne suffit pas d'être persécuté pour être Galilée, encore faut-il avoir raison." (Gould)

Discussions similaires

  1. Utilisation pratique du Jansky
    Par invitec85fb8ec dans le forum Archives
    Réponses: 2
    Dernier message: 05/03/2016, 08h21
  2. Utilisation pratique d'une solution tampon
    Par invitecc2e5eff dans le forum Chimie
    Réponses: 2
    Dernier message: 30/12/2014, 18h55
  3. Débutant et utilisation pratique d'un oscilloscope.
    Par ph0 dans le forum Électronique
    Réponses: 3
    Dernier message: 22/11/2013, 16h21
  4. Utilisation pratique de critére de Von Mises
    Par invite42359bfd dans le forum Physique
    Réponses: 9
    Dernier message: 18/07/2012, 12h57
  5. Quaternion
    Par invite1e8465f8 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 17/04/2009, 13h02