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

Sir_Alex
SergDoc:

а я вижу добавление этих функций в cli или как там оно у вас называется - изменяемые параметры через терминал

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

SovGVD:

Имя Google Chrome/Chromium можно без java кроссплатформенно заливать habrahabr.ru/company/apps4all/blog/193876/

Там даже из Firefox можно. Но это немного не то, тем более, сейчас используется немного модифицированный Arduino IDE…

ООО… У них исходники в открытом доступе, надо поковырятся )))

SergDoc
Sir_Alex:

просто тупо нет памяти.

ну мне есть где размахнуться 😃

SovGVD

Почему не то? На сайте выбирать что надо, собирать на стороне сервера (при необходимости) и тут же через плагин с сайта заливать в ардуинку hex. Это в общих чертах, наверняка будут подводные камни.
Вообще с тех пор как появилась работа с serial в браузере (по ссылке там плагин, хз чего именно он делает и как), можно и mission planner сделать 100% кроссплатформеным (т.е. везде где запускается браузер, там будет работать и прошивальщик и конфигуратор)… где то даже видел такую штуку и имхо в этой же ветке.

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 стоит или это вирт. хостинг?