Проект Мегапират на самик!

Syberian

Не пойдет. Проц не подходит по раскладке периферии и частоте.

ssh1

Все же урвал у погоды вчера часик.
Полетал классно, есть видео и как обычно вопросы.
Перед полетом механически уменьшил расход руддера, такое ощущение что летать в авторежимах стал намного лучше.
Руддером в ручных режимах не пользуюсь так как сильно закладывает самолет на бок, походу надо микс с элеронами.
Вопрос - как и где он рулит руддером сам? В авторежимах как я помню полностью отключен.

www.youtube.com/watch?v=vw0Z-tlI-U8&feature=plcp

По видео:

Syberian:

Вокруг путевой точки есть зона в виде цилиндра радиусом 50м и высотой 1м, задевание которой означает достижение точки.

  • вообще не стыкуется с видео.
    01:50 - Включил полет по точкам.
    02:12 - Максимально приблизился к первой точке, но пока высоковато, надо спускаться на 25 метров ниже
    02:32 - Улетев на ровно на сотню метров от точки решает что она достигнута ))) Выше задуманной высоты на 15 метров.
    04:00 - Опять решил что попал в точку только отлетев от нее на 100 метров, притом вроде ровно 100.
    04:27 - Решил что попал в точку только отлетев от нее на 130 метров, получается что не ровно 100.

P.S. Что странно - в этот раз ниразу не срывалась синхра.
Отличия текущего конфига:
1.Морозец минус 2
2.Приемник с антенной на крыше, а ноутбук с писалкой в машине. Раньше было все на крыше.
Нипанятна…

alex-ber
ssh1:

Приемник с антенной на крыше, а ноутбук с писалкой в машине. Раньше было все на крыше. Нипанятна…

А что нипанятно?
Тут наоборот все панятно - или бук или писалка гадит… Разнес и срывы прекратились…
Возми и проверь - отнеси самик подальше от приемника и подноси бук к приемнику - заметишь…
Полет классный, тока вот еще бы вид карты включал периодически (особенно по достижению точки.) - было бы еще информативней…
Молодец!
А я пока в полукопии ушел - погода дерьмо и времени на полет нету (пока домой приду - уже темно), вот и строю потихоньку и погоду жду…
Но самик с МПХ заряжен, настроен и в полной готовности к полету - ждем-с…

ssh1
alex-ber:

А что нипанятно?
Тут наоборот все панятно - или бук или писалка гадит… Разнес и срывы прекратились…

Я к тому что перепроверять надо, рад - если все так просто )

alex-ber:

тока вот еще бы вид карты включал периодически (особенно по достижению точки.)

Блииин, а я то думаю чо я забыл попробовать в полете)))))
Дома спецом настроил тумблер, проверил, и забыл ))))

Syberian
ssh1:

как и где он рулит руддером сам?

в стабе и альтхолде

ssh1:

вообще не стыкуется с видео

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

  1. происходит приближение по горизонтали, с одновременным снижением/подъемом по высоте.
  2. если координаты внутри радиуса 50м до точки, но высота еще не достигнута, задается снижение/подъем по спирали.
    Поскольку радиус спирали определяется параметром circle radius, который по умолчанию 100м, самолет потащился на радиус спиралить, попутно снижаясь - там и произошло “касание” по высоте в твоем случае.
    2а) если высота достигнута, но координаты еще нет, самоль летит на точку, удерживая высоту

Разница высот не 1, а ±10 метров, тут я оговорился.

ssh1
Syberian:
  1. происходит приближение по горизонтали, с одновременным снижением/подъемом по высоте.

01:56-02:12 От начала до конца маршрута до точки никакого снижения не замечено, еще поднялся даже.
03:10-03:40 Тоже не пытается спускаться, или у него не получается?

Syberian:
  1. если координаты внутри радиуса 50м до точки, но высота еще не достигнута, задается снижение/подъем по спирали.
    Поскольку радиус спирали определяется параметром circle radius, который по умолчанию 100м, самолет потащился на радиус спиралить, попутно снижаясь - там и произошло “касание” по высоте в твоем случае.

02:33 - высота явно не в 10 метрах, как минимум 13 (он сам же справа пишет).
Я то думал что попадание в окно ±50 по расстоянию должно одновременно совпасть с попаданием в окно ±10 по высоте как ты и описывал, а тут получается что сначала приблизился по расстоянию, а высоту можешь достигнуть и на удалении в 300 метров?
P.S. Радиус у меня 50 метров или около того.

Еще, 06:49 - он чо сказать хотел? Вроде что-то обрезалось?

Syberian:

в стабе и альтхолде

