Разработка программы стабилизации многороторного ЛА

MAFia

Доброго времени суток!
Я с другом начинаем разрабатывать собственное ПО для коптера, и в этой теме я предлагаю обсудить сей вопрос. Итак, начну.
Нет, я не собираюсь делать “еще один MultiWii”, а собираюсь разработать программу стабилизации, основанную на несколько иной концепции.

Существующие системы стабилизации, доступные коптеростроителям работают примерно по следующему принципу: система стремится компенсировать внешние воздействия и привести ЛА к положению, которое задается пилотом. При этом нет абсолютно никакой гарантии, что комманда пилота (к примеру, резкий крен на большой угол) не приведет, при условии что она будет выполнена, к потери стабильности и падению.

Кроме того, если говорить о MultiWii в частности, то неверно и высказывание “положение, которое задается пилотом”. ШИМ сигнал двигателей складывается из ШИМ с канала газа, к которому прибавляется ШИМ управления (т.е. в зависимости от конфигурации ЛА и рассматриваемого мотора это будет ШИМ крена, тангажа, рыскания или двух из них вместе). И уже к полученному результату добавляестя ШИМ, полученный ПИД регуляторами, чтобы скомпенсировать уход ЛА от требуемого положения. (Да, я знаю, что я очень не точно описал работу мультивия, но я сделал это, чтобы не растягивать введение)

Именно эти недостатки я хочу исправить в своей программе стабилизации.
Комманды пилота с пульта управления задают только требуемое положение коптера (курс, скорость по осям, высоту) и не управляют двигателями непосредственно. В то же время система стабилизации выполняет эти комманды не буквально, а так, чтобы не допустить падения аппарта. К примеру, если пилот сделал резкий крен на слишком большой угол, ПО определяет, что отклонение на такой угол чревато потерей стабильности, и отклонит ЛА только на допустимы угол.

Covax

Без обид, ну хоть бы один из n-цать начинателей собственного ПО написал: мы уже сделали! смотрите! пользуйте!
Неужели так трудно сначала покурить соседние ветки про собственное ПО, приобрести наработки и сделать уже отдельный топик о свершившемся, а не о намерениях?

devv
MAFia:

Комманды пилота с пульта управления задают только требуемое положение коптера (курс, скорость по осям, высоту) и не управляют двигателями непосредственно

У какого то контроллера по другому ?

ndn
MAFia:

… ПО определяет, что отклонение на такой угол чревато потерей стабильности, и отклонит ЛА только на допустимы угол.

Ой! А я чоЙто думал чо усе мозги в режиме стабилизации так и делаютЬ… 😉 😁

MAFia

Итак, собственно мои мысли по реализации поставленной задачи.

Задать максимальный угол откланения жестко нельзя, т.к. он зависит от констуркции коптера (вес, центровка, мощность двигателей, длина лучей итд итп), погодных условий итп, то главное - определять момент, когда коптер начнет терять стабильность.

Я рассуждал так:
Пусть некий параметр - показатель стабильности (ПК) - это среднее откланение коптера от требуемого положения. Чем он больше, тем больше “болтает” коптер. Я предполагаю, что чем больше будет угол откланения коптера от горизонтали, тем больше будет показатель стабильности, и так до потери управления.
Сначала ПО необходимо адаптироваться под данный коптер. Пилот совершает маневры, а программа собирает статистику, как зависит ПК от положения коптера, от
выполняемого маневра. После завершения обучения, программа при получении комманды пилота будет определять пк, записанный в результате обучения и, если он превышает допустимый предел, будет ограничивать комманду (к примеру, пропорционально превышению записанного ПК над максимальным). Если программа замечает, что ПК полсле выполнения “безобидной” комманды превышает записаныый для этой комманды, то, вероятно, произошло ухудшение условий внешней среды, нарушилась центровка коптра, т.е вероятность упасть возросла, то максимально допустимый ПК будет уменьшен.

Вот такие были мои рассуждения, поправте меня, если я ошибаюсь. Конструктивная критика преветствуется!

devv:

У какого то контроллера по другому ?

multiwii. Откройте конфигуратор и подвигайте стики передатчика. С пулта идет trottle 1500, и если другие стики не двигать, и коптер неподвижен, то значение всех двигателей будет 1500. Сдвинь стик “вперед” на 50 относительно середины и получишь (для “+” квадрика) спереди 1550, сзади 1450.

P.S. Хотел сделать два поста подряд, чтобы читать удобнее было, а вы меня опередили 😃

devv

