Android-разработчик Пример:TYPE_ACCELEROMETER Удалите тяжести, значение т/(Т + дт)
public void onSensorChanged(SensorEvent event)
{
// alpha is calculated as t/(t + dT)
// with t, the low-pass filter's time-constant
// and dT, the event delivery rate
final float alpha = 0.8;
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
}
альфа = 0,8, какой числовой вычисленное? Я хочу задать конкретные значения t и dT.
Благодарю, я знаю, что t дается при внедрении датчика. α = 0,8, как получается? fc, что делать? –
@ 嘚 嘚 9468 Альфа получается из частоты среза (fc). Низкий фильтр сохранит значение ускорения, которое имеет частоту ниже fc, но уменьшит значение ускорения, которое имеет частоту, превосходящую fc. Здесь вы хотите сохранить гравитацию (постоянное ускорение 9,8 м/с²) и отказаться от ускорения, вызванного движением телефона. Поэтому вам нужно будет выбрать очень маленький fc, например, 0,2 Гц, чтобы поддерживать ускорение силы тяжести. После того, как вы выбрали fc, вы можете вычислить альфа. – xiaomi
Я должен пойти в учебник по математике, эти вещи выходят, спасибо! –