roboforum.ru

Технический форум по робототехнике.

Фильтр Калмана

Автомат, адаптивный автомат ... разум

Re: Фильтр Калмана

Сообщение Ku6opr » 30 июн 2009, 02:09

Какой физический смысл ненулевых значений кроме как на диагонали в матрице ковариантностей?

Зависимости между значениями (параметрами) состояния системы в данный момент.
Матрица ковариации на каждой итерации подстраивается, пытаясь отразить действительную ковариацию параметров
Есть ли где-то обоснование не сильно запутанное оптимальности выбора окончательной матрицы которой корректируем состояние системы с точки зрения минимизации скорректированной матрицы ковариантностей?

http://en.wikipedia.org/wiki/Kalman_filter
раздел "Kalman gain derivation", в котором говорится, что минимизируя сумму диагональных элементов матрицы ковариации, мы получаем минимальное ожидаемое значение квадрата ошибки
Как мы принимаем решение какая матрица погрешностей хуже, а какая лучше

Чем выше значения матрицы К, тем этап предсказания менее точен (имеет больше вариацию), а наблюдения более точны.
Также о погрешности показывает y - отклонение измеренных значений от предсказанных
Как смешиваются матрицы погрешностей при изменении состояния системы или при добавлении информации от наблюдений

На каждом этапе по формулам или что имеется в виду? :)
Почему K оптимально - тут тупо надо доказательство найти

Смотреть ссылку выше :roll:
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Фильтр Калмана

Сообщение =DeaD= » 30 июн 2009, 12:30

2Киборг: Во, спасибо, коротко и по делу. В принципе так и думал, но сначала хотел еще уточниться, хорошесть матрицы ковариаций это у нас тупо сумма диагональных элементов - чем меньше они, тем точнее соотв. значения переменных состояния системы.

Добавлено спустя 1 минуту 49 секунд:
Ku6opr писал(а):
Как смешиваются матрицы погрешностей при изменении состояния системы или при добавлении информации от наблюдений

На каждом этапе по формулам или что имеется в виду? :)

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

Ku6opr писал(а):
Почему K оптимально - тут тупо надо доказательство найти

Смотреть ссылку выше :roll:

Ага, гляну сегодня, спасибо!

