Платы CopterControl, CC3D, LibrePilot, Revolution от OpenPilot

HikeR

так как прошивка и наземная станция неразлучно связаны узами UAV Objects, то придется пере-/собирать и саму станцию. когда-то ветка next не особо сильно отличалась от базовой master и новые прошивки можно было собирать и закачивать и так. но я давно не следил за развитием, к тому же разработчики крайне не рекомендуют иметь GSC и прошивку из разных веток. не будем с ними спорить, а подготовимся к закачке Qt libraries.

не будем пока что использовать полный Qt SDK (все-в-одном) так как

  1. он здоровенный и в данное время качается как-то не очень
  2. он еще не обновился
  3. для сборки/пересборки хватит и просто библиотек
  4. если захочется поковыряться в коде наземной станции, то в дальнейшем можно скачать отдельно Qt Creator

установка компилятора MinGW
архив в виде обычного zip-файла распаковываем в каталог d:\devel, на выходе должен получиться каталог d:\devel\MinGW

установка Qt libraries

  • проверяем место на системном диске, при распаковке во временный каталог Qt займет ~1.6 Гб
  • запускаем qt-win-opensource-4.8.0-mingw.exe - Next
  • читаем еще одно приветственное сообщение - Next
  • соглашаемся с лицензией - Next
  • выбираем все 2 компонента - Next
  • путь установки “d:\devel\Qt\4.8.0” - Next
  • смотрим на название добавляемого пункта в “Пуске” - Next
  • теперь нужно указать расположение компилятора MinGW, “d:\devel\MinGW” - Next
  • ждем окончания установки - Next
  • снимаем галки с запуска демок и документации - Finish

