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

SovGVD

ну вот, а хотел с зп заказать подобную платку… продает кто отдельно напаянный магнетометр дешевле 25$?

Covax

Глеб, да сейчас выпустят новую версию платок, не торописька.
Учись, летай пока 😃

Musgravehill
Covax:

бодяга

Это же вроде soft_iron и hard_iron эффекты, нужно калибровать магнетометр. На сайте HoneyWell есть Application Notes по этому поводу, математика в наличии. www.magneticsensors.com/literature.php.
…honeywell.com/…/Applications_of_Magnetoresistive_…

…honeywell.com/…/AN215_Cross_Axis_Effect_for_AMR_M…

sensorsmag.com/…/compensating-tilt-hard-iron-and-s…

serj “На широте Питера, например, вектор магнитного поля смотрит в землю под углом около 70 градусов к вертикали.” 😦

Панкратов_Сергей
Syberian:

Для GPS надо носить на улицу, т.к. окна на север, фикса нет, хотя статус показывается нормально.

С тем что окна на север - не причина не коннекта. Спутники не геостационарные - потому они со всех сторон горизонта. Причина в чем то другом.

Syberian
Musgravehill:

вектор магнитного поля смотрит в землю

Но ведь не вертикально же, согласитесь?

Musgravehill
Syberian:

не вертикально

Конечно, не на полюсе живем. Но на экваторе ситуация гораздо приятнее.
Считается, что с монтажом магнетометра не стоит заморачиваться. Заморачиваться нужно с калибровкой, вращая на идеально горизонтальной поверхности. По полученной фигуре типа эллипса найти коэффициенты корректировки, которые дадут окружность на графике напряженности магнитного поля. Компас еще не выслали, нужно плату делать - не скоро смогу сам проделать калибровку.

SovGVD

дошли руки до этой прошивки, но не пойму что я делаю не так: залил прошивку, запускаю конфигуратор, 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
----------------------------------------

дальше ничего не происходит =(

Syberian

Поздравляю 😃
Пошагово:
Раз уж написал свои драйверы, сперва нужно проверить, работают ли они вообще. В библиотеке 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 и узреть свои значения датчиков.

Как дойдешь до этого пункта, пиши, пойдем дальше 😃

SovGVD

как не ковыряю, всё тоже самое, данные с датчиков бегут (пока не кручу - циферки на месте, кручу - всё меняется), переключился на вкладку (ногу естественно засадил), там:

Init ACM

RAM: 1747
FW Version 6
----------------------------------------

и всё на этом =(
кстаии делаю всё это через VirtualBox с виндой XP SP2 Eng (с AeroQuad нормально работало)

методом тыка: повисает на barometer.Init(); - барометра у меня нету =) где его отключать?

UPD: закоментил инициализацию барометра, теперь CLI работает, на тесте всё ок, циферки бегут (только навернка знаки перепутаны, но это на потом)

что дальше?

Syberian
SovGVD:

методом тыка

Отлично 😃 Только это не выход. Как только он начнет опрашивать баро в полете, начнется зависон и тупняк. Баро там сильно интегрирован, поскольку входит в состав оригинальной платы.
Придется “занулять” библиотеку APM_BMP085, или хотя бы ее работу с и2с.
В панельке CLI пройдись по всем кнопкам сверху кроме erase и reset, чтобы все откалибровать и выбрать тип пепелаца и набор датчиков
Затем вытащи перемычку из 40 и щелкни по raw sensor data. Следи за текстом на консоли, чтобы отловить, зависнет где-нить или нет.
Если все поканает и поползут графики, проверь работу индикаторов ROLL PITCH YAW, чтоб соответствовали отклонению коптера - это и есть проверка полярности. Также возможно придется менять делитель в гиро и акселе.
С акселем проще: после калибровки на оси Z будет -1000. Усилением акселя нужно добиться, чтобы в перевернутом состоянии было +1000, а не -500, 0 или проч. Делитель одинаковый на все оси.

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

SovGVD

покоментил работу с i2c, график заработал:

буду настраивать дальше, пока что ROLL PITCH YAW фигню показывают и возвращаются к нулям, как было при неверном расположении датчиков в mutiwii =)

Syberian

А чо графики такие порепанные? зайди в консоль, набери test ввод profiling
цифра в конце абракадабры должна быть не более 6000 - это тайминг основного цикла, как в мультивие

SovGVD


upd: аксель подобрал, по Z при спокойстивии -1000, переворачиваю +1000 (±5)… ща гиру помучаю

Syberian

Тайминг ОК, сказывается отсутствие барометра. Дикие показания гиры, в драйвере значения от гиры подели, ориентируясь на YAW: повернул машинку на 90 град - стрелка тоже должна на 90 град, а не крутиться, как пропеллер. Для затравки: при повороте ок 90 град/сек показания на графике примерно 200-400.

По полярности датчиков.
Смотри в полетном режиме на вкладке флай дата:
При наклоне вперед accel X и gyro Y в минус.
При наклоне вправо accel Y падает, gyro X растет
При повороте по часовой - стрелка на стрелочном yaw во второй вкладке ползет тоже по часовой

Еще один совет. В акселерометре делитель выставь (одинаковый для осей) такой, чтобы в консоли test - ADC 7-й параметр был равен 416, затем откалибруй, нажав level или в консоли exit - setup - level

SovGVD

436 7 параметр (±2), сейчас еще поиграюсь с делителем, полярность поменял, всего один минус лишний надо было поставить =) там в момент инициализации/калибровки тоже делители надо наставить и полярность расставить (для гиры)?
стрелочки почти адекватно отклоняются, но ошибка в градусах есть пока что… это нормально что на графике меняется быстро всё, а стрелочки ползут медленно к своим значениям (доходят и стоят)?

Syberian

Все действия с кодом - только в библиотеке!
Калибровку гиры прога делает сама каждый запуск, если дописывал - убери.
Калибровка акселя - по команде LEVEL.

Стрелки обновляются с частотой 3Гц, график - 20. Фишка настройки в том, чтобы при отклонении стрелка довольно резко вставала в нужный угол. Если она встает “не туда”, а потом медленно подползает куда нужно (недолет-перелет) - надо регулить гиру. Если перелет - делить на большее число, и наоборот.

Аксель должен быть 416, на худой конец 410.

SovGVD

аксель настроил, теперь 416 (±1)
по поводу стрелок, чето YAW себя совсем не адекватно ведет:

наклоняю платку влево/вправо (или вправо/влево) на 90* затем ставлю обратно на ровную поверхность (от которой калибровал)

Syberian

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

SovGVD
Syberian:

Чем видео записать с экрана?

hypercam вроде в винде есть (я то записываю в убунте XVidCap окошко в VirtualBox =)))

Syberian:

Для затравки: при повороте ок 90 град/сек показания на графике примерно 200-400.

гиру к этим значениям старался привести… или это для акселя было? =)
сейчас в 10 раз уменьшил делитель… стал чуток (градусов 5-6) перелетать и потом возвращается к нужной отметке
значение методом тыка подбирать? или есть какие то более лучшие методы?

UPD: в общем получается пока такая штука:

если резко далеко (более 40 градусов примерно) крутануть, то доезжает (в начале крутанул на 90*, потом резко в обратку на 180 (90 в другу сторону от нуля)), если немного, то вполне нормально или переезжает или недоезжает - идеальности нет

UPD: еще горизонт - если платку вверх тармашками и потом обратно, то горизонт доплывает, если не сильно мучить, то встает в нули адекватно