Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Корректировка интеграла ДУС магнитометром
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
Mityan
Кто выполнял, поделитесь, пожалуйста. Хотя бы в общих чертах.

Спасибо.

Tanya
Цитата(Mityan @ Jun 13 2012, 17:23) *
Кто выполнял, поделитесь, пожалуйста. Хотя бы в общих чертах.
Спасибо.

А хотя бы в общих чертах расскажите, что такое ДУС и его интеграл.
Mityan
Датчик угловых скоростей. Его еще МЕМС гироскопом называют.
Интегрирование сигнала ДУС по трем осям дает угловое положение объета - курс, крен, тангаж. Да вот беда - ошибка интегрирования накапливается. И хотя наше устройство лежит на столе, как мы видим глазом, все математические данные говорят о том, что оно медленно крутится.
Магнитное поле Земли относительно статично, вращение устройства приводит к изменениям проекций вектора магнитного поля на оси, из которых можно вычислить те же крен, тангаж и курс, но уже без ошибки интегрирования. Но и тут не все так просто. Вот я и решил спросить
MrAlex
Фильтр Калмана
Mityan
Спасибо за идею. А лично Вы уже проектировали такой, или просто в книжках читали, что обычно на всякую такую ерунду в БИНС калмана натравливают?
MrAlex
Принцип рабочий.
Где-то даже открытые проекты попадались.
Еще как вариант метод наименьших квадратов, но там возможны проблемы с обращением матриц.
Mityan
Принципы - да, но не совсем понятно, как их реализовывать на практике.
Магнитометр и ДУС показывают, мягко говоря, не совсем одно и то же. Когда я вращаю устройство вокруг оси чувствительности ДУС (допустим, Х, т.е. вращение в плоскости OYZ), его интеграл дает угол поворота. Ровно на тот же угол поворачивается как сам вектор магнитного поля Земли (имеется ввиду в системе отсчета устройства), так и его проекция на плоскость OYZ. Но эта проекция изменяется и при вращении в других плоскостях.
С ДУС еще одно НО: если вращать его по оси, которая не совпадает с осью чувствительности, он показывает меньшую угловую скорость (видимо, проекцию полного вектора угловой скорости на свою ось). В этом случае, например, я совершил полный оборот и положил устройство на место, а интеграл ДУС говорит, что поворот совершен, например, на 250 или сколько там еще градусов вместо 360.
Может быть, дело в том, что мне не хватает данных - вы только не смейтесь, но у меня пока один (одноосевой) ДУС, остальные заказаны, но не прибыли еще.
Известно, что zero-rate level у ДУС плавает, что может дать нам при полностью неподвижном устройстве уход угла поворота в бесконечность ос временем. Его изменения я постоянно отслеживаю и вычитаю, что избавляет нас от данного явления, но остается еще вот что: при вращениях я не могу его отслеживать. Получается: повернул, например, и вернул на место. Выход ДУС показал сначала положительную, затем отрицательную угловую скорости. Суммы этих отсчетов (положительных и отрицательных, т.е. интегралы) не равны, а это приводит к тому, что по математике устройство не вернулось в прежнее угловое положение. Образовалась ступенька, которых со временем также может набежать очень много, что даст большую ошибку.
Вот ее я и хотел корректировать магнитометром. Предполагая, что магнитное поле Земли - достаточно медленно меняющийся параметр по сравнению с маневрами устройства. Но с математикой пока разобраться не могу.
Конечно, вариант сделать алгоритм на логике, т.е. если там по такой-то си поменялось, а по такой-то нет, то этот интеграл ДУС скорректировать на столько-то. Но это очень ненадежно.
Plain
Сколько проблем, и на пустом месте. Задача решается инклинометром.
Mityan
Не уверен, что это панацея. Как инклинометр ведет себя в движении?
Полно литературы по ИНС, и везде встречаются слова "акселерометр", "гироскоп", "датчик угловых скоростей", "магнитометр". А "инклинометр" встречается редко.
Plain
Цитата(Mityan @ Jun 15 2012, 10:11) *
Как инклинометр ведет себя в движении?

Абстрактный инклинометр в абстрактном движении — естественно никак.
Tanya
Цитата(Plain @ Jun 15 2012, 11:28) *
Абстрактный инклинометр в абстрактном движении — естественно никак.

Ну... не совсем. Абстрактный инклинометр покажет вектор эффективной силы тяжести - настоящую гравитацию и все ускорения.
Mityan
Для тех, кто занимается этими датчиками - а значит, в какой-то степени и ИНС тоже - прошу глянуть мой вопрос по математике кватернионов в соответствующем разделе:

