Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оценка линейного перемещения с помощью акселерометра
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
serjj
Всем доброго.
Есть идея определять вектор перемещения твердого тела, имеющего 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
Обычно сначала все это моделируется в какой-либо подходящей системе моделирования, а уж потом - на борт переносится.
serjj
Да? Сейчас всё заработает! yeah.gif Ну во первых, хоть я и работаю с экспериментальными данными с отладочной платы, обработку делаю в модели матлаба, где я могу накрутить любой анализ для входных сигналов. Я просто работаю с записями. А во вторых, если вы знаете как промоделировать шумы датчиков, их отклики на различные воздействия, как то: вибрации, рывки, плавные движения, то уж расскажите.
TSerg
Все очень просто:
- сначала моделируется идеальный алгоритм с идеальными датчиками и производится верификация его;
- затем "ухудшается" алгоритм до реальности (сетка, формат, быстродействие) и делается оценка этого ухудшения;
- после этого, опять же на идеальном алгоритме, последовательно вводятся для каждого датчика его реальные свойства и делается оценка погрешности + еще некоторые параметры;
- все моделируется в совокупности на предельных условиях и дается оценка устойчивости (робастности), влияние от внешних параметров, влияние от погрешностей датчиков.

После всего этого и возникает модель измерительно-управляющей системы.
iDiode
Цитата(serjj @ Jun 25 2015, 14:12) *
...он что-то мереет...


http://academic.csuohio.edu/simond/courses/eec644/kalman.pdf
serjj
Цитата

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

Но если прямое измерение положения не доступно? При использовании одного только акселерометра скорость (и соответственно перемещение) будут оцениваться с постоянно растущей ошибкой? Получается некоторая аналогия с гироскопом - имея только гироскоп нельзя получить устойчивого измерения углового положения из-за дрифта, присущего любому гироскопу.
megajohn
Цитата(serjj @ Jun 26 2015, 10:59) *
Спасибо, посмотрел.


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

Я его использую в качестве fusion фильтра для получения кватерниона положения. У вас акселерометр + гироскоп или акселерометр + гироскоп + магнетометр? Алгоритм хорош именно для второго случая, позволяет реализовать singularity-free определение положения. Для первого случая обычно достаточно комплементарного фильтра (по сути Калман с фиксированной моделью).
Вот посмотрите здесь, неплохо объясняются подходы к построению таких фильтров.
MikleV
Вопрос к топикстартеру и тем кто в теме. Имеется акселерометр емкостной 3-х остный. Можно ли только с помощью него оценить смену курса? А также определить равномерное движение с постонной скоростью.
Aner
QUOTE (MikleV @ Jul 2 2015, 11:01) *
Вопрос к топикстартеру и тем кто в теме. Имеется акселерометр емкостной 3-х остный. Можно ли только с помощью него оценить смену курса? А также определить равномерное движение с постонной скоростью.

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


И шо? Лазерный или старо-инерциальный аксель не подойдет? Вот прям МЕМС - подавай?
MikleV
Чисто теоретически есть 3-х осевой МЭМС аксель. С него же можно получить относительный вектор ускорения в каждый момент времени (пусть даже если принять во внимание что 0 и 180 градусов будет не отличить). Ну соответственно если отклонились от вектра на уровень превышающий шум (или порог интегрирования) то можно это продетектировать.
serjj
Акселерометр даёт зашумлённую оценку поворота в пространстве + вносит ограничение на измерение -90...90 градусов.
Акселерометр + Гироскоп + фильтр - получаем более точную оценку поворота, но есть сингулярные позиции диферента -90 и 90 градусов, в которых невозможно определять крен и рыскание. По мере приближения к сингулярным позициям качество определения крена и рыскания падает.
Акселерометр + Гироскоп + Магнетометр + фильтр - получаем точную оценку поворота без сингулярностей (если выводить результат не в виде углов Эйлера, а в виде параметров Эйлера).

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

Гораздо сложнее определять линейную скорость и перемещение с помощью акселерометра, об этом собсно и тема. По аналогии с определением вращений сюда напрашивается еще 1 датчик, который бы определял положение/перемещение (пусть грубо). Далее с помощью фильтра Калмана можно скомбинировать выходы этих датчиков для решения задачи. Пока определение линейных кинематических параметров с помощью одного только (MEMS) акселя мне видится нерешаемой.
Если у кого-то есть идеи, как это можно решить, велкам )
Aner
QUOTE (TSerg @ Jul 3 2015, 01:17) *
И шо? Лазерный или старо-инерциальный аксель не подойдет? Вот прям МЕМС - подавай?

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

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

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

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

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

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

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

