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

Оценка линейного перемещения с помощью акселерометра

Всем доброго.

Есть идея определять вектор перемещения твердого тела, имеющего 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 - гироскоп и акселерометр+магнетометр.

 

Зыы: еще заметил такую интересность, алгоритм как-то реагирует на разгон, но совершенно не хочет на торможение, т.е. не сбрасывает скорость после остановки.

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


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

Гость TSerg

Обычно сначала все это моделируется в какой-либо подходящей системе моделирования, а уж потом - на борт переносится.

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


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

Да? Сейчас всё заработает! :yeah: Ну во первых, хоть я и работаю с экспериментальными данными с отладочной платы, обработку делаю в модели матлаба, где я могу накрутить любой анализ для входных сигналов. Я просто работаю с записями. А во вторых, если вы знаете как промоделировать шумы датчиков, их отклики на различные воздействия, как то: вибрации, рывки, плавные движения, то уж расскажите.

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


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

Гость TSerg

Все очень просто:

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

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

- после этого, опять же на идеальном алгоритме, последовательно вводятся для каждого датчика его реальные свойства и делается оценка погрешности + еще некоторые параметры;

- все моделируется в совокупности на предельных условиях и дается оценка устойчивости (робастности), влияние от внешних параметров, влияние от погрешностей датчиков.

 

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

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


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

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

 

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

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


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

Спасибо, посмотрел.

 

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

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


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

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

Я его использую в качестве fusion фильтра для получения кватерниона положения. У вас акселерометр + гироскоп или акселерометр + гироскоп + магнетометр? Алгоритм хорош именно для второго случая, позволяет реализовать singularity-free определение положения. Для первого случая обычно достаточно комплементарного фильтра (по сути Калман с фиксированной моделью).

Вот посмотрите здесь, неплохо объясняются подходы к построению таких фильтров.

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


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

Вопрос к топикстартеру и тем кто в теме. Имеется акселерометр емкостной 3-х остный. Можно ли только с помощью него оценить смену курса? А также определить равномерное движение с постонной скоростью.

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


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

Вопрос к топикстартеру и тем кто в теме. Имеется акселерометр емкостной 3-х остный. Можно ли только с помощью него оценить смену курса? А также определить равномерное движение с постонной скоростью.

нельзя, нужен как минимум МЕМs акселерометр + гироскоп и + мат обработка.

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


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

Гость TSerg
нельзя, нужен как минимум МЕМs акселерометр + гироскоп и + мат обработка.

 

И шо? Лазерный или старо-инерциальный аксель не подойдет? Вот прям МЕМС - подавай?

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


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

Чисто теоретически есть 3-х осевой МЭМС аксель. С него же можно получить относительный вектор ускорения в каждый момент времени (пусть даже если принять во внимание что 0 и 180 градусов будет не отличить). Ну соответственно если отклонились от вектра на уровень превышающий шум (или порог интегрирования) то можно это продетектировать.

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


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

Акселерометр даёт зашумлённую оценку поворота в пространстве + вносит ограничение на измерение -90...90 градусов.

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

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

 

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

 

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

Если у кого-то есть идеи, как это можно решить, велкам )

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


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

И шо? Лазерный или старо-инерциальный аксель не подойдет? Вот прям МЕМС - подавай?

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

 

Акселерометр даёт зашумлённую оценку поворота в пространстве + вносит ограничение на измерение -90...90 градусов.

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

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

 

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

 

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

Если у кого-то есть идеи, как это можно решить, велкам )

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

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


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

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

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

 

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

 

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

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

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


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

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

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

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

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

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

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

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

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

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