Платы CopterControl, CC3D, LibrePilot, Revolution от OpenPilot
Дим, огромадное тебе спасибо! Будем ковыряться;)
так как прошивка и наземная станция неразлучно связаны узами 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 =)
Incompatible GCS and FW detected
если при этом предлагает обновится на версию, которая уже установлена:
то вот оно колдунство где.
Дмитрий, а у вас не случалось токого, перепрашил новой прошивкой ну впринцепе все зделал как написано все норм, кроме того , что GCS разной версии, вообщем праверил всё круто. Решил перекинуть все назад. Запускаю старую версию GCS (OpenPilot-20110819-f85ae84e-install.exe), прошиваю той же прошивкой (fw_coptercontrol-20110819-f85ae84e-ppm.opfw),дальше накатываю сваи рабочии настройки, включаю а СС не реагирует на приемник.
Подключил а в GCS показывает что RC Input не конектится. Переправерил настройки . все как было =(. Пару раз перепрошил, сделал рестарт не чего не помогает,… странности и мистика =)
после залития новой прошивки и перед любым изменением настроек желательно сделать “Tools - Erase all settings from board” и перезагрузиться (передернуть питание). насчет приемника — тип входного сигнался менялся стопицот раз, в GCS показывает PWM а на деле старые настройки реально устанавливают спектрумовский, к примеру. вобщем сброс я делал постоянно.
Спасибо, испробую все варианты, так на всякий случай решил праверить отдельно приемник, пашит =). Буду извращатся дальше.
Что то странное Tools - Erase all settings from board не помогла, такое впечатление, что плата перестала видить приёмник.
Тэ-э-э-кс… После долгой ( в несколько месяцев ) паузы я опять примыкаю к отряду коптеро-водов, коптеро-строителей, коптеро-пилотов и так далее.
Правда, насчет последнего (пилотов) еще учиться и учиться… И все же. Только что закончил сборку и первый облет “малыша” с CopterControl на борту (октябрьская партия, если интересно).
Не знаю к какому классу этот квадрик можно отнести: вроде далеко не “микро” и все же не крупняк.
27 сантиметров между осями моторов по диагонали (или 19 сантиметров между соседними), вес без “колпака” и аккумулятора 330гр. С “колпаком” - 365гр.
Думал будет легче, но поленился центральные пластины (2 штуки) хлорным железом травить и так с медью и оставил. Не знаю, хуже от этого стало или нет - тут часто мелькают сообщения, мол, нагрузи побольше и будет стабильнее 😉
Первые впечатления - как и у Сергея (который Covax), тянет вперед и вправо. И по яву тоже подкручивает, но как-то странно: сначала по часовой, а когда немного компенсирую стиком на пульте и отпускаю стик в нейтраль, также плавно начинает поворачивать против часовой… Ну - будем разбираться с настройками, пиды я еще не крутил, все по дефолту (только первичную настройку согласно видео с OpenPilot TV сделал).
Видео не писал - нечего пока показывать. Вот несколько фотографий (снимал видеорегистратором, так что качество соответствующее, сорри):
В общем - принимайте в свои ряды!
поленился центральные пластины (2 штуки) хлорным железом травить и так с медью и остави
Медь сдирается элементарно механически если прогреть плату феном. Далее ножом.
пропы то какие?
тянет вперед и вправо. И по яву тоже подкручивает
Попробуйте Yaw в режиме AxisLock - хвост будет держать получше.
Тянет вперед и вправо - проверьте центровку, может быть перевес в ту сторону. Если с центровкой все в порядке то = Проверьте во вкладке FlightData что показывает авиагоризонт при аппарате выставленном на ровной поверхности.
Если авиагоризонт завален - отрегулируйте во вкладке Configuration, пункт Attitude. После каждой регулировки перезапускайте СС снимая питание или во вкладке Firmware нажимая Reset.
Успехов 😉
Попробуйте Yaw в режиме AxisLock - хвост будет держать получше.
Вообще для хвоста это обязательная установка.
Тянет вперед и вправо - проверьте центровку, может быть перевес в ту сторону. Если с центровкой все в порядке то = Проверьте во вкладке FlightData что показывает авиагоризонт при аппарате выставленном на ровной поверхности.
Неправильная центровка в Attitude дожна быть скомпенсирована платой.
Коль мне так не кто не ответил, задам ещё раз вопрос, только по другому. Как у STM, слить внутреннюю флэш память. По ходу у меня в ней остался после перепрошивки какой то мусор и теперь из за него не видет приёмника вообще не как.
Всё что предлогалось выше я уже пробывал не один раз в разных конфигурациях 😦, не помогает.
Чем пытался исправить ситуацию:
- Перепрошить, пробывал разные прошивки.
- Restart, Boot, перезагрузка платы.
- Tools - Erase all settings from board не помогла.
- Менял каналы PPM, PWM,… и тд.
- Приёмник на 100% жив праверил отдельно от СС
- Заливал настройки каторые работали, так же просто с нуля всё настраивал сам.
На всякий случай настройки.
nastroyki_8_CC.uav
Только что закончил сборку и первый облет “малыша”
Олег, Классный малыш-крепыш у Вас вышел, а колпак этот откуда? от муляжа камеры наблюдения? а взвесить можете и диаметр замерять?
Попробуйте Yaw в режиме AxisLock - хвост будет держать получше.
Вообще для хвоста это обязательная установка.
А я где-то тут или на вики опенпилотной читал, что “хвост” надо ставить в “RATE” - Так и сделал…
Неправильная центровка в Attitude дожна быть скомпенсирована платой.
Да, с этим согласен. Где-то даже видео пробегало, в котором квадрик висел с грузиком в виде дополнительного аккумулятора. Причем этот груз был прицеплен к краю одного из лучей - и квадр вполне себе висел…
Буду разбираться, но пока нашел косяк, на который больше всего грешу. Если сейчас смогу фото выложить - покажу. Нет - значит вечером. А суть такова:
- пришло мне в голову (даже не знаю почему - раньше никогда не приходило) проверить ПЛОСКОСТЬ вращения пропеллеров, вернее совпадение их плоскостей.
- у меня в центре всей конструкции имеются 4 металлических винта, которые не дают просто так положить что-то прямо на все 4 вала моторов сразу.
- поэтому я на каждый моторчик подставил еще по дистансеру сантиметровому - а уже поверх этой конструкции положил “ваком” (в том, что он идеально ровный в плане плоскости я не сомневаюсь)
- в результате обнаружил, что (!!!) передний правый мотор на несколько милиметров ниже (!!!) - как миниму на три, чем все остальные
😦
Чисто механически объяснить это не могу: лучи из алюминия ровные-ровные, центральная плата из двух (сверху и снизу) 2мм СТЭФ-пластин - визуально тоже ровная. Моторы крепятся прямо к лучу - то есть их “верхушки” должны быть на одинаковой высоте… будем думать-с…
😵
Как считаете - может это быть причиной увода аппарата вперед-вправо??? Если именно передний правый мотор (и, соответственно, пропеллер) крутится на несколько миллиметров ниже, чем остальные три???
пропы то какие?
Пропеллеры 6х3 c ХоббиКинга, акум 2-баночный 1300 (пока), моторы Turnigy 2211 на 2300kv.
Олег, Классный малыш-крепыш у Вас вышел, а колпак этот откуда? от муляжа камеры наблюдения? а взвесить можете и диаметр замерять?
Дмитрий, спасибо! 😉)
Приятно слышать похвалу от человека, который всяких пепелацев понавидался и понаизготавливал… Я это в качестве аванса приму - так как вижу многие вещи, которые в следующий раз буду делать иначе…
Насчет “колпака” - да, от муляжа, заказанного с DX. Я сейчас на работе, а “оно” все дома… Но вес помню точно: 30 грамм без темной внутренней вставки (только сам прозрачный колпак).
С темной же вставкой - на картинке вон писал, 35. Но тут точно не помню, может быть 37 на самом деле (картинку готовил по памяти, мог ошибиться).
Диаметр можно оценить по тому факту, что центральная пластина у меня 10х10см, а колпак ее “чуть-чуть меньше”.
Но если нужны точные цифры - вечером померяю и отпишусь.
мой колпак с ДХ имеет диаметр 116 мм по самой нижней части
высота 70 мм
брал этот муляж - dealextreme.com/…/pir-motion-activated-realistic-d…
мой колпак с ДХ имеет диаметр 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)
Диаметр как указанный Вами, а вот высота иная… Но внешне все очень похоже на купленный мною муляж.
Так что если мерять ТОЛЬКО прозрачный “колпак” - то наверное мы говорим об одном и том же товаре.
Впрочем, думаю что мы несколько ушли в офф-топ. Сорри, прекращаю!!!
Дима (Пиранья) - я тебе размеры вечерком в личку кину, чтобы не засорять эту ветку.