Правильно ли я понимаю, что теже принципы объединяющих фильтров применимы и для задачи линейного позиционирования (лин. скорость, перемещение)? За исключением того, что кватернионная математика заменяется на обычную матричную.
Aner
У меня крен начинало колбасить, если проц STM32F417(427) считал, пробросил на комп все нормуль оказалось. Причина в плохой либе для малых углов была для этих процев.
Принципы объединяющих фильтров, не совсем, свои недостатки есть. Без кватернионов, математикой игрался долго, рамоздко, отказался. Вектор ускорения затрагивает почти все, редко когда линейный, отсюда доп нестабильность, нужно что то думать с адаптацией.
TSerg
И как же это лодки, авианосцы, подводные аппараты, да и летающая братия определяются?
Коптеры.. - вот нашли забаву.
Aner
QUOTE (TSerg @ Jul 3 2015, 15:26) *
И как же это лодки, авианосцы, подводные аппараты, да и летающая братия определяются?
Коптеры.. - вот нашли забаву.

Вы не думаете, что вы флудите тут?
serjj
Цитата
Вектор ускорения затрагивает почти все, редко когда линейный, отсюда доп нестабильность, нужно что то думать с адаптацией.

Я имею в виду определенные позиции. Вот например: поворот в горизонтальной плоскости, т.е. изменение угла рыскания, проекции гравитационного вектора на оси связанной системы координат не изменяется, направление g совпадает с осью z. А выход акселерометра по осям x и y в таком случае выступают скорее как шумовой процесс. Если магнетометра нет, то в такой ситуации рыскание измеряется только с помощью гироскопа, следовательно вероятна большая погрешность такого измерения, особенно если процесс изменения угла рыскания медленный и долгий, тогда в моем понимании ошибка будет максимальная (гироскоп эффективнее для быстрых изменений углов + ошибка гироскопа растет со временем). Аналогично и с креном, когда дифферент равен +-90 (g направлена по оси x для любого крена). В итоге 6D система всегда имеет ограничения, такие положения, в которых невозможно определить все углы Эйлера. Вектор магнитного поля имеет сильную составляющую перпендикулярную гравитационному вектору, поэтому, когда мы подключаем магнетометр, мы можем закрыть "пробелы" 6D системы с помощью измерений дополнительных измерений.

Т.е. если для 6D системы существуют физические сингулярные положения, обусловленные индеферентностью поля для некоторых вращений в некоторых положениях, то для 9D сингулярности суть результат неудачного математического аппарата, т.е. углов Эйлера. И когда мы переводим фильтр в кватернионную математику никаких сингулярных проблем больше нет. Но в 6D даже с кватернионами все равно останутся физические ограничения.

