Как откалибровать акселерометр Android и уменьшить шум, исключить гравитацию

Итак, я боролся с этой проблемой в течение некоторого времени, и мне не удавалось воспользоваться мудростью интернетов и связанных сообщений SO по этой теме.

Я пишу приложение для Android, в котором используется вездесущий акселерометр, но я, кажется, получаю невероятное количество «шума» даже в состоянии покоя и не могу понять, как с этим бороться, поскольку мои показания должны быть относительно точными. Я подумал, что, возможно, мой телефон (HTC Incredible) неисправен, но датчик, похоже, хорошо работает с другими играми и приложениями, в которые я играл.

Я пытался использовать различные «фильтры», но, похоже, не могу Я обдумываю их. Я понимаю, что с гравитацией нужно как-то бороться, и, возможно, я ошибаюсь в этом. В настоящее время я пробовал это, адаптированный из ответа SO , который относится к примеру из iPhone SDK:

                accel[0] = event.values[0] * kFilteringFactor + accel[0] * (1.0f - kFilteringFactor);
                accel[1] = event.values[1] * kFilteringFactor + accel[1] * (1.0f - kFilteringFactor);


                double x = event.values[0] - accel[0];
                double y = event.values[1] - accel[1];

Плакат говорит, что нужно «поиграть» со значением kFilteringFactor (в примере kFilteringFactor = 0.1f ) пока не доволен. К сожалению, я все еще слышу много шума, и все, что это, кажется, приводит к тому, что показания появляются в виде крошечных десятичных знаков, что мне не очень помогает, и, похоже, просто делает датчик менее чувствительным. Математические центры моего мозга также атрофированы из-за многих лет пренебрежения, поэтому я не совсем понимаю, как работает этот фильтр.

Может кто-нибудь объяснить мне подробнее, как получить полезные показания акселерометра? Краткое руководство было бы невероятным подспорьем, поскольку я не нашел действительно хорошего (по крайней мере, нацеленного на мой уровень знаний). Я расстраиваюсь, потому что чувствую, что все это должно быть для меня более очевидным. Любая помощь или направление будут очень благодарны, и, конечно, я могу предоставить больше примеров из моего кода, если это необходимо.

Я надеюсь, что не прошу слишком много кормить с ложечки; Я бы не стал Я спрашиваю, если только я не пытался это понять какое-то время. Также похоже, что есть некоторый интерес со стороны других членов SO.

13
задан Community 23 May 2017 в 12:17
поделиться