еще одна нужная штука для обладателей >2 ядерных процессоров, jom (ftp://ftp.qt.nokia.com/jom/jom.zip) здорово распаралеливает процесс компиляции. без нее наземная станция на 4-х ядерном проце собирается реально в 4 раза дольше. скачать, распаковать в d:\devel\Qt\4.8.0\bin\

проверка установки
закрываем все что наоткрывали ранее (в том числе Git шелл)
в каталоге d:\devel создаем файлик firmware.cmd следующего содержания (или качаем готовый - ):

@echo off

set PATH=d:\devel\CodeSourcery\bin
set PATH=%PATH%;d:\devel\Git\bin
set PATH=%PATH%;d:\devel\Python
set PATH=%PATH%;d:\devel\Qt\4.8.0\bin
set PATH=%PATH%;d:\devel\MinGW\bin
set PATH=%PATH%;%SystemRoot%\System32

cd d:\devel\OpenPilot
cmd

:eof

это у нас будет подготовленная среда для сборки прошивки.

запускаем его, наблюдаем консоль с заголовком MINGW32:/d/devel/OpenPilot, далее все команды набираем в ней.

  • проверяем ARM кросс-компилятор
    arm-none-eabi-gcc --version
    вывод команды:

    $ arm-none-eabi-gcc --version
    arm-none-eabi-gcc.exe (Sourcery G++ Lite 2011.03-42) 4.5.2
    Copyright (C) 2010 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
  • проверяем Python
    python --version
    вывод команды:

    $ python --version
    Python 2.7.2
    
  • проверка Qt библиотек
    qmake -query
    вывод:

    $ qmake -query
    QT_INSTALL_PREFIX:d:\devel\Qt\4.8.0
    QT_INSTALL_DATA:d:\devel\Qt\4.8.0
    QT_INSTALL_DOCS:d:\devel\Qt\4.8.0\doc
    QT_INSTALL_HEADERS:d:\devel\Qt\4.8.0\include
    QT_INSTALL_LIBS:d:\devel\Qt\4.8.0\lib
    QT_INSTALL_BINS:d:\devel\Qt\4.8.0\bin
    QT_INSTALL_PLUGINS:d:\devel\Qt\4.8.0\plugins
    QT_INSTALL_IMPORTS:d:\devel\Qt\4.8.0\imports
    QT_INSTALL_TRANSLATIONS:d:\devel\Qt\4.8.0\translations
    QT_INSTALL_CONFIGURATION:d:/devel/Qt/4.8.0
    QT_INSTALL_EXAMPLES:d:\devel\Qt\4.8.0\examples
    QT_INSTALL_DEMOS:d:\devel\Qt\4.8.0\demos
    QMAKE_MKSPECS:d:\devel\Qt\4.8.0\mkspecs
    QMAKE_VERSION:2.01a
    QT_VERSION:4.8.0
    
  • проверка компилятора MinGW
    gcc --version
    вывод:

    $ gcc --version
    gcc (GCC) 4.4.0
    Copyright (C) 2009 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    

если все соответствует, то можно продолжать.

To Be Continued…

HikeR

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

UAV Objects
с начала соберем сакральный центр всей системы — UAV Objects, от которых зависит и прошивка и наземная станция. первую сборку будем делать в ветке master.

  • опять закрываем все что можно

  • запускаем вышесозданный батник d:\devel\firmware.cmd, получаем обычную виндовую консоль

  • проверяем текущий каталог, должен быть d:\devel\OpenPilot

  • вводим команду mingw32-make uavobjects

  • в конце должно быть 5 повторяющихся строк вида

    Done: processed 47 XML files and generated 47 objects with no ID collisions. Total size of the datafields is 1576 bytes.
    

это значит, что все объекты собрались и готовы к использованию

сборка прошивки

  • вводим команду cs-make coptercontrol

  • вывод закончится вот так:

     LD         build/fw_coptercontrol/fw_coptercontrol.elf
     BIN/HEX    build/fw_coptercontrol/fw_coptercontrol.bin
     FWINFO     build/fw_coptercontrol/fw_coptercontrol.bin.firmwareinfo.c
     CC         build/fw_coptercontrol/fw_coptercontrol.bin.firmwareinfo.c
     BIN/HEX    build/fw_coptercontrol/fw_coptercontrol.bin.firmwareinfo.bin
     OPFW       build/fw_coptercontrol/fw_coptercontrol.opfw
    

последняя строка намекает на расположение получившегося бинарного образа готового для загрузки, конкретно он находится по пути d:\devel\OpenPilot\build\fw_coptercontrol\fw_coptercontrol.opfw

этот файл можно скопировать в надежное место (и переименовать его в firmware-master.opfw, например), для отката на стабильную версию или для других целей. если я не ошибаюсь, то он вполне подходит для использования с наземной станцией выложенной в вики проекта.

переход на next
теперь же переключимся на ветку next, чтобы быть на острие прогресса и поиметь кучу новых фишек и багов.

  • если закрыли консоль, то открываем обратно (d:\devel\firmware.cmd)

  • вводим команду git checkout next
    вывод:

    $ git checkout next
    Branch next set up to track remote branch next from origin.
    Switched to a new branch 'next'
    

    переключились, теперь повторяем процесс сборки UAV Objects:

  • вводим команду mingw32-make uavobjects

  • в конце должно быть 5 повторяющихся строк вида

    Done: processed 50 XML files and generated 50 objects with no ID collisions. Total size of the data fields is 1672 bytes.
    

    видите? количество объектов изменилось, поэтому старые наземные станции могут неправильно понять новые прошивки

  • пересобираем прошивку
    вводим команду cs-make coptercontrol
    вывод заканчивается так:

     LD         build/fw_coptercontrol/fw_coptercontrol.elf
     BIN/HEX    build/fw_coptercontrol/fw_coptercontrol.bin
     FWINFO     build/fw_coptercontrol/fw_coptercontrol.bin.firmwareinfo.c
     CC         build/fw_coptercontrol/fw_coptercontrol.bin.firmwareinfo.c
     BIN/HEX    build/fw_coptercontrol/fw_coptercontrol.bin.firmwareinfo.bin
     OPFW       build/fw_coptercontrol/fw_coptercontrol.opfw
    

копируем файл прошивки d:\devel\OpenPilot\build\fw_coptercontrol\fw_coptercontrol.opfw в другое надежное место и переименовать в firmware-next.opfw, чтобы не затереть первый вариант.

самое страшное и ужасное
настала очередь и самой наземной станции. тут нужны очередные подготовительные действия:

  • скачиваем библиотеку SDL с офсайта (SDL-devel-1.2.14-mingw32.tar.gz)
  • распаковываем во временный каталог (winrar или 7-zip понимают архивы .tar.gz)
  • теперь нужно скопировать несколько файлов и каталогов поближе к компилятору:
    файл SDL-1.2.14\bin\SDL.dll в каталог d:\devel\MinGW\bin
    каталог SDL-1.2.14\include\SDL в каталог d:\devel\MinGW\include
    3 файла из SDL-1.2.14\lib в каталог d:\devel\MinGW\lib

теперь осталось только запустить компиляцию, тут я предлагаю 2 варинта: почти официальный, минимум усилий, но очень долгая компиляция; свой вариант, много предварительной рутины, но время сборки меньше в 2-4 раза.

------------------------------------------------
тут я останавливаюсь, так как злосчастный плагин Modelview со своими зависимостями перестал собираться. насколько я помню, ранее его отключили для Mac-ов, теперь значит дошла очередь и до винды.

RA4ASN

Интересная рокировка. Значит, сам Олег распространять платы СС отказался, но его магазин стал официальным дистрибьютором проекта в Украине. Зашел, значить, посмотреть, что есть из очков на FPV, а там бац! - новость висит 😃 Кстати, написано, что поставка плат ожидается 20-го числа.
ЗЫ Сообщения с 1 декабря просмотрел, вроде этого нигде не написано 😃 Не знаю, правда, может Дима Пиранья оттуда ссылки на статьи привел, мне о них было известно из переписки с Олегом.

HikeR

такс, теперь пришла очередь и патчей (с которых все и началось :)

фиксы
для начала пофиксим нежелание GCS собираться с новым Qt 4.8, там делов на 2 строчки, но исправлять будем культурно.

  • качаем fix_for_qt48.patch, сохраняем в каталоге d:\devel\OpenPilot

  • стартуем консоль (firmware.cmd)

  • если еще не переключились на ветку next, то делаем это сейчас:
    вводим команду git checkout next

  • выполняем команду:
    patch -p1 --binary < fix_for_qt48.patch

  • вывод:

    $ patch -p1 --binary < fix_for_qt48.patch
    patching file `ground/openpilotgcs/copydata.pro'
    patching file `ground/openpilotgcs/src/libs/libs.pro'
    

плагин Modelview для новой Qt все-таки отключен изначально и собираться не будет, а про используемую им библиотеку glc-lib забыли. патч выводит библиотеку из сборки, плюс исправляет путь для компилятора MinGW.

GCS
теперь все действительно готово для реактивной сборки наземной станции. я подготовил несколько батников для избавления от рутины и лишней писанины, качаем cmds_for_build.zip, распаковываем 6 файлов в каталог d:\devel. далее:

  • батники 00_config.cmd и 99_clean.cmd — служебные, их запускать не надо. в первом можно поменять пути к инструментарию и исходникам если вы их поставили не в d:\devel
  • запускаем 01_make_uavobjects.cmd (даблкликом или еще как) для сборки UAV Objects для станции
  • запускаем 02_make_gcsversion.cmd для извлечения номера версии и ветки дерева исходников (эти цифры попадают в прошивку и саму станцию, при несовпадении станция будет ругаться)
  • запускаем 03_prepare_gcs.cmd для подготовки Make-файлов
  • и наконец, стартуем 04_make_gcs.cmd и идем курить, пить кофе и тд, процесс на 4-х ядерном проце занимает ~10-15 минут

каждый батник по окончании процесса просит нажать кнопочку для выхода. к слову, на линуксах (конкретно убунте) сборка в 2-3 раза быстрее.

когда все закончится (надеюсь что успешно), можно смело идти в каталог d:\devel\OpenPilot\build\ground\openpilotgcs\bin и запускать экзешник openpilotgcs.exe. к сожалению, первым делом вы увидите вот это:

виджет всяко-разных графиков на новой версии Qt не завелся ;( на его месте будет приятный серый фон, впрочем как и на месте Modelview. чтобы не доставал при каждом запуске можно его отключить совсем (help - about plugins).

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

что дальше?
а дальше все намного проще. исходники будут переодически обновляться, ветки с фичами появляться, пропадать или попадать в основное дерево.

  • обновление исходников (здесь и далее вся работа в консоли вызываемой firmware.cmd)
    git pull
  • если наредактировали не там где-надо, полный сброс всех изменений (кроме новых файлов)
    git reset --hard
  • переключение на другую ветку
    git checkout имя_ветки

на примере обсуждаемой выше камеростабилизации, обновляемся, переключаемся на новую ветку (в которую и попали патчи, у которых не было ссылок ;), собираем новую прошивку:

git pull
git checkout os/CameraStab-improvements
cs-make coptercontrol

при этом примененный ранее патч fix_for_qt48.patch никуда не делся и повторных действий не требует. так как изменения незначительны, прошивка соберется очень быстро.

файл прошивки d:\devel\OpenPilot\build\fw_coptercontrol\fw_coptercontrol.opfw забираем-сохраняем, и приступаем к GCS. просто щелкаем по батникам в порядке очереди:

01_make_uavobjects.cmd
02_make_gcsversion.cmd
03_prepare_gcs.cmd
04_make_gcs.cmd

первые 3 по времени не будет отличаться, последний только пересоберет измененные файлы. новые настройки стабилизации пока что доступны только через UAV-браузер.

я закончил, дорогие товарищи ;)

Bluebird

Дмитрий огромное спасибо за разжевывание 😉 Главное - тому кому надо, займется, теперь понятно откуда берется и куда затекает.
Я же говорил, колдовство с бубном 😉

river3

Да уш, ОГРОМНОЕ !!! спасибо, я хоть и знал полавину этого мануала так как соберал СС сам и пришлось столкнуться с прошивкой бутлоадера, но тут просто всё разжёвано для первоклассника. Не часто увидиш таких подробных мануалов, зачёт.
Ещё раз спасибо, узнал много нового.

Такой вопрос, после сборки новой версии GCS и прошивки, прошил коптор и при последующим включении GCS и сохранении в ней настроек GCS закравается и не запускается с первого раза, пишет вот это I ncompatible GCS and FW detected, you should upgrade your GCS to 9739b1e:20111216 20:44 version. Тоесть почемуто несоответствие версий. Как я понил что прошивка получилась новее чем GCS =)

