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

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

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

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

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

    Регистрация:
    26 янв 2015
    Сообщения:
    932
    Город:
    Москва
    Имя:
    Алексей Козин
    Поскольку 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
    Сообщения:
    932
    Город:
    Москва
    Имя:
    Алексей Козин
    ссылка 010a
    https://www.dropbox.com/s/zii5hrubio7r070/ArduCopter V3.2KPEMF_v010a.rar?dl=0
    -убрано усиление подтяга на скорости, должно быть меньше осциляций на скорости
    --- Сообщения объединены, 5 дек 2015 ---
    из лога
    PARM, TRIM_THROTTLE, 466
    PARM, THR_MID, 500

    это значит (должно)
    PARM, THR_MID = 466
    --- Сообщения объединены, 5 дек 2015 ---
    пид стабилизации, великоват похоже rate p или маловат rate d
    я бы попробовал d + 10%
     
    Последнее редактирование: 5 дек 2015
    5yoda5 нравится это.
  3. Alexey Kozin

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

    Регистрация:
    26 янв 2015
    Сообщения:
    932
    Город:
    Москва
    Имя:
    Алексей Козин
    идея по обсуждению с программистами
    при обновлении инав с частотой 100 гц помещаем в массив (например размера 100 сэмплов) данные об ускорениях x y и dt
    в цикле жпс коррекции инав (10 гц) при установки новой позиции к которой идет подтяг вычисляем по этому массиву сумму ускорений до тех пор пока сумма dt не достигнет времени задержки жпс
    расчитваем корекцию позиции как
    gps_pos_lag_x = sum(history_x * dt *dt)
    gps_velocity_lag_x = sum(history_x * dt )

    или так?
    gps_pos_lag_x = sum(history_x * dt *dt) /2 ???
    для пути ведь нужна средняя скорость (V0 + V1) /2


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

    сам массив делаем круговым, тоесть с указателем на последний внесенный элемент,
    при добавлении данных, увеличиваем указатель, при достижении размера массива через модуль переходим по кругу в начало
     
    Последнее редактирование: 5 дек 2015
  4. SergDoc

    SergDoc F4BY Hardwar developer Команда форума

    Регистрация:
    11 мар 2015
    Сообщения:
    217
    Город:
    Belarus Slonim
    Имя:
    Сергей Липницкий
    у тебя атмега повесится 100 семплов собрать [​IMG]собирай 10
    нее sum(history_x * dt ) делить надо на кол-во собранных семплов а не на 2)))
    мысль есть бредовая - проверять обновились ли данные (где-то ж прерывание с порта есть) и пока данные не обновились не брать их в расчёт, как только обновились - добавлять?
     
    Последнее редактирование: 5 дек 2015
  5. Alexey Kozin

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

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

    на 2 потому что и я и арду нае..лись с формулой походу
    перемещение = ускорение * время делить пополам !

    Вначале скорость была: v=0, в конце стала: v=at, причем рост
    был линейный по времени.
    Средняя скорость: v1=at/2, путь: s=v1*t=at/2*t=(at^2)/2.

    в арду скорость делят пополам - те. вдвое занижают
    а потом ее преращивают к пути не деля - с путем норм , но скорость вдвое занижена
     
  6. SergDoc

    SergDoc F4BY Hardwar developer Команда форума

    Регистрация:
    11 мар 2015
    Сообщения:
    217
    Город:
    Belarus Slonim
    Имя:
    Сергей Липницкий
    1+2+1+3+1=8 8/2 = 4, а средняя скорость =2
     
  7. Alexey Kozin

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

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

    посмотри сереж тут верно я думаю?
    https://github.com/kozinalexey/alte...1436fed#diff-44e84bfc0f7ee870aea3fcb7b6f23c10
     
  8. SergDoc

    SergDoc F4BY Hardwar developer Команда форума

    Регистрация:
    11 мар 2015
    Сообщения:
    217
    Город:
    Belarus Slonim
    Имя:
    Сергей Липницкий
    Давай по порядку:
    _position_correction.x = (_velocity.x + velocity_increase.x * 0.5f) * dt - ты пытаешся рассчитать путь через ускорение так?
    s=so+(t-t0)*v0+(t-t0)^2*a/2 т.е. если t-t0 = const = dt тогда формула примет вид s=s0+v0*dt+(a*dt^2)/2
    _position_correction.x = v0*dt+(a*dt^2)/2 = (v0+(a*dt)/2)*dt
    velocity_increase.x * 0.5f = (a*dt)/2 - да тут правильно
    дальше ты делаешь вот что: _velocity += velocity_increase; вроде правильно, но где жпс?
    тебе надо _velocity.x и _velocity.y в начале подставлять уже правленную с жпс...
    ниже не посмотрел velocity.x = _velocity.x * _gps_k_inav_spd + _gps_velocity_x * _gps_k_gps_spd ; //pool inav velocity to gps velocity
    _gps_k_inav_spd == 1-_gps_k_gps_spd ?
     
    Последнее редактирование: 5 дек 2015
  9. Alexey Kozin

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

    Регистрация:
    26 янв 2015
    Сообщения:
    932
    Город:
    Москва
    Имя:
    Алексей Козин
    да
    _gps_k_gps_spd = (float)_gps_k_spd * /1000.0f; //v7 10 000 v008 1000
    _gps_k_inav_spd = 1.0f - _gps_k_gps_spd ;

    _gps_k_gps_pos = (float)_gps_k_pos * /1000.0f; //v7 10 000 v008 1000
    _gps_k_inav_pos = 1.0f - _gps_k_gps_pos ;
    --- Сообщения объединены, 5 дек 2015 ---
    арду не держит горизонт в ускорениях - мегапечалька. гонял по плоскости питч гуляет в ускорениях до 10 градусов
    фиг бы с ним горизонтом но инав изза этого ошибается
     
  10. 5yoda5

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

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Простите что вмешиваюсь в вашу интеллектуальную беседу.

    Докладываюсь - подлетнул сегодня на прошивке 10а. Сначала подкрутил D. Было 0,007, поставил 0,008. Как выравнивало в стабе на видео показал. Возможно всё-таки P большевато, сейчас стоит 4,5 - может стоит уменьшить аж до 4.0.
    Газ висения поменял - подошло хорошо.

    Вот само видео (на канале не видно, доступ только по ссылке):

    Там было два полета. Различия - в Inav POS и SPD, 3 и 8 менял местами. Фильтры GPS оба стояли на 1.
    В первом полете, сразу после спокойного вывешивания в Лоитере - всё было ИДЕАЛЬНО. Но повисев некоторое время, начался расходящийся унитаз, который пришлось прервать.
    Во втором полете была некая фишечка - где-то на 9:20 в видео. Значит, я отвел коптер в право, чтобы протестировать пролет в Лоитере на скорости. Зажал стик влево (вроде на максимум), коптер полетел с некоторой ленцой и потом отлетев от точки "старта" где-то 5 метров, он как бы "споткнулся" обо что-то, коптер слегка замедлился, а потом "преодолев барьер" полетел гораздо быстрее (или его "понесло").
    И тут же, на примерно на 12:44 коптер тоже слегка подколбасился, мне подумалось почему-то что это сработала корректировка по GPS, хотя это могла так и инерциалка сработать.
    Два лога прилагаю.
     

    Вложения:

    Последнее редактирование: 5 дек 2015
    SergDoc и Alexey Kozin нравится это.
  11. SergDoc

    SergDoc F4BY Hardwar developer Команда форума

    Регистрация:
    11 мар 2015
    Сообщения:
    217
    Город:
    Belarus Slonim
    Имя:
    Сергей Липницкий
    хреново, значит надо пересматривать и иму - при ускорениях уменьшать доверие акселю и увеличивать рате д или добавлять фильтр по данным с акселя...
    Алексей, давай или тут или там, а то скакать туда-сюда и мысли путаются, и барометр не ищется, и компас не подключается...
     
    Последнее редактирование: 5 дек 2015
    Alexey Kozin нравится это.
  12. SergDoc

    SergDoc F4BY Hardwar developer Команда форума

    Регистрация:
    11 мар 2015
    Сообщения:
    217
    Город:
    Belarus Slonim
    Имя:
    Сергей Липницкий
    Последнее редактирование модератором: 6 дек 2015
    Alexey Kozin нравится это.
  13. Alexey Kozin

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

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

    но само наличие воронки - интересный эффект, например мы ведь видим куда нас закручивает чтобы не вычислить это и не сделать поправку на компас на лету программно
    --- Сообщения объединены, 5 дек 2015 ---
    если мы это пофиксим - будет прорыв по качеству стабилизации.
     
    5yoda5 нравится это.
  14. 5yoda5

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

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

    Да, этот эффект потом понадобится для создания стресс-теста мегаустойчивой прошивки (то есть уже на выходе). Потому что не все пилоты собирают идеальные конфиги и не у всех хватает терпения или знаний это исправить.
     
  15. Alexey Kozin

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

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


    по подписям на видео вы переставили строчки с параметрами местами - по логу первый с близкими к правильными spd = 3 pos = 8
    --- Сообщения объединены, 5 дек 2015 ---
    а еще есть места на земле с залеганием магнитных руд, где компас показывает сильно нетуда
    --- Сообщения объединены, 5 дек 2015 ---
    для начала проверить калибровку на кресто тесте.
    тест где магнитных помех и наводок. ставите аппарат так чтобы был чотко N в мишене. проводите линию или клеите полоску скотча чтобы пара лучей была уперта в нее
    повороасиваете на 90 чтоб другой парой лучей упиралось и проверяет что четко W затем S затем E
    если все чтетко до градуса значит компас калиброван хорошо
    если после перекалибровки вс тоже самое - ищите что у вас рядом намагничено. вплоть до корпуса жпс модуля и деталей рядом
    магнитыные могут быть пищалки и феритовые кольца

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

    если линия не сходится то два способа чтобы она совпала.
    1. вбить вручную деклинейшен. он в радианах. тоесть имеющееся там значение корректируем на желаемое количество градусов деленное на 57 (в плюс или минус по необходимости)
    2. или тупо повернуть компас на маунте если это позволяет конструкция
     
    Последнее редактирование: 5 дек 2015
    5yoda5 нравится это.
  16. Alexey Kozin

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

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


    по коду корекции компаса
    можно исходя из скорости векторов инерциалки считать курс инерциалки (не хеадинг, а реальное перемещение)
    сравнивать в долгосрочном накопителе (с временем жизни от 20 сек) с курсом жпс . имея разницу курсов мы можем выявить куда врет компас и раз в несколько сек добавлять или убавлять по единичке
    переменную или сохраняемый параметр "коррекция деклинации" для начала ограничить этот параметр небольшими рамками например +- 10 градусов.
     
  17. SergDoc

    SergDoc F4BY Hardwar developer Команда форума

    Регистрация:
    11 мар 2015
    Сообщения:
    217
    Город:
    Belarus Slonim
    Имя:
    Сергей Липницкий
    придётся воскресить один старый проект, или может у кого вий есть - проверить?
    --- Сообщения объединены, 6 дек 2015 ---
    надо deadband на стики сделать и можно бросать
     
  18. Alexey Kozin

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

    Регистрация:
    26 янв 2015
    Сообщения:
    932
    Город:
    Москва
    Имя:
    Алексей Козин
    по умолчанию по всем каналам есть DZ deadzone (30)

    у меня вия нету. год без дела валялся, подорил детскому кружку.
     
  19. 5yoda5

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

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Я неправильно выразился. Я не имею привычки в прямом смысле бросать стик. То есть отпустить его из крайней позиции, чтобы он сам сбренькал в центр. Обычно я сам рукой довожу до среднего значения и убираю руку со стика. Это в моем понимании бросить стик. Да, дезинформация.
    Я знаю одно место, где пока идешь по прямой - компас меняет своё положение до 30 градусов.
    Дальнейшие тесты нужно будет делать в "магнитноспокойной" обстановке?
    Я могу исследовать все свои места полетов с туристическим компасом и выбрать самое "спокойное".
    Я могу попробовать подобрать коэффициенты inav поточнее, но мне нужно твердое понимание параметров.
    Думаю выставить фильтры по GPS на нули и поподбирать поточнее коэффициенты. Например, поставить сначала INAV_SPD как константу (пусть 8), и подбирать INAV_POS. Смотреть на поведение коптера, чтобы оно имело в лоитере сходящуюся характеристику. Коптер должен "вернуться в точку после 2-3 колебаний (или 1-2, или вообще без колебаний?).
    Хорошо, inav_pos я так подобрал. Теперь немного непонятный для меня параметр inav_spd. Инерциалка для скоростных векторов. Как определять правильное или неправильное поведение (компенсацию) коптера? Это имеет отношение к глючку на видео на 9:20 ?
    Как я понял, точность компаса важна при подборке (моя работа) или настройке (работа программиста) фильтров по GPS. То есть чтобы не было классического унитаза. Правильно?

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

    2)
    Или не монструозить, а просто
    1. Откалиброваться в одном, наиболее спокойном в магнитном плане месте.
    2. На полеты ездить всегда туда, машину ставить всегда в одном месте, взлетать в одном и том же месте.
    3. Необходимую корректировку для победы над унитазом подбирать в магнитном склонении.

    ?????


    У меня есть "первокоптер" с установленным Криус АИОП 2 - адская машина, я его бью нещадно, сделан вообще "на соплях". Но думаю для данного вида тестов может подойти. Нужно?
    Я как раз сейчас думаю - делать с ним что-то или нет, была мысль убрать криуса и поставить на него АРМ, и сделать тестовый коптер.
     
  20. Alexey Kozin

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

    Регистрация:
    26 янв 2015
    Сообщения:
    932
    Город:
    Москва
    Имя:
    Алексей Козин
    нужно провреить дергается у него горизонт если интерсивно его водить по плоской горизонтальной поверхности,
    какую для этого загрузить прошивку - должен сказать Сергей
    --- Сообщения объединены, 6 дек 2015 ---
    думаю неплохо подобраными стали
    Думаю выставить фильтры по
    GPS =0
    INAV_SPD =3
    INAV_POS =8
    и заняться компасом.

    попробовать выверить курс компаса. вчера смотрел логи, курс по компасу был -30 градусов (к западу хеадинг330 ) по ощущениям иму рол также влиял на движение на север как и питч а это значит что при этом курсе реальное направление на север было -45 (хеадинг 315) тоесть на иму влияла ошибка компаса около 15 градусов.
    но это мои "тактильные ощущения" возникшие глядя на логи

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

    сейчас важно убедиться что причина унитазинга не инав а компас.
    если это так то оставляем на время инав в покое и вкладываемся в эксперименты по компенсации ошибок компаса
    --- Сообщения объединены, 6 дек 2015 ---
    в плане идей для программирования
    идея 1
    на уровне навигационного контроллера, при скоростях жпс свыше 50см в сек сравнивать требуемый курс с кусом жпс и копить ошибку в долгосрочном интеграторе.
    завести переменную добавочное_склонение и плюсовать-минусовать туда по единичке если между курсами есть ошибка

    идея 2
    на уровне инав.
    завести интегратор который будет в тестах тимура плюсоваться -ему нежно довернуть компас по часовой стрелке - при необходимости поворота компаса вправо тоесть
    при инав скорости на север (x+) регистрируется небольшое паразитное движение на восток (y+) ,
    при движении на восток (y+) сносит на юг (x-)
    при движении на юг (x-) характерен снос на запад ( y-)
    при движении на запад (y-) характерен снос на север (x+)
    это характеристика воронки (если смотреть сверху на коптер) по часовой стрелке

    при обратной воронке нужно доворачивать компас против часовой стрелки
    при инав скорости на север (x+) регистрируется небольшое паразитное движение на запад (y-) ,
    при движении на запад (y-) сносит на юг (x-)
    при движении на юг (x-) характерен снос на восток ( y+)
    при движении на восток (y+) характерен снос на север (x+)
    это характеристика воронки (если смотреть сверху на коптер) по часовой стрелке

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

    например так
    Vector3f accel_ef = _ahrs.get_accel_ef();

    Vector3f accel_ef_corrected;
    accel_ef_corrected.x = accel_ef.x * (1.f - kff_compass_err_x) + accel_ef.y * kff_compass_err_y;
    accel_ef_corrected.y = accel_ef.y * (1.f - kff_compass_err_y) + accel_ef.x * kff_compass_err_y;
     
    Последнее редактирование: 6 дек 2015
  21. Alexey Kozin

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

    Регистрация:
    26 янв 2015
    Сообщения:
    932
    Город:
    Москва
    Имя:
    Алексей Козин
    не получится ли угол из накопительной ошибки арктангенсом?
    [​IMG]
     
Реклама. Купить это место.