Đây có phải là một cách hợp lệ để đưa các ước tính tốc độ vào quy trình?
Nếu bạn chọn trạng thái của mình một cách thích hợp, thì ước tính tốc độ sẽ "miễn phí". Xem đạo hàm của mô hình tín hiệu bên dưới (đối với trường hợp 1-D đơn giản mà chúng tôi đã xem xét).
Mô hình tín hiệu, mất 2
Vì vậy, chúng tôi thực sự cần phải đồng ý về một mô hình tín hiệu trước khi chúng tôi có thể tiến lên phía trước. Từ chỉnh sửa của bạn, có vẻ như mô hình vị trí của bạn, , là:xk
xk+1x˙k+1==xk+x˙kΔt+12a(Δt)2x˙k+aΔt
Nếu trạng thái của chúng ta vẫn như trước:
thì phương trình cập nhật trạng thái chỉ là:
trong đó bây giờ của chúng tôi là gia tốc phân phối bình thường.
xk=(xkx˙k)
xk+1=(1 Δt0 1)xk+⎛⎝(Δt)22Δt⎞⎠ak
ak
Điều đó mang lại ma trận với phiên bản trước, nhưng ma trận và phải giống nhau.GFH
Nếu tôi thực hiện điều này trong scilab
(xin lỗi, không có quyền truy cập vào MATLAB), có vẻ như:
// 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
Sau đó, tôi có thể áp dụng các phương trình lọc Kalman cho này (các phép đo nhiễu).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
Vì vậy, chúng ta phải đo ồn ào của chúng tôi , và chúng tôi đã áp dụng bộ lọc Kalman với họ và sử dụng các mô hình tín hiệu tương tự để tạo ra như chúng ta làm gì để áp dụng bộ lọc Kalman (một giả định khá lớn, đôi khi!).yy
Sau đó các ô sau đây cho thấy kết quả.
Lô 1 : và so với thời gian.yxk
Lô 2 : Chế độ xem phóng to của một vài mẫu đầu tiên:
Cốt truyện 3 : Một cái gì đó bạn không bao giờ có được trong cuộc sống thực, vị trí thực sự so với ước tính trạng thái của vị trí.
Cốt truyện 4 : Một thứ bạn cũng không bao giờ có được trong cuộc sống thực, vận tốc thực so với ước tính trạng thái của vận tốc.
Cốt truyện 5 : Định mức của ma trận hiệp phương sai trạng thái (một thứ bạn nên luôn theo dõi trong cuộc sống thực!). Lưu ý rằng nó rất nhanh chóng chuyển từ giá trị rất lớn ban đầu của nó sang một thứ rất nhỏ, vì vậy tôi chỉ hiển thị một vài mẫu đầu tiên.
Lô 6 : Sơ đồ sai số giữa vị trí và vận tốc thực và ước tính của chúng.
Nếu bạn nghiên cứu trường hợp các phép đo vị trí là chính xác, thì bạn thấy rằng các phương trình udpate Kalman tạo ra kết quả chính xác cho vị trí và tốc độ BÓNG. Về mặt toán học, thật đơn giản để xem tại sao. Sử dụng cùng một ký hiệu như bài viết trên wikipedia , các phép đo chính xác có nghĩa là . Nếu bạn giả sử rằng vị trí và tốc độ ban đầu được biết để , thì và ma trận tăng Kalman được đưa ra bởizk+1=xk+1Pk=0P−k+1=QKk+1
Kk+1=(12/dt)
Điều này có nghĩa là quy trình cập nhật Kalman tạo ra
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)
Như bạn có thể thấy, giá trị của tốc độ được đưa ra bằng chính xác công thức bạn đề xuất sử dụng cho ước tính tốc độ. Vì vậy, mặc dù bạn không thể thấy bất kỳ loại tính toán nào cho tốc độ, nhưng thực tế nó được ẩn trong đó sau tất cả.(xk−xk−1)/dt