ArduCopter Mega: порт на обычную Arduino (тестим)

Mark_Kharkov
ssh1:

Уезжали показания курса, того который на картинке flight data верхняя полоса.
Дашь газ, взлетишь, курс медленнно едет градуса по 3 в секунду. Итого курс уходил до 90 градусов от первоначального. Но коптер носа не поврачивал, это и настораживает.

А по поводу непонятного поведении в loiter после поворота рукой что думаете?

Вообще совсем по компасу он поидее должен работать в simple mode (если еще gps подключен). Когда без разницы, где перед коптера, а где зад, рулишь чисто ближе-дальше по отношению к себе, вправо/влево. Но я этот режим не пробовал, за ненадобностью. После тренировок на своем RTF Beetle v929 привык и так.
А что в обычных режимах он не пользует особо компас - это как раз поидее хорошо, если мегапират стоит на AIOP. Минусом этой платы как раз и считается, что на борту есть компас (но зато дешево, и гораздо дешевле, чем отдельно).
Просто обеспечить ему такую работу, что бы вообще не влияла силовая проводка на полетном контроллере - не так и просто. Надо его выносить в другое место (подальше от силовых проводов). При чем сам компас выносить, а не полетный контроллер, потому, что полетный контроллер должен быть в точке-пересечении диагоналей между пропеллерами. У некоторых даже были мысли нафиг его выпаивать с платы (ибо он висеть может только на 1м адресе по I2C) и выносить куда-то с платы. А там уже другая проблема: длинная шина I2C - это ошибки на шине (а на ней еще и аксель и баро в AIOP), у немецкого контроллера это немалая проблема, там даже регули на I2C работают.
Подумайте сами: газ может очень резко меняться, если коптер начнет интенсивно использовать компас в том же stabilize - то тут уже и автоколебаний недалеко, как при чрезмерных ПИДах, а там - и до краша…

RTemka
kren-DEL:

На выходных подлетнул, снова возник баг, смотреть с 7:30(прошу прощения за длинну, обрезать не хочется):

уровень сигнала отличный, расстояние - метров 20-30, прошивка 2.9.1 300, прошлый раз коптер при похожих обстоятельствах упал больнее, грешил на питание(исправил), перед этим полётом перешивал все регули на последнюю прошивку BLHeli, может какой глючит - узнаю, когда приедут новые с РЦТ, заодно сменю контроллер на AIOP2. После падения отлетал ещё 3 батареи и без сбоев…

Я склоняюсь к отсечке. У самого такое было.
Притом если на ручном можно сбавив газ еще , что то выправить.
На автомате когда летит еще и пытается газа подддать и начинает стремительно падать.

ssh1

Я думаю что в Stabilize коптер должен работать так:
При попадании стика YAW в область около нуля коптер должен запоминать текущий курс. Далле в алгоритм коррекции YAW вносится поправка пропорциональная отклонению от запомненного курса, которая и возвращает его всегда к курсу. По аналогии с тем как аксели всегда возвращают его в горизонт. При таком алгоритме летай сколько хочешь не отклоняя YAW - нос останется на месте.
Пока не все это совпадает с практикой. Кто нибудь знает как оно там внутри задумано?
Ну и второй непонятный момент. Как компас работает а Loiter? Судя по моему эксперименту - хз как. Повораичваю коптер рукой на 90 градусов - нос не возвращает, получается долговременного запоминания курса нет?

  • к этому начинает пилить вбок, получается что и новый курс не учитывается, а пытается использовать для возврата старый?
Sir_Alex

Для просто удержания курса, компас не нужен. Режим Stabilize работает так как вы описали. При отклонении YAW, коптер поворачивается и запоминается новый курс. Теперь при отклонении “вперед” коптер полетит уже в новом направлении.
Теперь режим Simple - вот тут уже необходим компас, т.к. мы должны знать где север/юг. При взлете, запоминается куда направлен нос, и при нажатии “вперед”, коптер летит в эту сторону. В отличии от Stabilize, вращая по YAW - вы не меняете направление “вперед”. Поэтому в Simple mode можно легко лететь вперед и при этом вращатся вокруг своей оси (коптера ессесно).

Подробнее о режимах полета, читайте тут: code.google.com/p/arducopter/wiki/AC2_ModeSwitch

Mark_Kharkov
ssh1:

Я думаю что в Stabilize коптер должен работать так:
При попадании стика YAW в область около нуля коптер должен запоминать текущий курс. Далле в алгоритм коррекции YAW вносится поправка пропорциональная отклонению от запомненного курса, которая и возвращает его всегда к курсу. По аналогии с тем как аксели всегда возвращают его в горизонт. При таком алгоритме летай сколько хочешь не отклоняя YAW - нос останется на месте.
Пока не все это совпадает с практикой. Кто нибудь знает как оно там внутри задумано?
Ну и второй непонятный момент. Как компас работает а Loiter? Судя по моему эксперименту - хз как. Повораичваю коптер рукой на 90 градусов - нос не возвращает, получается долговременного запоминания курса нет?

  • к этому начинает пилить вбок, получается что и новый курс не учитывается, а пытается использовать для возврата старый?

В принципе… На этот вопрос сможет ответить только разраб… Только их давно в теме не видно. Или забили, или в сезон постоянно летают… Да и новых версий что-то давно не видно в SVN. Может внатуре забили… Хез.
Понятно, что если подуплить в исходники - то можно и допилить это. Только вот из имеющейся у меня инфы, кажется, что лучше от этого не будет.

