Привет, я специализируюсь в области компьютерных наук, и этот вопрос должен быть очень простым для всех гениев физики здесь:
У меня есть набор точек данных от акселерометра на движущемся объекте, который в основном следует форме.
ускорение X, включая гравитацию
Ускорение Y, включая гравитацию
Ускорение Z, включая гравитацию
Вращение вокруг оси x
Вращение вокруг оси Y
Вращение вокруг оси Z
Я хочу построить объект в трехмерном пространстве, и после некоторых поисков мне сказали дважды интегрировать, чтобы получить смещение.
Это лучший способ? Он не должен быть вычислительно эффективным, если его легко понять.
В принципе, вы могли бы получить смещение из измерений акселерометра, если бы у вас всегда была оценка ориентации телефона.
Вам нужно будет использовать ориентацию телефона, чтобы преобразовать каждое измерение мгновенного ускорения в одну и ту же систему координат, а затем вычесть постоянную составляющую, представляющую силу тяжести, а затем дважды проинтегрировать.
Для ясности возьмем некоторый кадр, в котором гравитация притягивает направление, восток, это север.
Телефон может быть направлен в любую сторону, поэтому он также определяет свою собственную систему координат, зависящую от времени, например. указывает на правую часть экрана, указывает на верхнюю часть экрана и указывает за пределы экрана. Это кадр, в котором вы получаете данные акселерометра. .
Допустим, в телефоне есть идеальный гироскоп, чтобы вы знали, как описать ориентацию телефона в пространстве. то есть вы можете написать с точки зрения и . Затем вы можете вычислить матрицу вращения который конвертирует между кадрами.
А затем вычесть гравитацию:
Затем, если предположить, что телефон запускается в состоянии покоя в начале координат:
.
Вуаля!
Но этот метод очень подвержен ошибкам. Например, если ваша оценка ориентации хоть немного отличается, то вычитание гравитации не сработает, и алгоритм будет думать, что ваш телефон ускоряется, даже когда он неподвижен. Ошибка в один градус может легко привести к отклонению на километры порядка минут, тем более, что любая ошибка ускорения интегрируется дважды!
Смотрите здесь для хорошего обсуждения!
CuriousOne
Сэм Бейдер
CuriousOne
пользователь198413
Дэвид Хаммен
пользователь198413
Дэвид Хаммен
пользователь198413