Автопилот Arduplane - открытое ПО

kak-dela007

Странный глюк вчера в поле был. Сначала при арминге автопилот стал ругаться на компас, чего не было с тех пор, как я вынес датчик подальше от проводов. Потом с пульта перестали переключаться полетные режимы. Через телеметрию вроде переключались, но стабилизация все равно не работала (по факту режимы не включались). При этом, газ всегда был активен, а рули отзывалась на стики.
Что бы это могло быть?
Перед выходом из дома поменял только ПИДы (на дефолт) и сделал калибровку RC.

alexeykozin
kak-dela007:

Что бы это могло быть?

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

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

Shuricus

Алексей, предлагаю обсудить работу РТЛ без ЖПС. Поскольку в доках традиционно ничего об это мне написано, интересует насколько продумана эта ситуация. А именно - самолет просто улетает за линию горизонта, или все-таки делает по умному, и начинает кружить в случае РТЛ и потери спутников?

alexeykozin

а что тут обсуждать? в ардуплейне прописана логика в случае отстуствия приема сигнала жпс самолет вместо ртл входит в режим кружения и постепенно под воздействием ветра сносится из зоны действия глушилки, после возврата жпс фикса включается ртл

Shuricus

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

alexeykozin

возможно затерялось в ходе переписывания документации
github.com/ArduPilot/ardupilot/…/ArduPlane.cpp#L73…

case CIRCLE: // we have no GPS installed and have lost radio contact // or we just want to fly around in a gentle circle w/o GPS, // holding altitude at the altitude we set when we // switched into the mode

kak-dela007
alexeykozin:

при сбросе параметров сбрасывается и ориентация компаса и откалиброванные офсеты, при низких пидах стабилизация может работать не так заметно как при изначально настроенных, в свежих прошивках канал радио для управления режимами у самолета может быть выбран иной чем по дефолту, его тоже можно сбросить при сбросе натроек.

Думал об этом, но против этой версии говорит то, что был момент в поле, когда он вроде как-бы отвис, и все заработало. Но после перезагрузки - опять перестали моды переключаться, и газ стал активен (как будто я сделал арминг), хотя я его не делал.
Прошивка, 3.3, вот та где пофиксили NMEA. Мозг - APM HK Pilot Mini 2.72. Вспомнил кстати одну вещь - давно не стирал логи. Может с этим как-то связано, и с тем, что этот mini APM какой-нибудь урезанный, по сравнению с полноразмерным.

П.С.: Трекинг GPS этот мозг пишет как-то странно, выборочно… То вообще GPS-трекинга не запишет (создаст пустой лог-файл), то запишет например только полёт в одной флай-моде. А других - как будто не было. Мне говорили, что это из-за того, что там все уменьшено. Ну значит, буду в следующий раз брать 32х-битник Вашей, Алексей разработки, ну или на крайняк Пиксрэйсер или Пиксхавк.

alexeykozin

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

в этом плане конечно 32 битные контроллеры рулез

TSV

Что-то я всё таки не пойму про trim_auto. Для чего нужно и на что он влияет в случае самолёта? Для коптеров утверждается, что меняется ahrs_trim_x и ahrs_trim_y, т.е. подстраивается горизонт платы по крену и тангажу. Но там немного другой алгоритм использования этого режима. А вот для самолёта ничего толком не нашёл.
По идее принцип должен быть тот же. Если это так, то я не понимаю, каким образом тримы рулей могут быть переведены в углы установки платы? Ведь после переключения режима из ручного в автомат сами по себе тримы на аппе никуда не пропадают. Допустим оттриммировали мы канал в ручном режиме, переключились в FBWA, ну запишется трим куда-то в мозг, но аппа же все равно будет слать на борт центральное положение стика со смещением от нуля, насколько трим стоит. Или контроллер теперь будет считать это нулём аппы и начнёт работать от него? Но тогда рушится предположение о корректировке ahrs_trim_x и ahrs_trim_y через trim_auto.
Позавчера в штиль провёл эксперимент. Замечено было ранее, что модель в автомате потихоньку отклоняется от курса влево, хотя в ручнике такого нет (простой аппарат, 1,5м размах, элероны и РВ, руддера нет, положительное V на ушах). Записал значения ahrs_trim_x и ahrs_trim_y, поставил trim_auto = 1. Запустил, ещё раз проверил прямолинейность в ручнике, перевёл в автомат, эффект ухода с курса не ушёл. В автомате триммером крена (три щелчка вправо) добился прямолинейного полёта, перевёл в ручной режим, получил правый крен (вполне ожидаемо), вернул обратно в автомат, летит прямо. Поставил в RTL, обновил в MP параметры, обнаружил, что значения ahrs_trim_x и ahrs_trim_y не изменились (ahrs_trim_x типа -0,00801, т.е. -0,5гр). Вернул триммер крена взад, ещё раз перещёлкнул режимы, отклонение от курса в автомате вернулось, зато в ручнике теперь опять летит прямо. Опять поставил в RTL, снова обновил в MP параметры, ahrs_trim_x и ahrs_trim_y опять не изменились.
Вот и не понимаю, зачем нужен этот trim_auto в самолётной прошивке. Может у кого есть более глубокие познания?