HikeR
river3:

Incompatible GCS and FW detected

если при этом предлагает обновится на версию, которая уже установлена:

то вот оно колдунство где.

river3

Дмитрий, а у вас не случалось токого, перепрашил новой прошивкой ну впринцепе все зделал как написано все норм, кроме того , что GCS разной версии, вообщем праверил всё круто. Решил перекинуть все назад. Запускаю старую версию GCS (OpenPilot-20110819-f85ae84e-install.exe), прошиваю той же прошивкой (fw_coptercontrol-20110819-f85ae84e-ppm.opfw),дальше накатываю сваи рабочии настройки, включаю а СС не реагирует на приемник.
Подключил а в GCS показывает что RC Input не конектится. Переправерил настройки . все как было =(. Пару раз перепрошил, сделал рестарт не чего не помогает,… странности и мистика =)

HikeR

после залития новой прошивки и перед любым изменением настроек желательно сделать “Tools - Erase all settings from board” и перезагрузиться (передернуть питание). насчет приемника — тип входного сигнался менялся стопицот раз, в GCS показывает PWM а на деле старые настройки реально устанавливают спектрумовский, к примеру. вобщем сброс я делал постоянно.

river3

Спасибо, испробую все варианты, так на всякий случай решил праверить отдельно приемник, пашит =). Буду извращатся дальше.