http://electronix.ru/forum/index.php?showtopic=103697
Plain
Да не поможет здесь никакая математика. Гораздо эффективнее просто локализовать ошибку примитивным способом — поставить с десяток гироскопов в разных плоскостях. А для нуля горизонта без датчика гравитации не обойтись, и компас таковым однозначно не является.
Mityan
Тут на форумах кто-то приводил ссылку на статью каких-то китайцев про MEMS gyroscope array. Но мне пока разрешен только один (ну, 3 одноосевых). Идея такая: допустим, время маневров устройства относительно мало по сравнению с временем существенного изменения вектора В (маг. поля З.), поэтому можно, сравнив путешествие этого вектора с интегралом ДУС, последний скорректировать (убрать ступеньку).\
А китайцы пишут, что при размножении датчиков точность улучшается пропорционально sqrt(N), поэтому для существенного улучшения их необходимо слишком много, особенно дешевых.
Plain
Цитата(Mityan @ Jun 18 2012, 09:38) *
при размножении

Это ни разу не равно сказанному мною.

Калибровка состоит в том, что при физическом нуле каждый из датчиков покажет свой фактический ноль.
MrAlex
Вы бы уже озвучили желаемую точность выходной информации. Если сравнимо с точностью встроенных в смартфоны девайсов, сгодится аппнот любой фирмы занимающейся производством датчиков. Поищите,я где-то здесь уже выкладывал ссылки.
Mityan
А что за датчик гравитации?
Не инклинометр, случайно, он же - акселерометр?

Точность озвучить не могу, потому как не знаю. Допустим, 3 градуса за все время. А какое время? Не знаю, ну, может часа два.

Я вижу, что когда лежит на столе - все нормально. Именно для такого режима в смартфоне и предназначено. А в движении его электронный компас не может правильно работать.
blackfin
Цитата(Mityan @ Jun 18 2012, 15:41) *
Точность озвучить не могу, потому как не знаю. Допустим, 3 градуса за все время. А какое время? Не знаю, ну, может часа два.

Допустим, инерциальные датчики с точностью 6°/час, например: ADIS16480 или G200 стОят немалых денег.. С чего бы это? rolleyes.gif
MrAlex
Цитата(Mityan @ Jun 18 2012, 15:41) *
А в движении его электронный компас не может правильно работать.

Может. И не только в движении, но и в полете.
MrAlex
ADIS16480 тоже с использованием Калмана решение считает.
SDFF
Цитата(MrAlex @ Jun 13 2012, 22:06) *
Фильтр Калмана

Фильтр Калмана - это всего лишь фильтр и ничего более.
Поясните, пожалуйста, каким образом он (ФК) может корректировать интеграл ДУС с привлечением магнитометра?
MrAlex
Пример из смежной области, но суть передана верно
http://www.robochamp.ru/index.php/articles...eringfordummies
SDFF
Цитата(MrAlex @ Jun 18 2012, 20:51) *
Пример из смежной области, но суть передана верно
http://www.robochamp.ru/index.php/articles...eringfordummies

Лучше попытайтесь объяснить своими словами, тогда вам будут понятнее ваши ошибки.
MrAlex
sm.gif sm.gif sm.gif sm.gif
Цитата(SDFF @ Jun 18 2012, 20:56) *
Лучше попытайтесь объяснить своими словами, тогда вам будут понятнее ваши ошибки.

java script:add_smilie(":)","smid_41") Своими словами я это пересказывал ровно 10 лет назад на защите.
Читайте. На английском больше информации.
В айборн левел страпдоун систем размер матрицы состояния доходит до нескольких десятков, что позволяет компенсировать не только дрейфы, но и масштабные ошибки и неортогональности, равно как и получать уточненные навигационные параметры.
SDFF
Цитата(MrAlex @ Jun 18 2012, 21:14) *
sm.gif sm.gif sm.gif sm.gif
java script:add_smilie(":)","smid_41") Своими словами я это пересказывал ровно 10 лет назад на защите.
Читайте. На английском больше информации.
В айборн левел страпдоун систем размер матрицы состояния доходит до нескольких десятков, что позволяет компенсировать не только дрейфы, но и масштабные ошибки и неортогональности, равно как и получать уточненные навигационные параметры.

Если говорить без поминания всяких матриц, то фильтр Калмана неплохо работает, например, при фильтрации измерений параметров движения объектов, падающих на голову измерителям по баллистической траектории, спутников, вращающихся по достаточно хорошо известным и повторяющимся траекториям орбит, ослика, ходящего по кругу с о стабильной скоростью и с радиусом, фиксированным веревкой, то есть там, где параметры движения достаточно хорошо известны.
Если параметры движения плохо предсказуемы, то ФК, в лучшем случае, бесполезен. Это же элементарно.
MrAlex
Цитата(SDFF @ Jun 18 2012, 21:20) *
Если параметры движения плохо предсказуемы, то ФК, в лучшем случае, бесполезен. Это же элементарно.

