1. Уважаемый Гость! При написании вопросов в раздел форума [ArduCopter] Вопросы, проблемы и решения обязательно придерживаться шаблона сообщения, оговоренного в правилах раздела! Если сообщение не будет оформлено должным образом, то и ответ на вопрос будет с наименьшим приоритетом. Старайтесь дать максимально полную информацию по вашей проблеме, чтобы можно было более детально рассматривать вопрос!
    Скрыть объявление
  2. Уважаемый Гость! Хотите получать кэшбэк с покупок в online-магазинах? Сервис "Zozi.ru" дает такую возможность!
    Скрыть объявление
  3. Друзья! Для нашего ресурса необходим дополнительный объем пространства в облаке Dropbox. Подробнее.
    Скрыть объявление

Создание собственной прошивки: Ардукоптер на контроллере АПМ

Тема в разделе "Информация и полезные материалы по контроллеру", создана пользователем Alexey Kozin, 17 ноя 2015.

Реклама. Купить это место.
  1. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    Поскольку 3Drobotics отказались от поддержки новых версий ардукоптера для контроллера АПМ - можно сказать что теперь на этом шикарном "железе", используя хорошие части оригинального кода и убирая откровенно лишний функционал можно подчистить, подправить и получить стабильную и функциональную прошивку. Зная особенности и сложные в настройке функциональные модули - исправить и переписать. В результате будет прошивка может быть и не столь напичканая возможностями как Pixhawk но стабильная и надежная.

    Собственно первый шаг я уже сделал, вырезав из прошивки бинарные протоколы навигационных модулей и оставив универсальный NMEA освободил 20кб флеша (и есть еще ряд идей как отжать местечко. если оно понадобится). Это не означает что не будут поддерживаться модули юблокс или сирф. Все навигационные модули умеют работать в протоколе NMEA, нужно их будет только переключить.

    Прежде всего объектом всех бед в версии 3.2 был признан INAV - инерциалка. ардукоптер весьма капризен к настройке компаса, если аппарат собран слегка криворуко и компас показывает с ошибкой градусов в 15 то вместо того чтобы идти к цели по дуге соответствующей этому углу ошибки коптер делает в небе скоростные петли известные как toilet bowl тоесть туалетные воронки. Совместно с моими коллегами по резульатам наблюдений за поведением коптеров сделали предположение, что причиной непредвиденного поведения в удержании позиции может быть инерциалка, поэтому первое то было сделано - возможность ее выключения. Но как показала практика при отключении инерциалки из за разброса точек получаемых от жпс в режиме удержания позиции наблюдаются рывки.

    С тем чтобы небыло "дерготни" от разброса точек получаемых от жпс - было задумано сделать фильтр. В настоящее время фильтр сделан.. На его реализацию были затрачены годы наблюдений, один год теоретических изысканий, обсуждения с коллегами, полгода моделирования поведения различных алгоритмов, три месяца реализации и допиливания под арду.


    Навигационный фильтр.
    Фильтр называется KPEMF , расшифровывается как Parallel Estimations Median Filter
    состоит фильтр из системы прогнозирования массива вариантов местоположения текущей точки - (составляющих массив данных широты и долготы) и обычного но великолепного медианного фильтра.

    медианный фильтр готовится из алгоритма сортировки
    пример сортировки пузырьковым методом
    http://www.tigoe.com/pcomp/code/arduinowiring/42/
    void bubbleSort() {
    int out, in, swapper;
    for(out=0 ; out < numReadings; out++) { // outer loop
    for(in=out; in<(numReadings-1); in++) { // inner loop
    if( analogValues[in] > analogValues[in+1] ) { // out of order?
    // swap them:
    swapper = analogValues[in];
    analogValues [in] = analogValues[in+1];
    analogValues[in+1] = swapper;
    }​
    } }
    }
    и процедуры извлечения значения элемента оказавшегося в середине.
    в случае нечетного числа элементов
    median = analogValues[numReadings / 2];
    или среднего арифметического серединных элементов если размер массива -четный.

    но для работы этого фильтра нужен массив "параллельных" данных. Данные должны не запаздывать. В противном случае - фильтр будет запаздывающим.

    Итак для приготовления параллельных данных нужен массив навигационных приемников. Штук 10 -15... мда.. это громоздко и дороговато...
    пойдем другим путем... Создадим ряд данных прогноза позиции на основе предыдущих данных.
    к примеру при наличии истории координат за последние несколько секунд и исходя из предположения что коптер в ходе движения имеет непрерывную кривую ускорений
    при этом исходя из точки достоверного прогноза, позиции полученной исходя из округления двух последних сэмплов рассчитываем скорость характерную для этих данных и переносим проекцию перемещения относительно средней точки от среднего двух сэмплов (среднее создает задержку и требует коррекцию на S= Vt) с учетом полученной скорости
    подобным образом вычисляются прогнозы исходя из 3,4,5,6 сэмплов
    таким образом мы получаем массив "параллельных" данных из 6 прогнозов и 1 актуального значения GPS.
    К этим данным применяется медианный фильтр,
    после чего полученная медиана признается "достоверными данными" достоверные данные помещаются в массив и используются для нового цикла построения прогнозов
    собственно реализованный на ардуино алгоритм, при подаче на вход данных навигационного приемника работает примерно так:


    [​IMG]

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

    скриншот работы двух АПМ от одного приемника с фильтром и без
    noinav_gpsfilter907.jpg
    (чуть позже уберу под спойлер)

    Специфичные настройки фильтра kpmf.
    в полном списке параметров
    inav_tc_xy = 0 - отключение инерциалки по широте и долготе. не пытайтесь делать тоже самое на других прошивках, значение ноль применимо только к этой версии прошивки.
    GPS_navfilterPE =9 число паралельных пронозов - размер массива. допустимый зиапазон значений 3-19 значение по умолчанию 9. чем больше число прогнозов тем сильнее фильтрация, но больше латентность к ускорениям системы.
    GPS_navfilterSPD=5 число прогнозов при вычислении скорости. скорость используется для приращения расстояния при коррекции прогноза на время задержки. Диапазон 3-9 чем выше значение тем лучше фильтрация но хуже прогноз при ускорениях
    Отключение KPEMF
    отключение может понадобиться для сравнительного анализа, для просмотра сырых данных, поступающих с навигационного приемника.
    для отключения фильтра: GPS_navfilterPE =0

    Что мы имеем сейчас:
    собрана прошивка под апм2, выполнены первые облеты в ходе которых были выявлены приоритетные задачи и интересные комбинации параметров настройки.

    концепция высвобождения места во флеш памяти
    1. делим прошивку на две субверсии, функционал:
    тестовая
    • терминал
    • логирование всего
    • автотюн

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


    Новые фичи.
    После получения стабильной версии дополним функционал наиболее интересными и не затратными с точки зрения расхода флешь памяти новинками от свежих версий ардукоптера 3.3 и выше
    пока на заметке:a) PID scaling for battery voltage (disabled by default, see MOT_THST_BAT_ parameters)

    ps. все описанное выше не значит что я забрасываю проект f4by.
    все лучшее будет перенесено в наш 32 битный контроллер.
    На Pixhawk переносить не будем.
    по вопросу получения актуальной версии прошивки для участия в тестировании и обсуждении пишите на kozin@mail.ru

    Актуальная версия прошивки: 015а

    Актуальный, обновляемый в шапке файл параметров для тестирования:

    https://www.dropbox.com/s/ii5b6rmep8i3j6e/tstparam.rar?dl=0
    архив содержит файл параметров который можно загрузить через мишен планнер вкладка full parameters tree -> compare
    и файл с описанием для чего требуется тот или иной параметр изменить
    LOITER_LAT_D,0.001 -резкость разгона и торможения при борьбе с погодными условиями и воронкой за точность удержания позиции
    LOITER_LON_D,0.001 -тоже самое для долготы должен быть идентичным по умолчанию у ардукоптера значение 0

    WPNAV_ACCEL, 150 -допустимые ускорения 150 означает полтора метра в секунду за секунду. по умолчанию 100 что значит 1 метр в секунду за секунду


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

    LOITER_LAT_P,1 -пропорциональный коэфициент между требуемым перемещением для удержания позиции и углом наклона рамы для этого перемещения
    LOITER_LON_P,1 -аналогичное по долготе по умолчанию 1. При вялости в лоитере возможно потребуется увеличить.

    INAV_GPS_XY_SPD, 5 -интесивность восстановления инерциальной скорости данными от жпс приемника, большие значения приводят к большему доверию жпс
    INAV_GPS_XY_POS, 8 -интенсивность восстановления инерциальной позиции данными от жпс приемника, большие значения приводят к большему доверию жпс

    INAV_GPS_DELAY, 3 - компенсация времени задержки выдачи координат жпс приемником в десятых долях секунды диапазон 1-5

    INS_MPU6K_FILTER, 10 -встроенная фильтрация вибраций силами процессора ориентации, значение по умолчанию 0,
    внимание! при значении 10 требуется перенастройка пидов стабилизации летательного аппарата. Если у вас нет возможности перенастроить пиды стабилизации оставьте этот параметр соотвествующим вашим пидам
     
    Последнее редактирование: 27 апр 2016
    Hanter, Xichnik55, raefa и ещё 1-му нравится это.
  2. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    собрал 008А
    параметры 7 версии не затирает но нужно просто уменьшить в 10 раз предыдущие inav_gps_xy_pos inav_gps_xy_spd
    тоесть тестим
    inav_gps_xy_pos = 10
    inav_gps_xy_spd = 10


    особенности прошивы
    при скоростях 0-1 мс действуют указанные параметры, если скорость растет до 2мс то параметры внутри удваиваются при 3 утраиваются
    т.е в диапазонескоростей 0-1мс параметры будут 10
    1-3 мс пропорционально увеличиваться
    свыше 3мс будут утроены но не более того.
    динамическая составляющая параметра не будет нигде отображена и не меняет сам опорный параметр, просто на разных скоростях коэффициент скалируется в диапазоне x1 -x3
    --- Сообщения объединены, 2 дек 2015 ---
    пока не знаю с чем связана эта ошибка, видимо особенность версии 3.2 от многих слышал.
    имхо когда высота при арме отличается от калиброванной. - если регулярно смотрите поролон на баро и отсуствие его засветки

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

    логи посмотрел, налицо вместо нарастающих осциляций - затухающие
     
    Последнее редактирование: 2 дек 2015
    5yoda5 и LampGraph нравится это.
  3. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Бывает.
    А вот интересно, если я в МП ставил 100, в параметр пыталось записаться 144, то бишь скидывалось на максимум (127) ???
    Просто мне показалось что при 0 отличие было, а что 100, что 150 - одинаково. Возможно так и было.

    Если перещелкнуть в лоитер после скоростного полета, при высоких Inav он качался затухающе до определенного момента (в зависимости от скорости было больше или меньше осцилляций туда-сюда), а потом потихонечку круги нарезал менее метра диаметром. Подробнее про осцилляции. Допустим, летим слева направо, летим уже по инерции, я стик бросил. В определенной точке перещелкиваюсь на лоитер, коптер какое-то время ещё несет вправо, потом через какое-то расстояние (зависит от скорости), коптер начинает осцилляцию обратно, летит налево почти до той точки, где был переход в лоитер. Не долетая до этой точки, начинает осцилляцию обратно (маятник с затуханием). При скорости эээээээ, как бы прикинуть на глаз..... скажем полметра-метр в секунду он делает где-то 5-6 полных осцилляций (как мне помнится), перед переходом в режим "кругов вокруг точки".
    Если войти в лоитер с неподвижного висения - сразу начинал потихоньку кругами менее метра диаметром.
    Нет, при повышении inav вести себя стал лучше. Но у меня похоже было только одно повышение инав (начало этого поста), поэтому пока однозначно сложно сказать.
    Учту и протестирую на разных значениях инав.
    К сожалению, сегодня не лечу. Вчера вечером разобрал коптер (заморочился с настройкой антенны видеолинка по токопотреблению), в полпятого лёг спать, коптер стоит "раскинув крылья" (рама разобрана). Сегодня вечером должен собрать, завтра постараюсь облетать.
     
    Alexey Kozin нравится это.
  4. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    Тимур, вы и так делаете невероятное и невозможное. Контраварийно летаете и толково-понятно описываете.
    --- Сообщения объединены, 2 дек 2015 ---
    теоретически повышение - должно улучшать переход из скорости но ухудшать поведение в неподвижном висении
    поскольку я сделал утроитель коэфициентов - если переход из скорости будет гладким - то в этом случае может оказаться что имеет смысл уменьшать для достижения идеального висения- оптимальное значение может оказаться меньше 10
     
  5. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Ой, я сейчас растаю и ножкой рисовать начну..... :)
    Этот опыт (контраварийных полетов) появился именно оттого, что имел много проблем именно с компасом, имел улеты коптеров опять же из-за компаса (симпл моде наврал один раз, а опыта у меня тогда было очень мало). Так же были жесточайшие краши (со всей дури с ускорением прямо "башкой" вниз), вызванные ошибками навигации дешевых некачественных китайских спутниковых модулей.
    Поэтому у меня выработался рефлекс - стою, смотрю как летает, но всегда готов перевести в стаб без опций. Рука уже сама щёлкает оба тумблера до упора вперед.
    Так что эта "контраварийность" появилась не от хорошей жизни, наелся я глюков прилично. И поэтому мне хочется довести до нормального состояния этот капризный режим. В коды погрузиться в принципе могу, но поскольку ранее со времен Мегапирата в коды вообще не лазил (да и тогда не очень лазил) - поэтому программированием я вряд ли помогу. А вот в качестве тестера - по возможности смогу. Планирую полетный день завтра, в пятницу пока под вопросом.
    .....
    А нет, вопросов нету. Хотел сделать "боевой вылет" на высоту в пятницу, сейчас глянул виндгуру - нет. Прогноз ветра поменялся, на этой неделе точно уже не лечу на высоту. Так что когда его назад соберу (один вечер) - тестирование продолжится.

    Пошаманю, попробую полетать с разными значениями inav

    Еще попробую взять с собой SJ на полеты, может она в темноте будет лучше "видеть", Мобиус похоже не тянет.
     
    LampGraph и Alexey Kozin нравится это.
  6. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Это уже смешно. Место на карте не проверил, был свободен всего гиг, и SJ почему-то повтыкала куски по 7-10 секунд. Ничего не понятно, всё поудалял. Завтра привлеку "оператора".
    Какое-то сегодняшнее тестирование было сумбурным. Названия архивам дал по ключевым параметрам. То ли голова сегодня не соображала, у меня то параметры не менялись (наверное забывал write нажать), то логи случайно почистил не те которые хотел убить. Параметры менял вообще бездумно, ничего не пытался отстроить.
    Временами коптер висел очень хорошо. Но иногда не хотел успокаиваться никак.
    Несколько общих наблюдений:
    1. Самый спокойный стиль поведения в лоитере - это когда сначала коптер вывешиваешь в точке, а лишь потом переходишь в лоитер
    2. Самый "бешеный" стиль поведения в лоитере - это когда прямо в Лоитере отклоняешь стик куда-то лететь (питч/ролл), а потом резко бросаешь стик(это тестирование даже жестче, чем разгоняться в Альтхолде, а затем переходить в Лоитер). Тогда коптер понимает что пролетел позицию, в которой отпустил стик, и пролетел серьезно, возращяется назад, но получается перерегулирование (проскакивает точку) и начинает делать осцилляции туда-сюда, маятником. В большинстве случаев процесс "сходящийся", но при каких-то параметрах (мои мозги затупили при каких) - процесс был расходящимся (вроде один раз), раскачка туда-сюда усиливалась.
    3. Получил один раз классический унитаз. При этом проверил в стабе с опцией симпл - компас врал. Причем врал серьезно, до 90 градусов
    4. Если поднимать GPS_PE, то коптер начинает "подсвистывать" движками и более дёрганно менять позицию. Иногда даже прослеживаются "ступенчатые" смены позиций. Чисто визуально мне более нравится более "плавные" корректировки, так движки не резко меняют обороты.

    Вот такое глупое тестирование, перебор параметров без головы. Единственный сегодняшний плюс на мой взгляд - подобрал более "жесткие" ПИДы (задрал больше P и слегка увеличил D).

    Чтобы подобное не повторялось, можно мне обьяснить методику подбора параметров? Примерно, как люди объясняют подбор ПИДов, только подбор этих новых параметров. А то я что-то в потемках блуждаю (такой вот потёма).
     

    Вложения:

    Alexey Kozin нравится это.
  7. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    пока gps фильтр выключаем
    GPS_FILTERPE = 0, GPS_FILTERSPD = 0,

    тестим
    inav_gps_xy_pos
    = 15, inav_gps_xy_spd = 10
    inav_gps_xy_pos = 20, inav_gps_xy_spd = 10
    цель достичь стабильности в разгонах и торможениях в лоитере

    поиск комфортного значения inav_gps_xy_pos при котором на скорости нет осциляций

    пока компас должен работать идеально на тестовом коптере.. никаких 90 градусов ошибки!
    в противном случае мы получим неверные выводы
     
    5yoda5 нравится это.
  8. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Угум....
    Тогда я уберу вниз приемник РУ и придумаю какой-нибудь экран перед компасом. Просто эта ошибка возникает не сразу. Взлетел, проверил через симпл - все работает нормально, компас не врёт. Потом когда полетал - компас врёт (или инерциалка ему кружит голову, интересно она влияет в стабе с опцией симпл?)
    Вас понял, капитан!
     
  9. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    экраны не помогают,
    помогает убрать компас дальше от силовых проводов
    немного помогает силовые в витую пару (втч батарейные) и симметричная pdb

    у меня было что компас начинал врать в полете изз изменения положения батарейных проводов
    --- Сообщения объединены, 3 дек 2015 ---
    посмотрел логи, полагаю что неудачные результаты обусловлены ошибкой компаса,
    не должно быть ухудшения результата по сравнению с 7а в которой наблюдалось затухание при выходе из скорости в висение
     
    Последнее редактирование: 3 дек 2015
  10. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Перенесу приемник РУ - опустится питание на 5 вольт (опустится не по вольтам а по сантиметрам :) ). Сейчас от компаса до приемника - 10-11 см, когда уберу вниз, будет ~ 14 см.
    Если экраны бесполезны (кстати, пробовался мюметалл?) - тогда мне на коптере более и менять-то нечего. У меня от компаса до основных силовых проводов - 15 см. Провод на внешний компас уже почти внатяг.
    Если ОООООЧЕНЬ постараться, можно в теории выкружить ещё сантиметр, но это надо менять банку для мозгов на "грибок".
    Перевить провода на акк..... УХХ.
    А вот касаемо симметричной pdb - тоже можно подумать. Но небыстро. У меня появилась тут одна платка, но голая (только печатка, без деталей). А радиомагазина у нас в городе нет, выберусь самое ранее через неделю.
    У меня с 7А по аппаратной части практически ничего не поменялось. Разве что я летал с обесточенными 12 вольт (потушена была подсетка, ФПВ, курсовая).
    Судя по всему тут ещё зависит от стиля полета. Если был весь полет более ровный, то компас возможно не сбивается.
    Получается, на этом коптере большая энерговооруженность играет со мной злую шутку. Просто при токе висения ~13 ампер на этих акках, максимальное токопотребление - более 70 ампер, что не может не сказываться. А у меня за сегодня было несколько раз "тапку в пол" в стабе. Постараюсь впредь летать ровно - только режимы висения.

    А параметр "Compass Learn" что-нибудь решит, или сделает только хуже?
     
    Последнее редактирование: 3 дек 2015
  11. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    курил логи, нашел весьма странную странность. все осцияляции одной частоты какой бы небыл размах и в 7 версии и 008.
    период осциляции около 4-5с тоесть будь то медленное кружение или сильная раскачка полный круг он совершает за 4-5сек
    нужно измерить реальную задержку по времени координат которую дает жпс модуль,
    для этого нужно мутить какойто стенд стартующий движение точно по времни начала минуты жпс времени, в лог писать время и координаты, а затем в логе смотреть с какой задержкой от начала минуты зарегистрировано движение. но это моя задача. если время задержки статично для жпс модуля то нужно будет тянуть позицию не к точке жпс а к сумме точки жпс + прогноз перемещения по инерциалке за время задержки координат.

    --- Сообщения объединены, 4 дек 2015 ---
    не, ненужно. это вычисление офсетов
     
    Последнее редактирование: 4 дек 2015
    5yoda5 нравится это.
  12. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    думал над рассказами тимура, про маятник, смотрел логи и снова пытался представить "физическую модель" комплексно

    сегодня еще денек поанализирую логи на предмет вычисления времни задержки жпс данных
    полюбому она есть как минимум периодически задержка может составлять до 0.2 секунды т.к. скорость обновления данных 5 гц.
    быстрофикс попробовать уменьшить задержку за счет установки бауд жпс на 115200 а периода обновления на 10гц.
    это не решит проблему полностью т.к. задержка координат может происходить еще и в коде жпс модуля - поэтому направления три
    1. уменьшить задержку жпс данных
    2. измерить задержку конкретного модуля
    3. учитывать дельту координат жпс и реальной за время задержки жпс данных для расчета позиции к которой подтягивается инерциалка
    4 . учитывать дельту скорости жпс и приращения обусловленного задержкой жпс данных.

    вечером поменяю инициализацию жпс и выложу новый бинарник
     
  13. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Алексей, я не спец в алгоритмах компенсации и математических фильтрах. Но тоже думал, думал...
    Читаю я про 5 герц, 115 бод, задержка жпс 0,2 секунды..... Это такие маленькие временные интервалы... Тут у меня коптер "качается" на виртуальной веревке с полным циклом до 5 секунд и даже более...
    Появилась мысля (наверное вам это и так понятно, объясню просто вслух).
    Проблемы АРМ с лоитером (по крайней мере в текущей экспериментальной прошивке) можно разделить на два симптома (позже объясню почему).
    1. Это "качелька" туда - сюда после попытки остановки на большой скорости (то есть без предварительного висения).
    2. Классический унитаз, маленькие круги около какой-то точки.

    Если с классическим унитазом более-менее понятно, с этим и борется ваша прошивка, тут и возникают наверное те самые 5 герц, задержка жпс и прочее, то с пунктом 1 у меня пока ясность не наступила.

    Сегодня на полетушках я попробую её решить
    Расшифрую пункт 1 подробнее:
    1. коптер летит в лоитере, стик зажат на пульте. Пилот отпускает стик, в контроллер поступает команда "останься в этой точке" (я образно). Руководствуясь параметрами фильтра Inav_GPS_**** коптер пролетает точку в которой должен остаться, летит ещё наверное секунду, до него доходит что надо лететь назад (ой, я улетел слишком далеко от точки). Коптер выбирает направление, чтобы вернуться в точку (и кстати, в большинстве случаев выбирает правильно, значит либо компас сработал корректно, либо фильтр всё-таки молодец), и летит назад в "точку стояния". Но по каким-то причинам "просыпает" "точку стояния" и где-то секунду "ленится", то есть не принимает корректирующих воздействий. И по новой, на следующую итерацию.
    Если перевести эту белибердистику (что я написал) в образ ПИДов стабилизации - я бы слегка уменьшил P и немного добавил бы D. А если бы он застыл не в "точке стояния" (вообще КМК это пофиг, но тем не менее), а сбоку где-то - то добавил бы слегка I. Теперь, если вернуться к нашим баранам параметрам Inav - что есть что? inav_gps_xy_pos - P, а inav_gps_xy_spd - D ?
    Или немного другой смысл?

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

    побредил, что делать...
     
  14. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    вот вот, я тоже так думал!
    именно поэтому и проигнорировал изначально коррекцию жпс задержки.
    когда вы на скорости отпускаете стик - происходит следующее. инерциальная позиция подтянутая сильно к позиции жпс обладает устаревшими данными.
    тоесть ситема думает что она к примеру на 2 метра сзади.
    отпустив стик вы даете ей запомнить текущие координаты тоесть ошибочную позицию,
    тем временем жпс дает ошибочные даные о том то позиция продолжает движение по прежнему вектору - данные о движении то проложают запаздывать
    и коптер чтобы не улететь дальше отыгрывает назад, он начинает движение, тем временем данные жпс рапортуют об остановке
    при этом и скорость и позиция начинают подтягиваться к точке остановки, но коптер уже разогнался и летит назад, собирая новые данные жпс о позиции,
    в это время он понимает что пролетел и начинает разгоняться назад, жпс при этом начинает передавать данные о своем присутствии в точке максимума
    тоесть небольшое запаздывание жпс приводит к более низкочастотным резонансам
     
  15. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Ага. Вот в чем тормоз. За скорость обновления позиции ЖПС реальной в инерциальную позицию - отвечает параметр inav_gps_xy_spd?
    Сейчас схожу, почитаю шапку темы....
    В шапке описания не нашел. Нашел только это
    Получается, что мне нужно уменьшить оба этих параметра, скажем поставить по 7 (т.к. 10 по дефалту)?
     
  16. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    а может и еще меньше.
    признаком что суменьшением уже перебор - будет попытка погулять неведомо куда медленно но верно в случе если в висении на месте дернуть коптером
    .
    серега липницкий натолкнул меня на мысль что возможно у нас оба inav_gps_xy_pos inav_gps_xy_spd
    перенакручены.
    попробую определить в настольном тесте минимумы при которых в настольном тесте слегка подергав котроллером позиция не уплавает сильно

    тоесть в этом случае если будет найден низкий коэфициент при котором система не уплывает - задержка подтяга обеспечит компенсацию раскачки.
     
    5yoda5 нравится это.
  17. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Я сегодня поподбираю эти параметры, наиболее удачный лог скину. Если это будет так критично, то наверное будет логично увеличить размерность (то есть назад помножить на 10 :) ). Но это при условии, если столкнусь с ситуацией, когда например 6 много, а 5 мало.
    Пока пусть будет так как есть.
     
    Alexey Kozin нравится это.
  18. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    скомпилил 009
    изменения
    прошивка меняет бауд жпс на 115200
    изменяет скорость обновления на 10 гц
    ссылка для загрузки

    --- Сообщения объединены, 4 дек 2015 ---
    в настольных тестах для того чтобы время восстановления инерциальной скорости стало 5 секунд (частота собственных колебаний тестового коптера)
    нужно
    inav_gps_xy_spd 3
    nav_gps_xy_pos 8
    но в полете может быть все совсем быть не так
     
    Последнее редактирование: 4 дек 2015
  19. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    :D :D :D А я на 8 летал. :D
    Ладно, завтра оттестирую, может быть с утречка. И с учетом высказанных замечаний по сегодняшним полетам (ниже написано).

    Итак. Сегодня я рассчитывал на оператора, но товарищ не смог, поэтому что выросло, то выросло:

    (видео заливается в данный момент, станет доступным где-то в 22 по Москве, оно на канале не просвечивается, доступно только по ссылке)
    Вышло прямо скажем не фонтан, потому что камера глючила и писала короткие куски рандомной длительности. Из-за чего местами выпало то что я глаголю :) Сначала я показал как у меня коптер летает вообще - полетный режим Стаб, кратковременно дергал стик, чтобы показать раскачку по стабилизации. Надеюсь ПИДы подобраны нормально. Потом, когда долго распинаюсь про параметры - это включен Лоитер. Потом я пытался показать как могу вывесить коптер в стабе (не получилось, скажу прямо), потом сделал "КомпасоСшибательную" "карусельку" (я ещё там немного путался с направлениями в симпле), и потом получил унитаз в Лоитере. Вроде бы это первый лог.
    С самой камерой уже разобрался, дома я её прошил (попутный апгрейд), и поменял карточку СД - из-за неё и были глюки. Но раньше как-то писались нормальные куски... Если будут вопросы по видео, постараюсь ответить ещё сегодня.

    Значит, максимально стабильный результат был при Gps_PE=0, GPS_SPD=0, INAV_XY_POS=3, INAV_XY_SPD=3. Иногда это было практически идеальным Лоитером.
    Пробовал, ставил Gps_PE=3, GPS_SPD=3 - иногда был классический унитаз, а иногда нормально.
    А вообще - сегодня дул ветерок небольшой периодами. То штиль, то до 2 м/с. На видео был кадр.
    Не знаю, есть ли смысл в логах, но выкладываю. В каких-то логах унитаз, в каких-то спокойно.
    Ближе к концу полетушек то ли коптер устал, то ли я, то ли где-то накопилась какая-то ошибка (или какие-нибудь параметры куда-нибудь подтянулись, но к концу полетов стабильного Лоитера уже не было.

    Кстати, у меня совпало SPD - случайно? :)
     

    Вложения:

    Последнее редактирование: 4 дек 2015
    raefa и Alexey Kozin нравится это.
  20. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Черт, Ютуб сконвертил видео только на 360 бит... Или просто ещё идет обработка? Короче, если надо - могу на облако что ли залить, файлик весит 261 мег. Изначально видео было MPEG4 Video (H264) 1920x1080 30fps 2648kbps
    Или у Ютуба начала действовать программа платной подписки?
    .....
    О, сконвертилось в нормальном качестве. Хотя "ночью негры уголь грузят" - так что пофигу в общем-то.
     
    Последнее редактирование: 4 дек 2015
  21. Alexey Kozin

    Alexey Kozin APM Guru Команда форума

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    видео просто мегасупер.
    посмотрел несколько раз каждый раз получая эстетическое удовольствие.

    замечательно что удалось полетать именно 8 прошивку ибо в 9 предположительно должен быть меньше лаг жпс и меньше раскачки.

    в какой то момент после маневра стало немножко сносить назад вероятно немножко маловат nav_gps_xy_pos по результатм настольных тестов
    при 8 позиция восстанавливается около 5 секунд но время может увеличиться если
    причины рассогласования:
    - случился виброрезонанс и апм тряхнуло
    - изза ошибки компаса неверно рассчитался курс и соответственно инав принял ускорения немного "рикошетом"
    - отставание данных жпс и резонансы этих отставаний с позиционированием инерциалки


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

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

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

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

    зы. напрасно я сделал усиление подтяга на скорости. по логам как только скорость растет свыше 1мс до трех осциляции прогресируют - явно этот коэф мешает..
    соберу сейчас 10 версию без этого
     
    Последнее редактирование: 5 дек 2015
    raefa и 5yoda5 нравится это.
Реклама. Купить это место.