Наблюдаются угловые скорости (от гироскопов), сила тяжести (от акселерометров) и положения ручек передатчика. Дальше есть два режима: более простой, когда акселерометры не используются -- вычитаем сигнал от гироскопов из положения ручек и засовываем в PID-контроллер; его выходами питаем моторы. Второй -- вычисляем текущее положение прибора в пространстве, для этого интегрируем гироскопы и корректируем с помощью акселерометров, чтобы ноль не уплывал; всё это в координатах крен-тангаж. Потом вычитаем из крена и тангажа положения ручек и засовываем в PID. Выход PID рассматриваем как углвую скорость, которую надо обеспечить (чтобы достичь нуля в разности ручек и крена/тангажа). Эту необходимую скорость вычитаем из текущей и засовываем в ещё один PID.
18 каналов -- 3 гироскопа, 3 акселерометра, 5 входов от передатчика, 4 выхода на моторы, крен, тангаж, время оборота основного цикла (кстати, 3мс, причём это определяется задержкой, быстрее не умеют работать датчики).
Про коррекцию по акселерометрам: Считается, что их показания дают только силу тяжести, а все линейные ускорения фильтуются? У тебя эта коррекция как-то странно происходит, мне кажется: сейчас любое положение считается горизонтальным (с большой постоянной времени), а надо бы, чтоб горизонталь выставлялась по акселирометрам (тоже с большой постоянной времени).
"4 выхода на моторы, крен, тангаж, время оборота основного цикла" - не понял, что это за 7 независимых параметров и что из них выходы контроллера?
А как ты параметры PID выбираешь? Кстати, казалось бы, привязанность на веревочку должна сильно менять свойства этой системы. Хотя может и не сильно: если веревочка в центре, то она не должна давать резких изменений угловых скоростей, а резкие линейные ускорения должны все равно фильтроваться...
Еще, кстати, вариант отладки - шарнирно закрепить центр и вообще не думать про линейные ускорения.
Про акселерометры -- да, поскольку они усредняются по примерно полутора-двум секундам, линейные ускорения должы бы фильтроваться. Про странность коррекции -- там отвалился проводок, и показания акселерометра не зависили от положения аппарата, поэтому и наблюдался этот эффект выравнивания. Когда я припаял проводок обратно, он перестал выравниваться на горизонталь, и стал приходить к правильным углам.
Про 7 параметров: выходы на моторы это выходы контроллера; крен и тангаж -- его внутренние расчёты (как раз из усреднённых акселерометров и гироскопов), время основного цикла -- просто время :) Если цикл успевает меньше, чем за 3мс, он ждёт, пока не пройдёт 3мс -- раньше нет смысла опрашивать датчики. Но если вычислений слишком много и цикл тормозит, то это число увеличивается, и это можно увидеть.
Параметры PID я подбираю методом тыка... А как ещё?
Шарнир в центре как-то вряд ли получится сделать хорошо... Лучше уж одну сторону закрепить.
О, это надо попробовать! Но сначала посмотреть всё-таки на графики (хоть и непонятно, как!) А то я как-то расстраиваюсь, что всё управление получается бинарным -- сначала мотор на всю мощность, потом совсем выключен, потом опять...
Comments 10
И как устроена стабилизация: что наблюдается, чем управляется, как выбраны параметры этого управления?
Reply
18 каналов -- 3 гироскопа, 3 акселерометра, 5 входов от передатчика, 4 выхода на моторы, крен, тангаж, время оборота основного цикла (кстати, 3мс, причём это определяется задержкой, быстрее не умеют работать датчики).
Reply
Считается, что их показания дают только силу тяжести, а все линейные ускорения фильтуются?
У тебя эта коррекция как-то странно происходит, мне кажется: сейчас любое положение считается горизонтальным (с большой постоянной времени), а надо бы, чтоб горизонталь выставлялась по акселирометрам (тоже с большой постоянной времени).
"4 выхода на моторы, крен, тангаж, время оборота основного цикла" - не понял, что это за 7 независимых параметров и что из них выходы контроллера?
А как ты параметры PID выбираешь? Кстати, казалось бы, привязанность на веревочку должна сильно менять свойства этой системы. Хотя может и не сильно: если веревочка в центре, то она не должна давать резких изменений угловых скоростей, а резкие линейные ускорения должны все равно фильтроваться...
Еще, кстати, вариант отладки - шарнирно закрепить центр и вообще не думать про линейные ускорения.
Reply
Про 7 параметров: выходы на моторы это выходы контроллера; крен и тангаж -- его внутренние расчёты (как раз из усреднённых акселерометров и гироскопов), время основного цикла -- просто время :) Если цикл успевает меньше, чем за 3мс, он ждёт, пока не пройдёт 3мс -- раньше нет смысла опрашивать датчики. Но если вычислений слишком много и цикл тормозит, то это число увеличивается, и это можно увидеть.
Параметры PID я подбираю методом тыка... А как ещё?
Шарнир в центре как-то вряд ли получится сделать хорошо... Лучше уж одну сторону закрепить.
Reply
Reply
Reply
Leave a comment