river3

Что то странное Tools - Erase all settings from board не помогла, такое впечатление, что плата перестала видить приёмник.

SavosRU

Тэ-э-э-кс… После долгой ( в несколько месяцев ) паузы я опять примыкаю к отряду коптеро-водов, коптеро-строителей, коптеро-пилотов и так далее.
Правда, насчет последнего (пилотов) еще учиться и учиться… И все же. Только что закончил сборку и первый облет “малыша” с CopterControl на борту (октябрьская партия, если интересно).

Не знаю к какому классу этот квадрик можно отнести: вроде далеко не “микро” и все же не крупняк.
27 сантиметров между осями моторов по диагонали (или 19 сантиметров между соседними), вес без “колпака” и аккумулятора 330гр. С “колпаком” - 365гр.
Думал будет легче, но поленился центральные пластины (2 штуки) хлорным железом травить и так с медью и оставил. Не знаю, хуже от этого стало или нет - тут часто мелькают сообщения, мол, нагрузи побольше и будет стабильнее 😉

Первые впечатления - как и у Сергея (который Covax), тянет вперед и вправо. И по яву тоже подкручивает, но как-то странно: сначала по часовой, а когда немного компенсирую стиком на пульте и отпускаю стик в нейтраль, также плавно начинает поворачивать против часовой… Ну - будем разбираться с настройками, пиды я еще не крутил, все по дефолту (только первичную настройку согласно видео с OpenPilot TV сделал).

