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

 
 
> Оценка линейного перемещения с помощью акселерометра, интегрирование данных акселерометра во время разгона
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
 
Start new topic
Ответов
bbb
сообщение Mar 18 2016, 19:39
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 335
Регистрация: 29-01-16
Пользователь №: 90 261



Цитата(serjj @ Jun 25 2015, 13:12) *
Всем доброго.
Есть идея определять вектор перемещения твердого тела, имеющего 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
Aner
сообщение Mar 19 2016, 12:41
Сообщение #3


Гуру
******

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



QUOTE (bbb @ Mar 18 2016, 23:39) *
Из-за дискретности процесса измерения ускорения и погрешности акселлерометра даже за короткое время может накопится большая погрешность.
Это и без симуляторов/эмуляторов очевидно.
Ничего у Вас не получится.

Это не верно в корне. Поскольку вы не оперируете величинами, процентными соотношениями а только эмоциями ... короткое время, большая погрешность.
Дискретность процесса определяет приемлемые границы величин, выдаваемые мемсами.

Короме того на точность, погрешность влияют и многие другие факторы. Все они описаны и даны методы борьбы. Например если у вас питание 3.3V, а гир L3G4200D, имеет нулевой баланс, по всем осям, всех 3 усилителей только при 3.0V а, а при 3.3V приходится вводить коррекцию, причем плохо то, что она разная для каждого чипа. Но введя ее вы получите точный результат, не используя внешнего стабилизатора 3.0V.

Поскольку у процев тех же STM32F4..F7 достаточная считалка, то большая погрешность не накапливается. За исключением каких то крайних случаев, типа резких толчков, нескольких скачков, ...которые тоже определяются. Но это как правило за пределами эксплуатации. Мне удалось получить неплохие результаты, и устройство в серии. Все получается и не только у меня одного. Можно конечно все совершенствовать до бесконечности, но при разработке также важен процесс и ее окончания.
Go to the top of the page
 
+Quote Post
bbb
сообщение Mar 19 2016, 12:57
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 335
Регистрация: 29-01-16
Пользователь №: 90 261



Цитата(Aner @ Mar 19 2016, 15:41) *
Это не верно в корне. Поскольку вы не оперируете величинами, процентными соотношениями а только эмоциями ... короткое время, большая погрешность.

Какими эмоциями.
Хотите чтобы я доказывал, что 2 х 2 = 4?
Нет. Спасибо. Я пас. Мне и без симулятора ясно, что 2х2=4.


Цитата(Aner @ Mar 19 2016, 15:41) *
Мне удалось получить неплохие результаты, и устройство в серии. Все получается

Ну и? Огласите результаты.
Проверить качество Вашего решения очень просто.
Просто поставьте Ваш определитель перемещения путем двойного интегрирования ускорения на стол. И скажите мне: за какое время он показывает перемещение 1 метр при этом оставаясь стоять на столе на том же самом месте?

