Фильтр Калмана для гусеничного робота?

доброго времени суток

достаточно долго курил литературу по этмоу вопросу (в основном буржуйские статьи), однако осталось много вопросов


(далее будет много формул, записаных в текстовом виде, кто не хочет себя мучать — в конце текста будет ссылка на скриншот маткадовского листа, там формулы попонятнее выглядят)


имеем:

гусеничная платформа, на которой установлены акселерометр и гироскоп


получил вот такой фильтр:


Вектор состояния X(6x1):
xкоордината по оси Х
yкоордината по оси Y
φугол поворота робота
Vлинейная скорость робота
ωугловая скорость робота
aтангенциальное ускороение робота



Матрица наблюдений Y(2x1):
yaпоказания акселерометра
ygпоказания гироскопа



модель системы (t — временой шаг):
x = x + cos(φ) * (V * t + a * t^2/2)
y = y + sin(φ) * (V * t + a * t^2/2)
φ = φ + ω * t
V = V + a * t
ω = ω
a = a



матрица F(6x6):
10-sin(φ) * (a * t^2 / 2 + V * t)t*cos(φ)0t^2 * cos(φ) / 2
01cos(φ) * (a * t^2 / 2 + V * t)t*cos(φ)0t^2 * sin(φ) / 2
0010t0
00010t
0000t0
00000t



Матрица H(2x6):
000001
000010



Матрица I(6x6) — единичная

Матрица N(2x2) — единичная

Матрица V(2x2) — единичная

Матрица R(2x2) — единичная

Матрица W(2x2) — единичная


Матрица Q(6x6): — подбирал опытным путем, пробовал расчитывать на основе случайной выборки на основе дисперсии (для диагональных элементов) и ковариации для всех остальных


Матрица P(6x6) — изначально равна матрице Q


[xT] — транспонированная матрица, (x[-1]) — обратная матрица

собственно сам фильтр:

K = P*[HT] ((HP[HT] + VR[VT])[-1])

P=(I — KH)P

x = x + K(y — h(x))

P=FP[FT] + WQ[WT]

x = f(x,y)


что я в итоге получил:
график ускорения
график угла поворота

в целом и общем, для ускорения график более-менее похож на правду, однако для угла поворота присходит полная анархия.

было замечено, что очень большое влияние на поведение фильтра оказывает матрица Q,


поэтому у меня два вопроса:

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

2) как считается матрица Q? было даже такое — подобрал матрицу Q — все работает отлчино, изменил поведение системы (предположим, изменил ускорение) — и фильтр перестал работать.

все расчетные моменты на листе маткада:
  • Вопрос задан
  • 5709 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Eddy_Em
А откуда скорость берется? Из показаний датчика ускорений скорость вычислять нельзя (слишком грубо + накапливается аддитивная ошибка).
Координаты из показаний акселерометра и углового датчика тем паче нельзя вычислять — полная бредятина же получится. А еще представьте, какая будет точность определения координат, если, скажем, угловой датчик 16-рязрядный, а робот проехал всего пару километров (подсказываю: 10см на каждый км, если робот ехал по прямой, и это если скорость вычисляется идеально)…
Конечно, шум зависит от разрядности датчиков: например, если они у вас 128-разрядные, то за первые час-два работы вы особой ошибки не заметите.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы