Цифровые сигнальные процессоры Вопросы, связанные с применением цифровых сигнальных процессоров: программирование, отладочные средства, алгоритмы... |
02.07.2010, 15:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: Нужна помощь в реализации фильтра Калмана
Сообщение от Nikopol
|
и выяснил, что метод Калмана, в моем случае, не применим.
|
Вы это не выяснили а приняли на веру.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
03.07.2010, 15:00
|
|
Вид на жительство
Регистрация: 05.01.2007
Адрес: Украина, г. Макеевка
Сообщений: 408
Сказал спасибо: 229
Сказали Спасибо 62 раз(а) в 52 сообщении(ях)
|
Re: Нужна помощь в реализации фильтра Калмана
Уважаемый avr123-nm-ru, это уже не Вам решать на сколько я разобрался в методе и принял решение основываясь на личных выводах либо выводах других. Для меня данная ветка оказала большую помощь, не без Вашего участия тоже, и необходимых результатов я добился в рамках своей задачи. Если же Вас что то не устраивает, пожалуйсто, продолжайте тему, задавайте вопросы, я не против, наоборот будет очень интересно прочесть. ТЕм более есть пользователи готовые ответить на конкретные вопросы. Удачи!
__________________
____________________________________________
Internet Explorer - это такая программа, с помощью которой можно зайти на сайт http://opera.com и скачать себе браузер...
|
|
|
|
11.07.2010, 04:22
|
|
Прохожий
Регистрация: 13.09.2008
Сообщений: 1
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Нужна помощь в реализации фильтра Калмана
Возможно, мой совет запоздал по времени, но он имеет достаточно универсальный характер, и, я думаю, пригодится многим. Дело в том, что в пакете MatLAB имеется огромный набор различных алгоритмов (в т. ч. и фильтра Калмана), реализованных соответствующими функциями. Самое замечательное, что все встроенные функциии реализованы в виде m-файлов, которые представляют собой обычный текстовый файл, содержащий исходный код функции на встроенном языке пакета MatLAB. Этот язык - бейсикоподобный, достаточно прост для понимания теми, кто знаком с каким-либо языком программирования. Как показывает опыт, перевод алгоритмов MatLAB'а на другие языки программирования, не вызывает каких либо затруднений. Единственная особенность - высокая степень вложенности функций - даже самые сложные функции редко когда содержат более 10 строк кода - обычно большую часть файла занимают весьма подробные комментарии. В коде функции обычно идет обращение к более низкоуровневым функциям, которые, в свою очередь обращаются к еще более низкоуровневым функциям и т. д. Поэтому для полного раскрытия алгоритма приходится иногда проходить от 5 до 10, а иногда - и более уровней.
|
|
|
|
21.03.2013, 23:38
|
|
Прохожий
Регистрация: 21.03.2013
Сообщений: 1
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Нужна помощь в реализации фильтра Калмана
Доброго времени суток. В одном иностранном источнике наткнулся на применение Information filter в задаче навигации. Из того, что удалось понять - это фильтр, который проще фильтра Калмана и в некоторых случаях его использование более оправдано. Знаний, чтобы корректно перевести англоязычный источник не хватает. Начал искать русскоязычные публикации по этому фильтру, но по запросу "информационный фильтр" ничего толкового не находит. Может кто-то сталкивался с этим фильтром и может посоветовать русскоязычную литературу? Или же возможно подскажет, как в русскоязычных публикациях интерпретируется Information filter.
|
|
|
|
22.03.2013, 12:45
|
|
Вид на жительство
Регистрация: 10.08.2005
Сообщений: 385
Сказал спасибо: 0
Сказали Спасибо 161 раз(а) в 140 сообщении(ях)
|
Re: Нужна помощь в реализации фильтра Калмана
А на русском все, что публикуется выходит в основном на бумаге.
http://www.elektropribor.spb.ru/publ/rpubl
эти товарищи конференции проводят и сборник к ним выпускают.
Там на русском кое-что полезного можно почерпнуть.
Привыкайте к английскому и японскому.
Information filter
In the information filter, or inverse covariance filter, матрицы ковариации и вектора состояния заменяются информационной матрицей и информационным вектором соответственно. These are defined as:
...
Главный плюс information filter N измерений обрабатываются на каждом шагепросто суммированием информационных матриц и векторов.
|
|
|
Сказали "Спасибо" Alecsej
|
|
|
26.03.2013, 01:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Нужна помощь в реализации фильтра Калмана
.h
Код:
|
#ifndef _KALMAN
#define _KALMAN
#include ‹avr\io.h›
typedef struct {
double q; //process noise covariance
double r; //measurement noise covariance
long double x; //value
double p; //estimation error covariance
double k; //kalman gain
uint8_t i; //init flag
} kalman_state;
kalman_state kalman_init(double q, double r, double p, long double intial_value);
void kalman_update(kalman_state *state, long double measurement);
#endif |
.c
Код:
|
#include "kalman.h"
kalman_state kalman_init(double q, double r, double p, long double intial_value)
{
kalman_state result;
result.q = q;
result.r = r;
result.p = p;
result.x = intial_value;
result.i = 1;
return result;
}
void kalman_update(kalman_state *state, long double measurement)
{
//prediction update
//omit x = x
state-›p = state-›p + state-›q;
//measurement update
state-›k = state-›p / (state-›p + state-›r);
state-›x = state-›x + state-›k * (measurement - state-›x);
state-›p = (1 - state-›k) * state-›p;
} |
Код:
|
#define kalman_q 0.0000000001
#define kalman_r 0.000001
#define kalman_p 1
x = kalman_init(kalman_q, kalman_r, kalman_p, xxx);
or
kalman_update(&x, xxx); |
|
|
|
|
21.07.2016, 22:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Нужна помощь в реализации фильтра Калмана
Мужики спидометр по датчику скорости работает супер. А вот тахометр подключил - он скачет сильно и когда газ нажимаешь не реагирует особо. Непойму что тахометр работать не будет?? Когда на ИНТ0 подключал то конечно работало. Делал подсчет импульсов. А тут такое не прокатит??? Вроде ж тожесамое....
|
|
|
|
21.07.2016, 22:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Нужна помощь в реализации фильтра Калмана
не в той теме написал, сорри ))
|
|
|
|
21.07.2016, 22:57
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Нужна помощь в реализации фильтра Калмана
А вот мой калман:
Код:
|
void KalmanFloatCalc (KalmanFloatStructTypeDef * KalmanFloatStruct)
{
KalmanFloatStruct-›Result = KalmanFloatStruct-›K * KalmanFloatStruct-›Value;
KalmanFloatStruct-›Value = 1.0 - KalmanFloatStruct-›K;
KalmanFloatStruct-›Previous *= KalmanFloatStruct-›Value;
KalmanFloatStruct-›Result += KalmanFloatStruct-›Previous;
KalmanFloatStruct-›Previous = KalmanFloatStruct-›Result;
} |
Код:
|
typedef struct
{
float Result; //результирующее значение
float Value; //исходное значение
float Previous; //результат вычисления в предыдущей интерации
float K; //коэффициент стабилизации, по-умолчанию = 0.1
}KalmanFloatStructTypeDef; |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:46.
|
|