Переделка FY-20A на CC

HikeR

автор переделки ответил кратко, но ёмко 😃

I change original FY20 processor with STM32F103RET6 (more ROM i RAM)

там же ссылки на исходники (250Мб!!!).

SGordon

да уж … И нафига тогда фишка, если все перепаивать?

Edward_tlt

Не думайте что тема заглохла, я даже бутлоадер прошил… 😃 Теперь фишка уже не фишка, обратно я так понял не вернуть, будем двигаться дальше! Вот только кто бы популярно на пальцах объяснил, как из этих почти 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.
Вообщем придётся разбираться дальше. Буду благодарен за посильную помощь в вопросах которые уже возникли.

HikeR
Edward_tlt:

Какие файлы испльзуются, где это посмотреть?

прошивка целиком и полностью построен на утилите make, открываете главный Makefile и смотрите что выполняется по команде make coptercontrol.
основные “настройки” в каталогах \flight\CopterControl\* и \flight\PiOS\*

Edward_tlt:

he was not interested in sharing the source code

а что тогда выложили на гуглькод?

p.s.
в исходниках есть проект под эклипс, но он позволяет только редактировать файлики да запускать комплицию/прошивку. взаимосвязи там очень хреново прописаны, дефайны из Makefile-ов вобще отброшены, вобщем изучать исходники весьма неудобно. блокнот и Ctrl+F - основной инструмент ;)

baychi
HikeR:

в исходниках есть проект под эклипс

Дмитрий, скажите, существует ли на сегодняшний день прошивка платы Copter Control для самолета с подключением GPS и функцией автовозврата (RTH)? И если да, то где ее можно взять (пусть эксперементальную и недопроверенную)? Или такая прошивка принципиально невозможна в рамках ресурсов платы CC?

HikeR

ветка 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 форуме).

Edward_tlt

Бутлоадер прошился нормально, сегодня распаял юсб разьём - фишка уже прикидывается Copter Control 😃 Потом припаял флешку, ну и осталось с исходниками разобраться. Вот тут вопрос - если всё так плохо с эклипсом, то может в чем то другом проект пересобрать основываясь на маке-файле, есть же кейл, иар… Ну может и ещё кто что посоветует?

HikeR
Edward_tlt:

есть же кейл, иар

  1. они ни разу не бесплатные
  2. проект все равно придется делать с нуля
  3. их компиляторы сгенерируют другой код (изменится время основного цикла, на него завязано абсолютно все)

проблем со сборкой ведь нет, написал “make coptercontrol”, получил через 3 минуты прошивку. лазить по исходникам с тем что есть неудобно, эклипс матерится на не найденные заголовки, отсутствующие дефайны и тд.

хотя если всякие кейлы могут построить проект на основе рабочего набора Makefile-ов, то можете и попробовать. только компилятор менять не стоит.

Edward_tlt
HikeR:

проблем со сборкой ведь нет, написал “make coptercontrol”, получил через 3 минуты прошивку. лазить по исходникам с тем что есть неудобно, эклипс матерится на не найденные заголовки, отсутствующие дефайны и тд.

Т.е. просто не обращать на это внимания?

HikeR

пример. в главном 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”.

baychi
HikeR:

ветка andrey/CC_Guidance

В анонимном режиме запросить не удалось. Вероятно - только для участников проекта.
Придется подождать, пока ктониь из коллег по форуму до этого не дойдет.

HikeR

в смысле “не удалось”?

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)
baychi
HikeR:

git clone git://git.openpilot.org/OpenPilot.git OpenPilotReadOnly

Так - проходит. Спасибо. Но где на офиициальных страничках проекта говорится о шаманском слове “OpenPilotReadOnly”?
Опять “внутренний круг” получается. 😃

HikeR

“OpenPilotReadOnly” - это название каталога, в который сольется репозиторий. можно вместо него написать “OpenPilotFullWrite”, или “KatalogDlyaVsyakoyFigni”, ничего не измениться.

baychi
HikeR:

ничего не измениться.

Ага. Следущая команда:
$ 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.

HikeR

дайте полный лог или скриншот на худой конец, а также вывод “git --version” и “git remote -v” в каталоге репозитория.

18 days later
Edward_tlt
sc_lab:

I also read my FW from FY20 and is on file. code.google.c.../downloads/list

Скачал, попробовал подменить файлы, прошивка собираться не хочет, ругается на CameraStab. Делаю вроде всё по инструкции Дмитрия. Житейский вопрос: как скопировать инфу, что выдаётся в окне cmd?

sc_lab
Edward_tlt:

Это сделано, но всё равно в этой куче файлов разбираться и разбираться…😃 Какой компилятор использовать лучше для просмотра и редактирования исходников?

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.

code.google.com/p/fy20-openpilot/…/detail?name=Fla…


Mark, enter, open new document, paste

Edward_tlt

Спасибо 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 правда наверное не тот… Но СС видит плату.