2012-05-08 18 views
6

Estoy tratando de construir una aplicación basada en Kinect y iPhone.Cómo interpretar las lecturas del acelerómetro desde el iPhone

Estoy tratando de calcular la aceleración de mis manos en el tiempo en cada uno de los ejes X Y y Z según la trayectoria devuelta por el kinect. Básicamente, estoy seleccionando un intervalo de tiempo estándar de 0.5 segundos o 15 cuadros (dt) y 3 puntos, (x0, x1 y x2) en el transcurso del tiempo, los cuales están separados en 0.5 segundos. Primero debo mencionar que la posición de los 3 puntos se menciona en metros. Al usar estos puntos estoy calculando dos velocidades (v0 = (x1 - x0)/dt y v1 = (x2 - x1)/dt). Finalmente, al usar estas velocidades, estoy calculando la aceleración entre x1 y x2 como acc = (v1 - v0)/dt.

Repito estos cálculos en cada cuadro y obtengo una serie de aceleraciones.

Como ya he dicho, también tengo un iPhone y quiero ver en qué mano tengo mi iPhone, mano izquierda o mano derecha. Quiero hacer esto intentando igualar las aceleraciones de mi mano con las aceleraciones del iPhone en la posición correcta para que tenga el mismo sistema de ejes.

El único problema es que hay una gran diferencia entre mis aceleraciones y las aceleraciones del teléfono.

Las lecturas de aceleración del teléfono oscilan entre -2 y 2 para cada eje, mientras que las mías están entre -10 y 10. ¿Cómo interpreto las aceleraciones de iPhone para obtener medidas similares a las mías en metros/segundos?

+0

Básicamente, he calculado el error de suma cuadrática entre las lecturas del iPhone para un intervalo determinado y las aceleraciones de Kinect. Sin embargo, dada la diferente escala de los valores, los resultados obtenidos no son tan confiables. – Simon

+0

Sí, eso tiene sentido –

Respuesta

2

Los datos del acelerómetro en el iPhone se proporcionan en unidades de g-force. El eje x está alineado con el borde superior de la pantalla del teléfono, el eje y está alineado con el borde izquierdo, y el eje z sale directamente de la pantalla hacia usted si lo está mirando. Entonces, con su teléfono apoyado en la mesa boca arriba, debe obtener los valores de (0, 0, -1) para los ejes x, y y z, respectivamente. Si deja caer su teléfono, mientras está en caída libre debe obtener (0, 0, 0).

Asumiendo que mantener el teléfono alineado como esta medida que se mueven a su alrededor, para obtener la aceleración de 3 dimensiones en metros por segundo al cuadrado:

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration 
{ 
    float g = 9.80665f; 
    float x = acceleration.x * g; 
    float y = acceleration.y * g; 
    float z = (acceleration.z + 1.0f) * g; 
    // x, y, and z now hold the absolute acceleration in ms^-2 
} 

Tenga en cuenta que usted debe restar el efecto de la gravedad de la Tierra con el fin para obtener la aceleración relativa a su sala de estar en lugar de relativa al espacio-tiempo de 4 dimensiones.

También tenga en cuenta que el acelerómetro iPhone es bastante ruidoso y estos valores fluctúan incluso cuando el teléfono es estático, por lo que deberá aplicar un suavizado. Sin embargo, si utiliza una técnica similar a lo que parece estar haciendo con los datos de posición, colocando los valores en una matriz en cada cuadro para obtener un promedio continuo durante los últimos 0.5 segundos, esto ya suavizará los datos para usted.

Otra cosa a tener en cuenta es que el acelerómetro iPhone alcanza un máximo de 2,3 g. Estas fuerzas g no son difíciles de lograr (por ejemplo, si aplaude juntas) por lo que puede excederlas y las técnicas que acumulan datos no serán muy confiables.

Cuestiones relacionadas