Partager via


Algorithme de vecteur quaternion d’orientation de l’appareil

Cet article décrit l’algorithme utilisé par le Kit de laboratoire matériel Windows (Windows HLK) pour déterminer le delta entre le vecteur reçu et le vecteur attendu pour la précision des données à 9 axes dans les tests avancés du capteur d’orientation. Les tests vérifient que la fusion de capteurs est correctement intégrée et que tous les capteurs requis pour la fusion de capteurs sont correctement intégrés et installés.

Notes

Dans certains cas, vous pouvez utiliser l’outil de diagnostic de capteur pour examiner l’inclinomètre 3D et le capteur d’orientation de l’appareil agrégé qui est testé.

Algorithme de vecteur quaternion

L’algorithme utilise le cos d’arc du produit de point à 4 dimensions des deux vecteurs, divisé par le produit de la magnitude des deux vecteurs et divisé par 2. Cet algorithme est illustré dans la figure 1 Formule de l’algorithme de vecteur quaternion :

Formule de l’algorithme de vecteur quaternion

Les valeurs de matrice de rotation sont converties en valeurs quaternion pour la validation de la précision. Le vecteur quaternion calculé ne doit pas dévier plus de +/- 5 degrés du vecteur quaternion attendu (tolérance par rapport à l’angle formé entre les vecteurs quaternion) (**+/- 10 degrés de précision autorisé dans la direction de l’axe de titre). Le test Windows HLK permet que le delta Øt soit jusqu’à 15 degrés.

Comment calculer l’angle delta entre les vecteurs quaternion reçus et attendus

Cette section décrit le calcul qui calcule l’angle delta entre les vecteurs Quaternion reçus et attendus dans les tests d’orientation avancés dans windows HLK.

Les deux valeurs de données suivantes sont intéressantes dans le rapport de données du capteur d’orientation de l’appareil agrégé :

  • Vecteur quaternion

  • Matrice de rotation

Le test se compose des deux vérifications suivantes :

  1. Vérification du vecteur Quaternion reçu dans le rapport de données du capteur. Un vecteur Quaternion est de la forme (xi + yj + zk + w).

    1. La valeur de w est toujours censée être positive.

    2. Le vecteur Quaternion est censé être normalisé et non égal à zéro. Par exemple, la magnitude du vecteur doit être proche de 1,0. Une marge de manœuvre (1 %) est fournie pour compléter les erreurs dans le calcul de l’ampleur.

    3. L’angle delta est calculé à l’aide de delta = 2 * Acos( ( Exp . Rec ) / ( | Exp | * | Rec | ) ), où :

      \* indique la multiplication scalaire

      . indique dot product

      Exp est le vecteur Quternion attendu.

      Rec est le vecteur Quaternion reçu

      | Q |indique l’ampleur du vecteur de quternion

      delta est l’angle en degrés

    4. Si delta est supérieur à 360 degrés, delta est recalculé en delta = delta - 360.

    5. À ce stade, delta doit être inférieur ou égal à la tolérance d’erreur ; par exemple, 10 degrés.

  2. Vérification de la matrice de rotation reçue. La matrice de rotation est censée être une matrice 3x3.

    1. Chaque colonne et chaque vecteur de ligne de la matrice de rotation doit être normalisé et non nul. Une marge de manœuvre d’un pour cent (1) est fournie pour compléter les erreurs dans le calcul de la magnitude.

    2. La matrice de rotation reçue est transformée en vecteur Quaternion.

    3. Toutes les étapes de <a> à <e> de vérification (1) sont réutilisées.

Test des fonctionnalités de capteur avec l’outil de diagnostic du capteur

Intégration des capteurs de mouvement et d’orientation