Kalman и mpu6050 (gy521)
- Войдите на сайт для отправки комментариев
Втр, 23/05/2017 - 18:48
Здравствуйте! Помогите мне "подружить" mpu с фильтром kalman. Знаю, статей много, но почему-то у меня эти коды не работают (сначала всё нормально, секунд через 10-20 показания не обновляются).
Здравсвуйте.
ну, во-первых, с таким вопросом Вам тут никто помогать не будет. Чтобы Вам помогали, Вы должны опубликовать постановку задачи и всё, что у Вас уже сделано (код, схему) и задать конкретные вопросы. А "помогите подружить" - это не конкретный вопрос. Как Вам на него отвечать? Ну, заставьте их взяться за руки и пусть дружат.
Тем не менее, несмотря на полное отсутствие информации (Вы же ничего не сказали), рискну предположить, что Ваша проблема не "в дружбе", а в непонимании математики, которая стоит за Калмановской фильтрацией. Если бы Вы её понимали, Вы не стали бы применять этот фильтр к данной задаче (хотя и про задачу Вы тоже ничего не сказали, так что это опять-таки только моё предположение.
Ну, вот, например, Вы знаете, что фильтр Калмана хорошо работает только в задачах управления динамическими системами, которые априорно известны. Т.е. в тех случаях, когда Вы точно знаете как должна вести себя система. А в условиях, когда поведение системы заранее неизвестно (почему-то я думаю, что это Ваш случай), он работает гораздо хуже. Опять же, хотя это и рекурсивный фильтр, т.е. фильтр реализуемый во времени, а в частотах, и погрешности в нём представлены белым шумом, всё равно его использование предпочтительно с цветным шумом, а с белым шумом он в принципе работает, но там масса нюансов. А какие шумы в Вашей задаче? (только не говорите, что абсолютно белого шума не существует в природе - я это знаю)
В общем, Вы выбрали очень сложный фильтр и если Вы не специалист в теории управления, то помочь Вам трудно. В любом случае, обязательно сделайте то, что я описал в первом абзаце. Иначе Ваши шансы получить здесь хоть какую-нибудь помощь равны нулю.
Ого вывалили, а вдруг у него просто переполнение разрядности через 20 сек ;)
По сути. Да нужно описывать задачу и код выкладывать. Хотя шансов найти ошибку в таком аналитически мало. Отлаживатся надо Вам.
//Калмана хорошо работает только в задачах управления динамическими системами, которые априорно известны.
Так задачи определения гироскопическим датчиком положения и скорости как раз такие. Известно что эти величины не изменяются мгновенно. Этого достаточно для обоснования применения кальмана.
Ну, мы пока не знаем что там за задачи. Там ведь дело не в плавности изменения, а в наличии адекватной математической модели системы. Если её нет, то этот фильтр теряет половину своих преимуществ.
Так без разницы ))) Датчик, и то к чему его прикрутили - тела материальные положение и скорость мгновенно не изменят. Вульгарная физика ставит на месту и матмодели и алгоритмы. И факт "плавности" неоспорим. С математической точки зрения изменение гладкое, без перегибов, потому кальман эффективен. А вот ускорение таким свойством не обладает, там кальман сомнителен, и действительно уже зависит от известности других св-в системы, двигателя например.
Ого, ладно, исправляюсь.
Делаю 3-х осевой стабилизатор (какие двигатели ещё точно не решил). Имеется датчик mpu650, естественно ардуин'ы (и uno, и mega) и все остальное. Решил начать с самого начала, а именно - с получения данных о изменении положения. Т.к. датчик накапливает большую погрешность(серез несколько минут будет повернут фиг знает куда) , решил использовать фильтр. Вспомнил, что где-то видел, как mpu6050 использовали с фильтром Калмана. (Вообще не важно, что там за фильтр, если есть что получше - то и это можно использовать).
Особо ничего не сделал. Посмотрел статейки, подключил, код скопировал, *не работает*, код посмотрел, *опять не работает*, залил на arduino mega, *снова не работает*. Не работает - показания медленно становиться стабильными, а потом не изменяются вообще, просто "зависает", никакого обновления данных. Как была последняя строчка, так и осталась.
В общем - прошу, чтобы помогли (в программировании не спец., но думаю это и понятно) сделать эту часть скетча (что проверить надо, может откуда взять код или вообще другой фильтр какой использовать....)
Ого, ладно, поможем.
Здесь.http://arduino.ru/forum/apparatnye-voprosy/giroskop-gy-521-na-osnove-mpu-6050#comment-80229
//датчик накапливает большую погрешность(серез несколько минут будет повернут фиг знает куда)
Это не инженерная форма изложения проблемы. У меня азимут уходит дето со скоростью 0,01-0,1град/сек.
И это просто лежа на столе. При вибрации и ускорениях еще хуже.
Кальман от дрейфа не поможет вобще никак.
Хочется получить точней, чтоб не уходило часами - это к ракетчикам, только прайс не порадует. Еще точней, чтоб месяцами не уходило - к подводникам, но кроме прайса еще масса огорчит.