Является ли это правильным способом введения оценок скорости в процесс?
Если вы выберете свой штат соответствующим образом, то оценки скорости приходят «бесплатно». Смотрите вывод модели сигнала ниже (для простого 1-D случая, который мы рассматривали).
Модель сигнала, дубль 2
Итак, нам действительно нужно согласовать модель сигнала, прежде чем мы сможем двигаться вперед. Из вашей правки, похоже, что ваша модель позиции, , выглядит так:xk
xk+1x˙k+1==xk+x˙kΔt+12a(Δt)2x˙k+aΔt
Если наше состояние такое же, как и раньше:
тогда уравнение обновления состояния будет просто:
где теперь наш - это нормально распределенное ускорение.
xk=(xkx˙k)
xk+1=(1 Δt0 1)xk+⎛⎝(Δt)22Δt⎞⎠ak
ak
Это дает матрицу отличную от предыдущей версии, но матрицы и должны быть одинаковыми.GFH
Если я реализую это в scilab(извините, нет доступа к Matlab), это выглядит так:
// Signal Model
DeltaT = 0.1;
F = [1 DeltaT; 0 1];
G = [DeltaT^2/2; DeltaT];
H = [1 0];
x0 = [0;0];
sigma_a = 0.1;
Q = sigma_a^2;
R = 0.1;
N = 1000;
a = rand(1,N,"normal")*sigma_a;
x_truth(:,1) = x0;
for t=1:N,
x_truth(:,t+1) = F*x_truth(:,t) + G*a(t);
y(t) = H*x_truth(:,t) + rand(1,1,"normal")*sqrt(R);
end
Затем я могу применить уравнения фильтра Калмана к этому (шумные измерения).y
// Kalman Filter
p0 = 100*eye(2,2);
xx(:,1) = x0;
pp = p0;
pp_norm(1) = norm(pp);
for t=1:N,
[x1,p1,x,p] = kalm(y(t),xx(:,t),pp,F,G,H,Q,R);
xx(:,t+1) = x1;
pp = p1;
pp_norm(t+1) = norm(pp);
end
Итак, у нас есть измерения с шумом , и мы применили к ним фильтр Калмана и использовали ту же модель сигнала для генерации что и при применении фильтра Калмана (иногда довольно большое предположение!).yy
Затем следующие графики показывают результат.
График 1 : и зависимости от времени.yxk

График 2 : увеличенное изображение первых нескольких образцов:

Сюжет 3 : Что-то, чего вы никогда не получите в реальной жизни, истинная позиция против оценки состояния позиции.

Сюжет 4 : То, чего вы никогда не получите в реальной жизни, истинная скорость в сравнении с оценкой состояния скорости.

Сюжет 5 : Норма матрицы ковариации государства (то, что вы всегда должны отслеживать в реальной жизни!). Обратите внимание, что он очень быстро переходит от своего начального очень большого значения к чему-то очень маленькому, поэтому я показал только первые несколько образцов.

График 6 : Графики погрешности между истинным положением и скоростью и их оценками.

Если вы изучите случай, когда измерения положения точны, то вы обнаружите, что уравнения ускорения Калмана дают точные результаты для ОБА и положения и скорости. Математически легко понять почему. Используя те же обозначения, что и в статье в Википедии , точные измерения означают, что . Если вы предполагаете, что начальная позиция и скорость известны так, что , то и матрица усиления Калмана определяется какzk+1=xk+1Pk=0P−k+1=QKk+1
Kk+1=(12/dt)
Это означает, что процедура обновления Kalman производит
x^k+1=Fk+1xk+Kk+1(zk+1−Hk+1Fk+1xk)=(xk+x˙kdtx˙k)+(12/dt)(xk+1−(xk+x˙kdt))=(xk+12(xk+1−xk)/dt−x˙k)
Как видите, значение скорости определяется именно той формулой, которую вы предлагали использовать для оценки скорости. Таким образом, хотя вы не могли видеть какие-либо вычисления для скорости, на самом деле они все-таки скрыты.(xk−xk−1)/dt