BộlọcKalman 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ọcKalman 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ọcKalman đã 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ọcKalman 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ọcKalman 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ọcKalman 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ọcKalman 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ọcKalman 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ọcKalman chính là xác suất. Học bộlọcKalman 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ọcKalman đượ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ọcKalman 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ọcKalman 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ọcKalman rời rạc BộlọcKalman đề 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ọcKalman 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ọcKalman trong mỗi ước đoán. Tóm lại mạch lọcKalman 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ọcKalman 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ọcKalman 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/ . 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. 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