Aceleración cuando el dispositivo está en inclinación

12

Actualmente estoy trabajando en un dispositivo que usa el acelerómetro 3D siempre activado (con escala + -2g) y el giroscopio 3D (con escala + -250g) -sensor.

Puedo leer todos los vectores posibles (X, Y, Z) y su aceleración (g) y velocidad angular (dps) y también el ángulo donde se encuentra el dispositivo actualmente. Pero mi problema es que cuando el dispositivo está en inclinación (0g cuando no hay inclinación) la aceleración está entre (abajo) 0g- > -1g o entre (arriba) 0g- > 1g dependiendo de qué ángulo es el dispositivo actualmente. A continuación se muestra una imagen que, con suerte, aclara la idea.

El dispositivo se ubicará en un automóvil y deberá medir la aceleración cuando el automóvil esté disminuyendo la velocidad (freno). Sin embargo, si el dispositivo ya está inclinado, el acelerómetro medirá cierta aceleración que causa la inclinación, lo que hace que sea difícil saber si el dispositivo tiene realmente cierta aceleración o si es la inclinación la que causa la aceleración.

X e Y: los ejes producen 0g y el eje Z es 1g cuando el dispositivo no tiene inclinación y está en una superficie plana. La inclinación hace que la lectura del eje X vaya hacia 1g si la inclinación es hacia arriba y hacia -1g cuando está hacia abajo. Se alcanza el + -1g cuando el dispositivo está encendido a 90 * grados desde la posición original

He estado pensando muy bien cómo eliminar esa aceleración que causa la inclinación y solo medir la aceleración real del dispositivo, pero no puedo pensar en salir de este problema con los siguientes datos que puedo producir.

Básicamente, creo que si solo pudiera medir la aceleración del eje X (imagen) incluso si el sensor está en inclinación como en la imagen.

Espero que este mensaje no sea demasiado difícil de entender, debido a mis habilidades en inglés y la forma en que estoy tratando de explicar mi problema.

    
pregunta jumbojohn

7 respuestas

17

Sólo un boceto de una solución.

Tenga en cuenta los 3 ejes.

La aceleración debida a la gravedad, independientemente de la inclinación, siempre será 1G, como una suma vectorial de X, Y, Z, independientemente de la inclinación. Puede representar la aceleración en reposo o movimiento constante como un punto en una esfera con radio 1G. (Si está perfectamente horizontal, ese punto será (0, 0, -1), es decir, directamente debajo de usted).

La aceleración debida al frenado distorsionará la esfera misma; la suma vectorial de X, Y, Z ya no será 1G.

Entonces

$$ A = \ sqrt {X ^ 2 + Y ^ 2 + Z ^ 2} $$

te da la aceleración total. Si es igual a G estás en reposo; de lo contrario, está acelerando, y \ $ A \ $ es la suma vectorial de G y la verdadera aceleración.

Ahora tiene que encontrar la verdadera aceleración que normalmente será un vector en la dirección hacia adelante (o hacia atrás), lo que explica la diferencia entre \ $ A \ $ y G. Debe restar algún punto de la esfera G de \ $ A \ $, para encontrar un vector (esperemos que sea una solución única) con solo un componente X (adelante / atrás). Esa es tu aceleración. (Dejaré la trigonometría como un simple rompecabezas, espero que la idea sea clara).

A menos que también esté girando o patinando, por lo que necesita entradas del volante y ABS para estar seguro; Eso se convierte en un problema de fusión de datos. Este enfoque proporcionará una estimación de la aceleración. Para comprobar el estado físico y refinar esa estimación, combínela con otras fuentes de datos (también no confiables), como en la respuesta de Phil Frost, utilizando un filtro de Kalman.

    
respondido por el Brian Drummond
9

Su error principal es no tratar la aceleración como un solo vector. Cuando el auto está en reposo, ese vector siempre será 1 g hacia arriba. No mire solo el componente X de los datos en bruto del acelerómetro. Haz la matemática vectorial real.

Pero mi problema es que cuando el dispositivo está en inclinación (0g cuando no hay inclinación) la aceleración está entre (abajo) 0g- > -1g o entre (arriba) 0g- > 1g.

No. Este es el punto. Lo que está diciendo puede ser cierto para el componente X de la salida del acelerómetro, pero no para la aceleración cuando el automóvil está en reposo.