Он пытается удержать курс по компасу? А можно поподробней?
Например про крен и тангаж понятно - я указываю стиком отклонение от горизонта, отпустил стик - самолет встал в 0. А тут как?

Syberian
ssh1:

01:56-02:12 От начала до конца маршрута до точки никакого снижения не замечено, еще поднялся даже.

смотрим на горизонт. Прицел ниже нулевого уровня, т.е., по идее, должен снижаться. Однако, уровень нуля на горизонте сдвинут вверх на фоне равномерного и прямолинейного движения. Поскольку при этом включен полный газ, предполагаю влияние наводок на магнетометр в твоем конкретном случае.
Аналогичное поведение в других случаях снижения навстречу ветру (с газом).

ssh1:

а высоту можешь достигнуть и на удалении в 300

Не можешь, разве что дует с такой силой, что самолет сносит к черту.

ssh1:

Он пытается удержать курс по компасу? А можно поподробней?

руководство, гл. 6.4

ssh1
Syberian:

смотрим на горизонт. Прицел ниже нулевого уровня, т.е., по идее, должен снижаться. Однако, уровень нуля на горизонте сдвинут вверх на фоне равномерного и прямолинейного движения. Поскольку при этом включен полный газ, предполагаю влияние наводок на магнетометр в твоем конкретном случае.
Аналогичное поведение в других случаях снижения навстречу ветру (с газом).

Наводки не стыкуются, попробую обосновать:
1.Перед этим вылетом я как раз дома тестировал датчик тока при подключенной наземке, газовал и в максимум и в минимум, курс не ехал, если только 2-3 градуса.
2.Даже если предположить что провода в полете сместились и появились наводки на компас, то что это дает?
Показания компаса - постоянны, так как мы движемся прямолинейно и ток, а соответственно и наводки тоже постоянны.
А, как я понимаю, коррекция горизонта включается только при изменении магнитного курса, и если компас стоит , то он на горизонт не влияет.

Предположения:
1)Может влияет выкос - мое мнение не должен, все должен компенсировать стаб.
2)Может неправильно настроен угол установки платы по тангажу - склоняюсь к этому варианту.

Вопрос по алгоритму:
Как я вижу из видео самолет опустил вниз нос на 5 градусов и ждал снижения, но этого было мало и он продолжал лететь горизонтально. Правильно?
Почему бы не добавить в алгоритм увеличение угла, если например после 5 секунд снижаться так и не начали?

Syberian
ssh1:

не добавить в алгоритм увеличение угла

Если бы у нас была идеальная ИНС, я бы так и сделал.

Есть еще один вариант, могу дать тебе поршивку в частном порядке “поиграться”, подобрать коэф-ты, потому что сейчас я лишен возможности облетывать сам. На земле и в симе настроить не получится, нужен реальный полет. Цель - добиться более быстрой сходимости горизонта по тангажу и, соответственно, решение проблемы с вялым снижением и набором из-за ухода горизонта по тангажу. Попробуешь?
Там все просто, в наземке появится отладочное окно, где можно менять коэф-ты.

ssh1

