LINUX.ORG.RU

Вот запилил тут прототипы алгоритмов фильтрации и статью с описанием

 , ,


2

2

Вы наверное заметили, что в последние пару месяцев не двигался проект нейроябеды…

Это случилось потому, что я занимался другим проектом.

В общем, накидал несколько прототипов «доработки фильтров Калмана напильником», и написал околонаучную статью о том, как это устроено.

Прототипы

Графомания

Милости прошу в issues к нашему шалашу.

Чувак, а ты и тот геймер из Екб — случайно, не одно и то же лицо?

P.S. Я нихрена не понял, но твои слова тронули моё сердце. Видно, что проделана большая работа. По-хорошему завидую. Только спеллчекером по статье стоило бы пройтись (напр., «затем» в научных статьях пишется слитно).

Bass ★★★★ ()

Не похоже на околонаучную статью.
Мне даже скролить её не понравилось.

Так или иначе, что вообще считают этим алгоритмом? Показания чего?

system-root ★★★★ ()
Ответ на: комментарий от system-root

Например, в мультикоптерах им фильтруют показания датчиков позиционирования, если я ничего не путаю за давностью лет.

В системе стабилизации аппарата, во.

aol ★★★★★ ()

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

Какие причины расходимости у ФК? Как я знаю это ошибки при вычислениях и неточная модель. Ошибки при вычислениях решаются повышением точности расчетов. Проблемы, вызванные неточностью матмодели, как по мне, должны решаться улучшением модели. А здесь мы получается, используя модель прямолинейного равномерного движения сопровождаем объект испытывающий ускорения по обеим координатам и за счет использования модифицированного ФК снижаем невязку фильтра. А разве не меньше была бы невязка с тем же самым исходным ФК, если бы использовалась модель равноускоренного движения? Нет, я понимаю, что прямолинейное движение можно использовать во всех случаях и это на практике работает, при этом проще в реализации. Тут все понятно, реализация простейшая, но и ожидания скромные. А здесь столько математики, все заметно сложнее, а вот результаты не факт что соответствуют затратам.

Но вообще - за пост большое и огромное спасибо! Побольше таких материалов нужно. Однозначно респект и успехов в дальшейших работах!

yetanother ()

Потрясающе. Это настоящий пример подвижничества. Редкая вещь в наше время. Как ты только вытерпел.

Твоя работа поднимает столько проблем… либреофиса, что страшно сказать. Кнут из-за меньшего бросился TeX писать!

anonymous ()
Ответ на: комментарий от yetanother

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

Посыл - задокументировать разработанные алгоритмы, выбрать из них то, что можно реализовать в embedded.

Как я знаю это ошибки при вычислениях и неточная модель.

Да.

Ошибки при вычислениях решаются повышением точности расчетов.

Не всегда получается повысить разрядность, особенно, когда у тебя Cortex-M0.

Обычно для снижения влияния ошибок применяют:

  • квадратнокорневые либо UD-реализации EKF;
  • обновление Джозефа (оно сохраняет симметричность матрицы P);

Обе техники используются в прототипах.

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

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

за счет использования модифицированного ФК снижаем невязку фильтра.

Нет. Мы временно повышаем коэффициент услинения ОФК в случае, если он начал расходиться.

А здесь столько математики, все заметно сложнее, а вот результаты не факт что соответствуют затратам.

На самом деле нет, во всяком случае в вариантах UDEKHF_A, (UD)EKHF_C, особенно в сравнении с каким-нибудь IMM.

Там и память не надо добавлять, и действий относительно не много.

shkolnick-kun ★★★★ ()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от shkolnick-kun

Посыл - задокументировать разработанные алгоритмы, выбрать из них то, что можно реализовать в embedded.

Вот, а про встраиваемые системы в статье - ни слова. А это ведь меняет дело. Я, грешным делом, глядя на питон и не предполагал про МК. Интересно, кстати, а питон кто-то использует на практике? Не для прототипирования, а в конечном продукте?

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

Согласен, я уже потом потом подумал, что есть довольно много кейсов для отсутствия модели

Мы временно повышаем коэффициент услинения ОФК в случае, если он начал расходиться.

А вот тут я не понял. Разве увеличение КУ не приведет к положительной обратной связи и резкому росту расхождения? Я бы (теоретически рассуждая) наоборот уменьшил КУ, чтобы ФК перестроился на новый процесс (исходя из того, что маневр объекта ограничен по времени и далее объект движется прямолинейно) Хотя я рассуждаю о случае когда модель неточная. Если причина расхождения недостаточная точность вычислений, то тут надо мне подумать, я на практике с этим дела не имел пока.