La aceleración medida ideal siempre será la aceleración real del automóvil (en relación con la tierra), más la aceleración de 1 g debida a la gravedad. Este último está siempre en la dirección ascendente. Si conoce la orientación del automóvil, puede restar este 1 g debido a la gravedad para encontrar la aceleración que realmente está buscando.

Tenga en cuenta que existe un error considerable en tales lecturas, especialmente en sensores MEMS baratos. Si bien debería poder obtener una buena idea sobre los eventos a corto plazo, como la aceleración o la frenada brusca, estos datos no son lo suficientemente buenos como para realizar una navegación inercial durante más de unos pocos segundos.

    
respondido por el Olin Lathrop
5

Como han indicado otras respuestas, el acelerómetro proporciona un vector tridimensional que es la suma de la gravedad y otra aceleración en el automóvil debido al motor, los frenos u otras fuerzas que actúan sobre el automóvil. Tu objetivo entonces es restar la aceleración gravitacional de la salida del acelerómetro para encontrar las otras fuerzas restantes.

Para obtener la mejor precisión, no puede asumir que la gravedad esté siempre "abajo" en relación con el acelerómetro. Por ejemplo, el coche puede estar en una colina. Todos sus cálculos deben realizarse con un vector tridimensional de matemáticas, y debe tener una estimación de la orientación del automóvil para que sepa la dirección del vector de gravedad a restar.

Un filtro de Kalman es un enfoque común aquí. La idea es tomar todos los datos que tenga que puedan alterar la orientación del automóvil, luego realizar un promedio ponderado de las mediciones, combinar eso con lo que sabe sobre la física que actúa sobre el automóvil, para llegar a una estimación probabilística del Nueva orientación del coche y en qué sentido está "abajo".

Cuantos más datos tenga, y con más precisión pueda modelar la física del automóvil, más precisa será esta estimación.

Por ejemplo, si tiene un giro y mide la inclinación del automóvil, puede predecir que el vector de gravedad girará hacia la parte trasera del automóvil. A corto plazo, por ejemplo, cuando el automóvil acaba de comenzar a subir una cuesta, esto puede ayudar al vector de gravedad a adoptar rápidamente la orientación correcta.

También puede suponer que, en promedio, el automóvil no frenará ni acelerará. Por lo tanto, una salida filtrada de paso bajo del acelerómetro podría alimentar la estimación de qué dirección es "abajo". Esto proporciona una medida a largo plazo que no está sujeta a la deriva inercial.

La combinación de datos del acelerómetro y el giroscopio para estimar la dirección de la gravedad proporciona una estimación más precisa que cualquiera de las dos mediciones.

También puede incorporar lo que sabe sobre el posible sobre operativo del vehículo. Por ejemplo, el automóvil no puede subir o bajar cuestas que son demasiado empinadas, por lo que cuando el acelerómetro indica ángulos extremos, podría pesar menos, suponiendo que la mayor parte de su rendimiento se debe a los frenos o al motor, no a la gravedad.

Sabes que si el conductor pisa los frenos, esto moverá el vector de aceleración y puedes restarlo del componente "abajo" estimado.

O si tiene GPS y datos de mapas, puede incorporar una estimación de la pendiente del automóvil según la ubicación. Si tiene datos de alta precisión, es posible que sepa exactamente en qué pendiente está el vehículo. Si solo tiene datos de baja precisión, esto todavía puede ser útil. Por ejemplo, si el auto está en Kansas, las colinas son poco probables. Si el automóvil está en San Francisco, las pendientes son más probables y es posible que le dé menos peso al acelerómetro.

Si tiene datos sobre el consumo de combustible y la velocidad, sabiendo que se consume más combustible cuando va cuesta arriba, puede usar esto para estimar que el automóvil sube o baja según la eficiencia del combustible.

Y así sucesivamente. Cuanto más sepa, mejor puede ser su estimación.

    
respondido por el Phil Frost
3

Necesitaría un algoritmo de fusión y utilizar acelerómetro 3D, giroscopio 3D y sensores magnéticos 3D. Con este algoritmo de fusión obtiene la actitud, la gravedad de la tierra ayuda como referencia para detectar los ángulos de inclinación / giro / giro del horizonte. Los otros dos sensores mag / gyro ayudan a filtrar el movimiento dinámico. Como su automóvil también girará a la izquierda / derecha, .. se agregará la fuerza centrífuga. Una vez que tenga la actitud, puede restar el vector gravitacional y desensamblar la aceleración resultante en los tres ejes.

    
respondido por el Marko Buršič
3