Как я понял ты прелагаешь подкорректировать коэффициенты алгоритма определения горизонта.
Могу попробовать, почему бы и нет, но с другой стороны это наверное черевато еще морковками ( А зимние морковки череваты походами по сугробам …
Еще вопрос как все это проверять лучше/хуже, ведь реальный горизонт мы не видим, и есть куча факторов по которым можно косвенно судить врет он или нет.
Да и поможет ли тут горизонт, даже если он станет полностью правильным, то могут появиться нисходящие и восходящие потоки, в которых 5 градусов не хватит, и опять будет то же самое?
И еще, не совсем понял про идеальную ИНС, а чего страшного если с таким горизонтом(не всегда правильным) сделать несколько градаций тангажа для подъема/снижения. То есть не хватает 5 включили 10 и т.д.

Syberian:

руководство, гл. 6.4

Там написано что если стик курса в нейтрали - то держим курс.
А если не в нейтрали?
А если был курс 10 градусов, я повернул элеронами на 90, стик курса не трогал, он должен вернуться в 10? Это явно не так.
Значит не держит - а что то другое?
Я к тому логика работы стаба по курсу координально отличается от тангажа и крена. Вот и хочется понять как это все задумано.

AlexSneg

Несоответствие показываемого тангажа и реального набора/спуска это те грабли на которые я наступил еще в сентябре месяце. После этого начал эту проблему целенаправленно вылетывать на предмет анализа ситуации и ее решения в навигации. Я по всякому менял коэффициенты IMU и прочую шнягу в алгоритмах, прокладку проводов, а после этого взлетал и анализировал. В результате выводы были сделаны следующие:

  1. Это не ошибки магнетометра из-за близких проводов с большими токами.
  2. Невозможно на 100% проэмулировать на коленке линейное ускорение при наборе высоты или ее сбросе, особенно в сочетании с креном тела в развороте и переходных процессов от снижения к нормали. Ошибка будет появляется в любом случае, вопрос лишь в ее величине и правильной оценке внутри алгоритмов. Никакие компенсации по GPS на 100% не помогут, а иногда делают только хуже.
  3. Реальный самолет, вот хоть ты тресни, прямо НИКОГДА не летает. Тангаж может показывать вверх, но самолет реально летит вниз или наоборот. Это зависит от десятка факторов: конструкция планера (летает с задранным носом или поднятым хвостом и не нулевым положением рулей высоты), ветра в данной конкретной точке, ошибка вычисленного тангажа/крена, кривизны GPS и много всего другого. Можно прямо в полете попытаться ручками снять ошибку, но это не даст желаемого результата, так как ошибку сняли при некоторых мгновенных условиях. Через 30 секунд условия будут другими.
  4. Я спаял и собственноручно облетал 4 своих устройства. Двух, работающих на 100% одинаково, ни разу не получилось. О повторяемости можно говорить только в пределах некоторых допусков. Поэтому, тонко подобрав коэффициенты работы IMU для своего железа, не факт что для другого это тоже хорошо. Поэтому на каком-то этапе мне пришлось опять загрубить компас и аксель и вывести на передний план гироскоп.
  5. Во всех АП в той или иной степени присутствует данная проблема. Конечный пользователь замечает ее не сразу, иногда вообще не замечает. Не зря Тим в своей последней конструкции подчеркнул, что в первую очередь пытается решить проблему именно со спуском/набором высоты. Значит тоже чешет затылок на эту тему. Решить задачу в лоб путем смены установки руля высоты с X градусов на “побольше” не получится потому что костыль он и есть - костыль.

Очень большую пищу для размышлений, как разработчик, я получил когда ночью катал самолет на машине кругами на стоянке большого супермаркета.

LaPart
AlexSneg:

Двух, работающих на 100% одинаково, ни разу не получилось. О повторяемости можно говорить только в пределах некоторых допусков.

Я думаю, что датчики дают разные результаты, только из-за этого не стоит ожидать полной идентичности устройств.
Можно для этого писать логи на одном аппарате, на котором установлено несколько плат (при наличии их у владельца), причем необязательно их включать в контур управления. Просто запись датчиков в логи и потом сравнение даст имхо основательно разнящиеся результаты.
А уж дальше копать совершенство алгоритмов.

AlexSneg
LaPart:

Просто запись датчиков в логи и потом сравнение даст имхо основательно разнящиеся результаты.

Ты упускаешь одну существенную деталь.

Дома на столе ты можешь сравнивать реальное положение платформы с текущими вычисленными и заниматься оценками и анализом.
Логи снятые в воздухе сравнивать не с чем 😃 Реального положения тела и вектора поступательного движения мы не знаем, хоть умри от своих хотелок. Я ведь вот не зря написал про то, как самолет в машине катал 😉

Я пытался уже подъехать к решению этой проблемы и так и сяк. И даже уже испытал пару вариантов. По результатам испытаний был только один положительный момент - теперь у меня есть режим аварийной навигации при достижении сверхмалых высот, этакая защита самолета от дурака разработчика и тестера. В попытках найти истину 2 раза данная фича в навигации мне самолет по большому счету спасла.

LaPart
AlexSneg:

Ты упускаешь одну существенную деталь.

Вообще-то я истину не упоминал, а говорил про разные результаты “идентичных” плат:

LaPart:

Просто запись датчиков в логи и потом сравнение даст имхо основательно разнящиеся результаты.

Понятно, что истина даже не посередине, а где-то сбоку, возможно очень далеко.
А опыты в машине еще добавят свой неповторимый “привкус” искажений магнитных полей.

Но это не повод бросить поиски и сказать: “Кажись ничего не получится, все уже учли…”
Никто не ждет “волшебной таблетки”, собираем статистику:)

AlexSneg

Да, пока собираем и думаем. Опускать руки никто не собирается. Жаль, что сейчас не летное время года. А это как раз та проблема решение которой лежит в плоскости большого кол-ва реальных тестов, а не полетов в виртуале.

Syberian
ssh1:

в которых 5 градусов не хватит, и опять будет то же самое?

