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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Оценка линейного перемещения с помощью акселерометра, интегрирование данных акселерометра во время разгона
serjj
сообщение Jun 25 2015, 10:12
Сообщение #1


Знающий
****

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



Всем доброго.
Есть идея определять вектор перемещения твердого тела, имеющего 6 степеней свободы с помощью акселеромета. Если точнее, то определять проекцию вектора на плоскость OXY (в инерциальной Земной системе координат) в период разгона объекта. Т.е. есть следующие условия: линейное ускорение порядка g, объект может поворачиваться или вращаться вокруг своих осей, время измерения - секунды (пока идёт разгон).

Моя идея была следующая. С помощью fusion фильтра получаю набор Эйлеровых параметров Q = [q0 q1 q2 q3], т.е. кватернион, который задаёт мгновенное радиальное положение объекта. Далее усреднённый вектор данных акселерометра, асс, измеренного в связанной системе координат, преобразую в вектор acci относительно Земной системы координат:
acci = (Q * [0 acc]) *conj(Q), выкидываю acci(0) (переход от кватерниона к вектору) и acci(3) (z составляющая), а далее численное интегрирование два раза, чтобы получить искомое перемещение. Чтобы понять разгоняемся мы или нет, при интегрировании к модулю вектора ускорения применяется некоторый порог.

С получением acci особых проблем не возникло, но вот дальше пока не очень понятно. Проверял идею пока только "на столе", т.е. с STMовской отладкой, он что-то мереет, но это точно не то, что я ожидаю. При интегрировании за dt взял период сэмплирования акселерометра, ~10 мс (это же период обновления fusion фильтра). Скорость уверено уходит за 10 м/с. Есть предположение, что подход должен таки работать при длительном (относительно перида сэмплирования, т.е секунды) и резком разгоне (т.е. линейное ускорение порядка g). При первом рассмотрении гугл говорит, что таки да для малых движений (например смартфон в руках человека) алгоритм врёт и очень сильно. Плюс даже если он не врёт сначала, то обязательно начнёт врать потом (т.к. скорость уйдёт). Но вот как будет для обозначенных мною условий? Есть ли у кого какие прогнозы и может быть кто нибудь поделится опытом по оценке векторов линейных движений (с угловыми вроде бы разобрался)? Или может быть это все от лукавого и магнетометр + априорная скорость наше всё?

Зы: поставить дополнительно измеритель скорости не предлагать) для решения задачи есть два датчика от ST - гироскоп и акселерометр+магнетометр.

Зыы: еще заметил такую интересность, алгоритм как-то реагирует на разгон, но совершенно не хочет на торможение, т.е. не сбрасывает скорость после остановки.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jun 25 2015, 12:07
Сообщение #2





Guests






Обычно сначала все это моделируется в какой-либо подходящей системе моделирования, а уж потом - на борт переносится.
Go to the top of the page
 
+Quote Post
serjj
сообщение Jun 25 2015, 12:45
Сообщение #3


Знающий
****

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



Да? Сейчас всё заработает! yeah.gif Ну во первых, хоть я и работаю с экспериментальными данными с отладочной платы, обработку делаю в модели матлаба, где я могу накрутить любой анализ для входных сигналов. Я просто работаю с записями. А во вторых, если вы знаете как промоделировать шумы датчиков, их отклики на различные воздействия, как то: вибрации, рывки, плавные движения, то уж расскажите.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jun 25 2015, 18:25
Сообщение #4





Guests






Все очень просто:
- сначала моделируется идеальный алгоритм с идеальными датчиками и производится верификация его;
- затем "ухудшается" алгоритм до реальности (сетка, формат, быстродействие) и делается оценка этого ухудшения;
- после этого, опять же на идеальном алгоритме, последовательно вводятся для каждого датчика его реальные свойства и делается оценка погрешности + еще некоторые параметры;
- все моделируется в совокупности на предельных условиях и дается оценка устойчивости (робастности), влияние от внешних параметров, влияние от погрешностей датчиков.

После всего этого и возникает модель измерительно-управляющей системы.
Go to the top of the page
 
+Quote Post
iDiode
сообщение Jun 25 2015, 23:01
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 9-07-10
Пользователь №: 58 360



Цитата(serjj @ Jun 25 2015, 14:12) *
...он что-то мереет...


