Próbowałem różnych sposobów mierzenia kroków, które użytkownik robi z iPhonem, czytając akcelerometr, ale żaden z nich nie był bardzo dokładny. Najdokładniejszym realizacja Użyłem jest następujący:Jak poprawić dokładność tego algorytmu krokomierza?
float xx = acceleration.x;
float yy = acceleration.y;
float zz = acceleration.z;
float dot = (mOldAccX * xx) + (mOldAccY * yy) + (mOldAccZ * zz);
float a = ABS(sqrt(mOldAccX * mOldAccX + mOldAccY * mOldAccY + mOldAccZ * mOldAccZ));
float b = ABS(sqrt(xx * xx + yy * yy + zz * zz));
dot /= (a * b);
if (dot <= 0.994 && dot > 0.90) // bounce
{
if (!isChange)
{
isChange = YES;
mNumberOfSteps += 1;
} else {
isChange = NO;
}
}
mOldAccX = xx;
mOldAccY = yy;
mOldAccZ = zz;
}
Jednak to tylko łapie 80% krokach użytkownika. Jak mogę poprawić dokładność mojego krokomierza?
pomnóż swoją odpowiedź przez współczynnik, aby dodać brakujące 20% - Założę się, że to właśnie robią tanie pedometry - mają na nich pokrętło czułości;) – deanWombourne