Система стабилизации гиро+акселерометр
Судя по постановке вопроса аффтором: он из той категории, которые хотят, чтобы им “быстренько объяснили теорию вероятности” 😃
Вы ошибаетесь. На проект думаю отвести до полугода, предпочту долгую плодотворную дискуссию разработкам “на салфетке”
2 Фантомас: Smalltim и Botvoed, профессиональнейшие люди- не первый год трахаются с этой проблемой
И “шарят” они- не меньше вашего, уж точно…
Кто ж спорит.
Дмитрий, самым лучшим приложением ваших сил будет, если вы напишете свою версию к имеющемуся дешевому китайскому железу (fy20).
Для этого нужно понять принцип работы системы, следовательно смотрим пост №1.
Теперь огромнейшая просьба! Обращаюсь не конкретно к кому-то, а вообще!
Кому нечего сказать именно по теме вопроса - не пишите сообщения!
Объясните в целом алгоритм работы таких систем стабилизации. Назначение гироскопа в принципе понятно - при наличии угловых скоростей попытаться скомпенстровать их рулями, а вот какова там роль акселерометра? Как они дополняют друг друга? Есть ли акселерометры, которые кроме скалярной величины ускорения выдают ещё и направление вектора?
Стабилизатор выполняет две функции: 1) компенсации возмущений (например, ветер); 2) поддержания горизонтального (относительно земли) положения модели в нейтрале, или удерживания любого заданного угла к горизонту.
Первую задачу выполняют в основном гироскопы. Вторую задачу решают акселерометры. Так как в полноценной системе стабилизации используется три гироскопа и три акселерометра, их показания дают два 3-х мерных вектора: кажущийся вектор силы тяжести G (акселерометры) и вектор угловых скоростей (гироскопы). Задачи алгоритма стабилизации:
- Определять моменты, когда модель летит равномерно и прямолинейно. При этом акселерометры дают положение земли (вектор G) непосредственно.
- В ускоренном и непрямом полете показания гироскопов (и иногда и акселерометров) интегрируются во времени, для отслеживания измненений положения модели относительно земли.
- На основании угловых скоростей и вычисленного положения относительно земли, регуляторы системы стабилизации (например, ПИД) вырабатывают воздействия на управляющие поверхности модели (сервы) с целью компенсации отклонений в полете.
хочется сделать самому, ибо в электронике шарю
Дмитрий, здесь электроника не так важна - она примитивна. Главное хорошие знания математики (от ПИД регулятров и КИХ фильтров до фильтра предсказаний Кльмана). У Вас есть опыт и соответствующее образование?
Уже что-то…
Правильно ли я понял, что задача акселерометра - определить момент, когда ускорение стало отличаться от некоего заданного значения (скажем, G), в этот момент мы и подключаем гироскоп для отслеживания угловой скорости и по данным обоих приборов (центростремительное ускорение и угловая скорость) можем определить нормаль к горизонту? Если вращение отсутствует, то тут вступает в действие свой алгоритм (скажем, если термиком подбросило), если вращение есть - вычисляем угол поворота (вот тут, как сказал baychi, нужно будет интегрировать), соответственно компенсируем его, проверяем, чтобы вектор ускорения опять был равен G.
Правильно ли я понял?
По реализации алгоритма, конечно, гемороя наберётся…
а еще гироскопы надо термокомпенсировать, чтобы не было такого п**деца как с фишками
Правильно ли я понял, что задача акселерометра - определить момент, когда ускорение стало отличаться от некоего заданного значения (скажем, G),
Не совсем. Главная цель - знание реального вектора силы тяжести G в любой момент. Так как именно он определяет ориентацию модели относительно земли.
Если вращение отсутствует,
Если отсутствует вращение и линейное ускорение, 3 ортогональных акселерометра дают вектор G непосредственно.
По реализации алгоритма, конечно, гемороя наберётся…
Опять спрошу: у Вас есть соответсвующее математическое образование и опыт программирования?
Возвращаясь к дрейфу гироскопов, термостатирование, экранировка и прецизионное питание могут решить проблему дрейфа?
Два года разрабатываю всякую мелочь на базе AVR. По математике… Скажем так: есть человек, великолепно знающий математику, который с радостью втянется в такой проект. Но надеюсь сам осилить.
Такой ответ Вас устроит?
Возвращаясь к дрейфу гироскопов, термостатирование, экранировка и прецизионное питание могут решить проблему дрейфа?
Абсолютно - нет. Так как есть еще квантование АЦП и временной дрейф.
Построить систему ориентации только на гироскопах практически невозможно (инерциалки балистических ракет не в счет - эти модули миллионы долларов стоят).
разрабатываю всякую мелочь на базе AVR
AVR-ки может не хватить. Лучше бы ARM или DSP архитектуры.
есть человек, великолепно знающий математику, который с радостью втянется в такой проект. Но надеюсь сам осилить.
В команде с математиком - справитесь, если не остынете. 😃
Удачи!
Просто начинаю догадываться, как китайцы фишку замутили… Тупо интегрируют показания гир, а по акселям ловят момент: как только результирующий вектор равен 1G, начинают медленно сводить вектор интеграторов к вектору акселей простым сложением/вычитанием.
[add]
у них на сайте видео было, где чувак вертит в руке прибор, а на мониторе 3Д-кубик вращается синхронно. Заметил минимум 2 момента, когда куб был градусов на 40 повернут в другую сторону, но тут же кадр видео сменялся 😃
начинаю догадываться, как китайцы фишку замутили… Тупо интегрируют показания гир, а по акселям ловят момент: как только результирующий вектор равен 1G, начинают медленно сводить вектор интеграторов к вектору акселей простым сложением/вычитанием.
Совершенно верно.
Тонкости только 2, как правильно поймать |G|=1, и что делать если |G| != 1 долгое время? Здесь то фишку и начинает колбасить. 😃
что делать если |G| != 1 долгое время?
как это что? яростно мигать синей лампочкой 😁 Потому и не умеют они вибрацию держать, когда кончик вектора круги описывает.
Эта часть вопроса как раз и определяет разницу между сотней уе и миллионом
длина G=1 калибровалась, судя по всему, в глухих китайских бараках 1 раз применительно к конкретному типу акселя.
длина G=1 калибровалась, судя по всему, в глухих китайских бараках
Если вообще калибровалась. 😃 (Да нет, шучу, калибровалась).
Но ИМХО, основные проблеммы у них с гирами, а не с акселями…
Или, что еще дешевле, обратить внимание на MultiWiiCopter
есть человек, великолепно знающий математику
Не поможет. Математически точно не описывается, потому что неизвестны 90% параметров.
Основная проблема во всех стабилизаторах - подбор коэффициентов (хотя бы те же банальные ПИД регуляторы).
Когда есть коммерчески готовая модель аппарата, то там проще, можно и опыты ставить и просчитывать пробовать, а вот когда модель неизвестна…
Простой пример: стабилизатор на модели типа ЛК с абсолютно плоским профилем(для простоты расчетов). Вылизали, подобрали коэффициенты, все работает. А теперь изменили угол установки ушей. Или увеличили киль. Что с коэффициентами делать? Я даже не спрашиваю, на какую абсолютную величину менять! Хотя бы покажите, в какую сторону их менять?
Есть такая наука - теория систем автоматического управления. Как раз про то, как делать всякие стабилизаторы и автопилоты. Ей учат в институте. Несколько лет. Это к вопросу о “быстренько на пальцах”.
Если Вы грамотный инженер, возьмите книжек по теме, почитайте, разберитесь. Поищите информацию о готовых реализациях алгоритмов управления - они в интернете есть. Разберитесь, как оно работает, а потом делайте свое.
Ключевые слова - САУ, цифровые системы управления, гиростабилизатор…
Начать можно отсюда gluonpilot.com/wiki/Main_Page
Как использовать калман фильтр - можно почитать тут tom.pycke.be/mav/71/kalman-filtering-of-imu-data
Я на базе этого алгоритма делал стабилизацию. Вполне адекватно работает.
Я на базе этого алгоритма делал стабилизацию. Вполне адекватно работает.
А Вы коррекцию горизонта как то обеспечивали?
А Вы коррекцию горизонта как то обеспечивали?
Фишка в том,это часто упускается при рассмотрении задачи, что наш аппарат не в вакууме и не в космосе, соответственно, если рассмотреть , для простоты, падающий шар в воздухе, то через какое то время он будет падать равномерно,т.е. без ускорения, за счет сопротивления воздуха и аксселеромеры покажут верное направление вектора гравитации. Это значение позволяет корректировать интегралл угловой скорости с гироскопов. Ну и так далее.
Покажут конечно, главная сложность понять в какой момент… Можно в простейшем случае для этого просто усреднять значения аксселя. Но время усреднения должно быть гарантировано больше любого мыслимого маневра с многократным запасом, и в то же время должно быть меньше времени ухода 0-ля гироскопа. С другой стороны это время можно уменьшать используя данные гиро о отсутствии угловой скорости. Те. значения нуля (интеграл гир) корректируется с некоторой постоянной времени усредненным ( с адаптивным временем усреднения по значению гиро) значением акселя. И обеспечить устойчивость и быструю сходимость всей этой байды…
Ну и так далее.
Фишка- именно в этом “так далее” 😃
Аппарат то не в воздухе падает, а в поле тяготения земли летит. А Земля-ещё и вращается.
И сила Кориолиса- зависит от широты места и курса аппарата относительно сторон света.
Поэтому, ввести какую то константу для коррекции- нельзя, ибо она будет другая в каждую следующую минуту 😦.
Для этого и используют ЗД магнитный компас, поскольку ему Кориолис-по барабану.
А для полного счастья- вводят ещё и коррекцию от ЖПС, который может показать, что началось скольжение (изменение курса и высоты), которого быть не должно, поскольку никаких команд от пилота-автопилота не поступало.
Тут то и корректируют “0” горизонта.
Именно поэтому ФИ 20 и работает горбато, стоит измениться на 10 градусов температуре.
А как они на Кориолиса реагируют- вообще непонятно, без компаса и ЖПС а то?
А как они на Кориолиса реагируют- вообще непонятно
Да никак они не реагируют. Чай модель не маятник Фуко и не ракета баллистическая, чтоб десятки минут по кругу летать. 😃