Como enfoque muy básico, puede usar un filtro de paso alto para eliminar la parte constante de la aceleración (que corresponde a la gravedad) y mantener la parte variable de la cual se debe a la dinámica del automóvil. Supongamos que raw es un vector que contiene sus medidas de X, Y y Z, y acc es la aceleración del coche sin gravedad. Entonces

void correct_for_gravity(float *raw, float *acc)
{
   const float k = 0.9;
   static float gravity[3];

   gravity[0] = k * gravity[0] + (1 - k) * raw[0];
   gravity[1] = k * gravity[1] + (1 - k) * raw[1];
   gravity[2] = k * gravity[2] + (1 - k) * raw[2];

   acc[0] = raw[0] - gravity[0];
   acc[1] = raw[1] - gravity[1];
   acc[2] = raw[2] - gravity[2];
}

Los componentes individuales de acc todavía están afectados por la inclinación, pero la norma del vector no lo es:

norm_acc = sqrt(acc[0]*acc[0] + acc[1]*acc[1] + acc[2]*acc[2]);

Por supuesto, este método no es muy preciso, especialmente si la inclinación cambia a una velocidad alta. Esto es lo más lejos que te llega la ingenua matemática. Si necesita una mayor precisión, aprenda cómo usar un filtro de Kalman.

    
respondido por el Dmitry Grigoryev
1

La respuesta está en la definición precisa de "ralentizar" .

De tu pregunta:

  

El dispositivo se ubicará en un automóvil y deberá medir la aceleración cuando el automóvil esté desacelerando (freno).

Sin embargo, reducir la velocidad no equivale a frenar . Hay dos definiciones posibles:

  1. La velocidad del automóvil en relación con el suelo está disminuyendo.
  2. Se están aplicando los frenos del automóvil.

Esta diferencia es significativa en las subidas y bajadas. En bajadas, la velocidad del automóvil aumentará si no se aplican los frenos. Y en subidas, la velocidad puede disminuir incluso cuando no se frena.

Resulta que detectar 1. es significativamente más difícil que 2. Definamos los ejes como relativos a la orientación del carro: X: dirección delantera-trasera, Y: dirección izquierda-derecha, Z: dirección arriba-abajo. Todos los ejes alineados al coche.

Soluciones:

  1. Para la definición 1., el mejor enfoque es asumir que la velocidad del automóvil solo puede cambiar en la dirección X. Luego, la aceleración medida a = g + v donde g es la aceleración debida a las fuerzas que contrarrestan la gravedad, y v es la aceleración debida al cambio de velocidad. Puede asumir que la longitud de g es siempre igual a 9.8 m / s², y que v siempre está en la dirección X. Entonces (g_x + v_x, g_y, g_z) = (a_x, a_y, a_z) , que da v_x = a_x - sqrt ((9.8m / s²) ² - g_y² - g_z²) . Esto solo funcionará siempre que | v | sea menor que | g | , o en otras palabras, la aceleración debida al motor o los frenos sea menor que 1G. Debe ser una suposición bastante segura a menos que su automóvil tenga un propulsor de cohetes.

  2. Para la definición 2., solo puede tomar la lectura del eje x directamente. Si el automóvil no está acelerando o frenando, la única fuerza que contrarresta la gravedad que actúa sobre él es la fuerza normal de la superficie de la carretera. Esta fuerza está siempre en la dirección z relativa al automóvil, por lo que no cambia la lectura del eje x. Los frenos y el motor actúan solo en la dirección x, y serán visibles directamente en esta lectura.

respondido por el jpa
0

Parece que está utilizando un dispositivo de "exceso" para su aplicación. Debe usar un dispositivo que solo mida x & Y la aceleración, de esta manera, la inclinación no tendrá ningún efecto medible. Aunque la aceleración total puede ser menor o mayor, debido a la inclinación, el dispositivo medirá solo el x & y los componentes de la aceleración en el avión el vehículo está encendido.

    
respondido por el Guill

Lea otras preguntas en las etiquetas