Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

Bộ lọc Kalman

1.Bộ lọc là gì ?

Trước tiên, bộ lọc là một quá trình xử lý nhằm loạị bỏ những gì không có giá trị hoặc không
quan tâm đến và giữ lại những gì có giá trị sử dụng. Tiếng Anh gọi là filter (giống như cái
filtre để pha cafe). Bạn có thể hình dung nôm na đơn giản cái filter pha cafe cũng làm nhiệm vụ
lọc, nó lọc lấy chất cafein hòa lẫn nước và loại bỏ xác cafe.Trong xử lý tín hiệu, bọ lộc được
thiết kế để lọc tín hiệu « sạch » (cần tìm) từ trong tín hiệu trộn lẫn giữa tín hiệu sạch và
nhiều tín hiệu bẩn (không cần thiết).

Ví dụ đơn giản là bạn có tín hiệu S (signal) trộn lẫn với nhiễu N (noise) trong một tín hiệu
tổng hợp X. Và ta cần lọc để loại bỏ N ra khỏi X.

X(k)=S(k)+N(k)

Nếu bạn biết rằng nhiễu N dao động xung quanh 0 và có giá trị trung bình là 0

khi M đủ lớn.

Ta thấy rằng để loại bỏ N, ta có thể lấy tổng của X trên một cửa sổ có kích thước M.

Nhìn ở một khía cạnh nào đó ta đã loại bỏ được N

Tuy nhiên, cũng cần phải chú ý rằng cái bộ lọc có lọc kiểu gì thì cũng không thể loại hết toàn
bộ nhiễu. Thế nên, các bộ lọc cũng chỉ lọc ra được tín hiệu sạch, theo nghĩa không còn nhiều
nhiễu, nhưng cũng chỉ là ước lượng của tín hiệu thực, chứ không phải chính xác là tín hiệu
thực.

2.Bộ lọc Kalman là gì ?

Trước tiên tên Kalman là tên của người nghĩ ra cái bộ lọc đấy. Vào năm 1960, R.E Kalman đã
công bố bài báo nổi tiếng về một giải pháp truy hồi để giải quyết bài tóan lọc thông tin rời rạc
tuyến tính (discrete data linear filtering). Tên đầy đủ của bài báo là "A New Approach to Linear
Filtering and Prediction Problems" . Từ đó đến nay cùng với sự phát triển của tính tóan kỹ
thuật số, bộ lọc Kalman đã trở thành chủ đề nghiên cứu sôi nổi và được ứng dụng trong nhiều
ngành kỹ thuật công nghệ khác nhau : trong tự động hóa, trong định vị cũng như trong viễn
thông (và nhiều lĩnh vực khác nữa).

Một cách khái quát, bộ lọc Kalman là một tập hợp các phương trình tóan học mô tả một
phương pháp tính tóan truy hồi hiệu qủa cho phép ước đoán trạng thái của một quá trình
(process) sao cho trung bình phương sai của độ lệch (giữa giá trị thực và giá trị ước đóan) là
nhỏ nhất. Bộ lọc Kalman rất hiệu quả trong việc ước đóan các trạng thái trong quá khứ, hiện
tại và tương lai thậm chí ngay cả khi tính chính xác của hệ thống mô phỏng không được
khẳng định.
3. Học bộ lọc Kalman như thế nào?

3.1. Sơ kết

Chúng ta đã biết, bộ lọc chỉ đơn giản như trên, nhưng chúng ta chưa biết bộ lọc Kalman như
thế nào (ngoại trừ một định nghĩa khái quát)?

Thực ra nó cũng chỉ đơn giản là từ một tín hiệu cần đo, khi chúng ta đo, sẽ có những sai số từ
cảm biến, ảnh hưởng đến tín hiệu cần đo, môi trường đo có nhiễu... Tất cả những thứ này,
tổng hợp lại, sẽ cho ta một kết quả đo.

Học mạch lọc Kalman như thế nào? Đây là một câu hỏi lớn không lớn, nhỏ không nhỏ, nhưng
tính quan trọng của nó dành cho những người mới học là không thể chối cãi. Tuy có thể chưa
thấu đáo, tường tận, song hy vọng nó có thể giúp các bạn có những ý tưởng cơ bản về mạch
lọc Kalman, và bắt đầu nghiên cứu nó một cách phổ biến.

Một trong những kiến thức nền tảng để có thể hiểu về nguyên lý của bộ lọc Kalman chính là
xác suất. Học bộ lọc Kalman hoàn toàn không khó. Để tìm hiểu về xác suất (dĩ nhiên là nếu
bạn không biết về nó) thì có thể tham khảo ở đây.

