μKal: библиотека микрофильтра Калмана
Библиотека микрофильтров Калмана (μKal) — это библиотека для фильтрации Калмана, оценки состояния и объединения датчиков в системах с ограниченными ресурсами памяти микроконтроллеров и встраиваемых систем. Библиотека построена на основе μLAPack — микропакета линейной алгебры, оптимизированного для систем с ограниченной памятью, и может работать на любой цели, для которой можно скомпилировать C.
μKal представляет собой полную библиотеку дискретного времени фильтрации Калмана. Библиотека может фильтровать линейные и нелинейные системы с помощью расширенного фильтра Калмана (EKF) или фильтра второго порядка (SOF).
Все функции μKal являются «безопасными», поскольку операции с матрицами и векторами проверяются на инициализацию и математическую законность перед выполнением операции. Библиотека содержит различные операции и манипуляции, которые можно настроить под свои нужды. Библиотеку можно безопасно настроить для работы даже в самых ограниченных средах, где выделение памяти вызывает беспокойство.
Если у вас есть модель, которая выглядит так:
и у вас есть измерительная модель, которая выглядит следующим образом:
И вы знаете свои ковариационные матрицы:
Тогда вы можете сразу же начать фильтрацию после создания фильтра и инициализации значений матрицы/вектора:
ukal_filter_create(&my_filter, <linear, ekf, or sof>, n_states, n_measurements,
&Phi, &gamma, &x, &Q,
&P,
&H, &R);
Не хотите использовать систему, которая похожа на эту? Хотите узнать, как сделать вашу систему подходящей для этой формы? См. пример использования μKal для EKF, чтобы узнать больше о моделировании системы и использовании μKal для фильтрации зашумлённых измерений датчиков для линейных и нелинейных систем.
Хотите предсказать текущий вектор состояния и значение ковариационной матрицы?
ukal_model_predict(&my_filter);
Получили измерение датчика и хотите обновить оценку состояния и ковариационную матрицу?
ukal_update(&my_filter, &y);
Пример сборки см. в tests/Makefile, где показано, как скомпилировать проект с правильными настройками параметров и компоновкой.
Некоторые основные параметры сборки настроены в проекте, но любой параметр μLAPack можно настроить по желанию.
Библиотека реализована на основе [μLAPack], и настроена для работы только со статически выделенной памятью. Эта библиотека безопасна и готова к использованию во встраиваемой системе, где динамическое выделение памяти невозможно.
В библиотеке используется контейнер типа std::vector для хранения данных. Вы можете выбрать другой тип контейнера, если это необходимо. Пользователь этой библиотеки может установить тип данных элементов матрицы/вектора на желаемый с помощью #define
ULAPACK_MATRIX_ENTRY_TYPE
в файле ukal.h
.
Все новые созданные объекты матрицы/вектора можно инициализировать нулями, если во время компиляции определено ULAPACK_INITIALIZE_MEMORY
.
Определите ULAPACK_INVERSE_VIA_LU
, чтобы использовать LU-разложение для инверсии матриц.
μLAPack был разработан с использованием практик, основанных на тестировании. Модульные тесты и Makefile
для сборки и запуска модульных тестов находятся в каталоге tests/
. В нём также есть реализация расширенного фильтра Калмана в качестве примера.
Следующие коды ошибок могут быть возвращены функциями библиотеки. См. документацию внутри файла для функции, чтобы проверить её коды возврата типа FilterError_t
.
ukal_error
— общий код ошибки;ukal_invalid_argument
— плохой аргумент, переданный функции;ukal_uninit_obj
— неинициализированный объект, переданный в функцию;ukal_success
— общий успешный код.μKal можно свободно использовать в личных и/или образовательных целях без прибыли и для разработки в ваших проектах, чтобы определить, подходит ли вам μKal.
Для разработчиков и для производного коммерческого использования (с правами на распространение): заполните форму запроса лицензии, и я оперативно отвечу с ответом и предложенным лицензионным соглашением.
Обратитесь к документу LICENSE для получения подробной информации о лицензировании.
Есть предложение по новой функции/возможности? Создайте проблему в этом репозитории со своими запросами.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )