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
    Город:
    Москва
    Имя:
    Алексей Козин
    да, именно так. пиды, полетные режимы
     
  3. Alexey Kozin

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

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

    Xichnik55 Старший научный сотрудник

    Регистрация:
    10 сен 2015
    Сообщения:
    665
    Город:
    Омск
    Имя:
    Иван
    Давайте квад:)
     
  5. 5yoda5

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

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Ага, точно: "Frame: OCTA_QUAD" в МП.
    И хорошо, что я не смог сегодня взлететь!
    А то бы возможно полет был бы немного неадекватен.
    Провозюкался сегодня, с большим трудом откалибровал компас (были некоторые глюки, МП компаса вообще не видел, обсужу в своем дневнике), в конце концов МП мне выдал ошибку "INS not calibrated" - это ошибка преарм чека, и коптер летать не мог. А потом сдох ноут (на морозе), а потом я просто замерз (на улице было -21).
    Придя домой, до меня допёрло. Когда я калибровал аксели вчера дома, я это делал без компаса (вообще один контроллер переворачивал). Вчера же дома я откалибровал компас - чисто чтобы заармить и покрутить движками. Дома всё работало (видать без компасмота инерциалка не работает) - как ни странно.
    Потом, когда сегодня я в поле донастраивал перед полетом - я откалибровал компас и провел компасмот.
    Получается, у инерциалки "не срослось". Вывод - когда калибруем аксели - компас должен быть подключен ОБЯЗАТЕЛЬНО. (похоже они работают в паре при настройке инерциалки)
    Завтра я буду целый день в разъездах, в воскресение возможно получится оттестить.
    Алексей, пришлите мне прошивку на квадро.
     
  6. Arkady

    Arkady Студент

    Регистрация:
    11 мар 2015
    Сообщения:
    33
    Город:
    Ashdod
    Имя:
    Аркадий
    Я видел, что в мотор тесте моторов немножко больше чем 4, но думал так надо. В итоге 4 раза перевернулся на взлете, но жертв среди зрителей небыло :)
    Опасное это дело быть альфатестером!
    Вот только только верулся, скачал логи с чувством вины, потом думаю дай почитаю что народ пишет..... оказыца все нормально, дело было не в бобине :)
    Алексей, а вы всем разослали с поддержкой оптик флоу или только мне?
     
  7. Alexey Kozin

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

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

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

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    А я не догадался туда заглянуть.
    Меня спасло то, что замерз ноутбук и я замерз :)
    А вы знали, на что соглашаетесь :) ;)
    У меня МТК. Вчера наблюдал за поведением в МП. Сначала меня порадовало поведение (сужающая улитка унитазинга при явно плохом приеме на подоконнике и малом числе спутников), а потом слегка удивила.
    При потере хотя-бы одного спутника или просадке hdop на 0,5 - "коптер" начинал улетать. Слава богу недалеко, выбросы были не более 20 метров. Это при откровенно плохих условиях (рабочее число спутников от 19 до 24, hdop 0,5 - в условиях подоконника было 6-9 спутников, hdop 1,5-2,5). В целом наверное инерциалка работает. На столе.
    Осталось тестировать в поле. Ждем квадровой прошивки...
     
    Alexey Kozin нравится это.
  9. Arkady

    Arkady Студент

    Регистрация:
    11 мар 2015
    Сообщения:
    33
    Город:
    Ashdod
    Имя:
    Аркадий
    Я тоже пытался, но у меня все 4 движка жестко соеденены, перевернул просто общий коннектор, понятно что в результате тот же кувырок.
    А по поводу что ваш медленно вращался- боюсь что это уже найденый баг, думаю что он должен был или быстро вращаться или держать как положенно. Это мое такое умозаключение. А может пиды по яву еще не правильные....
    У меня юблокс нео М8. работает!
     
    Alexey Kozin нравится это.
  10. Arkady

    Arkady Студент

    Регистрация:
    11 мар 2015
    Сообщения:
    33
    Город:
    Ashdod
    Имя:
    Аркадий
    Алексей, а если в вашей прошивке GPS фильтры занулить а INAV выставить как раньше был, то эта прошивка станет похожей на конвенциональную 3.2.1?
     
  11. Alexey Kozin

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

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

    Arkady Студент

    Регистрация:
    11 мар 2015
    Сообщения:
    33
    Город:
    Ashdod
    Имя:
    Аркадий
    А что произойдет при одновременной работе оригинальной инерционалки и новых GPS фильтров?
     
  13. Alexey Kozin

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

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

    начал немножко летать.
    и показалось что дефолтные
    pe =9
    spd=7
    как то многоваты.
    хотел попробовать координально мелкие
    pe =3
    spd=5
    но полил дождь
     
    Последнее редактирование: 21 ноя 2015
  14. Arkady

    Arkady Студент

    Регистрация:
    11 мар 2015
    Сообщения:
    33
    Город:
    Ashdod
    Имя:
    Аркадий
    у меня ваще не пошло, с предложеными 9 и 7 он просто летит по прямой, иногда можно удержать стиками, тогда летит назад. но это и в мишен планер видно даже когда он стоит- он как бы летит, а когда летаешь то комп жалуется на здоровье жипиэса. когда сделал INAV=2 он стал пытаться держать, но видно как подергивается. В итоге даже сумел загнать его в унитазинг, но это без предварительной калибровки компаса. Впрочем калибровка ничего не дала. Попытался полетать с нулевыми фильтрами и с INAV=0. Тоже самое- несет по прямой, перехватываешь стиком назад, меняет направление.
    Вопрос: Судя по описанию- INAV=0 увеличивает вклад GPS в расчет позиционирования (дословно- увеличение INAV_XY уменьшает вклад GPS в прогноз позиционирования) Я правильно понимаю ситуацию, что INAV=0 просто уменьшает вклад акселерометров и жайро??
     
    Alexey Kozin нравится это.
  15. Alexey Kozin

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

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

    Arkady Студент

    Регистрация:
    11 мар 2015
    Сообщения:
    33
    Город:
    Ashdod
    Имя:
    Аркадий
    я думаю надо сделать промежуточную версию базированую на 3.2 без изменений, кроме убраных протоколов жипиэсов. т.е только почистить место, ну и желательно добавить оптик флоу. это что бы быть увереным, что мой GPS работает корректно.
    Обидно, но оптик флоу в вашей последней версии не работает. коптер на его включение не реагирует. Во кладке status показания opt_x и прочие по нулям.
    я увере что с датчиком все в порядке, я полностью прошел его тестирование как описано о динроносов, видел захваченые с него изображения и сфокусировал объектив на 2 метра удаления до объекта. Т.е к железу претензий нет....
     
  17. 5yoda5

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

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

    Вложения:

    • minimum.zip
      Размер файла:
      672 байт
      Просмотров:
      2
    Последнее редактирование: 21 ноя 2015
    Alexey Kozin нравится это.
  18. Arkady

    Arkady Студент

    Регистрация:
    11 мар 2015
    Сообщения:
    33
    Город:
    Ashdod
    Имя:
    Аркадий
    я думаю, что достаточно один раз откалибровать все датчики с новой программой, и до следующего указания Алексея. Сохранить все и загружать после заливки тестируемой программы. Каждый раз повторять все процедуры не интересно....
     
  19. Alexey Kozin

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

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    теоретически если поствить
    gps_navfilterPE = 0
    ins_tc_xy =2.5
    должно функционировать как обычная 3.2 прошива.
    сегодня закончу полетные опыты, попробую погрызть гранит науки,
    видимо некоректно отключил инав, но на даче нет нужных программных инструментов и по местному инету их не скачать
     
  20. Alexey Kozin

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

    Регистрация:
    26 янв 2015
    Сообщения:
    927
    Город:
    Москва
    Имя:
    Алексей Козин
    версия ArduCopter V3.2KPEMF_v5A
    https://www.dropbox.com/s/vig38lj62c1h1xs/ArduCopterV3.2KPEMF_v5A.zip?dl=0

    изменения коснулись INAV_TC_XY = 0
    предположительно это должно пофикситься:
     
    5yoda5 нравится это.
  21. Alexey Kozin

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

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