Написание фильтра Калмана (Или аналог) для GPS модуля с акселерометром и гироскопом

Episode 1
Offline
Зарегистрирован: 06.04.2018

Необходимо применить фильтр Калмана для модуля https://rover.ebay.com/rover/0/0/0?mpre=https%3A%2F%2Fwww.ebay.com%2Fulk...
Фильтр должен обрабатывать данные с gps в формате NMEA с учетом показателей акселерометра и гироскопа для минимизации отклонений положения и передавать по UART на Bluetooth типа hc-06.
В железе не силен.
Какой микроконтроллер(если правильно мыслю) для этого нужен не знаю. Ваш совет.

Предложения на почту nik.name.to@gmail.com

Если есть микроконтроллеры со своим гироскопом и акселерометром, то будет использоваться любой gps модуль от U-Blox.

b707
Offline
Зарегистрирован: 26.05.2017

"В железе не сильны" - это понятно. А в математике? Алгоритм фильтрациии по Кальману с учетом многих переменных готовы предоставить? - если нет, то вам в первую очередь нужен хороший математик, а уже потом программист.

cancertanly
Offline
Зарегистрирован: 10.09.2016

// Filtr_Kalman в секции LOOP
if ( en ) //разрешение работы
{
Pc = P + varProcess;
G = Pc / ( Pc + varVolt );
P = (1 - G) * Pc;
Xp = Xe;
Zp = Xp;
Xe = G * ( Val - Zp ) + Xp; // Xe - "фильтрованное" значение, Val -входное значение
}
float Pc; // в секцию декларации
float G;
float P= 1.0;
float Xp= 0.0;
float Zp= 0.0;

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

cancertanly пишет:


// Filtr_Kalman в секции LOOP
if ( en ) //разрешение работы
{
Pc = P + varProcess;
G = Pc / ( Pc + varVolt );
P = (1 - G) * Pc;
Xp = Xe;
Zp = Xp;
Xe = G * ( Val - Zp ) + Xp; // Xe - "фильтрованное" значение, Val -входное значение
}
float Pc; // в секцию декларации
float G;
float P= 1.0;
float Xp= 0.0;
float Zp= 0.0;

 

"Что это Беррримор ?"

Очень "полезная" писанина, с учетом отсутствия объявления и пояснений назначения переменных... Это даже не набор букав...

renoshnik
Offline
Зарегистрирован: 11.04.2013

brokly пишет:

cancertanly пишет:


// Filtr_Kalman в секции LOOP
if ( en ) //разрешение работы
{
Pc = P + varProcess;
G = Pc / ( Pc + varVolt );
P = (1 - G) * Pc;
Xp = Xe;
Zp = Xp;
Xe = G * ( Val - Zp ) + Xp; // Xe - "фильтрованное" значение, Val -входное значение
}
float Pc; // в секцию декларации
float G;
float P= 1.0;
float Xp= 0.0;
float Zp= 0.0;

 

"Что это Беррримор ?"

Очень "полезная" писанина, с учетом отсутствия объявления и пояснений назначения переменных... Это даже не набор букав...

 

https://www.youtube.com/watch?v=AA1tqkkzmeI

 

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А какие там коментарии :) Умора.

А самый первый - самый главный:)

Все написано до нас:

https://github.com/denyssene/SimpleKalmanFilter