Ты неправильно “раскусил” логику работы по высоте. Сейчас используется линейная функция: 0.7 градуса тангажа на метр разницы по высоте от цели, максимум вверх 15, минимум (вниз) 20 градусов.
Т.е. даже если совсем уполз горизонт, ему хватит держаться где-то рядом с целевой высотой. А горизонт имеет свойство вставать на место. Поэтому, процесс не является необратимым.

ssh1:

Там написано что если стик курса в нейтрали - то держим курс.
А если не в нейтрали?
А если был курс 10 градусов, я повернул элеронами на 90, стик курса не трогал, он должен вернуться в 10? Это явно не так.
Значит не держит - а что то другое?

Логика проста: есть текущий курс, который автопилот в стабе держит при помощи РН, если стик “педалей” в нейтрали. Если стик отклоняешь, удержание отключается до момента возвращения в нейтраль, и РН управляется со стика напрямую. При возврате в нейтраль запоминается новый курс для удержания.
Дополнительно, то же самое происходит при отклонении стика крена в самолетах. Удержание отключается для возможности поворота виражом.

AlexSneg:

это те грабли на которые я наступил еще в сентябре месяце.

  1. возможно
  2. GPS здорово помогает, если его правильно применять, даже с задержкой. Но нужен жесткий контроль применимости.
  3. Неважно, куда летить самолет, парашютирует или разгоняется в плоскости. Цель ИНС - отображать расположение реального горизонта.
  4. Если для системы нужно “затачивать” коэффициенты для каждого индивидуального чипа в пределах номенклатуры - это хреновая система, хоть и красивая. Если хоть один параметр уйдет за ожидаемый диапазон - все полетит к чертям. Система должна быть устойчивой (robust) и не иметь “залипших” состояний (gimbal lock, сингулярности, полюса, расходимость).
AlexSneg:

катал самолет

а я баловался с вводом смещений акселя по осям, что, в принципе, почти то же самое 😃 Ты прав, не все можно просчитать “на коленке”.

У Сергея сложность в том, что он гоняет АП буквально “перед носом”, точки расположены в 150 метров максимум. Поэтому и “перформанс” страдает, и все “бока” с лагами ЖПС и компаса вылезают, т.к. АП крутится туда-сюда.
Вообще-то все правильно, надо мучать по полной программе, но в таких узких рамках точного выхода на “точку” и по высоте ждать не приходится: я специально убавил “злобность” автопилота, чтобы не гробить аппараты в случае чего.
Задал бы метров 500 туда-обратно хоть раз, для интереса.

ssh1
Syberian:

Сейчас используется линейная функция: 0.7 градуса тангажа на метр разницы по высоте от цели, максимум вверх 15, минимум (вниз) 20 градусов.
Т.е. даже если совсем уполз горизонт, ему хватит держаться где-то рядом с целевой высотой

Хмм, странно, судя по видео он выставляет 5-7 градусов, но никак не 15 при 20 и более метрах разницы.

Олег, еще вопрос из другой области:
Можно ли как-то ограничить газ в авторежимах, не ограничивая его в мануале и стабе?
Просто после просмора видео я понял, что много времени полета проходит при 100% газе(наваливает автопилот), а у этого режима очень плохое соотношение тяги к потребляемой мощности.

Syberian
ssh1:

не ограничивая его в мануале и стабе?

Можно. Добавлю.
Бывают “перекачанные” сетапы, где полный газ может спалить что-нибудь.
А вот в твоем случае полный газ вызван безуспешной попыткой достичь скорости по земле, которую ты сам и выставил, против ветра. Если скорость в норме, газу больше, чем надо, он не даст.

ssh1
Syberian:

Можно. Добавлю.
Бывают “перекачанные” сетапы, где полный газ может спалить что-нибудь.

Я просто думал вдруг как-то можно сделать это уже существующими настройками. Ок, тогда ждем, пока попробую просто уменьшить везде.
У меня как раз тяжко ему на максимальном газе, регуль греется сильно.

Syberian:

А вот в твоем случае полный газ вызван безуспешной попыткой достичь скорости по земле, которую ты сам и выставил, против ветра. Если скорость в норме, газу больше, чем надо, он не даст.

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

Syberian

Отдельно от РУ сейчас никак, АП юзает всю доступную по РУ шкалу газа.

hippp

Syberian, насколько я понял, ваш ARM проект начался с платы STM32F1-Discovery, для использования которой надо было прикупить плату с датчиками. Цена железа получается около 90 долларов.

Недавно вышла новая STM32F3-Discovery, где датчики оринтации уже встроены. Есть гироскоп, акселерометр, компас.

Самое главное, цена вопроса - всего 11 баксов (http://www.digikey.com/…)

Вы не планируете поддерживать новое железо? 😃