ArduCopter Mega: порт на обычную Arduino (тестим)

SovGVD
Sir_Alex:

Странно, разве на RTL влияют стики?

не знаю, но кто-то писал что при отваливании пульта (FS) стики зависают и коптер летит непонятно как, к тому же там не только RTL может быть, а еще LAND

Sir_Alex

У меня всё руки не доходят до просто полетать (уже пол года не взлетал), не говоря уже о авторежимах… так что не знаю, как влияют стики на них 😃

kren-DEL
Serj=:

Влияет, при RTL коптером можно управлять

мдя, а я то думаю, отчего при подаче полного газа на приёмыш и отключении пульта моторы не сбрасывают обороты… жесть конечно, получается если на полной скорости залететь за препятствие то коптер автоматом переключится на РТЛ и на той-же скорости будет “пилить” домой?
Короче, надо провести будет полевые испытания…

DVE

Ну так полную 3D-модель местности в квадрик загружать пока не научились - в случае потери сигнала возвращаться квадрик будет по прямой.

Если есть опасение что влетит куда-нибудь - можно настроить высоту, на которой будет осуществляться RTH, поставить например 50м.

DVE

Да, дерево 50м еще поискать надо, а секвойи у нас не растут 😃

kren-DEL
DVE:

в случае потери сигнала возвращаться квадрик будет по прямой

просто я хотел сделать акцент на

kren-DEL:

той-же скорости будет “пилить” домой

, т.е. если во время снижения пропадает связь - неуправляемая встреча с планетой обеспечена?

DVE

Да, думаю что после начала потери пакетов должен быть некий таймаут на восстановление связи (например 1с), при котором приемник будет выдавать последний принятый сигнал, а если сигнал так и не восстановился, тогда приемник переключится в failsafe.

Но ситуация потери связи именно в момент быстрого снижения имхо довольно маловероятна.

SovGVD
DVE:

Да, думаю что после начала потери пакетов должен быть некий таймаут на восстановление связи (например 1с), при котором приемник будет выдавать последний принятый сигнал, а если сигнал так и не восстановился, тогда приемник переключится в failsafe.

сейчас так и есть, если 20 раз не удалось получить сигнал, то срабатывает FS

kren-DEL
SovGVD:

сейчас так и есть, если 20 раз не удалось получить сигнал, то срабатывает FS

хм… если сделали связь с приёмником по rx/tx можно ли оттуда взять цровень сигнала качества связи для срабатываения FS?

SovGVD

по rx/tx никто не делал связей, просто смотрится есть сигнал на 3 канале или нет, можно в общем то привязать и качество связи, например если за 10 периодов 3 раза не было сигнала, то 70% качество, но нужно ли?
алгоритм обнаружение сигнала

  1. есть прерывание - счетчик на ноль
  2. счетчик всегда плюсуется
  3. нет прерывания - счетчик плюсуется
  4. дошел счетчик до 20 - ставим его всегда 20 (чтобы переполнения не было) и делает какой то из вариантов FS
Sir_Alex

Такс, подкрутил я немного библиотеку входных сигналов от аппы.

  1. Статус рабочего приемника не отдается, пока не получим первый правильный пакет данных от приемника. Раньше всегда отдавался “работаем”. Это пришлось подправить, что бы не активировался FAILSAFE при запуске контроллера с отключенной аппой или приемником.
  2. FAILSAFE алгоритм детектирует пропажу сигнала по каналу THROTTLE. Если в течении 0.2сек нет сигнала, включается наш механизм FAILSAFE и выставляются значения 950,1500,1500,1500 (THROTTLE, PITCH, ROLL, YAW), Остальные каналы выдают то, что было последним валидным значением.
  3. В случае сработки нашего FS - вступает в работу штатный алгоритм FS? если он конечно включен и настроен через Mission Planner. Пороговое значение PWM можно оставить по умолчанию = 975
  4. В режиме PPM_SUM, так же отрабатывается FS.
  5. Добавил маленькие проверки на ширину импульса в случае PPM_SUM.
  6. Отключить наш FS можно в файле APM_RC_Pirates.cpp, в начале файла закоментить дефайн.

Ну и собственно сам файлик прикладываю, он от версии MPNG 2.8R3. Так же обновления залиты в SVN.

P.S. Основа взята из алгоритма Глеба (SovGVD) но я более красиво оформил его и доработал 😃

APM_RC.rar

Serj=
Sir_Alex:

он от версии MPNG 2.8R3

А в 2.7R4 будет работать?

Sir_Alex
Serj=:

А в 2.7R4 будет работать?

Возможно что и заработает, если скомпилится…

Serj=

Не компилится 😦
ArduCopter.cpp: In function ‘void throttle_failsafe()’:
radio:176: error: ‘class APM_RC_PIRATES’ has no member named ‘GetFailSafeState’
Придется на 2.8 переползать.

Serj=
Serj=:

Завел себе такую табличку для тестирования

Еще два плюсика в мою табличку SuperSimple и Circle.
И подтвердил для себя еще раз, где заармился там и дом.

SovGVD
Serj=:

Еще два плюсика в мою табличку SuperSimple и Circle.

еще FPV

kren-DEL

Доброго времени суток, настраивал сегодня Stabilise P через 7-й канал в полёте, при попытке резко убрать с 6.0 до 3.0 коптер вырубил движки и шлёпнулся, это нормально? Можно ли настраивать ПИДы в полёте, или нежелательно?

Sir_Alex
kren-DEL:

Доброго времени суток, настраивал сегодня Stabilise P через 7-й канал в полёте

Разве 7й канал? Может все таки 6й?
То что вырубил движки ненормально, ИМХО, возможно главный цикл программы завис и сработал Failsafe. Жаль что нет логов…

kren-DEL
Sir_Alex:

Разве 7й канал? Может все таки 6й?

да, всё верно… 6-й, до этого я медленно начал опускать Р с 6 до 3 и обратно поднимать, чтобы найти наилучший параметр, а затем резко спустил до 3-х, судя по всему алгоритм завис, т.к. красная лампочка не мигала после падения(хотя может холод так повлиял на мою ардуинку 2560, или на датчики…) кстати, чем выше Стаб Р тем его должно больше колбасить или наоборот?