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

Sir_Alex

Меня больше интересует вопрос, как организовать компиляцию на сервере. Например в указанном выше CodeBender.cc, вся работа ведется из PHP, т.е. эмулируется (ну или делается то же самое) MAKE. Так вот, делать так же или тупо менять параметры в конфиге и запускать make…???

SovGVD

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

Ну и я всетаки предлагаю после релиза сразу собирать все варианты коптерные, а не по запросу.

Sir_Alex
SovGVD:

в сорцах ардукоптера есть человеческая сборка через make, имхо для каждого запроса просто конфиг создавать и компилить (ну и складировать уже готовые сборки) Ну и я всетаки предлагаю после релиза сразу собирать все варианты коптерные, а не по запросу.

Да, конечно, я в курсе что есть make, товарищь Paku его под винду даже запилил, тока оно никому не надо в общем то.

Просто я боюсь что будет очень много вариаций прошивок… лвдно, вечерком подумаю, как лучше сделать.

SovGVD

А в оригинальном ардукоптере как сделано? Там mission planner собирает прошивки? Или уже готовые собранные (вариантов конечно поменьше, только различные рамы и всякие rover/heli).

kren-DEL
Sir_Alex:

Меня больше интересует вопрос, как организовать компиляцию на сервере.

есть вариант по крону(планировщику) запускать сборку из дериктории, например, затем присылать юзверю ссылку на готовую прошивку, хранить её на сервере неделю, а затем удалять, есть наработки, только использовал для управления vlc сервером, кодировал потоки видео с камер наблюдения и был сделан web интерфейс для рестарта процесса перекодировки, если вдруг всё заткнулось, если чего - пишите - могу переделать, есть свой физ. сервер с фряхой, можем поэксперементировать:)

blind_oracle

Всё таки собрать сразу все таргеты будет лучше, чем компилсять на сервере по запросу, это еще и намёк на ДДОС.
Сделать несколько make-таргетов, обернуть в конфиге #ifdef-ами нужные параметры и вроде всё.
Сами таргеты можно генерировать вложенными циклами и именовать соответственно, не так уж и много там вариантов.
По какому-нибудь make all будет собирать все таргеты, как в simonk 😃

По сабжу:
Алексей, спасибо за прошивку, сегодня решил попробовать перейти с 2.8.
Всё вроде откалибровал, смущает только что при калибровке компаса оффсет по X большой получается, в диапазоне 140-160.
По другим осям не более 10.
Это у меня какие-то проблемы с компасом или и так сойдёт? Арду советует отклонения не более 150.

Компассмот при этом выдает 36% при полном газе.

Sir_Alex
blind_oracle:

Всё таки собрать сразу все таргеты будет лучше, чем компилсять на сервере по запросу, это еще и намёк на ДДОС. Сделать несколько make-таргетов, обернуть в конфиге #ifdef-ами нужные параметры и вроде всё. Сами таргеты можно генерировать вложенными циклами и именовать соответственно, не так уж и много там вариантов. По какому-нибудь make all будет собирать все таргеты, как в simonk

Такой вариант уже работает. Проблема в том, что если собирать все вариации, будет очень много прошивок. Смотрите, берем только одну плату, криус v2. Получается 7 типов рам(квад, три, окта… и т.п.). Плюс три варианта PPM SUM (PL1, A8, PWM). Плюс микс каналов управления, еще штук 6. Итого: 7*3*6 = 126 вариантов. Тоже самое под Crius v1 - но уже без логирования. Уже 252 варианта. И это только для двух плат!

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

blind_oracle

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

  1. Человек заходит на сайт по логину-паролю
  2. Крыжиками и дропдаун-боксами выбирает нужные ему фичи и жмет кнопку
  3. Скрипт, запускающийся раз в 5 минут, глядит в какую-нибудь табличку, куда складываются задания на сборку с параметрами, и выполняет билд.
  4. Хекс с прошивкой уходит на почту юзеру

Попробую сегодня набросать пример.

blind_oracle

Кстати, а тип рамы имеет смысл выбирать при сборке? Он же меняется в планнере без проблем.

SovGVD
blind_oracle:

Он же меняется в планнере без проблем.

меняется только X/+/v/h, а вот quad/hex/octa и т.д. в оригинале так же выбираются из списка

blind_oracle
blind_oracle:

Попробую сегодня набросать пример.