Вариант: Запретить отклоняться больше 30гр. Разрешить юзеру править показатель максимального наклона под свои цели и задачи.

MAFia
devv:

Вариант: Запретить отклоняться больше 30гр. Разрешить юзеру править показатель максимального наклона под свои цели и задачи.

ответ я написал и тут инет рухнул!!! Скажу кратко.
Мне кажется это не гуд, потому что при ухудшении условий полета, максимальный угол уменьшится. Предлагаю два варианта:
1)Определить максимальный показатель стабильности (его надо 1 раз для данного квадрика определить), а затем ограничивать по этому показателю
2)Определить макс. угол, а коптер летает и определяет ПС. Если вдруг стабильность стала ухудшаться, то уменьшаем предельно допустимый угол. Это самый простой вариант (после жестко заданного угла), но далеко не лучший. Надо думать.

Aleks72

честно говоря, так и не понял какая задача поставлена…
У “немцев” есть функция “ограничение угла поворота”. Любые манипуляции - порывы ветра, тапка в пол по любой оси или всем сразу, смещение ЦТ, да хоть что, но я еще не видел, чтоб его больше чем на 45 град. поворачивало. Без каких либо дополнительных настроек и привязки к конкретному аппарату - галочку поставил/галочку убрал.
Вы об этом? ))

MAFia

“У немцев” - это что? Я просто не припомню…

SovGVD
MAFia:

Именно эти недостатки я хочу исправить в своей программе стабилизации.

ну дык и в чем проблема? исправляйте, выкладывается, проверим как оно работает =)

MAFia:

и отклонит ЛА только на допустимы угол.

если память не изменяет, то все контроллеры со стабом так делают (т.е. считай вообще все кроме кука), мне вот не удается перевернуть ни multiwii, ни megapirate, даже если стик в край отлонить

Covax
MAFia:

Доброго времени суток!
Нет, я не собираюсь делать “еще один MultiWii”, а собираюсь разработать программу стабилизации, основанную на несколько иной концепции.
Комманды пилота с пульта управления задают только требуемое положение коптера (курс, скорость по осям, высоту) и не управляют двигателями непосредственно. В то же время система стабилизации выполняет эти комманды не буквально, а так, чтобы не допустить падения аппарта. К примеру, если пилот сделал резкий крен на слишком большой угол, ПО определяет, что отклонение на такой угол чревато потерей стабильности, и отклонит ЛА только на допустимы угол.

ЧТо-то мое занудство мне подсказывает, что человек просто не разобрался в Мультивие, не просек что у него есть помимо acro onlygyro mode еще и stab mode (не догадался поставить галочку на чекбокс в гуи) и думает, что мультивий недоработанная система, ущербная, коптер переворачивает 😃 стаб мод включи, товарищ! 😃

MAFia

Я только в Stab и летаю. И бывало, что “стик в пол” и коптер падал.
P.S. И уж что-то я не считаю, что “мультивий недоработанная система, ущербная”

Пойду пущу коптер, опять проверю, что будет, если “стик в пол”. Проверю вашу правоту…

devv

Видимо движки противоположные тем что увеличили обороты останавливались в 0.
И это не проблема кода Вия.

Covax

mintrottle должен быть 1300 минимум

DVE

В принципе доработать тот же Multiwii введя пределы максимальных углов по всем осям, наверно не так уж сложно, для этого не надо даже писать все заново 😃 Можно даже сгладить сигналы стиков каким-нибудь ФНЧ, чтобы даже при резких движениях квадрик поворачивал плавно. Более того, уверен что это сделано в той же Назе, уронить/перевернуть которую практически невозможно.

В целом, всем софтостроителям рекомендую брать пример с уважаемого Александра: rcopen.com/blogs/83206/15204
Человек решил, взял и сделал, выложил всем желающим.
Если авторы ветки сделают также и выложат свою прошивку и она будет лучше оригинальной, все только спасибо скажут. Хотя я сомневаюсь что писать с нуля тут целесообразно, все же по количеству человеко-часов оптимальнее наверно доработать то что уже есть. Ведь любая прошивка это не только летающий “прототип”, но и куча доп.фич типа всяких carefree, возврата домой и пр, и писать все заново с нуля выйдет слишком долго.

MAFia

