Professional Documents
Culture Documents
Cảm Biến
Nguyễn Quốc Đính
nqdinhddt@gmail.com
Mục lục
Trong đó:
Giả sứ các nhiễu quá trình w(t) và nhiễu đo lường v(t) là nhiễu trắng, có phương sai tương ứng
là Q và R.
Với hệ thống như vậy, bộ lọc Kalman tuyến tính cho phép ta ước lượng một cách tốt nhất giá
trị biến trạng thái xk , kí hiệu là x̂k , sao cho hiệp phương sai của chúng Pk đạt giá trị nhỏ nhất.
Pk = E[ek ek T ] (5)
ek ≡ xk − x̂k (6)
1
Thuật toán Kalman cho hệ rời rạc như sau:
Như vậy ta có thể nhận thấy rằng thuật toán này gồm hai bước: bước ước lượng dự đoán (time
update) và bước làm chính xác dự đoán này (measurement update) dựa trên thông tin đầu vào đo
được zk .
Chú ý rằng x̂−k là giá trị dự đoán được cập nhật từ giá trị ước lượng x̂k−1 Thuật toán này
được trình bày trên sơ đôi khối như sau:
xk = Axk−1 + Buk−1 + wk
= xk−1 + wk (7)
zk = Hxk + vk
= xk + vk (8)
Với:
- giá trị cần đo là x(t)
2
- tín hiệu thu được từ cảm biến là z(t)
x̂−
k = x̂k−1
Pk− = Pk−1 + Q (9)
Pk−
Kk = −
Pk + R
x̂k = x̂− −
k + Kk (zk − x̂k )
Pk = (1 − Kk )Pk− (10)
Phân tích các kết quả thu đươc từ mô phỏng với những giá trị khác nhau của R
Kết quả mong muốn là đường liền màu đen, giá trị từ cảm biến là các điểm màu xanh, Kết quả
ước lượng là nét liền màu đỏ.
Với R = 1:
3
Hình 2: Kết quả với R = 1
Nhận thấy tuy có tồn tại nhiễu khá lớn nhưng kết quả thu được từ bộ lọc gần bằng giá trị
mong muồn không có nhiễu.
Giá trị ban đầu x(0) tuy chọn khá xa so với giá trị thực, nhưng quá trình là thích nghi cho thấy
nó tự biến đổi để đạt đến giá trị tốt nhất.
Hiệp phương sai P giảm dần theo thời gian cho thấy kết quả ước lượng gần giống với giá trị
thực của thông số cần đo. Sau khoảng 50 bước thì bắt đầu hội tụ,bằng 0.031, so với giá trị gán ban
đầu là 1.
Với R = 10: Bây giờ tăng giá trị R lên 10 lần, K = 10, thấy rằng bộ lọc chậm đáp ứng hơn.
Tuy nhiên đường ước lượng phẳng hơn. Điều này cho thấy lựa chọn R lớn với những thông số có
tốc độ thay đổi chậm. Giá trị P hội tụ bằng 0.095.
4
Hình 4: R = 10
Với R = 0.1: Bây giờ giảm R xuống 100 lần, K = 0.1, từ kết quả ta thấy kết quả ước lượng
không được phẳng cho lắm, nhưng tốc độ ’học’ khá nhanh. R nhỏ thích hợp cho thông số có tốc
độ thay đổi nhanh. Giá trị P hội tụ bằng 0.0095.
Hình 5: R = 0.01
Giá trị đầu vào thay đổi: Bây giờ ta không cho đầu vào là một hằng số cố định nữa, mà có
sự thay đổi. Ví dụ dưới đây cho nó biến đổi theo hàm bậc nhất. Ta vẫn giữ nguyên mô hình như
trên (mô hình ở trên mô tả cho hệ thống mà đầu vào là hằng số). Ta thấy với các giá trị R nhỏ thì
kết quả ước lượng vẫn bám theo được giá trị mong muốn.
Ví dụ với R = 0.1:
5
Hình 6: Với giá trị nhỏ R.
Sở dĩ ở đây tôi không chọn lại một mô hình cho bài toán vì trong bài toán mà chúng ta cần
giải quyết mức nhiên liệu thay đổi không theo một quy luật tuyến tính cố định nào cả.
Nhận xét:
• Bộ lọc Kalman cho thấy nó có khả năng giải quyết tốt với nhiễu cho mô hình của bài toán
đã biết trước được mô hình.
• Việc chọn thông số R là quan trọng, đòi hỏi chúng ta phải dung hòa giữa tốc đô hội tụ và độ
phẳng của kết quả ước lượng.
6
Tài liệu
[1] Leslie Lamport, An Introduction to the Kalman filter. Department of Computer Science, Uni-
versity of North Carolina at Chapel Hill, 2006
[2] http://en.wikipedia.org/wiki/Kalman_filter
7
Phụ Lục A
Chương trình Matlab mô phỏng bộ lọc Kalman
%equivelent covariance
Q = 1e-3;
R = 1;
%initial value
xpre = 0; %chosing this value is not importance.
Ppre =1; %must different from Zero
%loop
for i=1:number
%making input and output
x = input(i) + w*randn;
z = x + v*randn;
clf
plot(time, pos, ’*’)
hold on
8
plot(time,posest,’LineWidth’,3,’MarkerEdgeColor’,’r’,
’MarkerFaceColor’,’g’,’MarkerSize’,20,’Color’,’r’);
plot(time, input,’LineWidth’,2,’MarkerEdgeColor’,’r’,
’MarkerFaceColor’,’g’,’MarkerSize’,20,’Color’,’k’);
grid on