http://academic.csuohio.edu/simond/courses/eec644/kalman.pdf
Go to the top of the page
 
+Quote Post
serjj
сообщение Jun 26 2015, 06:59
Сообщение #6


Знающий
****

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



Цитата

Спасибо, посмотрел. В статье на вход алгоритма по мимо ускорения ещё подаётся измерение положения. При этом положение измеряется с высоким уровнем шумов, а ускорение используется для уменьшения уровня этих шумов (smoothing). Это по аналогии с измерением радиального положения, там усреднённое шумовое измерение положения с помощью акселерометра дополняется интегрированным по времени измерением угловой скорости с гироскопа (fusion фильтр, упомянутый в начале темы). Кстати для этого тоже иногда Калмана применяют.

Но если прямое измерение положения не доступно? При использовании одного только акселерометра скорость (и соответственно перемещение) будут оцениваться с постоянно растущей ошибкой? Получается некоторая аналогия с гироскопом - имея только гироскоп нельзя получить устойчивого измерения углового положения из-за дрифта, присущего любому гироскопу.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Jun 26 2015, 08:04
Сообщение #7


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(serjj @ Jun 26 2015, 10:59) *
Спасибо, посмотрел.


в акселерометрах ничо не понимаю, но скоро предстоит разбираться и вот дали такую ссылку Фильтр Маджвика


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
serjj
сообщение Jun 26 2015, 08:34
Сообщение #8


Знающий
****

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



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

Я его использую в качестве fusion фильтра для получения кватерниона положения. У вас акселерометр + гироскоп или акселерометр + гироскоп + магнетометр? Алгоритм хорош именно для второго случая, позволяет реализовать singularity-free определение положения. Для первого случая обычно достаточно комплементарного фильтра (по сути Калман с фиксированной моделью).
Вот посмотрите здесь, неплохо объясняются подходы к построению таких фильтров.
Go to the top of the page
 
+Quote Post
MikleV
сообщение Jul 2 2015, 07:01
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 15-05-15
Пользователь №: 86 697



Вопрос к топикстартеру и тем кто в теме. Имеется акселерометр емкостной 3-х остный. Можно ли только с помощью него оценить смену курса? А также определить равномерное движение с постонной скоростью.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jul 2 2015, 07:33
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



QUOTE (MikleV @ Jul 2 2015, 11:01) *
Вопрос к топикстартеру и тем кто в теме. Имеется акселерометр емкостной 3-х остный. Можно ли только с помощью него оценить смену курса? А также определить равномерное движение с постонной скоростью.

нельзя, нужен как минимум МЕМs акселерометр + гироскоп и + мат обработка.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jul 2 2015, 21:17
Сообщение #11





Guests






Цитата(Aner @ Jul 2 2015, 10:33) *
нельзя, нужен как минимум МЕМs акселерометр + гироскоп и + мат обработка.


И шо? Лазерный или старо-инерциальный аксель не подойдет? Вот прям МЕМС - подавай?
Go to the top of the page
 
+Quote Post
MikleV
сообщение Jul 3 2015, 06:32
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 15-05-15
Пользователь №: 86 697



Чисто теоретически есть 3-х осевой МЭМС аксель. С него же можно получить относительный вектор ускорения в каждый момент времени (пусть даже если принять во внимание что 0 и 180 градусов будет не отличить). Ну соответственно если отклонились от вектра на уровень превышающий шум (или порог интегрирования) то можно это продетектировать.
Go to the top of the page
 
+Quote Post
serjj
сообщение Jul 3 2015, 06:56
Сообщение #13


Знающий
****

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



Акселерометр даёт зашумлённую оценку поворота в пространстве + вносит ограничение на измерение -90...90 градусов.
Акселерометр + Гироскоп + фильтр - получаем более точную оценку поворота, но есть сингулярные позиции диферента -90 и 90 градусов, в которых невозможно определять крен и рыскание. По мере приближения к сингулярным позициям качество определения крена и рыскания падает.
Акселерометр + Гироскоп + Магнетометр + фильтр - получаем точную оценку поворота без сингулярностей (если выводить результат не в виде углов Эйлера, а в виде параметров Эйлера).