Правильно ли я рассуждаю?
Aner
У меня гироскоп только вертикалью и занимался, пока не было приязки к магнитоментру. Все равно кватернионы приходится считать по всем трем осям матрицой. В 6D с кватернионами все равно останутся физические ограничения - это да.
MrAlex
[quote name='serjj' date='Jul 3 2015, 15:16' post='1349315'

Т.е. если для 6D системы существуют физические сингулярные положения, обусловленные индеферентностью поля для некоторых вращений в некоторых положениях, то для 9D сингулярности суть результат неудачного математического аппарата, т.е. углов Эйлера. И когда мы переводим фильтр в кватернионную математику никаких сингулярных проблем больше нет. Но в 6D даже с кватернионами все равно останутся физические ограничения.

Правильно ли я рассуждаю?
[/quote]

Отнюдь.
То что подразумевают под 6D и 9D всего лишь количество измерительных осей датчиков.
В реальности у тела всего 6 координат. 3 из них ориентация и 3 положение центра масс.
6D измеряет 2 угла ориентации, а так называемый 9D 3.
И углы Эйлера и кватернионы однозначно описывают положение ориентации.
Интегрирование углов Эйлера, для особых случаев, требует больших затрат чем интегрирование кватерниона. В механических системах применяется дополнительная рамка устраняющая блокировку поворота.
Физические ограничения это только точность измерения.
VNS
Цитата(Aner @ Jul 3 2015, 16:38) *
У меня гироскоп только вертикалью и занимался, пока не было приязки к магнитоментру. Все равно кватернионы приходится считать по всем трем осям матрицой. В 6D с кватернионами все равно останутся физические ограничения - это да.

Нужно проверить акселерометр на стенде в режимах "нуля", отсутствие ускорения по трём координатам, и калиброванных смещений по координатам. Стенд должен иметь виброизоляцию от сейсмики. Если этого не сделано, то Вы работаете вслепую из-за возможной преднамеренной "модификации" поставщиком акселерометров в сторону значительного ухудшения их характеристик.
Corner
Одним акселерометром получается весьма неточно. А вот 4 по сторонам треугольной равнобокой пирамиды с хорошей базой и калибровкой, дают уже весьма неплохие результаты. Но.... фильтровать надо результат преобразования в проекции, посчитанный по системе уравнений для всей схемы.
bbb
Цитата(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 - гироскоп и акселерометр+магнетометр.

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


Из-за дискретности процесса измерения ускорения и погрешности акселлерометра даже за короткое время может накопится большая погрешность.
Это и без симуляторов/эмуляторов очевидно.
Ничего у Вас не получится.

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

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

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

Поскольку у процев тех же STM32F4..F7 достаточная считалка, то большая погрешность не накапливается. За исключением каких то крайних случаев, типа резких толчков, нескольких скачков, ...которые тоже определяются. Но это как правило за пределами эксплуатации. Мне удалось получить неплохие результаты, и устройство в серии. Все получается и не только у меня одного. Можно конечно все совершенствовать до бесконечности, но при разработке также важен процесс и ее окончания.
bbb
Цитата(Aner @ Mar 19 2016, 15:41) *
Это не верно в корне. Поскольку вы не оперируете величинами, процентными соотношениями а только эмоциями ... короткое время, большая погрешность.

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


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

Ну и? Огласите результаты.
Проверить качество Вашего решения очень просто.
Просто поставьте Ваш определитель перемещения путем двойного интегрирования ускорения на стол. И скажите мне: за какое время он показывает перемещение 1 метр при этом оставаясь стоять на столе на том же самом месте?
Aner
QUOTE (bbb @ Mar 19 2016, 16:57) *
Какими эмоциями.
Хотите чтобы я доказывал, что 2 х 2 = 4?
Нет. Спасибо. Я пас. Мне и без симулятора ясно, что 2х2=4.

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

Какими эмоциями, какими эмоциями ... да всё теми же зелеными.

...э .. не читаем что я написал что ли ... или просто не в теме. ... какого такого еще ... путем двойного интегрирования ускорения
Не показывает мой никаких перемещений хоть за несколько сек, хоть за часы, дни оставаясь стоять на столе на том же самом месте.
bbb
Цитата(Aner @ Mar 19 2016, 16:36) *
Не показывает мой никаких перемещений

А тема называется "Оценка линейного перемещения с помощью акселерометра"
Aner
QUOTE (bbb @ Mar 19 2016, 18:12) *
А тема называется "Оценка линейного перемещения с помощью акселерометра"

ну и где тут про ... путем двойного интегрирования ускорения?
bbb
Вы не знаете что перемещение - это двойной интеграл от ускорения?

Тогда о чем вообще с Вами можно говоррить?
Rst7
Moderator: Господа, давайте-ка в конструктивном русле беседу вести в теме. Это ко всем относится. Иначе будут наказания.
Onkel
Цитата(Aner @ Mar 19 2016, 16:36) *
Какими эмоциями, какими эмоциями ... да всё теми же зелеными.

...э .. не читаем что я написал что ли ... или просто не в теме. ... какого такого еще ... путем двойного интегрирования ускорения
Не показывает мой никаких перемещений хоть за несколько сек, хоть за часы, дни оставаясь стоять на столе на том же самом месте.

вот это уже интересно. А какова математика преобразования ускорений в перемещения? И какой акселерометр, может я пропустил , у вас был упомянут L3G4200D, но это ведь гироскоп, без акселерометра, вроде так?
bbb
Aner
Как видите к Вам много вопросов.
Начнем с названия темы.
"Оценка линейного перемещения с помощью акселерометра, интегрирование данных акселерометра во время разгона"
Ключевые слова я выделил.
Т.е. из назания темы видно, что Вас интересует нахождение ПРИМЕРНОГО (Вы поэтому и написали "оценка", так как видимо и сами понимаете, что не получится получить точное значение перемещения таким способом) линейного перемещения, путем интегрирования (причем двойного, о чем Вы не сказали) ускорения, которое Вы собрались мерить датчиком ускорения - "акселерометром".

Я правильно понял задачу?
Aner
QUOTE (bbb @ Mar 19 2016, 18:31) *
Вы не знаете что перемещение - это двойной интеграл от ускорения?

Тогда о чем вообще с Вами можно говоррить?

То что перемещение это двойной интеграл от ускорения это в учебниках до вашего и моего рождения прописано.
Эта мат часть к оценке линейного перемещения, имеет отношение но это далеко не все и даже не главное для точности и отклонений. И уводить тему в обсуждение понятного двойного интегрирования нет смысла.

QUOTE (bbb @ Mar 19 2016, 20:56) *
Aner
Как видите к Вам много вопросов.
...
Я правильно понял задачу?

Вижу вы не поняли, ... думать начинаю, что вы bbb просто тролите тут.

Как раз таки я и не собирался мерить одним акселем, то о чем и писал ранее.

QUOTE (Onkel @ Mar 19 2016, 20:03) *
вот это уже интересно. А какова математика преобразования ускорений в перемещения? И какой акселерометр, может я пропустил , у вас был упомянут L3G4200D, но это ведь гироскоп, без акселерометра, вроде так?

пропустил, пропустил, ... перечитай может поймёшь.
amaora
Отвечая на исходный вопрос. Читайте литературу по инерциальной навигации, ключевые слова: начальная выставка, гирокомпасирование. Вместить полный ответ сюда никак. Если нужно продержаться лишь несколько секунд, то может быть, что-то и получится на дешевых датчиках.
bbb
Цитата(amaora @ Mar 19 2016, 22:23) *
Если нужно продержаться лишь несколько секунд, то может быть, что-то и получится на дешевых датчиках.

О чем и речь. Что за час набежит такая погрешность - что мама не горюй.



Цитата(Aner @ Mar 19 2016, 20:17) *
Вижу вы не поняли, ...

Возможно. Ну тогда поясните: какая цель? Чего Вы хотите добиться?
Onkel
Цитата(Aner @ Mar 19 2016, 20:17) *
пропустил, пропустил, ... перечитай может поймёшь.

вы уверены, что это адекватный ответ на простой вопрос: какой у вас акселерометр и какой математикой добились
Цитата(Aner @ Mar 19 2016, 16:36) *
Не показывает мой никаких перемещений хоть за несколько сек, хоть за часы, дни оставаясь стоять на столе на том же самом месте.

?
Corner
Цитата(Aner @ Mar 19 2016, 16:36) *
Не показывает мой никаких перемещений хоть за несколько сек, хоть за часы, дни оставаясь стоять на столе на том же самом месте.

К сожалению, это не может быть правдой. У всех датчиков есть такой параметр, как ассиметрия по знаку. Шум после интегрирования содержит постоянную составляющую, которая зависит от интенсивности шума и свойств датчика. Даже если датчик не испытывает ускорения. Если проще, любые датчики плывут. Если отсечь эту постоянную составляющую, датчик перестает видеть малые ускорения. Лучшие датчики дают ошибку около 1 метра на 10000 км. Но они весьма крупного размера. Никаким мемсом в соике таких характеристик не добиться.
blackfin
Цитата(Corner @ Apr 14 2016, 16:59) *
У всех датчиков есть такой параметр, как ассимметрия по знаку. Шум после интегрирования содержит постоянную составляющую, которая зависит от интенсивности шума и свойств датчика. Даже если датчик не испытывает ускорения. Если проще, любые датчики плывут.

Движение Броуновских частиц дает нам прекрасный пример "датчиков" ускорения, у которых отсутствует "асимметрия по знаку" и у которых ничего никуда не "плывет"..

И тем не менее, даже "не испытывая ускорения" под влиянием внешнего поля, эти частицы смещаются из положения равновесия! biggrin.gif
quarz
Не хочу убить энтузиазм автора, но вычислить координату двойным интегрированием показаний mems акселерометра никак нельзя. В космосе может быть, но не на Земле.

Мне показалось, что serjj не понимает, что его акселерометр измеряет не физическую величину Ускорение (которая при покоящемся акселе должна быть нулевая по всем осям), а силу, действующую на массу внутри датчика. Эта сила вызвана моментами инерции (то, что нам нужно) плюс собственный ВЕС этой массы.
Поэтому если положить аксель на горизонтальную плоскость стола - он выдаст по 2м осям 0, а по одной 1g или 9.8 м\с^2. Собственно, его показания - это сумма векторов собственного ускорения и гравитации. Поэтому для вычисления координаты надо вычесть вектор гравитации, иначе акселерометр будет улетать, увеличивая свою скорость каждую секунду на 9.8 м\c.

Когда я делал нечто подобное - наибольшую ошибку в вычисления координаты вносила ошибка компенсации вектора гравитации. Но у меня кроме акселерометра был гироскоп и магнетометр.
Onkel
Цитата(Corner @ Apr 14 2016, 15:59) *
... Лучшие датчики дают ошибку около 1 метра на 10000 км. Но они весьма крупного размера. Никаким мемсом в соике таких характеристик не добиться.

а что это за датчики? Насколько я помню вус, в мб ракетах охрененно сложное и дорогущее электромеханическое устройство "гиростабилизированная платформа" дает на 10 тыс км точность не лучше километра (кво=1.5 км), остальная точность нагоняется за счет учета топологии и спутников.
Corner
Цитата(quarz @ Apr 14 2016, 17:10) *
Не хочу убить энтузиазм автора, но вычислить координату двойным интегрированием показаний mems акселерометра никак нельзя. В космосе может быть, но не на Земле.

Мне показалось, что serjj не понимает, что его акселерометр измеряет не физическую величину Ускорение (которая при покоящемся акселе должна быть нулевая по всем осям), а силу, действующую на массу внутри датчика. Эта сила вызвана моментами инерции (то, что нам нужно) плюс собственный ВЕС этой массы.
Поэтому если положить аксель на горизонтальную плоскость стола - он выдаст по 2м осям 0, а по одной 1g или 9.8 м\с^2. Собственно, его показания - это сумма векторов собственного ускорения и гравитации. Поэтому для вычисления координаты надо вычесть вектор гравитации, иначе акселерометр будет улетать, увеличивая свою скорость каждую секунду на 9.8 м\c.

Когда я делал нечто подобное - наибольшую ошибку в вычисления координаты вносила ошибка компенсации вектора гравитации. Но у меня кроме акселерометра был гироскоп и магнетометр.

Все еще хуже. Ускорение по другим осям тоже не нулевое. Оси не идеально под 90 градусов. И просто скомпенсировать 1 g по одной из осей не выйдет. Датчик нужно калибровать, определяя взаимные проекции осей. Такая калибровка делается многократным вращением датчика вокруг осей со съемом показаний.
quarz
Цитата(Corner @ Apr 15 2016, 21:20) *
Все еще хуже. Ускорение по другим осям тоже не нулевое. Оси не идеально под 90 градусов. И просто скомпенсировать 1 g по одной из осей не выйдет. Датчик нужно калибровать, определяя взаимные проекции осей. Такая калибровка делается многократным вращением датчика вокруг осей со съемом показаний.

Да, это называется неортогональностью осей (axis misalignment). Вот описание и решение от analog.com.
Второе - это абсолютная точность. Можно также в различных положениях в покое вычислять длину вектора гравитации по показаниям акселя и вычислять коэффициенты для калибровки, чтобы она была в точности равна g в вашей конкретной точке Земли.
Еще ошибку добавляет температурное смещение нуля (zero-g temperature offset), шум (noise density).
Для гироскопов еще есть такая интересная вещь, как влияние линейных ускорений на показания, собственно, угловых скоростей.
Но все это ошибки гораздо меньших порядков по сравнению с компенсацией гравитации.

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

Из теории "равномерное движение с постонной скоростью" и добавив магнитометр не зафиксировать.
Гироскоп (в MCU6050) так накручивается, хаотично, после калибровки, что годится только снизить инерционность фильтра магнитометра.

Цитата(Corner @ Apr 14 2016, 17:59) *
К сожалению, это не может быть правдой. У всех датчиков есть такой параметр, как ассиметрия по знаку. Шум после интегрирования содержит постоянную составляющую, которая зависит от интенсивности шума и свойств датчика. Даже если датчик не испытывает ускорения. Если проще, любые датчики плывут. Если отсечь эту постоянную составляющую, датчик перестает видеть малые ускорения. Лучшие датчики дают ошибку около 1 метра на 10000 км. Но они весьма крупного размера. Никаким мемсом в соике таких характеристик не добиться.



Тот-же "MPU6050" находясь на углу стола регистрирует, легкий вертикальный толчек пальцем противоположного угла стола.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.