|
Оценка линейного перемещения с помощью акселерометра, интегрирование данных акселерометра во время разгона |
|
|
|
Jun 25 2015, 10:12
|
Знающий
   
Группа: Участник
Сообщений: 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 - гироскоп и акселерометр+магнетометр.
Зыы: еще заметил такую интересность, алгоритм как-то реагирует на разгон, но совершенно не хочет на торможение, т.е. не сбрасывает скорость после остановки.
|
|
|
|
Guest_TSerg_*
|
Jun 25 2015, 12:07
|
Guests

|
Обычно сначала все это моделируется в какой-либо подходящей системе моделирования, а уж потом - на борт переносится.
|
|
|
|
|
Jun 25 2015, 12:45
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

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

|
Все очень просто: - сначала моделируется идеальный алгоритм с идеальными датчиками и производится верификация его; - затем "ухудшается" алгоритм до реальности (сетка, формат, быстродействие) и делается оценка этого ухудшения; - после этого, опять же на идеальном алгоритме, последовательно вводятся для каждого датчика его реальные свойства и делается оценка погрешности + еще некоторые параметры; - все моделируется в совокупности на предельных условиях и дается оценка устойчивости (робастности), влияние от внешних параметров, влияние от погрешностей датчиков.
После всего этого и возникает модель измерительно-управляющей системы.
|
|
|
|
|
Jun 26 2015, 06:59
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Спасибо, посмотрел. В статье на вход алгоритма по мимо ускорения ещё подаётся измерение положения. При этом положение измеряется с высоким уровнем шумов, а ускорение используется для уменьшения уровня этих шумов (smoothing). Это по аналогии с измерением радиального положения, там усреднённое шумовое измерение положения с помощью акселерометра дополняется интегрированным по времени измерением угловой скорости с гироскопа (fusion фильтр, упомянутый в начале темы). Кстати для этого тоже иногда Калмана применяют. Но если прямое измерение положения не доступно? При использовании одного только акселерометра скорость (и соответственно перемещение) будут оцениваться с постоянно растущей ошибкой? Получается некоторая аналогия с гироскопом - имея только гироскоп нельзя получить устойчивого измерения углового положения из-за дрифта, присущего любому гироскопу.
|
|
|
|
|
Jun 26 2015, 08:34
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

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

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

|
Вопрос к топикстартеру и тем кто в теме. Имеется акселерометр емкостной 3-х остный. Можно ли только с помощью него оценить смену курса? А также определить равномерное движение с постонной скоростью.
|
|
|
|
Guest_TSerg_*
|
Jul 2 2015, 21:17
|
Guests

|
Цитата(Aner @ Jul 2 2015, 10:33)  нельзя, нужен как минимум МЕМs акселерометр + гироскоп и + мат обработка. И шо? Лазерный или старо-инерциальный аксель не подойдет? Вот прям МЕМС - подавай?
|
|
|
|
|
Jul 3 2015, 06:32
|
Участник

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

|
Чисто теоретически есть 3-х осевой МЭМС аксель. С него же можно получить относительный вектор ускорения в каждый момент времени (пусть даже если принять во внимание что 0 и 180 градусов будет не отличить). Ну соответственно если отклонились от вектра на уровень превышающий шум (или порог интегрирования) то можно это продетектировать.
|
|
|
|
|
Jul 3 2015, 06:56
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Акселерометр даёт зашумлённую оценку поворота в пространстве + вносит ограничение на измерение -90...90 градусов. Акселерометр + Гироскоп + фильтр - получаем более точную оценку поворота, но есть сингулярные позиции диферента -90 и 90 градусов, в которых невозможно определять крен и рыскание. По мере приближения к сингулярным позициям качество определения крена и рыскания падает. Акселерометр + Гироскоп + Магнетометр + фильтр - получаем точную оценку поворота без сингулярностей (если выводить результат не в виде углов Эйлера, а в виде параметров Эйлера).
Определение равномерного движения с помощью акселеромета возможно, но с точностью до шумов акселерометра, а они обычно большие (для MEMS, с лазерными не имел дела). Плюс влияние вибраций, ударов и прочие прелести.
Гораздо сложнее определять линейную скорость и перемещение с помощью акселерометра, об этом собсно и тема. По аналогии с определением вращений сюда напрашивается еще 1 датчик, который бы определял положение/перемещение (пусть грубо). Далее с помощью фильтра Калмана можно скомбинировать выходы этих датчиков для решения задачи. Пока определение линейных кинематических параметров с помощью одного только (MEMS) акселя мне видится нерешаемой. Если у кого-то есть идеи, как это можно решить, велкам )
|
|
|
|
|
Jul 3 2015, 08:44
|

Гуру
     
Группа: Свой
Сообщений: 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 куб на дисплее вращается, но кроме шума еще идет накопление ошибки, отсюда и потребность в Магнетометре, конечно фильры, матричные, калман, матрица кватернионная и все гут.
|
|
|
|
|
Jul 3 2015, 10:01
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата в двух плоскостях Акселерометр + Гироскоп + фильтр работает, 3D куб на дисплее вращается, но кроме шума еще идет накопление ошибки, отсюда и потребность в Магнетометре Т.е. с помощью только акселя + гироскоп сделать singularity-free определение вращений? Я сначала пробовал комплементарный фильтр с акселем и гироскопом и определял по нему крен и дифферент (рыскание планировал по магнетометру считать). Всё ок, пока дифферент не задираю больше 80 градусов. Тогда крен начинало колбасить, а при +-90 крен вообще не определялся. Но фильтр работал с углами Эйлера а не с кватернионами. Видимо если переписать в кватернионах для 6D, то тоже работать будет, но по логике вращение в некоторых плоскостях не будет затрагивать вектор ускорения, как следствие не будет компенсироваться ошибка гироскопа (накопление ошибки, о которой вы говорите и как я понял). Потом попробовал кватернионный фильтр Маджвика для 9D, он уже покрывает всё пространство без ошибок. Вариант для 6D кстати не пробовал (хотя в авторской модели он есть) Правильно ли я понимаю, что теже принципы объединяющих фильтров применимы и для задачи линейного позиционирования (лин. скорость, перемещение)? За исключением того, что кватернионная математика заменяется на обычную матричную.
Сообщение отредактировал serjj - Jul 3 2015, 10:03
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|