roboforum.ru

Технический форум по робототехнике.
Текущее время: 21 фев 2025, 18:13

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 23 авг 2009, 13:18 
Не в сети
Аватара пользователя

Зарегистрирован: 28 ноя 2005, 12:05
Сообщения: 583
Откуда: Москва
Наверное в этот раздел имеет смысл поместить видео о том, как работает пара гироскоп (измеритель угловой скорости)+акселерометр, информация от которых прошла через фильтр кальмана

http://www.youtube.com/watch?v=AWAFFZ7r ... r_embedded


_________________
http://www.imobot.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 23 авг 2009, 13:38 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
мило работает )

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 23 авг 2009, 13:51 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
не отображена стабилизация только гироскопом

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 24 авг 2009, 17:24 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
Лучшеб сорц каконить...
Ато в учебнике слишком вумно написано. :sorry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 10 авг 2010, 00:14 
Не в сети

Зарегистрирован: 14 окт 2009, 11:46
Сообщения: 160
Откуда: Самара
Думается, сорцев мы не дождёмся...

В связи с чем вопрос - а какая вообще сверхзадача возлагается в робототехнике на фильтр Камлана? Только фильтрация данных? Может тогда проще (в том числе и для микроконтроллера) какой-нить менее вумный алгоритм взять (зато и без корреляционных мать их матриц) - какую-нить тупую низкочастотную фильтрацию???

Вот картинка (верхняя) с сайта http://www.basegroup.ru/library/cleaning/kalmanfilter/ иллюстрирующая калмановскую фильтрацию.

И вот элементарная (до примитивности) дискретная низкочастотная (нерекуррентная, заметьте) т.н. "скользящим окном" (ну, тупая до безобразия) фильтрация с размером окна 7 отсчётов (т.е. текущий, и +-3 в каждую сторону).

Если сравнивать правый вариант фильтра Калмана, то, как гритца, найдите 10 отличий (ну, конечно, присутствуют краевые эффекты, но во-1-х, их парировать надо только там, где их присутствие может быть критичным, и во-2-х, их парирование - это вам не расчёт корреляционных, ковариационных и прочих матьриц).


Вложения:
Kalman_example.gif
Kalman_example.gif [ 3.47 КиБ | Просмотров: 14772 ]
LPF7.png
LPF7.png [ 3.19 КиБ | Просмотров: 14897 ]

_________________
Когда я слышу слова "Первый закон робототехники", я вспоминаю анекдот про ноусэров.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 10 авг 2010, 07:36 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Значит вы так и не поняли смысл фильтра Калмана :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 11 авг 2010, 16:58 
Не в сети

Зарегистрирован: 24 ноя 2008, 19:43
Сообщения: 1054
Откуда: Казань
устойчиво все же калман отфильтровывает случайные положения мне понравилось) :good:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 12 авг 2010, 00:49 
Не в сети

Зарегистрирован: 14 окт 2009, 11:46
Сообщения: 160
Откуда: Самара
Вот примеры из библиотеки MRPT (на английском), на Си++, с шаблонами (ессесно с объектным программированием): http://www.mrpt.org/Kalman_Filters

И ещё ссылка оттуда же
http://browse-code.mrpt.org/stable/samp ... nTracking/

И там (http://browse-code.mrpt.org/stable/) ещё если полазить, то есть SLAM на фильтре Калмана.
------------------------

Добавлено 2010/aug/12:
Пример на Питоне с http://www.scipy.org/Cookbook/KalmanFiltering

Код:
# Kalman filter example demo in Python

# A Python implementation of the example given in pages 11-15 of "An
# Introduction to the Kalman Filter" by Greg Welch and Gary Bishop,
# University of North Carolina at Chapel Hill, Department of Computer
# Science, TR 95-041,
# http://www.cs.unc.edu/~welch/kalman/kalmanIntro.html

# by Andrew D. Straw

import numpy
import pylab

# intial parameters
n_iter = 50
sz = (n_iter,) # size of array
x = -0.37727 # truth value (typo in example at top of p. 13 calls this z)
z = numpy.random.normal(x,0.1,size=sz) # observations (normal about x, sigma=0.1)

Q = 1e-5 # process variance

# allocate space for arrays
xhat=numpy.zeros(sz)      # a posteri estimate of x
P=numpy.zeros(sz)         # a posteri error estimate
xhatminus=numpy.zeros(sz) # a priori estimate of x
Pminus=numpy.zeros(sz)    # a priori error estimate
K=numpy.zeros(sz)         # gain or blending factor

R = 0.1**2 # estimate of measurement variance, change to see effect

# intial guesses
xhat[0] = 0.0
P[0] = 1.0

for k in range(1,n_iter):
    # time update
    xhatminus[k] = xhat[k-1]
    Pminus[k] = P[k-1]+Q

    # measurement update
    K[k] = Pminus[k]/( Pminus[k]+R )
    xhat[k] = xhatminus[k]+K[k]*(z[k]-xhatminus[k])
    P[k] = (1-K[k])*Pminus[k]

pylab.figure()
pylab.plot(z,'k+',label='noisy measurements')
pylab.plot(xhat,'b-',label='a posteri estimate')
pylab.axhline(x,color='g',label='truth value')
pylab.legend()
pylab.xlabel('Iteration')
pylab.ylabel('Voltage')

pylab.figure()
valid_iter = range(1,n_iter) # Pminus not valid at step 0
pylab.plot(valid_iter,Pminus[valid_iter],label='a priori error estimate')
pylab.xlabel('Iteration')
pylab.ylabel('$(Voltage)^2$')
pylab.setp(pylab.gca(),'ylim',[0,.01])
pylab.show()

Нижние два фрагмента (начиная с pylab.figure()) - похоже, рисование тех картинок, которые показаны на сайте (т.е. к самому вычислению эти куски отношения не имеют).

Ещё библиотека есть на http://kalman.sourceforge.net/ - "Free C++ Extended Kalman Filter Library"

Ещё пример на Си (не ++ :)): http://snippets.dzone.com/posts/show/11215 "Simple Kalman Filter in C"