3.2. Ví dụ về ước lượng 1

Ví dụ chúng ta lấy thước để đo chiều dài của một cây bút. Lần thứ nhất, chúng ta đo được là
10cm, lần thứ hai chúng ta đo được là 10.05cm chẳng hạn. Vậy thì nếu hỏi chiều dài cây bút là
bao nhiêu?

Có phải trong đầu các bạn luôn cho một giá trị ước lượng tốt nhất là 10.025cm? Điều đó đúng,
nhưng căn cứ vào đâu để các bạn ước lượng như vậy?

Rồi, nếu bây giờ, một anh F lấy cây thước đo chiều dài, và được kết quả là 10.02 cm, và một
bạn T khác cũng lấy cây thước đo, và được chiều dài 10.07cm. Nếu chỉ có hai kết quả này
thôi, chúng ta sẽ lại ước lượng rằng chiều dài của cây thước là 10.045 cm!

Vậy thì, thực chất là không thể đánh đồng được chuyện đo đạc này, mà cần có một hệ số
đánh giá.

Chiều dài cây thước là

chiều dài = alpha * 10.02 (của F đo) + (1-alpha)*10.07 (của T đo)

Vậy alpha sẽ là bao nhiêu? Căn cứ vào đâu để lựa chọn alpha?

Ví dụ trên để các bạn thấy được khái niệm về ước lượng.

3.3. Ví dụ về ước lượng 2

Giả sử chúng ta có một chiếc xe di chuyển với vận tốc 20m/s theo một phương x. Vị trí ban
đầu của xe là 0.

Khi đó, vận tốc của xe sẽ là:

Trong đó, là nhiễu vận tốc đo.

Kết quả, nếu bây giờ chúng ta cần xác định vị trí của xe sau 2 phút. Và giả sử chúng ta chỉ
quan tâm đến cảm biến đo vị trí hoặc cảm biến đo vận tốc của xe. Chúng ta sẽ chỉ ra được 2
phương pháp ước lượng như sau:

a) Phương pháp 1:
....

Đây là ước lượng vị trí của xe, chỉ nhờ vào cảm biến vị trí của xe, trong đó, là các giá trị vị
trí xe đo được.

b) Phương pháp 2:

(vị trí ban đầu của xe)


(1 giây sau nếu giả sử xe di chuyển với vận tốc 20m/s)
(1 giây sau nữa)
...

Như vậy, cả hai phương pháp trên, cũng đều là một cách để chúng ta ước lượng vị trí của xe.

Vậy áp dụng lại 3.2, chúng ta sẽ thấy rằng, nếu dùng hai phương pháp ước lượng khác nhau,
chúng ta cũng sẽ có các giá trị ước lượng khác nhau. Chúng ta sẽ tin cách ước lượng nào hơn?

c) Phương pháp 3:

Vậy thì, chúng ta thử xem phương pháp ước lượng thứ ba như sau:

Vậy các bạn có nhận xét gì về cách ước lượng này?

Một cách chung chung (không phải là tổng quát, chỉ là khái niệm sơ khởi), nhiệm vụ của bộ
lọc Kalman, chính là tìm ra hệ số alpha tối ưu để tìm gần đúng với x(t) nhất.

Vậy nhiệm vụ của mạch lọc Kalman được phát biểu rõ hơn một chút, đó là tìm ước
lượng gần đúng với x(t) nhất (giá trị ước lượng gần đúng với giá trị thực tế nhất) thông
qua hiểu biết của chúng ta về mô hình của hệ thống.

3.4. Bản chất của bộ lọc Kalman


Hình trên mô hình hóa hoạt động của mạch lọc Kalman. Chúng ta có tín hiệu đo được, chúng ta
có mô hình của tín hiệu đo được (đòi hỏi tuyến tính) và sau đó là áp dụng vào trong hệ thống
phương trình của mạch lọc để ước lượng trạng thái quan tâm. Thực ra tín hiệu đo là không
khó, phương trình đã có sắn, cái chung ta cần chính là mô hình hoá hệ thống. Để có thể ứng
dụng một cách hiểu quả mạch lọc Kalman thì chúng ta phải mô hình hóa được một cách tuyến
tính sự thay đổi của trạng thái cần ước lượng (estimate) hoặc ước đoán (predict).
4. Bộ lọc Kalman rời rạc

