¿Cómo obtengo la aceleración total de 3 ejes?

Para un proyecto en el que estoy trabajando, estoy usando un acelerómetro que mide la aceleración en 3 direcciones, x, y y z.

Mi pregunta es: ¿Cómo puedo calcular la aceleración total en una dirección determinada a partir de estos 3 valores?

Teniendo en cuenta este diseño gráfico simple:ingrese la descripción de la imagen aquí

Mi idea inicial es:

  • Toma la raíz cuadrada de (x^2 + z^2) para calcular el valor resultante en el plano zx.
  • Tome este valor, elévelo al cuadrado y agregue y ^ 2, tome la raíz cuadrada de eso
  • Ecuación final: Sqrt(y^2 + Sqrt(x^2 + z^2))

¿Es esto correcto? En algunos sitios veo que se usa x ^ 2 + y ^ 2 + z ^ 2, pero no sé si eso es correcto y por qué es correcto.

EDITAR: me imaginé que tomar el Sqrt de (x ^ 2 + z ^ 2) y elevarlo al cuadrado solo da como resultado x ^ 2 + z ^ 2, por eso puedo usar x ^ 2 + y ^ 2 + z ^ 2.

Otra cosa: ¿Tengo que normalizar por gravedad? Creo que sí, pero ¿cómo voy a hacer esto? ¿Necesito saber la posición exacta y la inclinación de mi dispositivo como quedará al final?

Respuestas (1)

Su procedimiento da:

a X z = a X 2 + a z 2

entonces:

a t o t a yo = a y 2 + a X z 2

pero si sustituyes a X z en la segunda ecuación se obtiene:

a t o t a yo = a y 2 + ( a X 2 + a z 2 ) 2 = a y 2 + a X 2 + a z 2

por lo que no necesita dividir el cálculo en dos pasos.

Es posible que su acelerómetro ya excluya la aceleración debida a la gravedad. Si no es así, entonces sí, debe usar la inclinación para calcular los tres componentes de la gravedad y luego restarlos de a X , a y y a z . Es difícil decir exactamente cómo hacer esto sin saber cómo informa su teléfono su inclinación.

respuesta al comentario:

Supongamos que tiene su dispositivo sostenido de manera que a z = -1. Ahora mueva el dispositivo hacia abajo en un ángulo de θ Como se muestra abajo:

Efectivo

Suponiendo que se está moviendo en el X z avión el valor de a z disminuirá un poco y el valor de a X aumentará desde cero. Suponga que está aplicando una aceleración al teléfono de 2 gramo   C o s ( θ ) - verá por qué he elegido este valor en un momento. Ahora los valores de a X y a z son:

a X = 2 gramo   C o s θ   s i norte θ

a z = gramo 2 gramo   C o s 2 θ

ahora calculas a t o t a yo simplemente elevando al cuadrado y sumando como discutimos anteriormente para obtener:

a t o t a yo 2 = 4 gramo 2   s i norte 2 θ   C o s 2 θ + gramo 2 + 4 gramo 2   C o s 4 θ 4 gramo 2   C o s 2 θ

y un poco de reordenamiento da:

a t o t a yo 2 = gramo 2 + 4 gramo 2   C o s 2 θ ( s i norte 2 θ + C o s 2 θ 1 )

y porqué s i norte 2 θ + C o s 2 θ = 1 la cantidad entre paréntesis es cero, por lo que terminas con:

a t o t a yo 2 = gramo 2

eso es:

a t o t a yo = gramo

que es lo mismo que cuando el teléfono está parado. Por lo tanto, es posible acelerar el teléfono y aún así obtener la aceleración total como gramo ( gramo = -1 en las unidades del teléfono). Es por eso que simplemente restar uno no es una forma confiable de saber si el teléfono está acelerando.

Ok, usando este cálculo obtengo un valor G final de alrededor de 1 cuando el dispositivo no se está moviendo, así que resto 1 para obtener la aceleración final en G. Luego lo normalizo a m/s2 y queda alrededor de 0.24 max, pero supongo que esto se debe a las limitaciones del dispositivo. Parece funcionar.
Restando 1 de a t o t a yo solo funciona si la aceleración es en la misma dirección que la gravedad, es decir, hacia arriba. Para aceleraciones en otras direcciones, debe calcular los componentes de la aceleración gravitacional y restarlos de a X etc.
Ok y como hago eso? Recuerde, todo lo que tengo son los valores de estos 3 ejes.
Necesita la información del inclinómetro, que le indicará el ángulo de su X , y y z los ejes son. En realidad estoy asumiendo que X , y y z los ejes siempre son relativos al teléfono, y tal vez no lo sean. Si sostiene el teléfono lo más quieto posible pero lo gira, haga los valores de a X , a y y a z cambiar a medida que gira el teléfono?
Sí, estos valores cambian a medida que inclino el dispositivo (no es un teléfono). Cuando lo coloco sobre la mesa, Ax, Ay están cerca de 0 y Az = -1 (la gravedad tira hacia abajo). Entonces, cuando uso la fórmula mencionada anteriormente, creo que me estoy acercando al valor real. El caso es que necesito detectar si el dispositivo tiene una aceleración total de > 2 m/s2 durante un período de > 3 segundos. Si es así, se considera que el dispositivo se está moviendo.
Bien, leí tu edición. Entonces, ¿es posible obtener una aceleración total de exactamente g incluso cuando está acelerando en un ángulo? El dispositivo se usará en un automóvil, por lo que, de manera realista, siempre acelerará a lo largo del eje z. Cuando levanto el dispositivo como estará en el automóvil (misma inclinación), el eje z es paralelo a la superficie de la tierra y apunta en la dirección en que se mueve el automóvil. Como se usará en Holanda, las colinas y las montañas no son un gran problema y para las actividades del día a día, creo que esto será suficiente. ¿Pensamientos?
Si el dispositivo está fijo, por lo que siempre está plano, entonces cuando está parado a X y a y siempre será cero y a z será -1. En ese caso calcular a usando a X 2 + a y 2 + ( a z + 1 ) 2 y siempre obtendrás la respuesta correcta. Pero tenga en cuenta que esto solo se aplica mientras el dispositivo esté plano.
Debido a que el dispositivo será plano y el automóvil siempre se moverá en la misma dirección (ya sea hacia adelante o hacia atrás) y no tenemos muchas pendientes grandes en los Países Bajos, creo que usar esta ecuación simplificada será suficiente, ¡gracias!