Bộ lọc Kalman - giành cho người mới bắt đầu
Ý tưởng:
Để thực hiện việc loại bỏ nhiễu trong việc đo lường tín hiệu, ta sử dụng một hệ thống lọc nhiễu hay gọi vắn tắt là bộ lọc (Filter). Các cách lọc nhiễu trong hệ thống căn bản gồm các bộ lọc thông thấp (Lowpass Filters), bộ lọc thông dải (Bandpass Filters), bộ lọc chặn (Notch Filters) và lọc thông cao (Highpass Filters). Dựa trên quan sát sự khác biệt giữa tín hiệu và nhiễu để thực hiện việc tách tín hiệu khỏi nhiễu.
Một cách toán học ta diễn ta mô hình học của Kalman như sau:
x(t ) = F(t )x(t-1) + B(t )u(t) + v(t) (1)
Trong đó:
x(t) là vector trạng thái của hệ thống chứa các thành phần của hệ thống mà ta quan tâm. Ví dụ như để theo dõi chuyển động của một vật thì x sẽ bao gồm vị trí, vận tốc. Với một tín hiệu thì nó sẽ gồm giá trị trung bình \mu và độ tin cậy dựa trên giá trị độ lệch biến \sigma.
u(t) là vector chứa các yếu tố điều khiển tác động vào hệ thống và có tính xác định. Ví dụ như lực thắng, tốc độ đánh lái.
F(t) là ma trận mô tả quan hệ giữa trạng thái hiện tại và trạng thái kế tiếp gọi là ma trận chuyển tiếp trạng thái (state transitional matrix). Ví dụ như quan hệ giữa vị trí và tốc độ ở hai thời điểm kế tiếp nhau.
B(t) là ma trận điều khiển mô tả tác động của yếu tố điều khiển xác định lên hệ thống ở hiện tại.
v(t) là yếu tố nhiễu phát sinh không xác định được hay còn gọi là nhiễu hệ thống.
Như vậy ở góc nhìn của điều khiển hệ thống tuyến tính, nếu ta biết quan hệ giữa trạng thái hiện tại và trạng thái kế F, tác động của các lực tác động vào hệ thống B, thì trong điều kiện lý tưởng không có nhiễu v = 0, ta sẽ tính được tình trạng kế tiếp của hệ thống mà không cần bất cứ đo đạc nào thêm. Hệ thống như vậy được xem là xác định và ta chỉ cần đo một lần duy nhất thời điểm ban đầu, thì ta có thể xác định hệ thống ở các thời điểm tiếp theo. Đây là bài toán tìm quỹ đạo của vật mà ta đã từng biết trong chương trình vật lý phổ thông.
Tuy nhiên, trong trường hợp xuất hiện của nhiễu, việc xác định x(t) ta chỉ có thể căn cứ vào F và B đã biết. Ta gọi dự đoán này là dự đoán trước khi hiệu chỉnh, hay dự đoán dựa trên hệ thống.
x_hat(t|t-1 ) = F(t )x(t-1|t-1) + B(t )u(t) (2)
So (2) và (1) rõ ràng ta cần tìm cách ước lượng nhiễu v(t) để có thể mô tả chính xác trạng thái thật của hệ thống. Để làm việc này ta sử dụng thủ thuật dò vết hệ thống. Nghĩa là ta so sánh sự khác biệt giữa dự đoán so với giá trị đo thật để điều chỉnh giá trị nhiễu hệ thống thêm vào cho phương trình (2)
Và do đó giá trị cuối cùng của hệ thống sẽ có dạng:
x_hat(t|t ) = x_hat(t|t-1) + Ky(t) = F(t )x(t-1|t-1) + B(t )u(t) + Kw(t) (3)
ở đây K là ma trận Kalman, và w vector độ lệch giữa giá trị đo được so với dự đoán.
Thông thường trong các hệ thống đo lường, ta không thể đo được x(t) trực tiếp. Bản thân x(t) ta đang đo dựa trên mô hình ở phương trình (1) đã chữa nhân tố bất định. Cho nên ta sẽ dùng một hế thống đo thứ hai để ước lượng giá trị x(t). Một cách tổng quát giả sử hệ thống hai đo lường dựa trên một cơ sở khác, ví dụ như ta đang muốn ước lượng vị trí của vật thể. Giờ ta dùng hệ thống thứ hai ước lượng dựa trên sự dịch thời gian giữa sóng phát ra từ anten trên đối tượng so với vị trí quan sát. Rõ ràng hệ thống đo thời gian lệch sẽ dùng đơn vị giây (s) trong khi hệ thống đo ban đầu xác định vị trí vật thể dựa trên đơn vị met (m). Do đó trong trường hợp tổng quát. Hệ thống thứ hai đo lường sẽ có dạng:
z(t) = Hx(t|t-1) + w(t) (3')
Ở đây H là ma trận chuyển cơ sở để chuyển đổi từ hệ thống ta muốn quan sát sang hệ thống ta đo lường được. Do đó (3) có thể được viết lại là :
x_hat(t|t ) = F(t )x(t-1|t-1) + B(t )u(t) + K(z(t) - Hx(t|t-1)) (4)
Làm thế nào để tính được ma trận K?
Lưu ý ở (1) tồn tại một loại nhiễu mô hình hệ thống Q. Ở (3') tồn tại một loại nhiễu do đo lường R. Do đó K phải hiệu chỉnh để điều chỉnh đáp ứng đối với sự tác động của hai yếu tố nhiễu này tạo ra. Trong các hệ thống tuyến tính ta giả sử các nhiễu này tuân theo phân bố Gaussian có trung bình là 0. Q, R là hai ma trận hiệp biến để mô tả mức tác động nhiễu. Về mặt thống kê thì
Q = cov(vv') = E[(v - v_bar)(v- v_bar)') và R = cov (ww') = E[(w - w_bar)(w- w_bar)')
Trong đó v_bar, w_bar là giá trị trung bình của nhiễu hệ thống và nhiễu đo lường.
Để đánh giá sự sai lệch giữa giá trị dự đoán so với mong muốn, Kalman sử dụng một ma trận mới để tích lũy sự sai lệch giữa giá trị dự đoán và giá trị đo lường.
Gọi P là ma trận dự đoán, thể hiện tương quan giữa giá trị của hệ thống ở thời điểm trước đó và thời điểm hiện tại.
P(t|t-1) = cov([x(t) - x(t|t-1)][x(t) - x(t|t-1)]')
= F(t)P(t-1|t-1)F(t)' + Q(t)
P(t|t-1) là tương quan giữa giá trị dự đoán so với thực tế. Ta không biết thực tế nên giá trị tính toán của nó phụ thuộc vào giá trị khởi tạo ban đầu. P(t-1|t-1) giá trị tương quan đã hiệu chỉnh ở thời điểm trước. Một lần nữa ta không thể biết Q(t) nên ta sẽ dùng giá trị đo được để hiệu chỉnh.
P(t|t) = P(t|t-1) - K(t)H(t)P(t|t-1) (5)
Ở đây ma trận Kalman ở (4) và (5) được xác định dựa trên giá trị P ở thời điểm trước đó như sau:
K(t) = P(t|t-1)H'(t)/(H(t)P(t|t-1)H'(t) + R(t)) (6)
Ta thấy mẫu số S(t) = H(t)P(t|t-1)H'(t) + R(t) chính là ma trận dự đoán sai lệch so với giá trị đo được ở thang đo s.
Công thức (6) cho thấy tỉ số giữa dự đoán trong không gian m so với không gian s. Cho nên ma trận Kalman được gọi độ độ lợi của bộ lọc
Comments
Post a Comment