Так, в первом приближении что-то получилось: artek.novg.net/mpng/
Оно на домашнем сервере, так что не сильно его мучить если что 😃

Что делает:

  1. Данные из формы кладёт в mysql-базу
  2. Скрипт запускается раз в 2 минуты, берёт еще не собранный заказ из базы, запускает make с параметрами соответственно запросу в таблице
  3. Если сборка прошла успешно, то присылает билд лог и .hex в аттаче. Если ошибки, то присылает просто билд лог без файла
  4. Помечает заказ в базе как выполненый ОК или с ошибкой, второй раз к нему не возвращается

Для сборки MPNG под линуксом понадобилось подправить несколько мэйкфайлов чтобы добавить туда таргет mpng с его HALом и передачу дефайнов в сборку.
Ну и сами файлы с настройками тоже конечно (APM_Config.h, RCInput_MPNG.cpp).

Алексей, если так подходит, то я скину все изменённые файлы и скрипты.

ЗЫ:
Саму прошивку я еще не проверял, но собирается вроде без проблем особых.

SovGVD
ReM:

И вот что получилось…

вполне точно получилось =)

ReM

Одной рукой переключателем щёлкал, другой - снимал. 😃

Снимал телефоном…

Sir_Alex
blind_oracle:

Что делает: 1. Данные из формы кладёт в mysql-базу 2. Скрипт запускается раз в 2 минуты, берёт еще не собранный заказ из базы, запускает make с параметрами соответственно запросу в таблице 3. Если сборка прошла успешно, то присылает билд лог и .hex в аттаче. Если ошибки, то присылает просто билд лог без файла 4. Помечает заказ в базе как выполненый ОК или с ошибкой, второй раз к нему не возвращается Для сборки MPNG под линуксом понадобилось подправить несколько мэйкфайлов чтобы добавить туда таргет mpng с его HALом и передачу дефайнов в сборку. Ну и сами файлы с настройками тоже конечно (APM_Config.h, RCInput_MPNG.cpp).

Спасибо! Это почти то что нужно. Если можно, оформите это в виде API(ну там REST например). Т.е. запрос авторизации, Запрос на билд с параметрами указанными, Запрос результата.
А я это офрмлю в виде программы - прошивальщика.

blind_oracle
Sir_Alex:

А я это офрмлю в виде программы - прошивальщика.

А нужна ли программа-то?
Как по мне, так этот сервис лучше встроить в сам сайт мегапирата.
Он на некоем VPS стоит или это вирт. хостинг?

SGur
ReM:

Одной рукой переключателем щёлкал, другой - снимал.

Пытался сделать автофлип. при щелчке переключателем квадрик устремляется резко ввысь (не 1 сек) пытается уйти в космос, отрубается управление по элеронам совсем , по элеватору яву и газу остается примерно 10 % управления.
Что делаю не так , может какие доп настройки надо крутить? Из настроек только назначил переключатель на автофлип. Остальные режимы работают полностью.
ver 2.8 r3

Sir_Alex
blind_oracle:

А нужна ли программа-то? Как по мне, так этот сервис лучше встроить в сам сайт мегапирата. Он на некоем VPS стоит или это вирт. хостинг?

Нужна, потому как основная идея, отказаться от Arduino IDE и других сторонних программ. А если HEX отправлять по e-mail - получается надо avrdude использовать или другую прогу что бы залить прошивку. Хотелось бы все в одном флаконе.

У меня свой dedicated сервер, на нем Proxmox и несколько виртуалок. Под билдсервер выделена отдельная вируталка на Ubuntu 12.04, сайт крутится на другой виртуалке.

SGur:

Что делаю не так , может какие доп настройки надо крутить? Из настроек только назначил переключатель на автофлип. Остальные режимы работают полностью. ver 2.8 r3

Если мне память не изменяет, на 2.8 флип нормально не работал…

blind_oracle
Sir_Alex:

Нужна, потому как основная идея, отказаться от Arduino IDE и других сторонних программ. А если HEX отправлять по e-mail - получается надо avrdude использовать или другую прогу что бы залить прошивку. Хотелось бы все в одном флаконе.

Т.е. собирать ты хочешь всё-таки на сервере? Можно было бы в принципе и к программе приложить сам gcc 😃
Тогда накидай примерный алгоритм общения программы с сервером, по каким параметрам авторизация (некая таблица с емейлами и паролями или еще что) и т.п., а я попробую реализовать.