OSD на ATmega1281
Почему уставки (целевые значения) константы? Даже для спокойных режимов, типа RTH, они непрерывно меняются. Весь смысл Д-ветви ускорить и вовремя затормозить (демпфирование) выходное управляющее воздействие именно на основании скорости изменения ошибки заданного значения (например целевого крена) и текущего, а не выходного параметра.
Уставки константы потому, что они по сравнению с собственно креном и тангажом меняются медленно-медленно. Можно считать константами.
Д ветвь можно сделать и с уставками, и без их учета. В моем варианте, без их учета, Д работает просто как достаточно медленная гиро, что, тем не менее, давит резкие изменения углов.
Пока не могу понять, где у Вас проблема. Может, со знаком Д ошибка? 😃 У меня толпа самых разношерстных самиков летает, обычно никаких проблем.
Д по курсу тоже штука интересная. Его учитывать надо не всегда. Я остановился на плавном сведении КУ на Д в 0, когда целевой и текущий курс отличаются больше, чем на 90 градусов и ограничении как величины Д по курсу до 90 градусов, так и собственно скорости разворота модели.
При этом на всем диапазоне входных условий сохраняется устойчивость, а близко к целевому курсу включается Д и давит переруливание по курсу.
Если нужно, могу кусочки кода скинуть.
У меня для курса->крена была мысля отключать И-ветку при больших расхождениях. Типа для грубой установки курса хватит и П-ветки, и не будет накапливаться интегральная ошибка, которая в основном и вызывает перерегулирование. А для точной доводки включается И-ветка и аккуратно триммирует направление. Но пока не рискую далеко уходить от канонов ТАУ.
Если нужно, могу кусочки кода скинуть.
Конечно было бы интересно… Хотя бы в псевдокоде.
У меня для курса->крена была мысля отключать И-ветку при больших расхождениях.
И ветви я вообще везде искоренил нафиг. Очень много геморроя от них. Но, думаю, начну осторожно вводить, сначала в тангаж-высота, потом в крен-курс.
Коллеги, спасибо за _интереснейшее_ чтение. Прочел ветку запоем, как художественную литературу.
Может самым красивым решением будет в качестве дифференциатора использовать ФВЧ 1-го порядка например БИХ? А частоту среза определить постоянной времени дифференцирования.
Я smalltim’у три года назад уже пытался сосватать реализацию IIR (БИХ) фильтра второго порядка (а следовательно, и любого - каскадным соединением звеньев 2-го и 1-го порядков). Есть ФНЧ, ФВЧ, ПФ. Вам, случайно, не нужна ? 😃
проект будет в коммерческое русло переходить? очень заинтересовал, прочел запоем
проект будет в коммерческое русло переходить? очень заинтересовал, прочел запоем
Это как это… It up to you. Пока денег не просили, там и без этого трат не меренно, штрафы всякие и все такое (all included:) big brother) . Еще делать тоже не меренно. Как в Бумбараше… закопать живьем мерзавца.
2smalltim Все-таки не очень понимаю логику Д-ветви только по углу а не по ошибке… Получается, что это ветвь будет сопротивляться изменению например крена даже при изменении целевого угла (например быстрое перемещение стика в режиме стабилизации), а должна и может помогать…
С “И”-веткой вроде бы проблем никаких, главное сделать правильно ограничение относительно границ выходного параметра. Очень полезная штука, например для того же крена устраняет неизбежную статическую ошибку от избыточной устойчивости и от неидеальности триммирования итп. Да и ветерок может давать приличную стат. ошибку, причем разную в зависимости от его направления к самолету и его текущего крена.
Долго экспериментировал с ПИД в своей сим-модели, пока остановился на таком решении- Д-ветвь - классическая реализация, а уже после суммы P+I+D экпоненциальный фильтр. Такое решение дает одинаковую задержку для всех копонентов регулирования (по сути просто увеличивает “транспортную” задержку системы в терминах ТАУ), и объект ведет себя более устойчиво для разных коэффициентов. К сожалению качество фильтрации эксп.фильтром не самое лучшее… Или остается довольно большие пульсации или “съедается” амплитуда в первую очередь D-ветки. Наверное попробую на выход поставить ФНЧ “настоящий” БИХ второго порядка. Глянул свои закрома, когда занимался ЦОС, нашел только свою программку расчета коэффициентов Чебышева-1 рода и Баттерворта. Для нашей задачи думаю лучше использовать Бесселя, как дающего линейную ФЧХ.
2РД00 Может у Вас где завалялся расчет именно по Бесселю? Вспоминать по серьезному опять ЦОС жутко лениво, кучу времени уйдет…
проект будет в коммерческое русло переходить?
Вообще приятно сознавать, что проект пользуется интересом (судя по кол-ву просмотров). Но он слишком далек от уровня plug-and-play, и значит практически интересен только достаточно узкому кругу продвинутых пользователей. И я (пока?) морально не готов нести риски, вкладываясь в производство хотя бы китов… Тем не менее удивляет, что кодер из соседней ветки народ повторяет пачками, а на этот проект похоже решился только Vlado… Может потому, что (пока?) исходники зажал… 😃
Чуть позже может выложу кусочек видюшки крайнего полета 26/06/11 для оценки качества стабилизации в ощутимый ветерок.
… а на этот проект похоже решился только Vlado…
морально готовлюсь повторить , но с учетом моего уровня, опасаюсь замучить Вас вопросами 😃
Переходные отверстия с *металлом*, вот это уже солидно! Поздравляю!
Переходные отверстия с *металлом*, вот это уже солидно! Поздравляю!
А что есть другие варианты? Надеюсь что я удалюсь на некоторое время, запуск потом. ИМХО ждут massive флашмобы и все такое, главное что б без мордобоя и эксцессов и разводилова. Как в Питере намедни, ну почти…
[QUOTE=Vlado;2671082]
Симпатично вышло:) а у меня всё руки не доходят до поддержания прокта:( уже даже носитель облётан:)
[QUOTE=Иван;2672115]
Симпатично вышло:) а у меня всё руки не доходят до поддержания прокта:( уже даже носитель облётан:)
А мне до носителя, расти и расти.😦
есть вопрос(велосипедного характра:) - если для стабилизации использовать 2 акселя 3х осевых(mma7455 есть пара в наличии караз) + калибровать их периодически на прямых участках с использованием GPS ? реально?
просто изучая на них инфу и подключив один увидел что ось Z “знает” в каком положении чип относительно ее даже если сбросить питалово и повернуть а потом опять включить - покажет новое значение… в доке говорят что он по ней калибруется.
реально?
Практически нет. калибровать можно только неподвижный акселерометр. А ЛА трудно назвать неподвижным в полете 😃
а если относительная калибровка? по типу - если в по итогам руления стабом на участке виден уход с курса то попровить, добавить поправку аля псевдо искуственный интеллект:) ?
Это не калибровка акселерометра получится, а калибровка обсчитывающей системы 😃 Погрешности и ограничения акселерометра останутся.
С другой стороны, самой стабилизации это не мешает, если это именно стабилизация в помощь управлению, а не автопилот с долговременной автономной стабильностью 😃
Точно - напутал с определениями:)
аксель калибруем на земле, при общем старте системы.
На акселе стаб сделать можно? плыть он может во и эту ошибку можно корректировать по сверке целевого и текущего курсов(это в режиме автопилота)
в ручном можно корректироваться относительно положения когда оператор не рулит(обычно когда летим по прямой).
Нормальная схема?
На акселе стаб сделать можно?
Можно, но весьма хреновую стабилизацию 😃 Датчики углового ускорения (гироскопы) для этих целей гораздо лучше. Акселерометр, например, практически не заметит поворот вокруг своей оси, зато прекрасно заметит снос вместо поворота. Это, может быть, можно использовать в стабилизации по высоте полета, добиваясь нулевого вертикального ускорения, но чревато большими ошибками при стабилизации курса, крена, тангажа.
плыть он может во и эту ошибку можно корректировать по сверке целевого и текущего курсов
Не совсем понял мысль 😃
Вы сначала определитесь точно что хотите стабилизировать и удерживать - курс, высоту, крен, тангаж?
Вообще, все динамические датчики имеют некую погрешность в измерениях плюс погрешность снятия и обсчета их показаний. Эти погрешности накапливаются с количеством измерений и корректировок. Поэтому такие датчики могут использоваться только для краткосрочной стабилизации, а для долговременного удержания нужно иметь еще и какие-то датчики абсолютного значения. Для курса - GPS, для крена и тангажа - пиро- или оптические датчики горизонта.
То есть акселерометры или датчики угловых ускорений служат только для выправления положения при внешних воздействиях (ветер дунул, восходящий-нисходящий поток попался и т.п.), а общую “стратегию” полета держат GPS и датчики горизонта. Получили данные с гироскопа о том, что произошел несанкционированный поворот на 2 град, тут же выправили его на эти 2 град. Но общий курс при этом контролируется по показаниям GPS.
как раз и получается то, о чем Вы писали:
по типу - если в по итогам руления стабом на участке виден уход с курса то попровить, добавить поправку
с немного другими приоритетами: стабилизацией удерживаем от резких сносов-разворотов тот курс, который постоянно задается и контролируется по показаниям GPS 😃
ИМХО аксель+GPS- получить крен/тангаж нереально. Гира+GPS вполне реально, но потребует кучу обязательных условий проведения полета в тч. отсутствие ветра. Гира+аксель+компас+GPS… уже серьезный алгоритм с серьезными требованиями к вычислительной мощности и большой вероятностью, что на место снятия явных ограничений условий полета, появятся куча менее явных и абсолютно неожиданных… Примеры, думаю, всем очевидны…
Поигрался маленько с уровнями видео и с пост цветокоррекцией в VDub… Оказалось что-то можно выжать даже из моей курсовой камерки.
Режим взлета теперь из двух фаз:
первая (“Takeoff” мигает) удерживание крена в ноль и ограничение тангажа(наверное лишнее). На видео видно, как подхватывает и выравнивает самолет даже из жутко кривого броска. После набора заданной мин скорости и заданого мин удаления, переход ко второй фазе- удерживание курса определенного в первой фазе и попытка занять целевую высоту. После заданного удаления или занятия целевой высоты,- авто-переход к RTH.
Наконец решился отлететь на этом самолетике на километрик… Почти весь полет в режиме удержания курса/высоты (LOCK). Ветерок болтал самолетик и, честно говоря, не дал насладиться полетом.
Кстати, никто не спрашивает, может очевидно… но навсякий, из серии- знаете ли вы?..
Пунктирная линия авиагоризонта- целевые крен/тангаж, сплошная текущие.
Треугольники под шкалой компаса и слева шкалы высоты- целевые курс и высота.
Может еще что не очевидно, спрашивайте…
ЗЫ Почему то видео при просмотре прямо с сайта стробит… А если зайти на youtube, там все нормально… Это только у меня?