Код:
/** A simple kalman filter example by Adrian Boeing
www.adrianboeing.com
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double frand() {
    return 2*((rand()/(double)RAND_MAX) - 0.5);
}

int main() {

    //initial values for the kalman filter
    float x_est_last = 0;
    float P_last = 0;
    //the noise in the system
    float Q = 0.022;
    float R = 0.617;
   
    float K;
    float P;
    float P_temp;
    float x_temp_est;
    float x_est;
    float z_measured; //the 'noisy' value we measured
    float z_real = 0.5; //the ideal value we wish to measure
   
    srand(0);
   
    //initialize with a measurement
    x_est_last = z_real + frand()*0.09;
   
    float sum_error_kalman = 0;
    float sum_error_measure = 0;
   
    for (int i=0;i<30;i++) {
        //do a prediction
        x_temp_est = x_est_last;
        P_temp = P_last + Q;
        //calculate the Kalman gain
        K = P_temp * (1.0/(P_temp + R));
        //measure
        z_measured = z_real + frand()*0.09; //the real measurement plus noise
        //correct
        x_est = x_temp_est + K * (z_measured - x_temp_est);
        P = (1- K) * P_temp;
        //we have our new system
       
        printf("Ideal    position: %6.3f \n",z_real);
        printf("Mesaured position: %6.3f [diff:%.3f]\n",z_measured,fabs(z_real-z_measured));
        printf("Kalman   position: %6.3f [diff:%.3f]\n",x_est,fabs(z_real - x_est));
       
        sum_error_kalman += fabs(z_real - x_est);
        sum_error_measure += fabs(z_real-z_measured);
       
        //update our last's
        P_last = P;
        x_est_last = x_est;
    }
   
    printf("Total error if using raw measured:  %f\n",sum_error_measure);
    printf("Total error if using kalman filter: %f\n",sum_error_kalman);
    printf("Reduction in error: %d%% \n",100-(int)((sum_error_kalman/sum_error_measure)*100));
   
    return 0;
}

_________________
Когда я слышу слова "Первый закон робототехники", я вспоминаю анекдот про ноусэров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 23 мар 2011, 14:15 
Не в сети

Зарегистрирован: 13 сен 2010, 12:47
Сообщения: 317
А где бы почитать по этот фильтр? Исходник - это хорошо, но для меня пока черный ящик (


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 23 мар 2011, 21:05 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
В вики робофорума я переводил статью. Да и в целом в рунете есть инфа.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 09 авг 2011, 11:54 
Не в сети

Зарегистрирован: 10 июл 2011, 17:08
Сообщения: 18
Доброго времени суток.
Тут есть хоть один человек осиливший реализацию ФК ?
Есть пара вопросов. Мне понятна в принципе работа ФК если мы получаем данные с акселерометра(ов)(они зашумлены, значения пляшут и т.д.), все это калман нам отфильтровывает и выдает уже нормальное значение, которое можно использовать для дальнейших вычислений, мне не понятен принцип введения в ФК гироскопа, что ФК будет фильтровать от гироскопа(не понятно что мы получим от этого, для чего нужно пропускать "гироскоп" через ФК)????. Возможно гироскоп вводится только как компонент модели системы, но тут тоже непонятка - у него постоянно ползет ошибка, что нам дает введение гироскопа в модель(это возможно осмысленно если мы еще введем модель уползания гироскопа - но все равно в конце концов уползет).... ??? :shock:

Вдруг где есть ссылочка с примером(где расписаны пара итераций, и описанием вывода формул(описание получения модели)) применения ФК с акселерометрами, будет просто супер =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 09 авг 2011, 12:14 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Цитата:
Мне понятна в принципе работа ФК

Цитата:
все это калман нам отфильтровывает и выдает уже нормальное значение

Эти два предложения несовместимы.

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 09 авг 2011, 12:35 
Не в сети

Зарегистрирован: 10 июл 2011, 17:08
Сообщения: 18
Все по моему совместимо, может я недопонимаю, в чем несовместимость ?? Возможен ответ без отсылки на перечитывание материала(неоднократно уже делал), по сути вопроса только :) ??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 09 авг 2011, 12:46 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сдаётся мне, что по сути вопроса можно только заново всего Калмана рассказывать.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кальмана алгоритм (ссылка видео)
СообщениеДобавлено: 09 авг 2011, 12:58 
Не в сети

Зарегистрирован: 10 июл 2011, 17:08
Сообщения: 18
при ответе на вопрос "Тут есть хоть один человек осиливший реализацию ФК ?" - да, Я. Пересказывания не потребуется, а только указания того ключевого момента(по мнению Виталия) в коем моё утверждение расходится с сутью ФК.
Да и вопросов я задал более одного(именно по сути того что непонятно).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO