дальность полета
Да ветер на верху это попа, я както раз при штиле у земли взлетел метров на 400 в высоту и летел на себя на среднем газу, но стрелка направления на точку старта показывала назад, и с ее точки зрения была права потому что на самом деле самолет не летел ко мне (хотя был повернут в мою сторону) а удалялся от меня, причем GPS показывал скорость 15-20км/ч ))) Прилететь обратно удалось только пикированием с полным газом
Поверю Вашему авторитету.
Возможно у меня проблемы связанные с тугим ходом рулей на планере ( по этой причине не четкая отработка команд -с гистерезисом) и плохой настройкой автопилота.
Не ответите ли на пару вопросов ?
//--------------------///
А логгера пока нет.
Колебания могут быть равные удвоенной точности вашего приемника, ну еще поправка на инерционность модели и системы управления. А что он (приемник) определяет в динамике, а не в статике- это вопрос 😃
Далее, разрешающая способность важнее точности, можно отфильтровать средний курс на 3-4 периодах измерения и рулить “медленно, но верно”.
Настройка ПИД регуляторов наиболее просто делается по методу Зиглера-Никольса.
(гугл в помощь) http://www.google.ru/search?q=%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%83+%D0%97%D0%B8%D0%B3%D0%BB%D0%B5%D1%80%D0%B0-%D0%9D%D0%B8%D0%BA%D0%BE%D0%BB%D1%8C%D1%81%D0%B0.&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a
Постепенно увеличивая пропорциональную составляющую, вводите систему в колебания. Далее, измеряете период колебаний. И выставляете коэффициенты.
Колебания могут быть равные удвоенной точности вашего приемника, ну еще поправка на инерционность модели и системы управления.
А мощность двигателя равна длине самолета, поделеного на силу вращения колес.
Ну а если серьезно…
Я знаю довольно хорошо принцип работы только одного автопилота, одного из первых доступных и очень удачных OSD - Dragon OSD, созданного прекрасным инженером Daniel Wee из Сингапура, который сейчас создал DragonLink - радио для полетов на дальние растояния (UHF, FHSS, 500mW) и работает над дешевым IMU. Код этого автопилота был открыт и после первых экспериментов с автолипотом, я стал разбиратся, как он работает. Все последушие автопилоты RV, Eagle Tree Pro OSD и наверное Ардупилот (с которым я не знаком, но предположу, что принцип похож) работают похоже.
Самый главный параметр - что-то типа gain. Он отвечает как сильно руль направления реагирует на ошибку в курсе, некий коэффициент пропорциональности между углом (между направлением на “дом” и текущим смещением) и добавкой к повороту руля направления. Обычное его уменьшение приводит к меньшей чувствительности автопилота и прекрашаяет колебания. Стоит заметить, что если вы находитесь близко с “дому”, то колебания возможны просто потому, что небольшое отклонение от курса уже приводит к большой ошибке. Но это простимо, так как на таких растояниях (меньше 100-200 м) автопилот не нужен.
Вообще, есть еще много параметров (вроде максимальной ошибки, максимальной скорости поворота и т.п. что-то лень про них сейчас писать, если это не нужно), но попробуйте сначала изменить этот параметр, этого может быть достаточно.
И вот еще вспомнил. Если есть такой параметр как максимальная скорость поворота и если она маленький, то это тоже будет приводить к колебаниям. Введен был этот параметр для того, чтобы некие не очень устойчивые самолеты без системы горизонтальной стабилизации не опрокидывались. Но если вдруг за один такт работы автопилота, что обычно пределяется частотой GPS антенны (или за характерное время, в драгоне это порядка 3х тактов) самолет повернул слишком сильно - автопилот резко крутанет его в другую сторону, затем опять будет превышение лимитов поворота, и так далее, кто приводит к колебаниям. То есть как не странно, максимальную скорость поворота надо задавать достаточно большой, а реально скорость поворота (чувствительность) ограничивать gainом.
>А мощность двигателя равна длине самолета, поделеного на силу вращения колес.
Бугога. А далее по тексту ваще сплошная бугога. Угощайтесь помидорчиком, гуру, пока читаете, что же все-таки такое ПИД контроллер.
serj, судя по тому, что написал гуру, никакого ПИД по курсу ни у кого нет, а есть только П, поэтому Ваши советы при Зиглера-Николса мимо кассы. Я горожу ПД, поэтому, если позволите, подергаю в личку…
Смею заверить. - в ардупилоте - именно ПИД .
Зачем бы я задавал этот вопрос ?
//PID max and mins
#define heading_max 30
#define heading_min -30
#define altitude_max 40
#define altitude_min -45
[//PID gains
#define Kp_heading 10
#define Ki_heading .01
#define Kd_heading 0.001
#define Kp_altitude 4
#define Ki_altitude 0.001
#define Kd_altitude 2
О настройке теорию я ранее читал .
Но ответа на вопрос - а практически легко ли настроить имея только визуальное наблюдение но не имея логов ? не имею.
Потому и хотел узнать от практика.
Soki правильно описал настройку П-регулятора 😃 Ну ограничены познания его, он практикой занимается… надо в него книжками кидать 😃
Человек спрашивал, какая минимальная амплитуда колебаний может быть достигнута, я ответил… Я же не знаю параметров системы управления по положению…
Можно предположить, что при небольших скоростях полета (до 20м/с) и малых заданных угловых скоростях (до 10 гр/с) время реакции модели на заданный крен будет гораздо меньше изменения навигационных параметров, поэтому точность выдерживания курса будет определятся приемником.
Без логгера я бы попробовал настроить так: ставим заданный курс всегда против ветра скажем, на север, оставляем только П-регулятор и постепенно прибавляем усиление, дожидаясь колебаний. Потом плавно прибавляем дифф составляющую, добиваясь их уменьшения. Причем полет надо начинать с курсовым отклонением градусов 30-40.
Хотя, что-то я торможу- у вас же есть логгер- это видеозапись на земле. Крутите покадрово и считайте период 😃
Ясно, так и представлял.
Про точность приемника.
У меня 5-ти герцовый, но сейчас работает на 1 гц.
При пяти герцах он должен реально пять раз в сек измеряет координаты или просто работает апроксимация по последним координатам, вектору скорости и направления движения?
Где то в форумах проскакивала такая информация про апроксимацию.
Ясно, так и представлял.
Про точность приемника.
У меня 5-ти герцовый, но сейчас работает на 1 гц.Где то в форумах проскакивала такая информация про апроксимацию.
Все зависит от модели движения, заложенной в приемник. может быть и аппроксимация прямолинейного движения, а может он и ускорения вычислять умеет. Сядьте на велик или на машину и проедьте круг по малому радиусу с большой скоростью- увидите. В случае линейной аппроксимации курс раз в секунду меняться будет.
А мощность двигателя равна длине самолета, поделеного на силу вращения колес.
Бугога. А далее по тексту ваще сплошная бугога. Угощайтесь помидорчиком, гуру, пока читаете, что же все-таки такое ПИД контроллер.
smalltim, если вы не замители, то первое предложение было иронией по поводу странной фразы в предыдущем посте. Излишняя абсурдность была написано специально! Перечитайте внимательно, что я закоментировал и подумайте о размерностях. Мне жаль, что вы не поняли этого.
Я тронут вашим признамием моих заслуг, и считаю помидор некой нервной реакцией на разговор об автопилоте. Более того, я принимаю только конструктивную критику, не увлекаюсь фантазированием и считаю, что основной смысл этого форума - помочь решить проблему связанную с FPV. Именно поэтому я трачу время на написание развернутых ответов и призываю остальных к этому.
Укажите мне, что именно неправильно я написал, и мы это обсудим. Или это некий камешек вроде “теоретик с высока на практика смотрит”? То, что я написал это и есть часть работу алгоритма ПИДа, только я старался описать его работу самым простым языком, тому, кто не слышал о ПИДе и об пропорциональных и дифференциальных состовляющих.
>Укажите мне, что именно неправильно я написал, и мы это обсудим.
Стоит заметить, что если вы находитесь близко с “дому”, то колебания возможны просто потому, что небольшое отклонение от курса уже приводит к большой ошибке. Но это простимо, так как на таких растояниях (меньше 100-200 м) автопилот не нужен.
Если есть такой параметр как максимальная скорость поворота и если она маленький, то это тоже будет приводить к колебаниям
один такт работы автопилота, что обычно пределяется частотой GPS антенны (или за характерное время, в драгоне это порядка 3х тактов)
>Мне жаль, что вы не поняли этого.
>Более того, я принимаю только конструктивную критику, не увлекаюсь фантазированием и считаю, что основной смысл этого форума - помочь решить проблему связанную с FPV. Именно поэтому я трачу время на написание развернутых ответов и призываю остальных к этому.
Ну, с такими вводными я даже и пытаться Вас переубедить не буду.
Панкратов Сергей:
Диф составляющая - по сути есть предсказание курса модели в будущем, при этом на сколько в будущее заглядывает ПИД регулятор, определяется коэффициентом при диф члене.
Я бы на Вашем месте установил пропорциональный коэффициент так, чтобы максимальный крен самика, устанавливаемый автопилотом _в любой ситуации_ был не больше, чем комфортное и безопасное для Вас/Вашей модели значение, из которого можно выйти в нулевой крен за 2 сек, и при этом заметил бы скорость изменения курса (град/сек) при этом крене. Хотя бы приблизительно.
После этого диф коэффициент я бы сделал таким, чтобы предсказание осуществлялось на 3-4 секунды вперед (1-2 секунды - макс запаздывание инфы с GPS и 1-2 секунды на выравнивание самика из крена), тогда при приближении к нужному курсу из-за диф составляющей предсказанное значение курса уже перескочит нужный курс и самик начнет выравнивать крен. Размерности, которыми оперирует ардупилот, подсмотрите в коде, думаю, это там описано.
Переборщить с диф коэффициентом в разумных пределах не страшно, в худшем случае автопилот будет “перепредсказывать” курс, и приближаться к нужному курсу будет очень медленно, постоянно “отпрыгивая” от курса по крену если диф коэффициент слишком высокий. Если коэффициент неразумно высокий, появятся автоколебания с высокой частотой и нифига не возле вектора на базу. Вы их почувствуете сразу.
Если диф коэффициент слишком низкий, то самик будет проскакивать нужный курс, находясь в том же крене, какой был при выходе на этот курс.
Идеал - самолет должен выходить на нужный курс, имея нулевой крен.
С интегральным коэффициентом я бы даже связываться не стал. Здесь он, по-моему, не нужн вообще.
Скажу сразу, это всё я моделировал на земле, полетных испытаний еще не было.
1)Во-первых это просто экпериментальный факт. По крайне мере с тем алгоритмом, по которому работает Dragon.
Во-вторых, (а вот здесь уже начинается вольная интерпретация, и надо думать, то ли это) видимо близость дома сказыватье на том, что самолет успевает пролететь заметное расстояние в сторону и тем самым увеличить ошибку. Представте, что вы в 10 км от какой-то точки, сделайте 5 шагов с любую сторону. Понятно, что направление на эту точку почти не изменится. Теперь представте, что вы в 10 метрах от этой точки, тогда после 5 шагов направление на нее будет заметно отличаться от первоначального. Похожим образом малые ошибки в курсе самолета быстро нарастают и раскачивают нос самолета. Про 100 метров я примерно написал, может чуть меньше или больше, зависит от модели самолета, ее скорости.
2)Максимальная скорость поворота действительно есть в алгоритме работы Dragon OSD. И работает она так, как я написал.
3)Каждый перерасчет курса и выдачи команды на руль происходит с частотой работы GPS антенны, прям глазами (если самолет на земле и его слегка двигать в разые стороны) видно, как руль дергается 5 раз в секунду, если включен режим автопилота.
Скажу сразу, это всё я моделировал на земле, полетных испытаний еще не было.
Вот, я же говорил, что это разговор теоретика с практиком 😃
Я думаю, дифф. состовляющую редко кто использует потому, что самолет дергается и будет много случайного шума. Нужен какой-то фильтр. На самом деле, она не нужна в полете. Это опять практическое наблюдение. Но объянить это, наверное, можно наличием в системе самолет-автопилот какого физического коэффициента затухания, делающего полет домой устойчивым.
>Вот, я же говорил, что это разговор теоретика с практиком
Подождите чуток, будет другой разговор 😉
>Я думаю, дифф. состовляющую редко кто использует потому, что самолет дергается и будет много случайного шума. Нужен какой-то фильтр. На самом деле, она не нужна в полете. Это опять практическое наблюдение. Но объянить это, наверное, можно наличием в системе самолет-автопилот какого физического коэффициента затухания.
По крену-тангажу диф составляющая, согласен, не так чтобы очень нужна. Затухание обеспечивают неуправляемые плоскости самолета. А вот по курсу - по-моему, надо.
Ничто не мешает его сделать, всегда ведь можно занулить коэф.
А кстати, здесь предлагается какой-то сложный способ настойки, опять сугубо теоритический, считать период, момент инерции самолета и т.п. А разве нельзя прям в полете менять коэффициенты (уменшать gain) до тех пор, пока поведение автопилота не будет адекватным?
Все можно подвигать руками, если знать куда 😃
указанный способ подбора я описал выше.
Измерение периода собственных колебаний СИСТЕМЫ- это наиболее простой практический метод, когда хочется сделать минимальное число подходов. Никакиее моменты инерции считать не надо, да и не сильно помогут они…
По поводу физического понимания - я бы объяснил так: дифференциальная составляющая вводится, чтобы ограничить скорость задаваемого воздействия.
Ибо она рассчитывается по производной, а это и есть скорость.
То есть если пропорциональный коэффициент слишком велик, то самолет будет проскакивать нужный курс, а дифф. составляющая не дает ему слишком сильно разогнаться. И наоборот, при отклонении от курса позволяет быстрее набрать скорость разворота.
При полете против ветра это имеет значение, т.к при любом отклонении от курса ветер будет “помогать” развернуть самолет.
По поводу того, что в 100-200м от точки алгоритм курсового наведения как правило плохо работает, обусловлено, скорее всего, некачественной реализацией или резкими порывами ветра, превышающими маневренные возможности вашей системы.
Алгоритм подразумевает, что если позволяет динамика самолета, и нет резко меняющихся внешних воздействий, проходить точку с нулевой угловой скоростью.
Все это правильно, особенно в теории. На практики дифф. часть не нужна особо. То есть она может и даст какие-то преимущества, но мелкие покачивания самолета от ветра все могут испортить. Производная будет сильно шумная. Но, конечно, надо пробовать и может что-то получится.
Все это напоминает работу осциллятора с затуханием. Сила (отклонение руля) = -k*x-nu*dx/dt, где x-это ошибка в направлении. k*x - это пропорцональная часть работы автопилота. Так вот часто бывает (когда самолет далеко), что dx/dt=d(x+y)/dt, где y - это направление на “дом” (почти константа, пока самолет далеко), а соотв. (x+y) это просто направление полета самолета. Так вот по неким аэрдинамическим соображением затухание есть, то есть член -nu*dx/dt уже присутствует сам собой и схема работы автопилота с одним пропорциональным членом будет работать. Если k меньше некого порогового значения, то самолет будет подходить к нужному направлению “домой” асимптотически, то есть как раз подходить с почти нулевой угловой скоростью.
Все, о чем Вы пишете мной уже прочитано и осмыслено.
По рулю поворота - пропорциональный коэффициент, дифференциальный полезен по причине недостаточного демфирования, не плох был бы интегральный - но нужно достоверное знание направления и скорости ветра, без него только помешает.
По высоте ( пока у меня используется дроссель а будет руль высоты) -
пропорциональный,дифференциальный полезен по причине недостаточного демфирования
Крен и тангаж пока не интересует - Ко-пилот функции выполняет.
Я бы на Вашем месте установил пропорциональный коэффициент так, чтобы максимальный крен самика, устанавливаемый автопилотом _в любой ситуации_ был не больше, чем комфортное и безопасное для Вас/Вашей модели значение, из которого можно выйти в нулевой крен за 2 сек, и при этом заметил бы скорость изменения курса (град/сек) при этом крене. Хотя бы приблизительно.
В Ардупилоте, насколько я понял, за безопасные положения рулей отвечает не пропорциональный коэффициент, а тупое программное ограничение - это видно в части кода приведенном мной для примера.
Все, о чем Вы пишете мной уже прочитано и осмыслено.
Ну и хорошо! Я всего лишь хотел помочь, может кто другой узнает.
Помощь я все же получил - за что спасибо.
То что для начальной настройки оставить только пропорциональную часть.
А затем можно и экспериментировать с дифференциальной.