ayuda con un calculo de ajustes

hola tengo una duda ojala alguien me pudiera responder ya que no se como resolverla

El problema es el siguiente.

Tengo tres vectores almacenados que corresponden a un acelerometro en diferentes pocisiones afectado por la aceleracion de la gravedad:
A=(Ax,Ay,Az)
B=(Bx,By,Bz)
C=(Cx,Cy,Cz)

luego tomo una muestra nueva de los tres ejes del acelerometro

N=(Nx,Ny,Nz)
como puedo saber cual de los tres vectores almacenados es mas parecido el vector N en magnitud y direccion o si de plano no se parecen.
 
Una forma es calcular la distancia entre los extremos de los vectores.
dA2 = dA^2 = (Ax-Nx)^2+(Ay-Ny)^2+(Az-Nz)^2
dB2 = dB^2 = (Bx-Nx)^2+(By-Ny)^2+(Bz-Nz)^2
dC2 = dC^2 = (Cx-Nx)^2+(Cy-Ny)^2+(Cz-Nz)^2
Y ver cual (dA2,dB2 o dC2) es menor.
 
hola Eduardo gracias por tu respuesta, pensaba aplicar correlacion lineal, si esta superara cierto valor, digamos 0.99 seria el valor mas parecido, pero me parece demasiado pesado para programarlo en un microcontrolador, probare de la forma que me dices
 
:confused: No entiendo para que querés comparar cuando la diferencia está por debajo de una tolerancia? Normalmente lo que interesa son las componentes del vector N en la base A,B,C.
 
Tengo un acelerometro, el cual lo uso como medidor de inclinacion de acuerdo con las componentes que la gravedad propicia en el sensor.
el sensor ira colocado en la cabeza de una persona y debo detectar si esta se ha inclinado hacia adelante, atras a la izquierda o derecha o si ha permanecido en el centro.

Pensaba en grabar en el microcontrolador los vectores correspondientes a cada tipo de inclinacion previo ensayo.

Luego a cada momento sensaria la inclinacion y detectaria a cual de las inclinaciones se parece mas para segun eso decir en que direccion se inclino.
Por eso habia pensado en aplicar correlacion lineal entre los vectores de Referencia almacenados en el microcontrolador y la muestra nueva.
Es aqui donde me detengo ya que parece que no sepuede llevar a cabo esos calculos con el microcontrolador, o quiza no estoy manejando adecuadamente los tipos de dato, por eso preguntaba por un mejor metodo para hacer la comparacion.
 
Tengo un acelerometro, el cual lo uso como medidor de inclinacion de acuerdo con las componentes que la gravedad propicia en el sensor.
el sensor ira colocado en la cabeza de una persona y debo detectar si esta se ha inclinado hacia adelante, atras a la izquierda o derecha o si ha permanecido en el centro.

Pensaba en grabar en el microcontrolador los vectores correspondientes a cada tipo de inclinacion previo ensayo.

Luego a cada momento sensaria la inclinacion y detectaria a cual de las inclinaciones se parece mas para segun eso decir en que direccion se inclino.

:unsure: Pero para eso es mucho mas útil (y rápido, porque son tres productos escalares) lo que te dije antes: Calcular las componentes de N sobre la base ABC.
 
Hola eduardo, queria agradecerte por tu respuesta, los calculos los aplique como me dijiste y ahora el programa reconoce mejor las inclinaciones y aun sobra espacio en la rom para algunas cosas.
 
Pero que fué lo hiciste al final? Calculaste las distancias o las componentes an la base ABC?

Y una duda que me había quedado: Los vectores de referencia ABC, son ortogonales?
 
En realidad use 5 vectores de referencia, un vector que representa a cada inclinacion de la cabeza:
En un primer momento el microcontrolador pide que el usuario haga un ensayo para calibrar.

1 Coloquese al centro: y el microcontrolador guarda las componentes de esa pocision
2 Coloque su cabeza atras y el microcontrolador guarda las componentes de esa pocision
3 Coloque su cabeza hacia adelante, idem
4 Coloque su cabeza a la izquierda, idem
2 Coloque su cabeza a la derecha, idem

Los resultados de este ensayo es lo que se usara para determinar la direccion en que se ha inclinado la persona.

las componentes de la pocision son las componentes de la aceleracion de la gravedad en los tres ejes del acelerometro.

lo que implemente hasta ahora es que una vez terminada la rutina de calibracion, el microcontrolador empieza a capturar los tres ejes del acelerometro y los compare con los vectores obtenidos de la calibracion esta comparacion la hago encontrando el coseno del angulo (aplicando el producto escalar) entre la muestra y cada vector de referencia .
Haciendo ensayos inclinando la cabeza en distintas pocisiones el coseno del angulo entre una inclinacion de la cabeza y su referencia mas cercana siempre es mayor a 0.99, por lo que use este valor para decidir en que direccion se ha inclinado la persona.


La salida de todo esto es que el microcontrolador debe decir si la inclinacion es una de las siguientes 5 posibilidades

-Adelante
-Atras
-Centro
-Derecha
-Izquierda

otra vez gracias y si tienes alguna sugerencia sobre algun problema que se podria presentar con este metodo no dudes en decirmelo.
 
Última edición:
Atrás
Arriba