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

Piranha

Ну дык спасибо ему за это!!

Вы мне лучше скажите как патчи заливать и куда?
как мне вот это провернуть?

"I modified your code and turned it into a patch. It’s a patch against `next`, so just save it to `camera_stab.diff` (in the trunk directory) and apply it with
patch < camera_stab.diff "
Я типо не программер и пока не въеду где этот патч взять и как его сохранить в `camera_stab.diff`???

Piranha

Да видел я что он допиливает 😃
Но яж хочу всё знать! В частности как и куда патчи впендюривать 😃

Bluebird

Дим, ты же в курсе, для того кто имеет станок - выточить втулку раз плюнуть 😉 У кого станка нет - мучайся дрелью и надфилем, но выйдет хуже 😉
Там джит, компиляция, патчи, ветки, и прочая прочая… Колдовство вообщем

Volver
Piranha:

Да видел я что он допиливает
Но яж хочу всё знать! В частности как и куда патчи впендюривать

Если узнаешь как, дай остальным знать, т.к. вот вот придет подвес (тамжню за ногу!)

Piranha

Ну дык ято тоже станок свой дрелью и напильником делал … 😉
А джит там ненужен по-моиму! Только бубен нужен волшебный

Гы, Алил, долго тебе подвес идет!!! Я за это время уже успел один купить второй сделать 😃

Volver

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

HikeR
Piranha:

Я типо не программер и пока не въеду где этот патч взять и как его сохранить в `camera_stab.diff`???

если цитата с git.openpilot.org, то в начале либо в конце обсуждалки должны быть ссылки на патчи, типа как тут (camera_stab.diff там есть, но 4-х месячной давности).

Bluebird:

Там джит, компиляция, патчи, ветки, и прочая прочая… Колдовство вообщем

ну не все так страшно. если искомый camera_stab.diff найдется, то отпостить инструкцию в стиле “скачать, нажать, запустить…” нет проблем (только не для мака 😉

Bluebird
Piranha:

Но вся ссылка заключена вот в этой фразе - It’s a patch against `next`

Будет в следующей прошивке 😉
Насколько я понимаю в движении мизинца на левой руке, трясущей колдовской бубен на расстоянии 233 мм от клавиши Enter на цифровой клавиатуре. 😉

HikeR

дык это, все что в теге code и есть текст патча, который нужно сохранить в файлик с указанным именем.
ну а дальше все зависит от того, что уже имеется установленного из: Git, компилятор для ARM, исходники OP.

Piranha

Дим, даешь ЛикБез! 😃
Вот как раз ничего не установлено из того что ты перечислил 😦

HikeR

предполагается, что все барахло будет лежать в d:\devel

Git for Windows, качать отсюда - code.google.com/p/msysgit/downloads/list?can=3&q=o… (текущая версия - Git-1.7.8-preview20111206.exe)

шаги установщика:

  • запускаем, на первом экране - Next
  • читаем лицензию, соглашаемся - Next
  • путь установки, отвечаем “d:\devel\Git” - Next
  • снимаем все галки с опций, можно оставить “Use a TrueType font…” для красоты - Next
  • если не нужна строчка в меню “Пуск”, ставим галку “Don’t create ля-ля-ля” - Next
  • чтобы не захламлять систему выбираем самую первую опцию “Use Git Bash only” - Next
  • про SSH отвечаем как есть “Use OpenSSH” - Next
  • довольно важная опция “Checkout Windows-style, commit Unix-style line ending” - Next
  • ждем окончания установки, снимаем галку “View release notes” - Finish

Git установлен.

качаем исходники OpenPilot-а.

  • запускаем “d:\devel\Git\Git Bash.lnk

  • в черном-черном окне пишем:
    cd /d/devel
    обратите внимание на отсутсвие двоеточия и обратные слеши, теперь мы почти в никс-окружении.

  • собственно загрузка:
    git clone git://git.openpilot.org/OpenPilot.git OpenPilot
    выглядит это примерно вот так:

    $ git clone git://git.openpilot.org/OpenPilot.git OpenPilot
    Cloning into 'OpenPilot'...
    remote: Counting objects: 62245, done.
    remote: Compressing objects: 100% (17767/17767), done.
    remote: Total 62245 (delta 43669), reused 60840 (delta 42304)
    Receiving objects: 100% (62245/62245), 118.32 MiB | 497 KiB/s, done.
    Resolving deltas: 100% (43669/43669), done.
    

    скачивается ~120 Мб, на диске займет ~270 Мб

Python for Windows

  • идем на офсайт и качаем последнюю версию - www.python.org/download/ (текущая Python 2.7.2 Windows Installer)
  • стартовый экран, “Install for all users” - Next
  • выбор места установки, “d:\devel\Python” - Next
  • выбор дополнительных фишек, убираем все (“Entire feature will be unavailable”), оставляем только самую первую строчку - Next
  • ждем окончания установки - Finish

компилятор для ARM

  • идем на очередной офсайт - sourcery.mentor.com/sgpp/lite/arm/…/release1802, опять берем последнюю версию Sourcery G++ Lite 2011.03-42 (IA32 Windows Installer)
  • запускаем, ждем - Next
  • соглашаемся с лицензией - Next
  • читаем состав пакета - Next
  • тип установки “Custom” - Next
  • выбираем только сам тулчайн (первая галка), галку с документации снимаем - Next
  • каталог установки “d:\devel\CodeSourcery” - Next
  • не меняем системные переменные, “Do not modify PATH” - Next
  • не создаем тучу иконок и ярлыков, “Don’t create icons” - Next
  • смотрим итоги нашего выбора - Next
  • все готово, выходим - Done

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

CodeSourcery
Git
Python
OpenPilot

подготовка закончена, для сборки/пересборки прошивок все имеется.

To Be Continued…

Piranha

Дим, огромадное тебе спасибо! Будем ковыряться;)

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

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

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