На самом деле нет, во всяком случае в вариантах UDEKHF_A, (UD)EKHF_C, особенно в сравнении с каким-нибудь IMM.

Там и память не надо добавлять, и действий относительно не много.

Ок. Надо будет пощупать ваши решения на практике.

yetanother ()
Ответ на: комментарий от yetanother

Разве увеличение КУ не приведет к положительной обратной связи и резкому росту расхождения?

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

Есть «простой» подход - при обнаружении расходимости однократно сделать P += Q*n;

n подбирают так, чтобы не овершутить, но адаптироваться к изменению ситуации побыстрей.

Здесь делается более сложно, но не надо [почти] ничего ручками подбирать, всё вычисляется само на основе накопленной статистики. Все что надо выбрать руками - уровень значимости при тесте Хи-квадрат.

shkolnick-kun ★★★★ ()
Ответ на: комментарий от shkolnick-kun

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

Да, посмотрел формулу, действительно ООС.

Есть «простой» подход - при обнаружении расходимости однократно сделать P += Q*n;

Ну на самом деле почему бы и нет. Может и не совсем правильно с точки зрения теории, но тем не менее. Главное понимать что ты делаешь и для чего.

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

Здесь делается более сложно, но не надо [почти] ничего ручками подбирать, всё вычисляется само на основе накопленной статистики. Все что надо выбрать руками - уровень значимости при тесте Хи-квадрат.

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

yetanother ()
Ответ на: комментарий от yetanother

Или статья не претендует на публикацию?

Пока нет, во всяком случае на нормальную. Хотя думал выложить на academia.edu, когда допилю.

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

shkolnick-kun ★★★★ ()
Последнее исправление: shkolnick-kun (всего исправлений: 1)

Про графоманию

Советую найти англоговорящего корректора, на первый взгляд читается топорно. Очень много пассивного залога, с артиклями беда. Просмотрел по диагонали т.к. в теме ни бум-бум.

filosofia ()
Последнее исправление: filosofia (всего исправлений: 1)
Ответ на: комментарий от shkolnick-kun

Что-то на картинках линия KF не похожа на правильную, должна колебнуться 1,2 раза и попилить за целью, а тут постоянную ошибку выбирает очень меееедленно. (В одномерном случае изменилась скорость цели? а это соответствует модели? (мат.ожидание ошибки =0?) )

anonymous ()

Ну формул много, наверное ты умный =)) Жаль для непосвящённого это филькина грамота =) Ты бы это написал абзац на строк 150 где в общем виде без терминологии описал что да как.

Например.

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

Ну или типа того

Думаю с таким пре или послесловием будет многим интересно. Причём тем кто не в курсе что ты там написал в принципе =)

LINUX-ORG-RU ()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от shkolnick-kun

А у меня получилось ФК(одномерный) в пять строчек, тут: Как «размазать» поиск медианы? (комментарий) (Данные у Вита в проекте, измеряется координата, задача выделить скорость ее изменения(сглаженную). Это как-бы усилия в обратную сторону - упрощения.)

anonymous ()
Ответ на: комментарий от shkolnick-kun

только надо оптимально рассчитать коэффициенты … Угу. (там сделано «по вкусу» по выложенным данным, т.е. «от балды»)

А у развесистых FK надо проверять устойчивость (автоколебания по всем сочетаниям переменных (в т.ч. в настраиваемых матрицах - о жопа)) и попадание в сортир (ну т.е. тупик, тут даже не знаю авто-методов (сети Петри?))

anonymous ()
Ответ на: комментарий от anonymous

(в т.ч. в настраиваемых матрицах - о жопа))

Дык не юзай LTV-модели, просто посчитай один раз и проверь собственные значения матриц, собственно, их в любом случае надо проверять.

shkolnick-kun ★★★★ ()
Ответ на: комментарий от shkolnick-kun

LTV-модели - это что? (уаndех говорит маркетинг)

проверь собственные значения матриц

А этого хватает, чтобы Р (которая живет сама, при неизменных х) не автоколебалась до переполнения double ?

anonymous ()
Ответ на: комментарий от anonymous

LTV-модели - это что?

Linear Time Variant

А этого хватает, чтобы Р (которая живет сама, при неизменных х) не автоколебалась до переполнения double ?

P растёт, когда делают P = FPF’ + Q на этапе прогноза.

На этапе коррекции собственные значения P обычно падают (если правильно выбрана процидурка обновления).

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

Подробности

shkolnick-kun ★★★★ ()
Последнее исправление: shkolnick-kun (всего исправлений: 3)