Переделка FY-20A на CC
Не думайте что тема заглохла, я даже бутлоадер прошил… 😃 Теперь фишка уже не фишка, обратно я так понял не вернуть, будем двигаться дальше! Вот только кто бы популярно на пальцах объяснил, как из этих почти 71 тыс. файлов прошивка то собирается? Какие файлы испльзуются, где это посмотреть? По аналогии допустим с мультивием, ну или другими проектами на Си, где дефайны смотреть назначения выводов проца, какой проц используется, какие датчики? В мультивие допустим закоментили дефайн -выключили, раскомментили- включили, а как здесь это устроено. И например отключить лишние модули? И dankers как основатель проекта, ответил на личное сообщение об исходниках на квадр следущее: We tried to contact the guy that did it, he was not interested in sharing the source code and it is a bit complex to perform the changes apparently.
It was not done by anyone in the project, it was a video that I got send that someone found on Youtube.
Вообщем придётся разбираться дальше. Буду благодарен за посильную помощь в вопросах которые уже возникли.
Какие файлы испльзуются, где это посмотреть?
прошивка целиком и полностью построен на утилите make, открываете главный Makefile и смотрите что выполняется по команде make coptercontrol.
основные “настройки” в каталогах \flight\CopterControl\* и \flight\PiOS\*
he was not interested in sharing the source code
а что тогда выложили на гуглькод?
p.s.
в исходниках есть проект под эклипс, но он позволяет только редактировать файлики да запускать комплицию/прошивку. взаимосвязи там очень хреново прописаны, дефайны из Makefile-ов вобще отброшены, вобщем изучать исходники весьма неудобно. блокнот и Ctrl+F - основной инструмент ;)
в исходниках есть проект под эклипс
Дмитрий, скажите, существует ли на сегодняшний день прошивка платы Copter Control для самолета с подключением GPS и функцией автовозврата (RTH)? И если да, то где ее можно взять (пусть эксперементальную и недопроверенную)? Или такая прошивка принципиально невозможна в рамках ресурсов платы CC?
ветка andrey/CC_Guidance, возврат по команде или пропаданию связи, удержание позиции, полет “галсами” против ветра (если скорости возврата недостаточно), летание по спирали. только самолеты, хотя Андрей вроде бы начал тренироваться и на коптерах.
картинка из симулятора: порывистый ветер 25км/ч, сильная турбулентность, самолет в режиме удержания горизонта облетает базу, радиус 100м:
повторяемость как симуляторе, так и в жизни потрясающая.
ветку я давно не смотрел, вот настройки стабилизации двухмесячной давности:
Назначение полей в ccguidancesettings.
Yaw - положение оси в нейтрали.
Pitch - Climb,Sink - значения в градусах для набора или снижения высоты, Kp - множитель для разности заданной и текущей высоты.
Roll - На текущий момент используется только поле нейтрального значения оси.
Trottle - Kp,StepMax,Max,Min
Kp множитель разности заданной и текущей скорости.
StepMax - максимальный шаг изменения trottle за один вызов модуля.
Max,Min - предельные значения trottle.
ReturnTobaseAltitudeOffset - высота над базой, что бы в землю не влепить аппарат из за ошибок определения высоты.
RadiusBase - радиус окружности вокруг точки базы, в этой области самолёт летит с предыдущим расчитанным направлением.
TimesRotateToCourse - время на разворот самолета на новый курс, с целью снижения скорости поворота по оси Yaw на момент расчета поправок к Attitude.Yaw, с этой же периодичностью рассчитывается новой курс. Если задать период обновления меньше периода обновления GPS данных с приёмника, время будет равно периоду обновления GPS данных.
MovingAverageMedianYaw - включение фильтрации поправок к Attitude.Yaw.
GroundSpeedMax - задание скорости движения самолёта.
GroundSpeedCalcCorrectHeadMin - минимальная скорость при которой допускается вычисление поправки к Attitude.Yaw.
FaileSaveRTB - разрешение автоматической активации возврата на базу при потере сигнала с пульта.
TrottleAutoSet - разрешение автоматического управления газом для поддержания скорости. (на земле если в состоянии Arming, и включен режим возврата на базу или с включенной опцией выше выключить пульт - двигатель запустится)
CircleAroundBaseHelixAngle - угол сужения-расширения спирали при движении вокруг базы (центральная линия RadiusBase * 0,5)
(на будущее если дальше пробовать такой способ сделаю раздельное задание углов сужения-расширения)
CircleAroundBase - включение-отключение движения по кругу вокруг базы.
SimpleCourseCalc - включение простого способа расчёта курса на базу.
HomeLocationSet - данные местоположения базы, можно или нет использовать.
HomeLocationLatitude - широта (градусы умноженные на 10^6) тип int32
HomeLocationLongitude - долгота (градусы умноженные на 10^6) тип int32
HomeLocationAltitude - высота над уровнем моря, тип float
UpdatePeriod - ограничение периода обработки функции ccguidanceTask, если вызов произошёл раньше этого времени то выход из функции, можно использовать для
ограничения периодичности обработки данных от GPS в модуле CC_Guidance.
дополнение:
Теперь задаётся один параметр PeriodCorrectBiasYaw:
Вне радиуса базы, с этой периодичностью рассчитывается курс, меняется левый, правый галс
детали и текущее состояние пытайте у Андрея (Astron на OP форуме).
Бутлоадер прошился нормально, сегодня распаял юсб разьём - фишка уже прикидывается Copter Control 😃 Потом припаял флешку, ну и осталось с исходниками разобраться. Вот тут вопрос - если всё так плохо с эклипсом, то может в чем то другом проект пересобрать основываясь на маке-файле, есть же кейл, иар… Ну может и ещё кто что посоветует?
есть же кейл, иар
- они ни разу не бесплатные
- проект все равно придется делать с нуля
- их компиляторы сгенерируют другой код (изменится время основного цикла, на него завязано абсолютно все)
проблем со сборкой ведь нет, написал “make coptercontrol”, получил через 3 минуты прошивку. лазить по исходникам с тем что есть неудобно, эклипс матерится на не найденные заголовки, отсутствующие дефайны и тд.
хотя если всякие кейлы могут построить проект на основе рабочего набора Makefile-ов, то можете и попробовать. только компилятор менять не стоит.
проблем со сборкой ведь нет, написал “make coptercontrol”, получил через 3 минуты прошивку. лазить по исходникам с тем что есть неудобно, эклипс матерится на не найденные заголовки, отсутствующие дефайны и тд.
Т.е. просто не обращать на это внимания?
пример. в главном makefile написано:
# Set to YES to build a FW version that will erase all flash memory
ERASE_FLASH ?= NO
эклипс ничего не знает про этот дефайн, поэтому даже при его задействовании при просмотре кода:
#ifndef ERASE_FLASH
/* Initialize watchdog as early as possible to catch faults during init */
PIOS_WDG_Init();
#endif
// ... skipped
#ifdef ERASE_FLASH
PIOS_Flash_W25X_EraseChip();
#endif
будет непонятно, выполняется эта часть или нет. а собственно сборка в эклипсе - это просто выполнение все той же команды “make coptercontrol”.
ветка andrey/CC_Guidance
В анонимном режиме запросить не удалось. Вероятно - только для участников проекта.
Придется подождать, пока ктониь из коллег по форуму до этого не дойдет.
в смысле “не удалось”?
hhr@HHR-WIN7 /d/devel_src
$ git clone git://git.openpilot.org/OpenPilot.git OpenPilotReadOnly
Cloning into 'OpenPilotReadOnly'...
remote: Counting objects: 71134, done.
remote: Compressing objects: 100% (23678/23678), done.
remote: Total 71134 (delta 49335), reused 65844 (delta 44919)
Receiving objects: 100% (71134/71134), 134.23 MiB | 591 KiB/s, done.
Resolving deltas: 100% (49335/49335), done.
hhr@HHR-WIN7 /d/devel_src
$ cd OpenPilotReadOnly/
hhr@HHR-WIN7 /d/devel_src/OpenPilotReadOnly (master)
$ git checkout andrey/CC_Guidance
Branch andrey/CC_Guidance set up to track remote branch andrey/CC_Guidance from origin.
Switched to a new branch 'andrey/CC_Guidance'
hhr@HHR-WIN7 /d/devel_src/OpenPilotReadOnly (andrey/CC_Guidance)
$ git remote -v
origin git://git.openpilot.org/OpenPilot.git (fetch)
origin git://git.openpilot.org/OpenPilot.git (push)
git clone git://git.openpilot.org/OpenPilot.git OpenPilotReadOnly
Так - проходит. Спасибо. Но где на офиициальных страничках проекта говорится о шаманском слове “OpenPilotReadOnly”?
Опять “внутренний круг” получается. 😃
“OpenPilotReadOnly” - это название каталога, в который сольется репозиторий. можно вместо него написать “OpenPilotFullWrite”, или “KatalogDlyaVsyakoyFigni”, ничего не измениться.
ничего не измениться.
Ага. Следущая команда:
$ git checkout andrey/CC_Guidance
как не проходила, так и не проходит. Пишет много слов, в частности:
D:\AviaSoft\Git\OpenPilotReadOnly>hed to a new branch ‘andrey/CC_Guidance’
error: pathspec ‘andrey/CC_Guidance’ did not match any file(s) known to git.
error: pathspec ‘Branch’ did not match any file(s) known to git.
…
дайте полный лог или скриншот на худой конец, а также вывод “git --version” и “git remote -v” в каталоге репозитория.
автор переделки ответил кратко, но ёмко 😃
там же ссылки на исходники (250Мб!!!).
I uploaded files for FY20 Servoo board and STM32 grogrammer.
Changes for use CC_SW without change original CPU (FY20 use stm32f103 rbt6).
I also read my FW from FY20 and is on file.
I also read my FW from FY20 and is on file. code.google.c.../downloads/list
Скачал, попробовал подменить файлы, прошивка собираться не хочет, ругается на CameraStab. Делаю вроде всё по инструкции Дмитрия. Житейский вопрос: как скопировать инфу, что выдаётся в окне cmd?
Это сделано, но всё равно в этой куче файлов разбираться и разбираться…😃 Какой компилятор использовать лучше для просмотра и редактирования исходников?
Mojno programirovat processor po port RC232 s pomoshti FlashLoaderDemonstrator (USB i vseh provodov nenujno svyazat…)
SW coptercontrol razpolojen na adrese 8003000.
Zdes postavil Pictures kak eto delaetsa.
Спасибо Stefan!
Вот что у меня получается на выходе
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.
D:\devel\OpenPilot>mingw32-make uavobjects
d:/devel/MinGW/bin/mingw32-make -f Makefile.Debug
mingw32-make[2]: Nothing to be done for `first'.
- OpenPilot UAVObject Generator -
Done: processed 52 XML files and generated 52 objects with no ID collisions. Tot
al size of the data fields is 1762 bytes.
generating gcs code
- OpenPilot UAVObject Generator -
Done: processed 52 XML files and generated 52 objects with no ID collisions. Tot
al size of the data fields is 1762 bytes.
generating flight code
- OpenPilot UAVObject Generator -
Done: processed 52 XML files and generated 52 objects with no ID collisions. Tot
al size of the data fields is 1762 bytes.
generating python code
- OpenPilot UAVObject Generator -
Done: processed 52 XML files and generated 52 objects with no ID collisions. Tot
al size of the data fields is 1762 bytes.
generating matlab code
- OpenPilot UAVObject Generator -
Done: processed 52 XML files and generated 52 objects with no ID collisions. Tot
al size of the data fields is 1762 bytes.
generating java code
D:\devel\OpenPilot>cs-make coptercontrol
d:/devel/CodeSourcery/bin/cs-make -f Makefile.Debug
cs-make[2]: Nothing to be done for `first'.
- OpenPilot UAVObject Generator -
Done: processed 52 XML files and generated 52 objects with no ID collisions. Tot
al size of the data fields is 1762 bytes.
generating flight code
CC d:/devel/OpenPilot/flight/Modules/CameraStab/camerastab.c
../Modules/CameraStab/camerastab.c: In function 'attitudeUpdated':
../Modules/CameraStab/camerastab.c:118:15: error: 'CameraStabSettingsData' has n
o member named 'Inputs'
../Modules/CameraStab/camerastab.c:118:23: error: 'CAMERASTABSETTINGS_INPUTS_ROL
L' undeclared (first use in this function)
../Modules/CameraStab/camerastab.c:118:23: note: each undeclared identifier is r
eported only once for each function it appears in
../Modules/CameraStab/camerastab.c:118:58: error: 'CAMERASTABSETTINGS_INPUTS_NON
E' undeclared (first use in this function)
../Modules/CameraStab/camerastab.c:119:6: error: 'CameraStabSettingsData' has no
member named 'Inputs'
../Modules/CameraStab/camerastab.c:119:6: error: 'CAMERASTABSETTINGS_INPUTS_ACCE
SSORY0' undeclared (first use in this function)
../Modules/CameraStab/camerastab.c:122:15: error: 'CameraStabSettingsData' has n
o member named 'Inputs'
../Modules/CameraStab/camerastab.c:122:23: error: 'CAMERASTABSETTINGS_INPUTS_PIT
CH' undeclared (first use in this function)
../Modules/CameraStab/camerastab.c:123:6: error: 'CameraStabSettingsData' has no
member named 'Inputs'
../Modules/CameraStab/camerastab.c:126:15: error: 'CameraStabSettingsData' has n
o member named 'Inputs'
../Modules/CameraStab/camerastab.c:126:23: error: 'CAMERASTABSETTINGS_INPUTS_YAW
' undeclared (first use in this function)
../Modules/CameraStab/camerastab.c:127:6: error: 'CameraStabSettingsData' has no
member named 'Inputs'
cs-make[1]: *** [d:/devel/OpenPilot/build/fw_coptercontrol/camerastab.o] Error 1
cs-make: *** [fw_coptercontrol_opfw] Error 2
D:\devel\OpenPilot>cs-make coptercontrol
USB у меня уже распаян и залит boot правда наверное не тот… Но СС видит плату.
Полетели!
Поздравляю,
сегодня попробовал FY20 с код Андрею на квадрокоптере и работае хорошо,
летает отлично.
code.google.com/p/fy20-openpilot/downloads/list
Квадроцоптер собран на китайское шаси HJ450, no ето шаси нет разводки для моторов,
так что сделал дополнительную платы.
dealextreme.com/…/4-axis-hj450-multi-flame-wheel-f…
Завтра сделаю видео и положу.
Полетели!
Скажите, в чём заключается переделка?
Меняется схема…
Меняется загрузчик…
Меняется прошивка…
Если можно, расскажите поподробнее.