При наличии адекватной модели ФК позволяет оценивать даже параметры явно не наблюдаемые, основываясь только на статистической информации. Так же как и увязывать несколько измерений одной величины из нескольких источников.
SDFF
Цитата(MrAlex @ Jun 18 2012, 21:30) *
При наличии адекватной модели ФК позволяет оценивать даже параметры явно не наблюдаемые, основываясь только на статистической информации. Так же как и увязывать несколько измерений одной величины из нескольких источников.

Еще раз, где вы возьмёте адекватную модель? Практическим людям не шашечки адекватных книжных моделей, а ехать надо, вернее мерить, как они пишут,”курс, крен, тангаж”. Предложите им адекватную модель.
MrAlex
Цитата(SDFF @ Jun 18 2012, 21:38) *
Еще раз, где вы возьмёте адекватную модель? Практическим людям не шашечки адекватных книжных моделей, а ехать надо, вернее мерить, как они пишут,”курс, крен, тангаж”. Предложите им адекватную модель.

Например для тех кто спешит:
http://cache.freescale.com/files/sensors/d...T=Documentation

Доступное описание даже с кусками кода.
SDFF
Цитата(MrAlex @ Jun 18 2012, 22:13) *
Например для тех кто спешит:
http://cache.freescale.com/files/sensors/d...T=Documentation

Доступное описание даже с кусками кода.

Так, и где там “фильтр Калмана” и адекватная модель для него? Пальцем, если можно, покажите.
MrAlex
Так же по теме в картинках
http://ugorka.ivakorin.ru/viewtopic.php?f=19&t=707

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

Опять же игрушка с открытым исходным кодом
http://www.pololu.com/catalog/product/1255
Mityan
Я прошу прощения, что возвращаюсь.

Вот все-таки что нужно делать в следующей ситуации (уже описывал выше, но не заостряя внимание):
Вектор угловой скорости раскладывается по базису аналогично всем другим векторам. В результате проекции на оси чувствительности меньше его полной длины. Например, вращение происходит в плоскости, перпендикулярной 0XY под углом 45 град к осям X,Y. Тогда угловая скорость вдоль каждой из осей будет равна 1/sqrt(2), что при полном обороте даст по 255 градусов поворота по каждой оси (после интегрирования). Нонсенс! Что делать?
Масштабировать, разделив на косинус?
MrAlex
Цитата(Mityan @ Jun 22 2012, 15:43) *
Я прошу прощения, что возвращаюсь.

Вот все-таки что нужно делать в следующей ситуации (уже описывал выше, но не заостряя внимание):
Вектор угловой скорости раскладывается по базису аналогично всем другим векторам. В результате проекции на оси чувствительности меньше его полной длины. Например, вращение происходит в плоскости, перпендикулярной 0XY под углом 45 град к осям X,Y. Тогда угловая скорость вдоль каждой из осей будет равна 1/sqrt(2), что при полном обороте даст по 255 градусов поворота по каждой оси (после интегрирования). Нонсенс! Что делать?
Масштабировать, разделив на косинус?

А ничего делать не нужно.
Общее количество движения будет правильным.
Mityan
Заметил, что магнитометр обладает инерционностью. Изменения его вектора приблизительно на полсекунды отстают от действительных движений. Поэтому, наверное, кроме логического алгоритма - если горизонтальная составляющая вернулась в исходное положение, то обнулять интеграл ДУСа - иного нет.
iiv
я смог достичь повышения точности (примерно в 100 раз уменьшился дрифт, и в 10 раз точность измерения Элеровких углов), поставив 8 раз по 3Д магнетометру, 3Д акселометру, и 3Д гироскопу, разбросав из более менее равномерно внутри коробки (кубик 10см). А результаты пришлось от температуры табулировать, и пересчитывать значения с пары акселлометров на значение в гироскопе, и, понятно, все в наименьшие квадраты. Реально 9 арм еле-еле с этой задачей справляется, у меня результаты с хорошей точностью сыпятся только с задержкой в 10секунд. Бюджет только компонент почти дошел до штуки бакс. Так что думайте сами, стоит ли оно Вам.
Mityan
А зачем все-таки вам магнитометры 8 раз?

(напомню, что с этого вопроса начинался топик).

Я тут на матлабе накропал алгоритмик. Учитывая, что по крену-тангажу аппарат стремится всегда выровняться, обрабатываю сигнал одного единственного дешевого ДУСа (ENC-03R) без использования чего бы то ни было, так, что, когда качаю девайс туда-сюда в разные стороны с разной амплитудой и скоростью и возвращаю на место в исходное положение, интеграл ДУСа тоже возвращается на место (с ошибкой редко когда до 10 градусов). По крайней мере, самопроизвольных уплывов в бесконечность нет уже.

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

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