Я хотел реализовать инерциальную навигационную систему для телефона Android, что, как я понимаю, непросто, учитывая точность акселерометра и постоянные колебания показаний.
Для начала я положил телефон на ровную поверхность и отобрал 1000 показаний акселерометра в направлениях X и Y (параллельно столу, так что гравитация в этих направлениях не действует). Затем я усреднил эти показания и использовал это значение для калибровки телефона (вычитая это значение из каждого последующего показания).
Затем я протестировал систему, снова положив ее на стол и отобрав 5000 показаний акселерометра в направлениях X и Y. Учитывая калибровку, я ожидал, что эти ускорения должны складываться в 0 (приблизительно) в каждом направлении. Однако это не так, и общее ускорение за 5000 итераций нигде не приближается к 0 (в среднем около 10 по каждой оси).
Я понимаю, что, не видя моего кода, на это будет трудно ответить, но в более общем смысле...
Это просто пример того, насколько неточны показания акселерометра на мобильном телефоне (HTC Desire S), или более вероятно, что я допустил некоторые ошибки в своем коде?