Платы CopterControl, CC3D, LibrePilot, Revolution от OpenPilot
Олег запилил статью 😃
Ну дык спасибо ему за это!!
Вы мне лучше скажите как патчи заливать и куда?
как мне вот это провернуть?
"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`???
Погоди Дим немного, там Серега еще допиливает код. Результаты тебя порадуют 😉
Войдет в следующую прошивку 😉
Да видел я что он допиливает 😃
Но яж хочу всё знать! В частности как и куда патчи впендюривать 😃
Дим, ты же в курсе, для того кто имеет станок - выточить втулку раз плюнуть 😉 У кого станка нет - мучайся дрелью и надфилем, но выйдет хуже 😉
Там джит, компиляция, патчи, ветки, и прочая прочая… Колдовство вообщем
Да видел я что он допиливает
Но яж хочу всё знать! В частности как и куда патчи впендюривать
Если узнаешь как, дай остальным знать, т.к. вот вот придет подвес (тамжню за ногу!)
Ну дык ято тоже станок свой дрелью и напильником делал … 😉
А джит там ненужен по-моиму! Только бубен нужен волшебный
Гы, Алил, долго тебе подвес идет!!! Я за это время уже успел один купить второй сделать 😃
A его три недели делали, тк ждали ремни и валики дольше обычного, а потот по ошибке почта отправила их во францию. Оттуда переслали в рашу. 😦
Я типо не программер и пока не въеду где этот патч взять и как его сохранить в `camera_stab.diff`???
если цитата с git.openpilot.org, то в начале либо в конце обсуждалки должны быть ссылки на патчи, типа как тут (camera_stab.diff там есть, но 4-х месячной давности).
Там джит, компиляция, патчи, ветки, и прочая прочая… Колдовство вообщем
ну не все так страшно. если искомый camera_stab.diff найдется, то отпостить инструкцию в стиле “скачать, нажать, запустить…” нет проблем (только не для мака 😉
пост вот отсюда …openpilot.org/…/page__view__findpost__p__42913
Но вся ссылка заключена вот в этой фразе - It’s a patch against `next`,
Но вся ссылка заключена вот в этой фразе - It’s a patch against `next`
Будет в следующей прошивке 😉
Насколько я понимаю в движении мизинца на левой руке, трясущей колдовской бубен на расстоянии 233 мм от клавиши Enter на цифровой клавиатуре. 😉
дык это, все что в теге code и есть текст патча, который нужно сохранить в файлик с указанным именем.
ну а дальше все зависит от того, что уже имеется установленного из: Git, компилятор для ARM, исходники OP.
Дим, даешь ЛикБез! 😃
Вот как раз ничего не установлено из того что ты перечислил 😦
предполагается, что все барахло будет лежать в 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…
Дим, огромадное тебе спасибо! Будем ковыряться;)
так как прошивка и наземная станция неразлучно связаны узами UAV Objects, то придется пере-/собирать и саму станцию. когда-то ветка next не особо сильно отличалась от базовой master и новые прошивки можно было собирать и закачивать и так. но я давно не следил за развитием, к тому же разработчики крайне не рекомендуют иметь GSC и прошивку из разных веток. не будем с ними спорить, а подготовимся к закачке Qt libraries.
не будем пока что использовать полный Qt SDK (все-в-одном) так как
- он здоровенный и в данное время качается как-то не очень
- он еще не обновился
- для сборки/пересборки хватит и просто библиотек
- если захочется поковыряться в коде наземной станции, то в дальнейшем можно скачать отдельно Qt Creator
- недавно зарелизилась новая версия Qt 4.8, забираем с офсайта - qt.nokia.com/downloads (прокручиваем вниз до Qt libraries 4.8.0 for Windows (minGW 4.4, 354 MB-)). если закачка не пошла автоматически, то на следующей странице будет ссылка для ручного скачивания.
- на этой же странице забираем компилятор MinGW (get.qt.nokia.com/misc/MinGW-gcc440_1.zip)
установка компилятора 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…
дальнейшей процесс отличается от рекомендованного разработчиками метода, который подразумевает автоматическую сборку всего и вся одной командой. сколько я не пытался повторить его под виндой все время вылезали какие-то мелкие косяки, описание исправления которых займет еще столько же времени и объема текста. поэтому будем делать все пошагово.
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-ов, теперь значит дошла очередь и до винды.
Интересная рокировка. Значит, сам Олег распространять платы СС отказался, но его магазин стал официальным дистрибьютором проекта в Украине. Зашел, значить, посмотреть, что есть из очков на FPV, а там бац! - новость висит 😃 Кстати, написано, что поставка плат ожидается 20-го числа.
ЗЫ Сообщения с 1 декабря просмотрел, вроде этого нигде не написано 😃 Не знаю, правда, может Дима Пиранья оттуда ссылки на статьи привел, мне о них было известно из переписки с Олегом.
такс, теперь пришла очередь и патчей (с которых все и началось :)
фиксы
для начала пофиксим нежелание 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-браузер.
я закончил, дорогие товарищи ;)
Дмитрий огромное спасибо за разжевывание 😉 Главное - тому кому надо, займется, теперь понятно откуда берется и куда затекает.
Я же говорил, колдовство с бубном 😉
Да уш, ОГРОМНОЕ !!! спасибо, я хоть и знал полавину этого мануала так как соберал СС сам и пришлось столкнуться с прошивкой бутлоадера, но тут просто всё разжёвано для первоклассника. Не часто увидиш таких подробных мануалов, зачёт.
Ещё раз спасибо, узнал много нового.
Такой вопрос, после сборки новой версии GCS и прошивки, прошил коптор и при последующим включении GCS и сохранении в ней настроек GCS закравается и не запускается с первого раза, пишет вот это I ncompatible GCS and FW detected, you should upgrade your GCS to 9739b1e:20111216 20:44 version. Тоесть почемуто несоответствие версий. Как я понил что прошивка получилась новее чем GCS =)