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

Edward_tlt
baychi:

Через 10-15 мин имеете на своем винте копию всей базы.

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

hudognik

а не может быть такого, что фишка прошивается просто по юсб , так же как и платка CC ?😕

SGordon

ну бутлоадер когда будет так оно и станет как я понял?

nemo61
Edward_tlt:

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

Посмотрите эту ссылку rcopen.com/forum/f123/topic238442/925
Я на CC обновлял прошивку. Сначала ставится новый инсталлер. Вот прошивка c:\Documents and Settings\konst\Local Settings\Application Data\OpenPilot\firmware\fw_coptercontrol-20110819-f85ae84e.opfw

SergDoc

Когда до I2C дело дойдёт, свисните вот сюда, а то у меня уже мысли кончились…

Edward_tlt

Вообщем на работе я до исходников добрался 😃 Сейчас пробую повторить все шаги дома, установка Git, установка Eclipce… Ну и по ходу будут вопросы про переназначение выводов контроллера, про датчики, про сборку нужной прошивки…😃 Пока всё не очень понятно после АВР. Ну и чтобы не искать, то вот схемы СС и пределанной фишки

CopterControl Schematic.rarFY-20__CC_CaberaStab_Qadro.rar

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”, ничего не измениться.