ssh1

Как не нужен? Вы же сами писали.

Sir_Alex:

Направление коптера определяется в первую очередь по гироскопу и только медленная корректировка происходит по компасу. Быстрые вращения отслеживаются гирами, поэтому вы могли не заметить, что компас съезжает при газе, если его долго держать, то он повернется.

Ранее у меня был коптер на KK2.0, там только гиры и аксели. Соответственно при активном пилотаже приходилось периодически подправлять нос, так как гиры не всегда правильно его возвращали.
Тут же появился компас по которому можно держать нос хоть год.
Притом на ардукоптере пишут что есть параметр AHRS_YAW_P:
expose a new parameter AHRS_YAW_P to control how fast the compass controls the heading. The default is 0.2, which should be good for most users (this was mostly added for ArduCopter users)

Sir_Alex

Разработчиков ArduCopter’a тут отродясь не было. 😉 Ищите их на DIYDrones

Я занимаюсь только портированием под другое железо, весь основной функционал неизменен и я туда не лезу. По факту, я даже не летал с прошлого лета, не до этого сейчас.

ssh1
Sir_Alex:

Я занимаюсь только портированием под другое железо, весь основной функционал неизменен и я туда не лезу.

Ах, вот оно чо, ну тогда извините.
Будем искать )))

Mark_Kharkov
Sir_Alex:

Разработчиков ArduCopter’a тут отродясь не было. 😉 Ищите их на DIYDrones

Я занимаюсь только портированием под другое железо, весь основной функционал неизменен и я туда не лезу. По факту, я даже не летал с прошлого лета, не до этого сейчас.

Ага, т.е. Ваше творение - это как раз уте либы, которые в стандартной ардуине мы заменяем на Мегапиратовские? А грубо говоря исходники в папке arducopter = 100% совпадение с самим ардукоптером?
Тогда вопрос: если взять скажем последний ArduCopter, и откомпилить с Вашими либами - должно получится? Или все-таки какие-то изменения в Ardu вносятся, и могут быть какие-то баги которые проявятся потом?
Интересно было бы попробовать. Просто сам по образованию программист, хотя и в совершенно другой области (веб).

Sir_Alex
Mark_Kharkov:

А грубо говоря исходники в папке arducopter = 100% совпадение с самим ардукоптером?

Не 100% но близко. Взять и просто слить не получится. В пирате например другая последовательность инициализации датчиков. Но все что отвечает за полет (AHRS, режимы полета и т.п.) все совпадает на 100%.

nikr

Подключил двухосевой подвес. При включении питания в процессе инициализации контроллера его перекашивает по обоим осям до упора. После инициализации выравнивается и отрабатывает наклоны как положено. Контроллер AIOP 1.0 прошивка R300. С этими перекосами можно что нибудь поделать?

Sir_Alex

нельзя, т.к. при инициализации на PWM выходы идет минимальный сигнал.

ReM
ssh1:

Я думаю что в Stabilize коптер должен работать так:
При попадании стика YAW в область около нуля коптер должен запоминать текущий курс. Далле в алгоритм коррекции YAW вносится поправка пропорциональная отклонению от запомненного курса, которая и возвращает его всегда к курсу.

Именно так. Так есть в Multiwii например.
В Loiter он должен держать позицию. Что и делает весьма неплохо. Никакой разницы куда вы его повернёте рукой.

Mark_Kharkov
nikr:

Подключил двухосевой подвес. При включении питания в процессе инициализации контроллера его перекашивает по обоим осям до упора. После инициализации выравнивается и отрабатывает наклоны как положено. Контроллер AIOP 1.0 прошивка R300. С этими перекосами можно что нибудь поделать?

Если не секрет - а зачем с этим что-то делать? В воздухе подвес врядли кто будет включать/выключать. А то, что до арминга еще его чуть переклинит - совершенно безразлично как-бы…

ssh1

В loiter он тоже должен держать курс? Тогда после поворота рукой он должен возвращаться - чего не происходит.

ReM
ssh1:

В loiter он тоже должен держать курс? Тогда после поворота рукой он должен возвращаться - чего не происходит.

Я не знаю должен ли. Но в Loiter в этом нет необходимости.

ssh1
ReM:

Именно так. Так есть в Multiwii например.

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

ReM
ssh1:

А мне кажется не так, попробуйте рукой повернуть его в стабе или в альтхолде - сначала посопротивляется, а потом смирится с новым направлением носа.

Я и говорю - так есть в Multiwii например. Но в Megapirate не так почемуто…

ReM

AHRS_YAW_P пробовал от 0.1 до 1 - никакой разницы не вижу… 😦

nikr
Mark_Kharkov:

Если не секрет - а зачем с этим что-то делать?

По конструкции подвеса получается, что при включении серва по roll тянет подвес до упора в балку. Серву жалко.

Compage

Залил прошивку MegaPirateNG 2.9 R7 (ArduCopter 2.9.1), плата AIO v1.1, Mission Planner 1.2.45

  1. как производить установку горизонта? при подключении через юсб все калибруется нормально, наклоняем коптер по инструкциям планнера.
    через телеметрию(3ДР), в отличие от старых версий прошивок и планнеров, теперь выставить горизонт не удается - плата зависает. что делать

  2. Не работает сонар…