Видео не писал - нечего пока показывать. Вот несколько фотографий (снимал видеорегистратором, так что качество соответствующее, сорри):



В общем - принимайте в свои ряды!

AlcoNaft43
SavosRU:

поленился центральные пластины (2 штуки) хлорным железом травить и так с медью и остави

Медь сдирается элементарно механически если прогреть плату феном. Далее ножом.

пропы то какие?

Bluebird
SavosRU:

тянет вперед и вправо. И по яву тоже подкручивает

Попробуйте Yaw в режиме AxisLock - хвост будет держать получше.
Тянет вперед и вправо - проверьте центровку, может быть перевес в ту сторону. Если с центровкой все в порядке то = Проверьте во вкладке FlightData что показывает авиагоризонт при аппарате выставленном на ровной поверхности.
Если авиагоризонт завален - отрегулируйте во вкладке Configuration, пункт Attitude. После каждой регулировки перезапускайте СС снимая питание или во вкладке Firmware нажимая Reset.
Успехов 😉

AlcoNaft43
Bluebird:

Попробуйте Yaw в режиме AxisLock - хвост будет держать получше.

Вообще для хвоста это обязательная установка.

Bluebird:

Тянет вперед и вправо - проверьте центровку, может быть перевес в ту сторону. Если с центровкой все в порядке то = Проверьте во вкладке FlightData что показывает авиагоризонт при аппарате выставленном на ровной поверхности.

Неправильная центровка в Attitude дожна быть скомпенсирована платой.

river3

Коль мне так не кто не ответил, задам ещё раз вопрос, только по другому. Как у STM, слить внутреннюю флэш память. По ходу у меня в ней остался после перепрошивки какой то мусор и теперь из за него не видет приёмника вообще не как.
Всё что предлогалось выше я уже пробывал не один раз в разных конфигурациях 😦, не помогает.

Чем пытался исправить ситуацию:

  1. Перепрошить, пробывал разные прошивки.
  2. Restart, Boot, перезагрузка платы.
  3. Tools - Erase all settings from board не помогла.
  4. Менял каналы PPM, PWM,… и тд.
  5. Приёмник на 100% жив праверил отдельно от СС
  6. Заливал настройки каторые работали, так же просто с нуля всё настраивал сам.

На всякий случай настройки.
nastroyki_8_CC.uav

Piranha
SavosRU:

Только что закончил сборку и первый облет “малыша”

Олег, Классный малыш-крепыш у Вас вышел, а колпак этот откуда? от муляжа камеры наблюдения? а взвесить можете и диаметр замерять?

SavosRU
Bluebird:

Попробуйте Yaw в режиме AxisLock - хвост будет держать получше.

AlcoNaft43:

Вообще для хвоста это обязательная установка.

А я где-то тут или на вики опенпилотной читал, что “хвост” надо ставить в “RATE” - Так и сделал…

AlcoNaft43:

Неправильная центровка в Attitude дожна быть скомпенсирована платой.

Да, с этим согласен. Где-то даже видео пробегало, в котором квадрик висел с грузиком в виде дополнительного аккумулятора. Причем этот груз был прицеплен к краю одного из лучей - и квадр вполне себе висел…

