iphone d'utilisation - Stocker l'orientation à un tableau - et comparer




1 Answers

Essayez le warping temporel dynamique . Voici un exemple illustratif de tableaux 1D. Dans la base de données, nous avons déjà les 2 tableaux suivants:

Tableau 1: [5, 3, 1]
Tableau 2: [1, 3, 5, 8, 8]

Nous avons mesuré [2, 4, 6, 7] . Quel tableau est le plus similaire au nouveau mesuré? De toute évidence, le deuxième tableau est similaire au nouveau mesuré et le premier ne l'est pas.

Calculons les matrices de coût selon cet article, sous-section 2.1 :

D(i,j)=Dist(i,j)+MIN(D(i-1,j),D(i,j-1),D(i-1,j-1))

Ici, D(i,j) est l'élément (i,j) de la matrice de coûts, voir ci-dessous. Vérifiez la figure 3 de ce document pour voir que cette relation de récurrence est appliquée. En bref: les colonnes sont calculées en premier, à partir de D(1,1) ; D(0,*) et D(*,0) sont omis dans le MIN. Si nous comparons les tableaux A et B alors Dist(i,j) est la distance entre A[i] et B[j] . J'ai simplement utilisé ABS(A[i]-B[j]) . Les matrices de coût pour cet exemple:

Pour le tableau 1, nous avons 13 points, pour le tableau 2, nous avons 5. Le score le plus bas gagne, donc le tableau le plus similaire est le tableau 2. Le meilleur chemin de déformation est marqué en gris.

Ceci est seulement une esquisse de DTW. Vous devez résoudre un certain nombre de problèmes dans une application réelle. Par exemple, utilisez le décalage au lieu des points de fin fixes ou définissez les mesures d'ajustement: voir cet article , page 363, 5. conditions aux limites et page 364. Le document ci-dessus comporte également des détails.

Je viens de remarquer que vous utilisez le lacet, le tangage et le roulis. Simplement mis: don't et une autre raison de ne pas . Pouvez-vous utiliser les données de l'accéléromètre à la place? "Un accéléromètre est une mesure directe de l'orientation" (à partir du manuscrit DCM ) et c'est ce dont vous avez besoin. Et comme pour la question de tc, l'orientation relative au nord est-elle importante? Je suppose que non.

Il est beaucoup plus facile de comparer les vecteurs d'accélération que les orientations (angles d'Euler, matrices de rotation, quaternions) comme cela a été souligné. Si vous utilisez des données d'accélération, vous disposez de vecteurs tridimensionnels à chaque instant, les coordonnées (x, y, z). Je calculerais simplement

Dist(i,j)=SQRT((A[i][X]-B[j][X])^2+(A[i][Y]-B[j][Y])^2+(A[i][Z]-B[j][Z])^2) ,

c'est la distance euclédienne entre les deux points.

manuel de

Je veux réaliser ce qui suit:

Je veux que l'utilisateur puisse "enregistrer" le mouvement de l'iPhone à l'aide du gyroscope. Et après cela, l'utilisateur devrait pouvoir reproduire le même mouvement. J'extrait le pitch, le roll et le yaw en utilisant:

 [self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]
                                       withHandler: ^(CMDeviceMotion *motion, NSError *error)
     {
         CMAttitude *attitude = motion.attitude;
         NSLog(@"pitch: %f, roll: %f, yaw: %f]", attitude.pitch, attitude.roll, attitude.yaw);
     }];

Je pense que je pourrais stocker ces valeurs dans un tableau, si l’utilisateur est en mode enregistrement. Et lorsque l'utilisateur essaie de reproduire ce mouvement, je peux comparer le tableau de mouvements répliqué à celui enregistré. Le truc, c'est comment comparer les deux tableaux d'une manière intelligente? Ils n'auront jamais exactement les mêmes valeurs, mais ils peuvent être quelque peu les mêmes.

Suis-je sur la bonne voie ici?

MISE À JOUR: Je pense que peut-être que la réponse d'Alis sur l'utilisation de DTW pourrait être la bonne solution pour moi ici. Mais je ne suis pas si intelligent (apparemment), donc si quelqu'un pouvait m'aider avec les premiers pas en comparant avec des tableaux, je serais un homme heureux!

Merci!




Related

iphone android math artificial-intelligence gesture-recognition