Определение равномерного движения с помощью акселеромета возможно, но с точностью до шумов акселерометра, а они обычно большие (для MEMS, с лазерными не имел дела). Плюс влияние вибраций, ударов и прочие прелести.

Гораздо сложнее определять линейную скорость и перемещение с помощью акселерометра, об этом собсно и тема. По аналогии с определением вращений сюда напрашивается еще 1 датчик, который бы определял положение/перемещение (пусть грубо). Далее с помощью фильтра Калмана можно скомбинировать выходы этих датчиков для решения задачи. Пока определение линейных кинематических параметров с помощью одного только (MEMS) акселя мне видится нерешаемой.
Если у кого-то есть идеи, как это можно решить, велкам )
Go to the top of the page
 
+Quote Post
Aner
сообщение Jul 3 2015, 08:44
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



QUOTE (TSerg @ Jul 3 2015, 01:17) *
И шо? Лазерный или старо-инерциальный аксель не подойдет? Вот прям МЕМС - подавай?

Не неподойдет, громоздкие и дорогие. К коптеру например, не прицепишь.

QUOTE (serjj @ Jul 3 2015, 10:56) *
Акселерометр даёт зашумлённую оценку поворота в пространстве + вносит ограничение на измерение -90...90 градусов.
Акселерометр + Гироскоп + фильтр - получаем более точную оценку поворота, но есть сингулярные позиции диферента -90 и 90 градусов, в которых невозможно определять крен и рыскание. По мере приближения к сингулярным позициям качество определения крена и рыскания падает.
Акселерометр + Гироскоп + Магнетометр + фильтр - получаем точную оценку поворота без сингулярностей (если выводить результат не в виде углов Эйлера, а в виде параметров Эйлера).

Определение равномерного движения с помощью акселеромета возможно, но с точностью до шумов акселерометра, а они обычно большие (для MEMS, с лазерными не имел дела). Плюс влияние вибраций, ударов и прочие прелести.

Гораздо сложнее определять линейную скорость и перемещение с помощью акселерометра, об этом собсно и тема. По аналогии с определением вращений сюда напрашивается еще 1 датчик, который бы определял положение/перемещение (пусть грубо). Далее с помощью фильтра Калмана можно скомбинировать выходы этих датчиков для решения задачи. Пока определение линейных кинематических параметров с помощью одного только (MEMS) акселя мне видится нерешаемой.
Если у кого-то есть идеи, как это можно решить, велкам )

Почти все правильно, в двух плоскостях Акселерометр + Гироскоп + фильтр работает, 3D куб на дисплее вращается, но кроме шума еще идет накопление ошибки, отсюда и потребность в Магнетометре, конечно фильры, матричные, калман, матрица кватернионная и все гут.
Go to the top of the page
 
+Quote Post
serjj
сообщение Jul 3 2015, 10:01
Сообщение #15


Знающий
****

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



Цитата
в двух плоскостях Акселерометр + Гироскоп + фильтр работает, 3D куб на дисплее вращается, но кроме шума еще идет накопление ошибки, отсюда и потребность в Магнетометре

Т.е. с помощью только акселя + гироскоп сделать singularity-free определение вращений? Я сначала пробовал комплементарный фильтр с акселем и гироскопом и определял по нему крен и дифферент (рыскание планировал по магнетометру считать). Всё ок, пока дифферент не задираю больше 80 градусов. Тогда крен начинало колбасить, а при +-90 крен вообще не определялся. Но фильтр работал с углами Эйлера а не с кватернионами. Видимо если переписать в кватернионах для 6D, то тоже работать будет, но по логике вращение в некоторых плоскостях не будет затрагивать вектор ускорения, как следствие не будет компенсироваться ошибка гироскопа (накопление ошибки, о которой вы говорите и как я понял).

Потом попробовал кватернионный фильтр Маджвика для 9D, он уже покрывает всё пространство без ошибок. Вариант для 6D кстати не пробовал (хотя в авторской модели он есть)

Правильно ли я понимаю, что теже принципы объединяющих фильтров применимы и для задачи линейного позиционирования (лин. скорость, перемещение)? За исключением того, что кватернионная математика заменяется на обычную матричную.

Сообщение отредактировал serjj - Jul 3 2015, 10:03
Go to the top of the page
 
+Quote Post

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

 


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


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