Перейти к содержанию
    

Удалить постояную составляющую

К сожалению я плохо разбираюсь в математике, но школьну программу немного помню.

У меня задача с помощью акселерометра-компаса-гироскопа вычислить скорость/перемещение

к-л объекта.

Это вообще возможно?

Я пока не хочу буриться в кватернионы и прочие прелести (это на потом останеца когда буду все это понимать)

для меня сейчас интересна вот такая задача:

положим: я получил ускорения от акселерометра

получил значения магнитного поля, по этим данным я расчитал наклоны по осям X и Y

и поворот вокруг оси с помошью данных от акселерометра=магнетометра.

само собой акселерометр показывает мне ускорение G = 9.8 (на самом деле чуть больше - примерно 1006 G

но это вероятно зависит от калибровки)

 

Из курса школы помню что скорость - это интеграл от ускорения по времени (были в алгебре какие то "материальные точки"),

то есть в самом простом случае я могу суммировать с накоплением отсчеты акселеромера

по осям, ну а потом так же с помошью тригонометрии вычислить вектор этой скорости

ну а если взять еще один интеграл от скорости по времени - то получу пройденный путь.

У меня есть данные: отсчеты акселерометра, дискреты таймера - по готовности этого акселерометра - положим раз в секунду.

То есть если я тупо буду отсчитывать :

Vx += ax * dt

Vy += ay * dt

Vz += az * dt

 

То смогу получить скорость моего устройства

То же самое я могу проделать и для расстояния.

Но вот самая неприятная вешь - как мне убрать из показаний акселерометра

что бы он не показывал мне G.

Ну то есть чтобы я мог "вычесть" из значения по оси Z 9.8

ну и соответственно из других координат то,

что вектор свободного падения наплодил проекцией на эти оси

Как это правильно сделать?

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитайте вот эту тему.

 

получил значения магнитного поля, по этим данным я расчитал наклоны по осям X и Y

и поворот вокруг оси с помошью данных от акселерометра=магнетометра.

Погуглите на тему совместного использования акселерометра и гироскопа для определения углового положения твердого тела. Акселерометр и магнетометр дадут вам зашумлённую оценку, которая будет фатально зависеть от вибраций и флуктуаций вектора ускорения, связанные с изменением скорости твердого тела. Вам нужно научиться комбинировать данные от датчиков для получения правильной оценки. Начните читать с комлпементарного фильтра, там всё просто.

 

...

То смогу получить скорость моего устройства

То же самое я могу проделать и для расстояния.

...

Вы можете, найдя угловое положение твердого тела, оценить составляющую вектора ускорения в плоскости oXY Земной системы координат. Эта составляющая не содержит ускорения свободного падения, т.к. гравитация в системе координат Земли направлена всегда вниз. Таким же образом вы можете найти oZ компоненту вектора ускорения в Земной системе координат. Z составляющую линейного ускорения тела можно оценить, вычтя из этой проекции 9,8. Переход осуществляется либо через матрицу вращений либо через умножение вектора ускорения в связанной системе координат (то что намерял акселерометр) на сопряжённый кватернион вращений.. В приведённой выше ссылке вроде бы всё это есть. Но я вам подробнее рассказывать не стану (в формулах), т.к. это не будет работать. Алгоритм получается неустойчивым, значительные шумы акселерометра и его ненулевое смещение дадут при интегрировании большую ошибку вычисления скорости, которая даст в свою очередь ещё большую ошибку вычисления перемещения (ещё одно интегрирование очевидно). Для того, чтобы это работало вам нужен ещё один источник информации о положении тела, который не подразумевает интегрирования (например GPS). Всё тоже самое как и для нахождения углового положения. Собственно в теме под ссылкой в одном из сообщений приведена ссылка на статью, где предлагается использовать упрощенный фильтр Калмана для определения линейного перемещения объекта по данным от измерителя скорости (интегральная часть) и измерителя положения (пропорциональная часть).

 

Успехов.

Изменено пользователем serjj

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До кватернионов я не добрался пока, хочу просто научиться делать простые математически действия,

предположим, я получил углы с помошью акселерометра и компаса

мне нужно из полученных "сырых" X и Y удалить постоянную составляющую

я умножаю 1G на синус угла отклонения по X - получаю компоненту G для оси X

и вычитаю ее из компоненты акселерометра X

я умножаю 1G на синус угла отклонения по Y - получаю компоненту G для оси Y

и вычитаю ее из компоненты акселерометра Y

Правильно я рассуждаю?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До кватернионов я не добрался пока, хочу просто научиться делать простые математически действия,

предположим, я получил углы с помошью акселерометра и компаса

мне нужно из полученных "сырых" X и Y удалить постоянную составляющую

я умножаю 1G на синус угла отклонения по X - получаю компоненту G для оси X

и вычитаю ее из компоненты акселерометра X

я умножаю 1G на синус угла отклонения по Y - получаю компоненту G для оси Y

и вычитаю ее из компоненты акселерометра Y

Правильно я рассуждаю?

 

Ну да. Измеряете начальное положение, тем самым определяете значение постоянной составляющей. В математике тоже так: константа интегрирования определяется начальными условиями.

Этот процесс называют калибровкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да. Измеряете начальное положение, тем самым определяете значение постоянной составляющей. В математике тоже так: константа интегрирования определяется начальными условиями.

Этот процесс называют калибровкой.

 

я немного по другому сделал - просто умножил вектор ускорений на матрицу поворота

осталось только на Z 9.8 - на X и Y остался только шум.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я немного по другому сделал - просто умножил вектор ускорений на матрицу поворота

осталось только на Z 9.8 - на X и Y остался только шум.

Всё так, но когда вы перейдёте от ускорения к скорости и от скорости к перемещению путём интегрирования, вы получите ошибку, растущую со временем. Как вы думаете её компенсировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До кватернионов я не добрался пока, хочу просто научиться делать простые математически действия,

предположим, я получил углы с помошью акселерометра и компаса

мне нужно из полученных "сырых" X и Y удалить постоянную составляющую

я умножаю 1G на синус угла отклонения по X - получаю компоненту G для оси X

и вычитаю ее из компоненты акселерометра X

я умножаю 1G на синус угла отклонения по Y - получаю компоненту G для оси Y

и вычитаю ее из компоненты акселерометра Y

Правильно я рассуждаю?

Но ведь это все в статике, в реальности, при движении тела, точный угол вы не определите из-за ускорений тела. Вы будете мерить сумму векторов гравитации и ускорения тела. И это будет уже не 9.8м/с2. Как собираетесь при этом угол вычислять? Без гироскопа сложно будет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...