RSS лента

Бортовой журнал дальнелетчика

iNav и боль. Боль и iNav.

Рейтинг: 5.00. Голосов: 13.
10.06.2018 в 03:21 (104310 Показов)
В этом посте постараюсь обобщить опыт, накопленный за несколько месяцев адской траханины с этим автопилотом применительно к коптерам и частично к самолетам (в части спонтанных дизармов в основном) Теперь о приколах этой прошивки я знаю кажется почти все Кому-то этот опыт - уверен - поможет сберечь аппарат, тем более, что не все читают профильные ветки форума.

Итак. Запаситесь терпением, писанины будет много.

1) Дизармы в воздухе во время RTH или фейлсейфа.

Происходят они чаще всего потому, что разработчиками (на прошивках 1.8.х - 1.9.х как минимум, дальше возможно пофиксят) ряд критичных параметров оставлен в такие значения по умолчанию, что дизарм во время возврата домой по потере связи или RTH неизбежен, и это нормальное и ожидаемое поведение. В полном соответствии с буквой мануала. Чтобы это не происходило, надо зайти в CLI и написать:

Код:
set failsafe_throttle_low_delay = 0
set failsafe_off_delay = 0
set failsafe_throttle = сюда надо вписать значение канала газа в микросекундах, при котором ваш аппарат мягко садится/планирует. Т.е если висим при 1350 мксек газа, то вписываем скажем 1200. По умлч здесь стоит 1000, при таком газе коптер камнем упадет вниз
set failsafe_procedure = RTH //строго говоря, предыдущие три параметра относятся к процедуре фейлсейфа SET-THR, но есть подозрение, что они имеют влияние на спонтанные дизармы даже если выбрана процедура RTH, поэтому на мой взгляд лучше подстраховаться
set nav_emerg_landing_speed = 200 //это значение скорости снижения в см/сек на случай, если во время выполнения процедуры фейлсейфа отказал GPS или прочие необходимые сенсоры, посадка выполняется под контролем барометра. Кстати, вопрос, какая процедура будет применена, если в процессе экстременной посадки отказывает барометр, остается, по-моему, открытым))
disarm_kill_switch = OFF
Потом не забыть выполнить команду save для применения настроек. Еще есть сообщения о произвольных дизармах в воздухе просто в полете, не во время RTH или фейлсейфа. Очень похоже, что связаны они с глюком чтения SBUS, когда аппарат как бы выполняет команду на дизарм килл свичем на соотв. канале, хотя такой команды ему никто не давал. Именно поэтому мы и отключаем дизарм килл свитч. Арминг/дизарминг лучше производить только командой левого стика. Да, failsafe_throttle устанвливайте только тогда, когда будете ТОЧНО знать, при каком значение канала газа в мксек у вас висит коптер. При первых подлетах я сдуру решил, что он у меня висит ровно в середине газа, т.е при 1500, и поставил 1350 мксек, а коптер был сильно недогружен и висел при 1280 примерно. В результате конечно я поймал фейлсейф, и коптер подорвался в небо)) Пока я метался по земле и соображал, что делать, высота уже была 500 метров. Пришлось его дизармить там. Итог - красивые дрова Не повторяйте моих ошибок!

2) Настройка режима ALTHOLD и проблемы с ним связанные.

Обнаружил, что для нормального удержания высоты все-таки удобнее включить настройку nav_use_midthr_for_althold = ON, при котором удержание высоты будет происходит при среднем положении стика газа, при этом в переменной nav_mc_hover_thr указать значение канала газа в мксек при котором коптер висит в режиме ANGLE. (это можно выяснить по логам блэкбокса, или пересчитать процент газа видимый в OSD, куда его можно вывести, в микросекунды вручную) Это всего лишь подсказка для полетника, если указать не очень точно, при включении ALTHOLD коптер будет проваливаться или подрываться вверх. Если газ висения указан корректно, а коптер все же проваливается/подрывается вверх, нужно увеличить ПИД nav_mc_vel_z_i. По дефолту он 50, поставить для начала 60 и посмотреть. Если не хватает и провалы/подскоки все еще есть, еще немного добавить.

В переменной thr_mid нужно указать газ висения в процентах, если висим при 40%, пишем

Код:
set thr_mid = 40
save
Это нужно для корректной отработки кривой экспоненты газа, чтобы ее плоский участок приходился как раз на точку, где висит ваш аппарат. Иначе столкнетесь с тем, что при линейном добавлении/убирании газа ваш аппарат будет набирать/терять высоту с остановками и ускорениями не совсем там, где вы ожидаете

3) Баг с автоматическим определением магнитного склонения.

Обнаружил, что автоматическое определение магнитного склонения в прошивках 1.8-2.1.0 работает некорректно (upd. в прошивке 2.2 этот баг должен быть поправлен), в результате чего коптер летит не по прямой, а забирает около 10 градусов левее по яву (в Москве). Если у вас наблюдается такое, выполните следующие команды:

Код:
set inav_auto_mag_decl = OFF
set mag_declination = 1020 
save
1020 - это 10.2 градуса для Москвы (для вашей страны/города значение будет другим!), формат записи в CLI именно такой. Чтобы ничего не напутать, можно указать склонение в GUI прямо в градусах. Т.е вписать 10.2 в соотв. поле.

