10
votes

Comment améliorer l'exactitude de cet algorithme de podomètre?

J'ai essayé plusieurs façons de mesurer les étapes Un utilisateur fait avec un iPhone en lisant l'accéléromètre, mais aucun n'a été très précis. La mise en œuvre la plus précise que j'ai utilisée est la suivante: xxx

Cependant, cela n'atteint que 80% des étapes de l'utilisateur. Comment puis-je améliorer la précision de mon podomètre?


1 commentaires

Multipliez votre réponse par un facteur pour ajouter les 20% manquants - Je parie que c'est ce que font des pèmeteurs bon marché - ils ont un cadran de sensibilité sur eux;)


3 Réponses :


2
votes

OK, je suppose que ce code est dans la fonction AddacCelerery ... XXX PRE>

Donc, vous pouvez augmenter votre taux d'échantillonnage pour obtenir une granularité de détection plus fin. Donc, par exemple, si vous prenez actuellement 30 échantillons par seconde, vous pouvez l'augmenter à 40, 50, ou 60, etc ... puis décidez si vous devez compter un certain nombre d'échantillons tombant dans votre rebond et considérez qu'un seul étape. On dirait que vous ne comptez pas certaines étapes du fait de manquer certaines des rebonds. P>

aussi, quel est le but de la basculer d'ischanger? Ne devriez-vous pas utiliser un compteur avec une réinitialisation après x nombre de comptes? Si vous êtes dans votre rebond ... p>

if (dot  <= 0.994 && dot > 0.90) // bounce


0 commentaires

1
votes

Gardez à l'esprit que tout le monde ne fait pas les mêmes grandes étapes. Donc, le calcul du point doit être ajusté en fonction de la taille de l'étape de quelqu'un.

Vous devez ajuster le seuil de rebond en conséquence. Essayez de faire en savoir plus sur le passager.


0 commentaires

5
votes

Voici une réponse plus précise pour détecter chaque étape. Mais oui dans mon cas, je reçois + ou - 1 étape avec toutes les 25 étapes. J'espère donc que cela pourrait vous être utile. :)

if (dot <= 0.90) {
    if (!isSleeping) {
        isSleeping = YES;
        [self performSelector:@selector(wakeUp) withObject:nil afterDelay:0.3];
        numSteps += 1;
        self.stepsCount.text = [NSString stringWithFormat:@"%d", numSteps];
    }
}



- (void)wakeUp {

       isSleeping = NO;
     }


0 commentaires