Переделка FY-20A на CC
ну бутлоадер когда будет так оно и станет как я понял?
Это сделано, но всё равно в этой куче файлов разбираться и разбираться… Какой компилятор использовать лучше для просмотра и редактирования исходников?
Посмотрите эту ссылку rcopen.com/forum/f123/topic238442/925
Я на CC обновлял прошивку. Сначала ставится новый инсталлер. Вот прошивка c:\Documents and Settings\konst\Local Settings\Application Data\OpenPilot\firmware\fw_coptercontrol-20110819-f85ae84e.opfw
Когда до I2C дело дойдёт, свисните вот сюда, а то у меня уже мысли кончились…
Вообщем на работе я до исходников добрался 😃 Сейчас пробую повторить все шаги дома, установка Git, установка Eclipce… Ну и по ходу будут вопросы про переназначение выводов контроллера, про датчики, про сборку нужной прошивки…😃 Пока всё не очень понятно после АВР. Ну и чтобы не искать, то вот схемы СС и пределанной фишки
автор переделки ответил кратко, но ёмко 😃
I change original FY20 processor with STM32F103RET6 (more ROM i RAM)
там же ссылки на исходники (250Мб!!!).
да уж … И нафига тогда фишка, если все перепаивать?
Не думайте что тема заглохла, я даже бутлоадер прошил… 😃 Теперь фишка уже не фишка, обратно я так понял не вернуть, будем двигаться дальше! Вот только кто бы популярно на пальцах объяснил, как из этих почти 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.