DVE, естественно я сам очень желаю довести разработку до конца, и приложу все усилия, чтобы желание не расходилось с действительностью. Конечно, основываться на имеющемся коде проще, я скорее всего так и поступлю. Просто добавить ограничители углов в Вий легко. Добавить динамическое определение этих углов (см. пост №5) уже сложнее, и это будет наслоение, legacy-legacy-legacy. Кроме того, задумка отличается от вия не только ограничениями углов. Наиболее рационально на мой взгляд - это использовать не вий целиком, а его части, хорошо отлаженные (чтение данных с датчиков, с пульта, управление двигателями и “дополнительные фичи”).
В итоге планирую получить следующее: систему стабилизации, которая может
1)Исправлять ошибки пилота и не допускать падение из-за них
2)Компенсировать снос за счет ветра итп акселем (вий так не может. Во всяком случае я так и не смог сделать это, не вмешиваясь в код вия)
3)Динамически изменять коэффициенты ПИДов, делая их оптимальными для текущих условий окр среды и стиля пилотирования
4)И если получится сделать п1-3, то дополнительные фичи: возврат домой, автопосадка, carefree итп.

P.S. завтра, если получится, выложу, чего удалось достичь по первым 3-м пунктам (алгоритмы).

SergDoc

А что (мосх) вам это всё считать будет?

DVE

2 MAFia:
А что считать ошибкой пилота? Любой современный квадрик должен просто выровняться и зависнуть если пилот отпустил стики, и этого вполне достаточно.

Дело авторов конечно, но имхо - добавьте лучше в Wii нормальный полет по точкам (с указанием не только точек но и куда должен “смотреть” нос во время облета), отсутствие этого сейчас самый большой недостаток Wii имхо. Если сделаете, всемирная известность в узких рамках rc-community обеспечена 😉

Насчет legacy - если не выходить за рамки GNU GPL, то проблем нет. Или Вы хотите создать очередной Мега/Руссокоптер, с закрытыми исходниками и платами на продажу?

MAFia

да нет, не на продажу. скорее чисто из “спортивно”-программистского интереса…

sulaex

Человеку нужна поддержка, стимул, заряд энергии от вас.
Вы полегче с ним, а то загубите все начинания на корню, может быть это новое начало…
Возможно он и не добьется того, что задумал, но народ, большинство идей рубится на корню не получив должного внимания и поддержки со стороны.
Мысли в слух… 😉

Covax
sulaex:

Человеку нужна поддержка, стимул, заряд энергии от вас.

Александр, все самые выдающиеся изобретения появлялись в этом мире наперекор судьбе и противодействию извне. Никогда не думал, что тем же Sir Alex, Mahovik, Alexmos, Syberian и т.д. нужна поддержка и заряд энергии чтобы они сели и перелопатили код, написали свой. Парни садятся и делают, показывают результаты, а потом получают всеобщее признание и уважение. Топикстартеру не 16 и даже не 20, о чем вы говорите) Меня больше всего задело, что ни раз в топике упоминается мультивий, а на лицо не понимание принципов работы программы, отдельных частей алгоритма. Собственно поэтому я и настолько скептически отношусь ко всему что декларируется в этом топике.

DVE:

добавьте лучше в Wii нормальный полет по точкам (с указанием не только точек но и куда должен “смотреть” нос во время облета), отсутствие этого сейчас самый большой недостаток Wii имхо.

Дмитрий, я вами поражаюсь)) у Мультивия нет недостатков)

Sci_Rosso
Covax:

у Мультивия нет недостатков)

😃))

Я с вас поражаюсь Сергей…, если у вия нет недостатков, почему же Вы тогда пользуете НАЗУ…???

Covax

Николай, а кто сказал уважаемому самаритянину что я не использую Мультивий? ))) вы нашли выход на вебкамеру из моей мастерской? еептам нет 😃 у меня мультивий аж на bma020 и гирах с настоящего wii летает просто апупительно. А вот CC OP и Ardu лежат без дела, это да.

DVE
sulaex:

Человеку нужна поддержка, стимул, заряд энергии от вас.

Просто авторам надо понимать, что задача “просто повисеть” для квадриков не стоит уже пару лет как 😃 И действительно, сложно будет получить понимание с клоном “еще одного Multiwii”.

Висеть сейчас умеют более-менее все квадрики, а аксель для выравнивания есть даже на самых дешевых контроллерах за 30$. Основной интерес сейчас именно в дополнительных функциях: осд, сонар, автопосадка, всякие там возвраты домой, облеты точек и пр.

Ну а просто повисеть, можно конечно делать для себя, но вряд ли стоит надеяться что все сразу ломанутся ставить новую супер-прошивку на свой квад 😃

Covax:

у Мультивия нет недостатков)

Говорили что нет у Вуконга, я слышал 😉