реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Удалить постояную составляющую, помогите тупому
inventor
сообщение Aug 4 2015, 12:12
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



К сожалению я плохо разбираюсь в математике, но школьну программу немного помню.
У меня задача с помощью акселерометра-компаса-гироскопа вычислить скорость/перемещение
к-л объекта.
Это вообще возможно?
Я пока не хочу буриться в кватернионы и прочие прелести (это на потом останеца когда буду все это понимать)
для меня сейчас интересна вот такая задача:
положим: я получил ускорения от акселерометра
получил значения магнитного поля, по этим данным я расчитал наклоны по осям X и Y
и поворот вокруг оси с помошью данных от акселерометра=магнетометра.
само собой акселерометр показывает мне ускорение G = 9.8 (на самом деле чуть больше - примерно 1006 G
но это вероятно зависит от калибровки)

Из курса школы помню что скорость - это интеграл от ускорения по времени (были в алгебре какие то "материальные точки"),
то есть в самом простом случае я могу суммировать с накоплением отсчеты акселеромера
по осям, ну а потом так же с помошью тригонометрии вычислить вектор этой скорости
ну а если взять еще один интеграл от скорости по времени - то получу пройденный путь.
У меня есть данные: отсчеты акселерометра, дискреты таймера - по готовности этого акселерометра - положим раз в секунду.
То есть если я тупо буду отсчитывать :
Vx += ax * dt
Vy += ay * dt
Vz += az * dt

То смогу получить скорость моего устройства
То же самое я могу проделать и для расстояния.
Но вот самая неприятная вешь - как мне убрать из показаний акселерометра
что бы он не показывал мне G.
Ну то есть чтобы я мог "вычесть" из значения по оси Z 9.8
ну и соответственно из других координат то,
что вектор свободного падения наплодил проекцией на эти оси
Как это правильно сделать?




Go to the top of the page
 
+Quote Post
serjj
сообщение Aug 4 2015, 12:50
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



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

Цитата
получил значения магнитного поля, по этим данным я расчитал наклоны по осям X и Y
и поворот вокруг оси с помошью данных от акселерометра=магнетометра.

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

Цитата
...
То смогу получить скорость моего устройства
То же самое я могу проделать и для расстояния.
...

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

Успехов.

Сообщение отредактировал serjj - Aug 4 2015, 12:53
Go to the top of the page
 
+Quote Post
inventor
сообщение Aug 6 2015, 08:37
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



До кватернионов я не добрался пока, хочу просто научиться делать простые математически действия,
предположим, я получил углы с помошью акселерометра и компаса
мне нужно из полученных "сырых" X и Y удалить постоянную составляющую
я умножаю 1G на синус угла отклонения по X - получаю компоненту G для оси X
и вычитаю ее из компоненты акселерометра X
я умножаю 1G на синус угла отклонения по Y - получаю компоненту G для оси Y
и вычитаю ее из компоненты акселерометра Y
Правильно я рассуждаю?

Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 17 2015, 12:58
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(inventor @ Aug 6 2015, 12:37) *
До кватернионов я не добрался пока, хочу просто научиться делать простые математически действия,
предположим, я получил углы с помошью акселерометра и компаса
мне нужно из полученных "сырых" X и Y удалить постоянную составляющую
я умножаю 1G на синус угла отклонения по X - получаю компоненту G для оси X
и вычитаю ее из компоненты акселерометра X
я умножаю 1G на синус угла отклонения по Y - получаю компоненту G для оси Y
и вычитаю ее из компоненты акселерометра Y
Правильно я рассуждаю?


Ну да. Измеряете начальное положение, тем самым определяете значение постоянной составляющей. В математике тоже так: константа интегрирования определяется начальными условиями.
Этот процесс называют калибровкой.
Go to the top of the page
 
+Quote Post
inventor
сообщение Aug 18 2015, 16:22
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(Tarbal @ Aug 17 2015, 15:58) *
Ну да. Измеряете начальное положение, тем самым определяете значение постоянной составляющей. В математике тоже так: константа интегрирования определяется начальными условиями.
Этот процесс называют калибровкой.


я немного по другому сделал - просто умножил вектор ускорений на матрицу поворота
осталось только на Z 9.8 - на X и Y остался только шум.
Go to the top of the page
 
+Quote Post
serjj
сообщение Aug 19 2015, 05:12
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
я немного по другому сделал - просто умножил вектор ускорений на матрицу поворота
осталось только на Z 9.8 - на X и Y остался только шум.

Всё так, но когда вы перейдёте от ускорения к скорости и от скорости к перемещению путём интегрирования, вы получите ошибку, растущую со временем. Как вы думаете её компенсировать?
Go to the top of the page
 
+Quote Post
alexPec
сообщение Aug 25 2015, 08:53
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(inventor @ Aug 6 2015, 12:37) *
До кватернионов я не добрался пока, хочу просто научиться делать простые математически действия,
предположим, я получил углы с помошью акселерометра и компаса
мне нужно из полученных "сырых" X и Y удалить постоянную составляющую
я умножаю 1G на синус угла отклонения по X - получаю компоненту G для оси X
и вычитаю ее из компоненты акселерометра X
я умножаю 1G на синус угла отклонения по Y - получаю компоненту G для оси Y
и вычитаю ее из компоненты акселерометра Y
Правильно я рассуждаю?

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

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 17:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016