ArduCopter Mega: порт на обычную Arduino (тестим)
дошли руки до этой прошивки, но не пойму что я делаю не так: залил прошивку, запускаю конфигуратор, Action->AC2 Setup, тыкаю Setup - там одна кнопка, тыкаю её пишет что порт открыт и далее всё повисает… если залезть в другие вкладки, пишет Mavlink четотам, повисает, появляется отсчет таймаута, потом: “Comport open failed - Please try again and make sure your not in CLI mode”
у меня только 2 сенсора, код поменял под них (тоже самое если не менять код)… куда копать (я в CLI режиме? ничего не замыкал)? =)
на всякий случай, если это важно - приемник не подключен, только ардуинка и датчики
upd: в CLI режиме:
Init ACM
RAM: 1895
FW Version 5
----------------------------------------
дальше ничего не происходит =(
Поздравляю 😃
Пошагово:
Раз уж написал свои драйверы, сперва нужно проверить, работают ли они вообще. В библиотеке AP_ADC есть examples и в нем скетч весом в 5 кб (а не 124). Запустив его, в консоли ардуины можно увидеть все 7 каналов “типа АЦП”. 0,1,2,4,5,6 меняются? отлично, едем дальше
- скачать заново megapirateB2.zip
- в папке ардуины потереть все библиотеки (кроме своей AP_ADC, но лучше из нее код перенести в новую) и залить из архива библиотеки
- обновить конфигуратор в меню UPDATE
-засадить ногу 40 на землю - теперь можно выбрать AC2setup-Setup, на кнопку не жать, а переключиться на вкладку Initial settings.
Должно быть так:
Init ACM
RAM: 1747
FW Version 6
----------------------------------------
Entering interactive setup mode...
Type 'help' to list commands, 'exit' to leave a submenu.
Visit the 'setup' menu for first-time configuration.
AC 2.0.2 Beta]
Там можно набрать test
затем ADC и узреть свои значения датчиков.
Как дойдешь до этого пункта, пиши, пойдем дальше 😃
как не ковыряю, всё тоже самое, данные с датчиков бегут (пока не кручу - циферки на месте, кручу - всё меняется), переключился на вкладку (ногу естественно засадил), там:
Init ACM
RAM: 1747
FW Version 6
----------------------------------------
и всё на этом =(
кстаии делаю всё это через VirtualBox с виндой XP SP2 Eng (с AeroQuad нормально работало)
методом тыка: повисает на barometer.Init(); - барометра у меня нету =) где его отключать?
UPD: закоментил инициализацию барометра, теперь CLI работает, на тесте всё ок, циферки бегут (только навернка знаки перепутаны, но это на потом)
что дальше?
методом тыка
Отлично 😃 Только это не выход. Как только он начнет опрашивать баро в полете, начнется зависон и тупняк. Баро там сильно интегрирован, поскольку входит в состав оригинальной платы.
Придется “занулять” библиотеку APM_BMP085, или хотя бы ее работу с и2с.
В панельке CLI пройдись по всем кнопкам сверху кроме erase и reset, чтобы все откалибровать и выбрать тип пепелаца и набор датчиков
Затем вытащи перемычку из 40 и щелкни по raw sensor data. Следи за текстом на консоли, чтобы отловить, зависнет где-нить или нет.
Если все поканает и поползут графики, проверь работу индикаторов ROLL PITCH YAW, чтоб соответствовали отклонению коптера - это и есть проверка полярности. Также возможно придется менять делитель в гиро и акселе.
С акселем проще: после калибровки на оси Z будет -1000. Усилением акселя нужно добиться, чтобы в перевернутом состоянии было +1000, а не -500, 0 или проч. Делитель одинаковый на все оси.
Как настроишь, можно включать пульт, подрубать моторы и настраивать пиды. Потом, собсно, летать.
покоментил работу с i2c, график заработал:
буду настраивать дальше, пока что ROLL PITCH YAW фигню показывают и возвращаются к нулям, как было при неверном расположении датчиков в mutiwii =)
А чо графики такие порепанные? зайди в консоль, набери test ввод profiling
цифра в конце абракадабры должна быть не более 6000 - это тайминг основного цикла, как в мультивие
upd: аксель подобрал, по Z при спокойстивии -1000, переворачиваю +1000 (±5)… ща гиру помучаю
Тайминг ОК, сказывается отсутствие барометра. Дикие показания гиры, в драйвере значения от гиры подели, ориентируясь на YAW: повернул машинку на 90 град - стрелка тоже должна на 90 град, а не крутиться, как пропеллер. Для затравки: при повороте ок 90 град/сек показания на графике примерно 200-400.
По полярности датчиков.
Смотри в полетном режиме на вкладке флай дата:
При наклоне вперед accel X и gyro Y в минус.
При наклоне вправо accel Y падает, gyro X растет
При повороте по часовой - стрелка на стрелочном yaw во второй вкладке ползет тоже по часовой
Еще один совет. В акселерометре делитель выставь (одинаковый для осей) такой, чтобы в консоли test - ADC 7-й параметр был равен 416, затем откалибруй, нажав level или в консоли exit - setup - level
436 7 параметр (±2), сейчас еще поиграюсь с делителем, полярность поменял, всего один минус лишний надо было поставить =) там в момент инициализации/калибровки тоже делители надо наставить и полярность расставить (для гиры)?
стрелочки почти адекватно отклоняются, но ошибка в градусах есть пока что… это нормально что на графике меняется быстро всё, а стрелочки ползут медленно к своим значениям (доходят и стоят)?
Все действия с кодом - только в библиотеке!
Калибровку гиры прога делает сама каждый запуск, если дописывал - убери.
Калибровка акселя - по команде LEVEL.
Стрелки обновляются с частотой 3Гц, график - 20. Фишка настройки в том, чтобы при отклонении стрелка довольно резко вставала в нужный угол. Если она встает “не туда”, а потом медленно подползает куда нужно (недолет-перелет) - надо регулить гиру. Если перелет - делить на большее число, и наоборот.
Аксель должен быть 416, на худой конец 410.
аксель настроил, теперь 416 (±1)
по поводу стрелок, чето YAW себя совсем не адекватно ведет:
наклоняю платку влево/вправо (или вправо/влево) на 90* затем ставлю обратно на ровную поверхность (от которой калибровал)
Стрелки ведут себя так, как будто гира задушена насмерть, работают только на акселях. Вот как вначале у тебя переворот был, пока датчики ползли, оно уже перестроилось бы. Уменьшай делитель гиро, чтоб добиться, как я описывал. Чем видео записать с экрана?
Чем видео записать с экрана?
hypercam вроде в винде есть (я то записываю в убунте XVidCap окошко в VirtualBox =)))
Для затравки: при повороте ок 90 град/сек показания на графике примерно 200-400.
гиру к этим значениям старался привести… или это для акселя было? =)
сейчас в 10 раз уменьшил делитель… стал чуток (градусов 5-6) перелетать и потом возвращается к нужной отметке
значение методом тыка подбирать? или есть какие то более лучшие методы?
UPD: в общем получается пока такая штука:
если резко далеко (более 40 градусов примерно) крутануть, то доезжает (в начале крутанул на 90*, потом резко в обратку на 180 (90 в другу сторону от нуля)), если немного, то вполне нормально или переезжает или недоезжает - идеальности нет
UPD: еще горизонт - если платку вверх тармашками и потом обратно, то горизонт доплывает, если не сильно мучить, то встает в нули адекватно
Полная постоянность будет при добавлении компаса 😉 Теперь, насколько могу судить по видео, IMU более-менее настроен. Теперь можно попробовать стартовать в руке. Раскладка моторов по идее такая же, как в Мультиви. На пульте поставь экспоненты под 60% везде, кроме газа. На первый раз хотя бы.
Активируются моторы так же. Учти, при газе в 0 моторы отключаются.
Когда будешь настраивать ПИДы, начни со Stabalize damp, уменьшая его постепенно, пока не перестанет дергаться (если вообще дергаться будет). Потом уже ROLL PITCH P.
Я сейчас с ITG3200 засел, изучаю ее фильтрацию, скоро обновлю архивчик.
у меня 4х каналка, без шнурка для настроек (кабель только-только приземлился) =) надо теперь умудриться переделать переключение режимов, в каком месте там отрабатываются подобные команды?
в ArduPirates есть всякие калибрации/триммирование хитрыми движениями стиков как в multiwii?
Полетные режимы переключаются каналом 5. Если там просто свич, будет 2 режима, если 3-позиционный - 3. Если крутилка, то заменой ее на галетный переключатель с резюками можно получить все 6 режимов: акро, стаб, удержание высоты, удержание положения, полет по точкам, возврат домой.
На каждое доступное положение можно выбрать любой режим, по умолчанию - стаб.
а точно multiwii стиль подключения моторов? в GUI моторы ползут как надо, а в реале даже крутиться не начинают (газ в любом положении - всеравно не крутятся)
2 - перед левый
3 - задний правый
5 - передний правый
6 - задний левый
D2,3,5,6 - моторы для квадра/трехи, проверенно работает.
Прерывания собственные не добавлял?
При включении слышен писк, что “ноль” пойман?
Регули обычный РРМ понимают или перешиты на скоростной? Попробуй серву подцепить…
Прерывания собственные не добавлял?
нет, только закоментил барометр и переписал код (инициализация и получение данных) под свои датчики
на всякий случай еще проводки прозвонил - нормально всё
UPD: едиснтвенный момент - код работы с датчиками от прошлой версии, там вроде чето с интераптами есть для дальномера… не оно? =)
те никому не мешают, дальномер работает прекрасно, без него - тоже.
Главный показатель работы - моторы в правом столбце. Если там чото есть, значит, РРМ тоже прет. У меня же работает!
Серву подключи 😃
Серву подключи
подключил, когда в проге сижу - работает, когда на коптере ставлю - не работает - там ничего хитрого еще не надо делать? питается через Vin 5 вольтами с ESC (так же питалось на мултивие, но 328р)
если просто запитать от USB (без проги) - тоже серва не работает