Буду разбираться, но пока нашел косяк, на который больше всего грешу. Если сейчас смогу фото выложить - покажу. Нет - значит вечером. А суть такова:

  • пришло мне в голову (даже не знаю почему - раньше никогда не приходило) проверить ПЛОСКОСТЬ вращения пропеллеров, вернее совпадение их плоскостей.
  • у меня в центре всей конструкции имеются 4 металлических винта, которые не дают просто так положить что-то прямо на все 4 вала моторов сразу.
  • поэтому я на каждый моторчик подставил еще по дистансеру сантиметровому - а уже поверх этой конструкции положил “ваком” (в том, что он идеально ровный в плане плоскости я не сомневаюсь)
  • в результате обнаружил, что (!!!) передний правый мотор на несколько милиметров ниже (!!!) - как миниму на три, чем все остальные
    😦

Чисто механически объяснить это не могу: лучи из алюминия ровные-ровные, центральная плата из двух (сверху и снизу) 2мм СТЭФ-пластин - визуально тоже ровная. Моторы крепятся прямо к лучу - то есть их “верхушки” должны быть на одинаковой высоте… будем думать-с…
😵

Как считаете - может это быть причиной увода аппарата вперед-вправо??? Если именно передний правый мотор (и, соответственно, пропеллер) крутится на несколько миллиметров ниже, чем остальные три???

AlcoNaft43:

пропы то какие?

Пропеллеры 6х3 c ХоббиКинга, акум 2-баночный 1300 (пока), моторы Turnigy 2211 на 2300kv.

Piranha:

Олег, Классный малыш-крепыш у Вас вышел, а колпак этот откуда? от муляжа камеры наблюдения? а взвесить можете и диаметр замерять?

Дмитрий, спасибо! 😉)
Приятно слышать похвалу от человека, который всяких пепелацев понавидался и понаизготавливал… Я это в качестве аванса приму - так как вижу многие вещи, которые в следующий раз буду делать иначе…
Насчет “колпака” - да, от муляжа, заказанного с DX. Я сейчас на работе, а “оно” все дома… Но вес помню точно: 30 грамм без темной внутренней вставки (только сам прозрачный колпак).
С темной же вставкой - на картинке вон писал, 35. Но тут точно не помню, может быть 37 на самом деле (картинку готовил по памяти, мог ошибиться).
Диаметр можно оценить по тому факту, что центральная пластина у меня 10х10см, а колпак ее “чуть-чуть меньше”.
Но если нужны точные цифры - вечером померяю и отпишусь.

SavosRU
devv:

мой колпак с ДХ имеет диаметр 116 мм по самой нижней части
высота 70 мм

У моего “колпака” явно меньший диаметр. Там по самому низу, по широкой части, так сказать, идет бортик миллиметра 3-4, так даже он не выступает за границы центральной пластины. Которая, как я уже писал, 10х10см.
А Вы, видимо, говорите про диаметр черного “ободка”, который на этот колпак одевается для крепления к основанию? Тогда может быть…
По Вашей ссылке на странице указаны размеры:

Dimensions: 4.57 in x 4.57 in x 3.15 in (11.6 cm x 11.6 cm x 8.0 cm)

Диаметр как указанный Вами, а вот высота иная… Но внешне все очень похоже на купленный мною муляж.
Так что если мерять ТОЛЬКО прозрачный “колпак” - то наверное мы говорим об одном и том же товаре.

Впрочем, думаю что мы несколько ушли в офф-топ. Сорри, прекращаю!!!
Дима (Пиранья) - я тебе размеры вечерком в личку кину, чтобы не засорять эту ветку.

Alex27111972
river3:

не видет приёмника вообще не как

А когда ставишь галку калибровки каналов ползунки хаотично двигаются. А то у меня было как то раз, что при калибровке ползунки двигались, а красные точки направления движения стиков стояли на месте, реакции от пульта реально 0. Оказалось сам ступил 5-й канал не выставил на переключение режимов. И еще попробуй перезаписать другую модель (ну там выбрать планер или еще что то)