Bộ lọc Kalman đề cập đến bài toán tổng quát đi ước lượng trạng thái của một quá trình được
mô hình hóa một cách rời rạc theo thời gian bằng một phương trình ngẫu nhiên tuyến tính như
sau

(1)

và kết quả đo đạc

(2)

Trong đó w và v là 2 vector biến ngẫu nhiên đại diện cho nhiễu hệ thông và nhiễu đo đạc. 2
biến ngãy nhiên này độc lập và được giả sử là tuân theo phân bố Gauss với trung bình =0 và ma
trận hiệp biến (covariance) lần lượt là Q và R
w ~N(0,Q)
v ~N(0,R)

Nếu vector trạng thái x có kích thước là n, thì ma trận A sẽ có kích thứoc là n x n. B (n x l) là
ma trận phụ thuộc vào điều khiển tối ưu u với u là vector có kích thước là l. Vector đo đạc z có
kích thước là m nên ma trận H sẽ là m x n. Chú ý rằng các ma trận Q,R, A, H có thể thay đổi
theo thời gian (từng bước k), nhưng ở đây chùng được giả sử không đổi.

Đến đây ta thấy bài toán lọc Kalman chính là đi tìm giá trị ược lượng và ước đoán của
trạng thái x khi ta biết được sự biến thiên của nó và ta đo được một đai lượng z mà phụ
thuộc tuyến tính vào x.
Ví dụ trong bài toán chuyển động, ta biết được qui luật thay đổi của vận tốc, nhưng ta lại có
thể đo được sự thay đổi của vị trí. Khi đó, cái ta cần tìm là vận tốc ược lượng.

Nếu ta giả sử và lần lượt là tiên nghiệm và tiền nghiệm ước


lượng của giá trị x tại thời điểm k. Giá trị tiên nghiệm thu được chỉ dựa vào mô hình hệ thống
(1), còn giá trị hậu nghiệm là giá trị thu được sau khi đã có kết quả đo đạc (2). Khi đó sai số
của ước đoán tiên nghiệm và hậu nghiệm lần lượt là

Ma trận hiệp biến của 2 sai số trên được tính lần lượt theo công thức

Mục đích của chúng ta bây giờ là đi tìm hệ số K sao cho thỏa mản phương trình sau

(3)

Đến đây ta thấy , K cũng chính là alpha mà đã giới thiệu ở trên. Phương trình (3) có nghĩa là giá
trị hậu nghiệm của ước lượng x sẽ được tính bằng giá trị tiên nghiệm của nó và sau đó
thêm/bớt đi một tí dựa vào sai số giữa giá trị đo được và giá trị đo đạc ước đoán .Kở
đây chính là độ lợi (gain) của mạch lọc Kalman.

Câu hỏi đặt ra là làm thế nào để chọn K tối ưu nhất. Tối ưu ở đây theo nghĩa là covariance của
sai số của ước lượng hậu nghiệm (tính từ (3)) là nhỏ nhất. Bằng cách
thay e_k vào trong biểu thức tính P_k, rồi sau đó lấy đạo hàm của P_k theo K, ta sẽ tìm ra được
giá trị K mà tương ứng với nó P_k là nhỏ nhất.

thay đổi theo thời gian k và chính là độ lời cần tìm của mạch lọc Kalman trong mỗi ước
đoán.
Tóm lại mạch lọc Kalman bao gồm 2 bước : 1- Ước đoán trạng thái tiên nghiệm, và sau đó, 2-
dựa vào kết quả đo để hiệu chỉnh lại ước đoán. Ta có thể tóm tắt lại hoạt động của mạch lọc
Kalman bằng các phương trình sau:

Giả sử bạn đã có giá trị ước đoán ở tại thời điểm (k-1) và biết được giá trị điều
khiển . (Giá trị ban đầu tại thời điểm 0 được chọn ). Lúc đó bạn chỉ việc lần
lượt tiến hành các tính toán từ 1 đến 2 ở bước 1 rồi từ 1 đến 3 trong bước 2 như trong hình
dưới đây.
Hình trên tóm tắt cơ bản của mạch lọc Kalman. Như đã nhắc đến ở phần 3.4, cái khó của
mạch lọc Kalman là làm thể nào để mô hình hóa các trạng thái và đo đạc để có được 2 phương
trình (1) và (2) để có thể áp dụng Kalman.

Để tìm hiểu thêm về mạch lọc Kalman, các bạn có thể xem ở
đây http://www.cs.unc.edu/~welch/kalman/

You might also like