4) Если у вас не гоночный мини-коптер, не включайте AIRMODE! (upd. в прошивке 2.2 этот баг должен быть поправлен)

На аппаратах с ЖПС летающих блинчиком от него особенного толку нет, а вот если у вас коптер изначально очень легкий, т.е сильно недогружен для выбранной ВМГ и напряжения питания, а ПИДы высоковаты (даже стоковые могут оказаться слишком большими в некоторых ситуациях), то вы рискуете столкнуться с ситуацией, в которой оказался я. Осциллируя по всем осям и поддавая газу, мой недогруженный аппарат резвенько пошел в небо с явным намерением в нем скрыться. Пришлось дизармиться и падать, на этот раз всего лишь с высоты 10 метров. Дрова были еще красивее, чем в первый раз Причина такого поведения: клиппинг показаний акселорометра при слишком высоких вибрациях, вызванных дисбалансами или неисправностью ВМГ, или перепидовкой, как в моем случае.

5) На сладкое - слова про настройку ПИДОВ. Тема, которая волнует многих))

Итак. Для 450-го коптера весом около 1.2-1.3 кг с моторами 900 кв и пропами 9 дюймов (ВМГ от моего старого доброго Дискавери), летающего на 4S вполне подойдут дефолтные пиды, останется лишь немного их донастроить. Все настройки ПИДов должны происходить в режиме ANGLE без включенного ALTHOLD и без подключенного GPS и компаса.

Полезные хинты:

- если аппарат вяловато реагирует на команды по питчу и роллу, увеличивайте соответствующие P. Если при резком подрыве стиком газа коптера вверх начинаются осцилляции, соответствующие P нужно будет чуть уменьшить. Обычно их увеличивают именно до момента начала осцилляций просто в висении, потом уменьшают на 10-15%. Однако мне кажется, что если у вас коптер для спокойных полетов "блинчиком", так остро настраивать нет нужды.
- если при висении в спокойном воздухе аппарат немного покачивается с частотой 0.3-1 гц (т.е медленно), то скорее всего дело в недостатке P, и надо его поднимать.
- набрав высоту с запасом, стиком газа "роняете" коптер вниз. Если началась болтанка при прохождении через возмущенный пропами воздух, нужно поднимать I до момента, пока эта болтанка или не пропадет совсем или не станет приемлемой. На коптерах с большими пропами полностью от нее не удастся избавиться, имейте в виду.
- подвесив коптер на комфортном расстоянии от себя, резким движением правого стика "дергаете" его по соответствующей оси, по роллу например, и сразу же бросаете стик. Если коптер выравнивается не в одно движение, а совершает несколько затухающих колебаний, нужно поднимать соответствующий D, до тех пор, пока возврат в горизонт не будет происходит в ОДНО движение.


6) Настройка пидов навигации

Наконец в голове появилась ясность и в этом вопросе Делюсь. В мануале эта тема практически не освещена, описания параметров ясности не вносят, поэтому опишу простыми словами полученный опыт, который привел к тому, что сейчас в режиме удержания позиции POSHOLD и режиме реакции на стики CRUISE (когда правый стик контролирует не пространственное положение коптера, как в ANGLE, а скорость перемещения в соотв. направлении). В режиме реакции на стики ATTITUDE все просто, т.к в нем при горизонтальных пролетах коптер не удерживает позицию и не контролирует вектор перемещения, а просто на время отключает удержание позиции. Мне было интересно настроить адекватную реакцию именно в режиме КРУИЗ, т.к в нем коптер летает как НАЗА, а она в режиме жпс летает близко к идеалу, плавно и предсказуемо

Рассуждать буду в терминах POS и POSR - т.е так, как соотв пиды (nav_mc_pos_xy и nav_mc_vel_xy) называются в OSD. Итак.

Логика пида POS P такова: это скорость (сила, если хотите) с которой коптер пытается исправить ошибку в своем положении в пространстве. Ошибка бывает двух видов: от внешних воздействий, например когда коптер сдувает ветром и когда пилот дает команду двигаться куда-либо. В этом случае коптер просчитывает новое положение, а затем начинает стремиться к нему с "резвостью", определяемой этим пидом. Т.е проще говоря, это скорость реакции на команды правым стиком. Если у вас коптер резковато реагирует на такие команды, то этот пид надо уменьшать. Имейте в виду, если реакция на команды правым стиком слишком резкая, то этот пид нужно уменьшать. Он же влияет на поведение коптера в навигационных авто-режимах, т.е например при возврате домой. Если во время RTH коптер устремляется домой слишком резво, и вдобавок еще перелетает точку дома, а потом начинает ее судорожно "искать", циллируя вокруг нужного положения, то опять же нужно уменьшать этот пид. Значения около 15-30 чаще всего оказываются приемлемыми. У меня он сейчас установлен в 15.