Сообщение отредактировал bbb - Mar 19 2016, 13:00
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- serjj   Оценка линейного перемещения с помощью акселерометра   Jun 25 2015, 10:12
- - TSerg   Обычно сначала все это моделируется в какой-либо п...   Jun 25 2015, 12:07
- - serjj   Да? Сейчас всё заработает! Ну во первых, хо...   Jun 25 2015, 12:45
- - TSerg   Все очень просто: - сначала моделируется идеальны...   Jun 25 2015, 18:25
- - iDiode   Цитата(serjj @ Jun 25 2015, 14:12) ...он ...   Jun 25 2015, 23:01
- - serjj   Цитатаhttp://academic.csuohio.edu/simond/courses/e...   Jun 26 2015, 06:59
|- - megajohn   Цитата(serjj @ Jun 26 2015, 10:59) Спасиб...   Jun 26 2015, 08:04
- - serjj   Цитатав акселерометрах ничо не понимаю, но скоро п...   Jun 26 2015, 08:34
- - MikleV   Вопрос к топикстартеру и тем кто в теме. Имеется а...   Jul 2 2015, 07:01
|- - Aner   QUOTE (MikleV @ Jul 2 2015, 11:01) Вопрос...   Jul 2 2015, 07:33
||- - TSerg   Цитата(Aner @ Jul 2 2015, 10:33) нельзя, ...   Jul 2 2015, 21:17
||- - Aner   QUOTE (TSerg @ Jul 3 2015, 01:17) И шо? Л...   Jul 3 2015, 08:44
|- - Игорььььь   Цитата(MikleV @ Jul 2 2015, 12:01) Вопрос...   Apr 25 2016, 21:42
- - MikleV   Чисто теоретически есть 3-х осевой МЭМС аксель. С ...   Jul 3 2015, 06:32
- - serjj   Акселерометр даёт зашумлённую оценку поворота в пр...   Jul 3 2015, 06:56
- - serjj   Цитатав двух плоскостях Акселерометр + Гироскоп + ...   Jul 3 2015, 10:01
- - Aner   У меня крен начинало колбасить, если проц STM32F41...   Jul 3 2015, 10:36
- - TSerg   И как же это лодки, авианосцы, подводные аппараты,...   Jul 3 2015, 11:26
|- - Aner   QUOTE (TSerg @ Jul 3 2015, 15:26) И как ж...   Jul 3 2015, 11:47
- - serjj   ЦитатаВектор ускорения затрагивает почти все, редк...   Jul 3 2015, 12:16
|- - MrAlex   [quote name='serjj' date='Jul 3 2015, ...   Aug 31 2015, 13:26
- - Aner   У меня гироскоп только вертикалью и занимался, пок...   Jul 3 2015, 13:38
|- - VNS   Цитата(Aner @ Jul 3 2015, 16:38) У меня г...   Sep 18 2015, 09:04
- - Corner   Одним акселерометром получается весьма неточно. А ...   Mar 18 2016, 17:09
|- - Aner   QUOTE (bbb @ Mar 19 2016, 16:57) Какими э...   Mar 19 2016, 13:36
|- - bbb   Цитата(Aner @ Mar 19 2016, 16:36) Не пока...   Mar 19 2016, 14:12
||- - Aner   QUOTE (bbb @ Mar 19 2016, 18:12) А тема н...   Mar 19 2016, 14:19
|- - Onkel   Цитата(Aner @ Mar 19 2016, 16:36) Какими ...   Mar 19 2016, 16:03
|- - Corner   Цитата(Aner @ Mar 19 2016, 16:36) Не пока...   Apr 14 2016, 12:59
|- - blackfin   Цитата(Corner @ Apr 14 2016, 16:59) У все...   Apr 14 2016, 13:24
|- - Onkel   Цитата(Corner @ Apr 14 2016, 15:59) ... Л...   Apr 15 2016, 09:00
- - bbb   Вы не знаете что перемещение - это двойной интегра...   Mar 19 2016, 14:31
|- - Aner   QUOTE (bbb @ Mar 19 2016, 18:31) Вы не зн...   Mar 19 2016, 17:17
|- - Onkel   Цитата(Aner @ Mar 19 2016, 20:17) пропуст...   Mar 19 2016, 21:21
- - Rst7   Moderator: Господа, давайте-ка в конструктивном р...   Mar 19 2016, 14:33
- - bbb   Aner Как видите к Вам много вопросов. Начнем с наз...   Mar 19 2016, 16:56
- - amaora   Отвечая на исходный вопрос. Читайте литературу по ...   Mar 19 2016, 19:23
|- - bbb   Цитата(amaora @ Mar 19 2016, 22:23) Если ...   Mar 19 2016, 20:07
- - quarz   Не хочу убить энтузиазм автора, но вычислить коорд...   Apr 14 2016, 14:10
- - Corner   Цитата(quarz @ Apr 14 2016, 17:10) Не хоч...   Apr 15 2016, 18:20
- - quarz   Цитата(Corner @ Apr 15 2016, 21:20) Все е...   Apr 17 2016, 16:30


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

 


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


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