alexeykozin

ИМХО и в коптере не нужен. за пару минут все тримы вручную регулируются.

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

ardupilot.org/plane/docs/parameters.html?highlight…

т.е. у серв есть рабочий диапазон определенный мин-трим-макс
например 1000мс -1500мс -2000мс
трим может изменить пропорцию 1000 - 1600 - 2000

серво трим имеет смысл изменять только в случаях когда отклонение руля вверх и вниз сильно отличаются по воздействию, при этом трим имеет смысл приблизить к более чувствительному положению с тем чтобы ослабить воздействие

TSV
alexeykozin:

ИМХО и в коптере не нужен. за пару минут все тримы вручную регулируются.
согласно доке авто трим в самолете регулирует не коректировку углов установки полетного контроллера а значения трим для каналов серв.
я бы не стал этого делать
ardupilot.org/plane/docs/parameters.html?highlight…

Это (по ссылке) я читал, и пока не увидел инфо про коптеры, как-то всё было понятно. Но возможность подстроить горизонт платы управления не подбором цифр в ahrs_trim параметрах, а прямо в полёте, очень уж заманчивой показалась. То есть вы хотите сказать, что этого сделать нельзя и auto_trim нужен только для того, чтобы автопилот принял текущие значения тримов за нулевые при стиках в нейтралях и перестал оценивать их как управляющее воздействие пилота?

alexeykozin:

т.е. у серв есть рабочий диапазон определенный мин-трим-макс
например 1000мс -1500мс -2000мс
трим может изменить пропорцию 1000 - 1600 - 2000
серво трим имеет смысл изменять только в случаях когда отклонение руля вверх и вниз сильно отличаются по воздействию, при этом трим имеет смысл приблизить к более чувствительному положению с тем чтобы ослабить воздействие

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

alexeykozin
TSV:

А вот тут что-то не понял.

как бы разное “усиление” для участков от середины до минимума и от середины до максимума с перемещением положения этой середины
а фактически на стике нейтраль 1500мс, на выходе на серву 1600мс за счет этого руль в ином положении
стик отклоним чуть вверх 1550 а серва уйдет на 1625 (1600 + нечто меньшее чем 50, допустим 25) за счет того что отклонение пропорционально диапазонам.

а если стик вниз то на входе 1450 а на выходе 1500 (1600 - нечто большее чем 50 , к примеру еще 50) точно считать лень.

TSV
alexeykozin:

как бы разное “усиление” для участков от середины до минимума и от середины до максимума с перемещением положения этой середины
а фактически на стике нейтраль 1500мс, на выходе на серву 1600мс за счет этого руль в ином положении
стик отклоним чуть вверх 1550 а серва уйдет на 1625 (1600 + нечто меньшее чем 50, допустим 25) за счет того что отклонение пропорционально диапазонам.
а если стик вниз то на входе 1450 а на выходе 1500 (1600 - нечто большее чем 50 , к примеру еще 50) точно считать лень.

Что-то я никогда с таким не сталкивался, всегда всё линейно в обе стороны. Даже не представляю, как такое может быть.

Dziama

коллеги, 100500 страниц нет сил читать, пару вопросов: рулится только рудер на максимальном газу, если газ в 0, то уже не рулится ничего, в миссионпланере все рули на входе отрабатываются, а вот на выходе нет, куда копать? при включении ручного режима, сразу преключается в CIRC 😃 наведите на источник проблемы

Glinco

Класс. А как вы поняли, что переключились в ручной режим? Я бы обнулил настойки и заново все перекалибровал.

Dziama

понял очень просто, на экране MANU, через пол секунды CIRC, попробую сбросить настройки, спасибо

Glinco

Такое впечатление, что АП думает, что у вас фейлсейф сработал.

Александр_Викторович

Вчера пытался глянуть что у меня с вибрацией, но не смог загрузить лог с АРМа. Через модем в МР не получается ,а до USB в моём самолёте добираться проблемно. Подскажите пожалста, в принципе, эта операция выполняется с модема, или нужно вытаскивать USB ?

TSV
Glinco:

Такое впечатление, что АП думает, что у вас фейлсейф сработал.

Как вариант, если уровень газа в фэйлсэйве ошибочно установлен в районе максимума, например стоит 1920 вместо 920, то пока стик газа на максимум не задвинуть, аппарат будет в фэйлсэйве.

Dziama
TSV:

Как вариант, если уровень газа в фэйлсэйве ошибочно установлен в районе максимума, например стоит 1920 вместо 920, то пока стик газа на максимум не задвинуть, аппарат будет в фэйлсэйве.

а элероны и руль высоты?