Добавлено спустя 1 час 50 минут 37 секунд:
Вообще как-то я удивительным образом проморгал отличную статью в википедии на англицком :( сейчас её к нам в вику переведу.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Фильтр Калмана

Сообщение =DeaD= » 02 июл 2009, 11:35

Короче перевел первую часть статьи из англоязычной википедии: [[Фильтр Калмана]], там где непосредственно про этот фильтр, остальное позже переведу, про связь фильтра с другими шнягами.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Фильтр Калмана

Сообщение Ku6opr » 03 июл 2009, 23:34

Молодец! Хорошая работа
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Фильтр Калмана

Сообщение Microalone » 17 фев 2010, 09:56

У меня задача расчитать скорость(а лучше даже положение), используя сенсоры ускорения и ориентации. Разумно ли мне будет применять алгоритм Калмана? И если можно на примере...Честно долго голову сам ломал, для понимания очень сложный алгоритм.
Microalone
 
Сообщения: 5
Зарегистрирован: 17 фев 2010, 09:50
Откуда: Дзержинск
прог. языки: С/С++

Re: Фильтр Калмана

Сообщение =DeaD= » 17 фев 2010, 09:57

Какую скорость и положение надо рассчитать? и какие конкретно сенсоры есть? 3-осевой аксель и 3-осевой гиро?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Фильтр Калмана

Сообщение Ku6opr » 18 фев 2010, 01:56

Если Ваш робот ездит по полу, то тут одними датчиками ускорения не обойтись, даже имея точную модель движения робота для фильтра Калмана, ведь после интегрирования будет возникать мнимая ненулевая скорость даже в стоячем положении. Нужен дополнительный источник информации, например, энкодеры (они же могут помочь и с определением ориентации).

Какую точности хотите получить?

И уточните какие датчики имеются.
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Фильтр Калмана

Сообщение Microalone » 18 фев 2010, 02:08

У меня не робот, у меня телефон. Я поэтому так вопрос и ставлю, а стоит ли вообще там фильтр применять или что то другое.

Расчитать скорость мобильного устройства. Ну то есть пользователь держит его, манипулирует им, и вот скорость от этих манипуляций мне и желательно подсчитать. (Некий манипулятор сделать) Причём предполагается, что пользователь не особо зверствует над ним, например держит дисплэйем перед собой и двигает его как лупу для просмотра чего либо.
При этом доступа к самому железу у меня нет, я программирую на "высоком" уровне подо всё это.
Есть гиро, аксель, трёх-осевые. Ещё есть сенсор, который выдаёт магнитное поле.

Точность я хотел бы получить хотя бы, достаточную для того, чтобы определять направление манипуляции. И отличать стоячее положение от движения

Add: Эндокодеров, к сожалению, нету =(
Microalone
 
Сообщения: 5
Зарегистрирован: 17 фев 2010, 09:50
Откуда: Дзержинск
прог. языки: С/С++

Re: Фильтр Калмана

Сообщение Michael_K » 18 фев 2010, 02:18

Важно для чего.
Есть ли обратная связь от человека?
Нужна позиция или скорость?
Можно ли считать среднюю скорость нулевой (человек при этом стоит)?
и т.д. и т.п.
Опишите задачу, а не то, как вы хотите ее решать... :wink:
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Фильтр Калмана

Сообщение =DeaD= » 18 фев 2010, 08:13

Ku6opr писал(а):после интегрирования будет возникать мнимая ненулевая скорость даже в стоячем положении

Это что за новость? :shock: Комплексный вариант фильтра Калмана? :crazy:

Добавлено спустя 1 минуту 10 секунд:
Microalone писал(а):У меня не робот, у меня телефон.

Ну тогда надо найти библиотеку с фильтром Калмана и применить.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Фильтр Калмана

Сообщение Microalone » 18 фев 2010, 10:03

Ну тогда надо найти библиотеку с фильтром Калмана и применить.

кстати что то я недогадался поискать =\ вот нашёл. Главное поставить задачу и понять что тут есть что =)
wiki/Фильтр_Калмана
прочитал вот это. Возникли вопросы:
1)вектором управляющего воздействия можно считать показания акселерометров?
2)Что принимают за матрицу соответствующая модели преобразования системы со временем?
3)как считаются погрешности?

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


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

Это что за новость? Комплексный вариант фильтра Калмана?

тут имеется ввиду скорость, которой на самом деле нет :) это слово же носит в себе и другой смысл, кроме математического
Microalone
 
Сообщения: 5
Зарегистрирован: 17 фев 2010, 09:50
Откуда: Дзержинск
прог. языки: С/С++

Re: Фильтр Калмана

Сообщение =DeaD= » 18 фев 2010, 10:10

Вектора управляющего воздействия в данном случае нет, точнее мы его не знаем и как раз его и хотим выяснить.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Фильтр Калмана

Сообщение Michael_K » 18 фев 2010, 12:18

Microalone писал(а):
Есть ли обратная связь от человека?

Обратной связи нет, вроде как, есть прямая)

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

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

Microalone писал(а):
Можно ли считать среднюю скорость нулевой?

Ественно абсолютного нуля нигде не будет, поэтому можно считать и среднюю.

то ли вы не поняли вопроса, то ли я - ответа :pardon:
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Фильтр Калмана

Сообщение Microalone » 18 фев 2010, 20:42

то ли вы не поняли вопроса, то ли я - ответа

скорее я =) Да, средняя скорость где то очень около нуля, если считать её между 2мя ближайшими измерениями. (другое дело, что гораздо меньше секунды, скорость за такое время не уловишь) А если находить текущую скорость "Классически" ( ужеИмеющасяСкороть + ускорение / времяУскорения) расходится из за погрешностей, причём очень быстро расходится. Либо её занулять периодически, либо я не знаю.

да, обратная связь есть, предполагается, что пользователь всё видит.
Microalone
 
Сообщения: 5
Зарегистрирован: 17 фев 2010, 09:50
Откуда: Дзержинск
прог. языки: С/С++

Re: Фильтр Калмана

Сообщение =DeaD= » 18 фев 2010, 20:48

Имея только аксель и гиро фиг вы сможете нормально мерить скорость, ошибка то не сбрасывается.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Пред.След.

Вернуться в Алгоритмы

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

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