Теперь о логике пида POSR P. Что бы там ни было написано в мануале, но на самом деле этот пид отвечает за скорость и устойчивость остановки после команд правым стиком. Многие жаловались, что коптер не сразу останавливается, если "бросить" правый стик, а некоторое время летит в обратную сторону. Или наоборот, начинает осциллировать вокруг нужного положения. Если у вас такое происходит, то нужно настраивать этот пид. Причем сначала настройкой (скорее всего сильным уменьшением от значений по умолчанию) пида POS P надо добиться нормальной, плавной реакции на стики, а потом уже настраивать торможение после отпускания правого стика при помощи настройки пида POSR. В мануале указаны значения по умолчанию: 180, 15, 100 для P,I,D соответственно. (для версии 1.8, в 1.9 и выше значение P надо делить на 5.) После настройки у меня получилось 80, 15, 95. Возможно POSR P надо уменьшать еще. Но самое главное, что уже при таких значениях коптер наконец полетел нормально. Исчезли "дергания" по питчу и роллу во время горизонтальных пролетов на большой скорости, а остановка при отпускании правого стика стала происходить сразу же, без возвращений и осцилляций.

Т.е, резюмируя, на текущий момент для коптера 450 размера более-менее правильные навигационные пиды для прошивки 1.8 выглядят так:

POS P = 1
POS I = 80
POSR P = 80
POSR I = 15
POSR D = 95

При таких пидах коптер в посхолде летает стабильно, предсказуемо, и без дерганий.

upd. 03/08/2018 - указанные пиды неплохо работают с GPS модулем от назы, для более современных модулей они скорее всего не подойдут. Поэтому прилагаю обновленный вариант навигационных пидов для прошивок от 1.9 - 2.0 и выше, подходящих для современных модулей типа Radiolink TS100 mini или BN-880. С этими пидами вполне нормально летают коптеры с пропами от 9" до 15-16 (проверял лично). Для бОльших или меньших аппаратов они скорее всего тоже подойдут в качестве отправной точки, по крайней мере адовых фортелей при активации посхолда быть не должно

Обновленные навигационные пиды:

POS P = 15
POS I = 100
POSR P = 25
POSR I = 20
POSR D = 40

upd. 23/05/2019 Разработчки айнава подтвердили наличие бага с автоматическим определением магнитного склонения. На текущей прошивке 2.1.0 он все еще есть, в следующих должны поправить. И я по-прежнему уверен, что режим POSHOLD CRUISE у коптеров забагован донельзя. Проблемы следующие: 1) неконтролируемое поведение коптера после разворотов по яву на 180 градусов. 2) этакие клевки или раскачка по питчу (и немного по роллу) при полете прямо. 3) Ощущение, что аппарат плохо контролируется командами правого стика аппы. Все эти проблемы не удается победить настройкой навигационных пидов. Наличие этих проблем подтверждено уже из нескольких источников, но обратной связи от разработчиков пока нет по опубликованным баг репортам. Будем ждать. Пока же не рекомендую летать в этом режиме.

Обновлено 04.06.2019 в 02:21 [ARG:5 UNDEFINED]

Метки: inav, настройка
Категории
квадрокоптер , ‎ Полезное

Комментарии

  1. Аватар для YraY
    Поставил 2.2.0RC1 - дерганья в круизе не уменьшились, я бы даже сказал что увеличились
  2. Аватар для DiscoMan
    Цитата Сообщение от YraY
    Поставил 2.2.0RC1 - дерганья в круизе не уменьшились, я бы даже сказал что увеличились
    На данный момент этот режим использовать на коптерах нельзя. Для чего его вообще релизнули в настолько косячном виде, для меня большая загадка. И еще большая загадка - поведение разработчиков, НАПРОЧЬ игнорирующих соответствующие баг-репорты, типа, у нас все зашибись, а у вас just a tuning issue. Сегодня ради полноты картины проверил жпс круиз еще и с BN-880. Только убедился в своих выводах.

    Однако, к чести разработчиков стоит заметить, что они исправили accelerometer saturation bug при включенном airmode. Наконец-то. К релизу 2.2. Суть бага описана в этом посте, но вкратце повторюсь: если включен эйрмод и коптер по каким-либо причинам сильно вибрирует (перепидовка, дисбалансы ВМГ и т.д), то коптер бесконтрольно, свечой пойдет в небо из-за клиппинга показаний акселерометра, и вернуть его оттуда можно будет только дизармом, если успеете его сделать. Если еще и фейлсейф будет не настроен или будет настроен неправильно, а аппарат успеет выйти за пределы радиуса действия аппы (что легко может быть, т.к пойдет он вверх на полном газу), то можно будет смело ему "прости и прощай".
  3. Аватар для Альбертос
    Подскажите пожалуйста. Собрал новый коптер на Inav 2.1.0. Хочу проверить дома работу коптера. После запуска коптер при нулевом газе немного проработав дизармится с надписью Disarmed by timeout. Что делать? Где в настройках копать?
  4. Аватар для DiscoMan
    Не изучал вопрос, но я бы поискал в мануале по CLI переменные содержащие или disarm или timeout. Или всё, что на это похоже Но вообще это нормальная логика поведения аппарата при нулевом газе. Если пилот не собирается взлетать, и держит газ в нуле, то для безопасности логичнее задизармиться.