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

ssh1
Sir_Alex:

Если компас включен, откалиброван и указано магнитное склонение для вашего города, то нос коптера должен указывать на север. Можете обычным компасом проверить (телефоном, Google Maps наконец)

Да, с этим все ок.
Вопрос в другом.
1.До переделки компаса у меня уезжали его показания при подаче газа градусов на 50-90. Почему вслед за этими показанями не крутился нос коптера в стаб режиме. Стик YAW я не трогал, соответственно если нос держится по компасу то он должен вращаться?
Отнес компас от проводов, теперь не едет.
2.В режиме loiter поворачиваю рукой коптер на 90 градусов стики не трогаю. Да он сопротивляется, но через 2-3 секунды удается его повернуть. Итог - нос обратно не встает, коптер начинает пилить куда-то вбок, такое ощущение что он не проверяет текущее направление носа, а расчитывает на то что оно неизменно?
Кстати, кто-нибудь может проверить, у вас такое же поведение после поворота?

Sir_Alex
ssh1:

До переделки компаса у меня уезжали его показания при подаче газа градусов на 50-90.

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

ssh1:

Отнес компас от проводов, теперь не едет.

Это нужно сразу делать.

Sulzer
kren-DEL:

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

Как задергался сразу писк, может отсекается один регуль по просадке? У меня в ховере висит железно 8 минут, летаю по таймеру 5,30 , чтоб не поймать отсечку. Вертолетная привычка, пищалками не пользуюсь , хотя в начале было.

Mark_Kharkov
kren-DEL:

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

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

Может отсечка по питанию.
Или еще 2ва варианта: ПИДы (может ветром расколбасило) - у меня так было, или может что с 1м из пропеллеров/двигателей (какие-то вибрации перед этим не хорошие пошли). тут так дистанционно что-то “гадать” - хз.

kren-DEL
Mark_Kharkov:

Может отсечка по питанию.

Хз, надо ждать плату AIO и потом смотеть логи, если глюк проявится ещё раз… Больше похоже на внезапные вибрации, приводящие к скачкообразной работе регулей (сами посмотрите, как они стали работать), из-за чего и началась просадка батареи (когда началось падение напряжения, на батарее было больше 10В, данные по пульту, так что отсечка исключена), да и в регулях отключена сама отсечка, перегрев - тоже исключено…

Mark_Kharkov:

ПИДы (может ветром расколбасило)

ветра небыло, погода отличная, расколбас проверял на спуске - не возникало ничего похожего…

В общем буду ждать платку с памятью, а там посмотрим…

ssh1
Sir_Alex:

Какие конкретно показания у вас уезжали?

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

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

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 он тоже должен держать курс? Тогда после поворота рукой он должен возвращаться - чего не происходит.