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 :
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 :
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).
La valeur de w est toujours censée être positive.
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.
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
Si delta est supérieur à 360 degrés, delta est recalculé en delta = delta - 360.
À ce stade, delta doit être inférieur ou égal à la tolérance d’erreur ; par exemple, 10 degrés.
Vérification de la matrice de rotation reçue. La matrice de rotation est censée être une matrice 3x3.
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.
La matrice de rotation reçue est transformée en vecteur Quaternion.
Toutes les étapes de <a> à <e> de vérification (1) sont réutilisées.
Rubriques connexes
Test des fonctionnalités de capteur avec l’outil de diagnostic du capteur