Quiero medir la aceleración (hacia adelante y lateral por separado) utilizando un dispositivo smartphone con Android para poder analizar el comportamiento de conducción.
Mi enfoque sería el siguiente:
1. Alineando sistemas de coordenadas
Calibración (sin movimiento / primer movimiento):
Mientras el auto está parado, calculo la magnitud de la gravedad usando Sensor.TYPE_GRAVITY
y la roto directamente hacia el eje z (apuntando hacia abajo asumiendo una superficie plana). De esa manera, los ángulos de inclinación y tirada deberían estar cerca de cero e iguales a los ángulos del automóvil relativo al mundo.
Después de esto, comenzaría a moverme hacia adelante con el auto para obtener una primera indicación de movimiento usando Sensor.TYPE_ACCELEROMETER
y rotaría esta magnitud directamente hacia el eje x (apuntando hacia adelante). De esta manera, el ángulo guiñada debe ser igual al rumbo relativo del vehículo al mundo.
Orientación de actualización (mientras se conduce):
Para poder mantener alineados los sistemas de coordenadas mientras se conduce, usaré Sensor.TYPE_GRAVITY
para mantener el balanceo y el paso del sistema a través de
donde A_x, y, z es la aceleración de la gravedad.
Por lo general, el ángulo de orientación se mantendría a través de Sensor.ROTATION_VECTOR
o Sensor.MAGNETIC_FIELD
. Sin embargo, la razón detrás de no usarlos es porque voy a usar la aplicación también en vehículos eléctricos . Las altas cantidades de voltios y amperios producidos por el motor presumiblemente harían sufrir la precisión de los valores de los sensores. Por lo tanto, la mejor alternativa que conozco (aunque no es óptima) es usar el curso de GPS para mantener el ángulo de giro.
2. Obteniendo medidas
Al aplicar todas las rotaciones mencionadas anteriormente, debería ser posible mantener una alineación entre los sistemas de coordenadas del teléfono inteligente y del vehículo y, por lo tanto, proporcionarme los valores de aceleración frontal y lateral puros en el eje x y el eje y.
Questions:
- ¿Es este enfoque aplicable o me perdí algo crucial?
- ¿Existe un enfoque más fácil / alternativo para esto?