Bài viết này mở đầu chuỗi bài về bộ lọc Kalman, đi sâu vào lý thuyết cơ bản làm nền tảng cho các ứng dụng thực tế. Chúng ta sẽ cùng khám phá lịch sử ra đời, các khái niệm then chốt, và nền tảng lý thuyết đằng sau bộ lọc Kalman.
LỊCH SỬ HÌNH THÀNH
Bộ lọc Kalman, một cột mốc quan trọng trong “Lý thuyết Ước lượng Thống kê” (Statistical Estimation Theory), được giới thiệu vào năm 1960 bởi Rudolf E. Kalman (1930 – 2016), một kỹ sư điện, nhà toán học và nhà phát minh người Mỹ gốc Hungary. Phát minh này đã được công nhận là một trong những khám phá quan trọng nhất của thế kỷ 20.
Ứng dụng đầu tiên và nổi tiếng nhất của bộ lọc Kalman là trong dự án Apollo, nơi nó được sử dụng để ước tính quỹ đạo của tàu vũ trụ có người lái trên hành trình đến Mặt trăng và trở về Trái đất. Độ chính xác và hiệu quả của bộ lọc Kalman đã đóng vai trò then chốt trong thành công của dự án lịch sử này.
Ngày nay, bộ lọc Kalman được ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm: điều khiển quy trình (Process control), theo dõi (Tracking), hệ thống định vị và dẫn đường (Location & Navigation system). Tuy nhiên, hai mục đích sử dụng chính của nó là:
-
Ước tính trạng thái của hệ thống động (Estimating the state of dynamic system): Hệ thống động là hệ thống có trạng thái thay đổi theo thời gian. Trong thế giới thực, hầu như mọi hệ thống đều có sự thay đổi. Bộ lọc Kalman có khả năng cung cấp các giá trị ước tính chính xác nhất có thể về trạng thái hiện tại của hệ thống, ngay cả khi thông tin đầu vào chứa đầy nhiễu và sự không chắc chắn.
-
Phân tích hệ thống ước lượng (The Analysis of Estimation Systems): Ứng dụng này liên quan đến việc sử dụng bộ lọc Kalman để đánh giá và cải thiện hiệu suất của các hệ thống ước lượng khác.
KHÁI NIỆM VÀ KÝ HIỆU CƠ BẢN
Để hiểu rõ về bộ lọc Kalman, chúng ta cần làm quen với các khái niệm và ký hiệu sau:
- Trạng thái hệ thống (System state), : Vector chứa các biến trạng thái của hệ thống. Ví dụ, trong hệ thống theo dõi vị trí của một chiếc xe, trạng thái hệ thống có thể bao gồm vị trí và vận tốc của xe.
- Giá trị đo (Measurement values), : Vector chứa các giá trị trạng thái đo được tại thời điểm k. Đây là thông tin thu thập được từ các cảm biến hoặc thiết bị đo.
- Tín hiệu điều khiển (Control input), : Vector chứa giá trị input của hệ thống tại thời điểm k. Ví dụ, trong hệ thống điều khiển nhiệt độ, tín hiệu điều khiển có thể là công suất của bộ phận làm nóng hoặc làm lạnh.
- Trạng thái hậu nghiệm (Posteriori state), : Giá trị ước tính của các biến trạng thái ở thời điểm k sau khi thực hiện phép đo . Đây là ước tính tốt nhất về trạng thái hệ thống sau khi đã kết hợp thông tin từ các phép đo.
- Trạng thái tiên nghiệm (Priori state), : Giá trị của các biến trạng thái ở thời điểm k được dự đoán từ trạng thái . Đây là dự đoán về trạng thái hệ thống dựa trên mô hình hệ thống và trạng thái trước đó.
- Mô hình động (Dynamic Model) (hoặc State Transition Model): Mô hình biểu diễn mối quan hệ giữa các trạng thái của hệ thống tại thời điểm k và k-1. Mô hình này được sử dụng để dự đoán Priori state.
- Nhiễu đo (Measurement Noise): Nhiễu phát sinh trong quá trình đo đạc (ví dụ: sai số của cảm biến, sai số của dụng cụ đo).
- Nhiễu hệ thống (Process Noise): Nhiễu phát sinh trong quá trình hoạt động của hệ thống (ví dụ: tác động của môi trường).
NỀN TẢNG LÝ THUYẾT CỦA BỘ LỌC KALMAN
Để minh họa lý thuyết, chúng ta sẽ sử dụng một ví dụ quen thuộc: một chiếc xe tự lái đang di chuyển trên đường thẳng. Chúng ta muốn theo dõi hai trạng thái của xe: vị trí và vận tốc.
Một chiếc xe tự lái trên đường phố.
Chiếc xe được trang bị thiết bị GPS để định vị, nhưng sai số của GPS là 10 mét, một con số khá lớn nếu chúng ta cần xác định vị trí xe một cách chính xác. Ngoài ra, địa hình (ví dụ: ổ gà, đường gồ ghề) cũng ảnh hưởng đến chuyển động của xe, làm cho việc xác định vị trí chỉ dựa vào đồng hồ vận tốc trở nên không chính xác.
Bộ lọc Kalman giải quyết vấn đề này bằng cách giả định rằng vị trí và vận tốc của xe là các biến ngẫu nhiên tuân theo phân phối Gaussian đa biến (Multivariate Gaussian Distribution). Điều này có nghĩa là mỗi biến có một giá trị kỳ vọng (mean) và một phương sai (variance):
- Vị trí: giá trị kỳ vọng và phương sai
- Vận tốc: giá trị kỳ vọng và phương sai
Trạng thái hệ thống được biểu diễn dưới dạng vector:
Vì vận tốc và vị trí có mối quan hệ tỉ lệ thuận, biểu đồ phân bố của hai biến này có dạng hình elip.
Để xác định sự phân tán của hệ trạng thái tại thời điểm k, chúng ta sử dụng Ma trận hiệp phương sai (Covariance Matrix). Mỗi phần tử của ma trận này biểu diễn giá trị Hiệp phương sai (Covariance) giữa hai biến:
Trong đó, .
GIAI ĐOẠN DỰ ĐOÁN (PREDICT PHASE)
Để dự đoán (predict) trạng thái tiên nghiệm (priori state), chúng ta cần một Mô hình động (Dynamic model). Trong ví dụ này, mô hình động là các phương trình chuyển động của vật lý:
Chuyển đổi sang dạng ma trận:
Trong đó, là Mô hình động (Dynamic model) của hệ thống.
Sau khi dự đoán được trạng thái mới của hệ thống, chúng ta cần cập nhật lại Ma trận hiệp phương sai (Covariance Matrix):
Đến đây, chúng ta mới chỉ xét trường hợp xe chuyển động đều. Nếu xe giảm tốc hoặc tăng tốc thì sao? Lúc này, chúng ta cần thêm biến gia tốc vào Mô hình động (Dynamic model):
Chuyển đổi sang dạng ma trận:
Trong đó, được gọi là Mô hình tín hiệu điều khiển (Control-input model); là Tín hiệu điều khiển (Control input).
Chúng ta cũng cần quan tâm đến các tác động từ môi trường mà chúng ta không thể kiểm soát được (ví dụ: địa hình). Để mô phỏng các tác động này, chúng ta sử dụng nhiễu với mean và hiệp phương sai :
GIAI ĐOẠN HIỆU CHỈNH (CORRECTION PHASE)
Trong giai đoạn này, chúng ta sử dụng dữ liệu từ cảm biến để hiệu chỉnh trạng thái của hệ thống. Với trạng thái được dự đoán , chúng ta mong muốn trạng thái đo được từ cảm biến cũng sẽ gần giống như vậy:
Trong đó, là Mô hình quan sát (Observation model). Vì chúng ta có thể đo được cả vị trí và vận tốc, nên . Nếu chỉ đo được vận tốc, thì
Kết quả đo được (vị trí và vận tốc) không thể hoàn toàn trùng khớp với kết quả dự đoán do nhiễu đo (Measurement noise). Do đó, nó được biểu diễn bởi một phân phối Gaussian đa biến với giá trị kỳ vọng là và ma trận hiệp phương sai .
Đến thời điểm này, chúng ta đã có hai phân phối Gaussian: một cho trạng thái được dự đoán và một cho trạng thái đo được. Kết quả ước tính tối ưu là phần giao nhau giữa hai vùng trạng thái này.
Để tìm ra phân phối của vùng giao nhau giữa hai phân phối Gaussian (một biến), chúng ta thực hiện phép nhân giữa hai phân phối đó:
Sau một loạt biến đổi, chúng ta sẽ nhận được:
Đặt , ta nhận được:
Đối với phân phối Gaussian nhiều biến (Multivariate Gaussian Distribution), ta có:
Trong đó:
- là Ma trận hiệp phương sai (Covariance matrix) của phân phối Gaussian nhiều biến.
- là Ma trận đơn vị.
- được gọi là Ma trận Kalman Gain.
Quay trở lại với ví dụ chiếc xe tự lái, chúng ta đã có hai phân phối Gaussian nhiều biến: và . Từ đó, ta có:
Lưu ý: Tham khảo các tài liệu tham khảo để hiểu rõ hơn về các phép biến đổi trung gian.
chính là trạng thái ước tính tốt nhất, và nó sẽ được sử dụng để dự đoán trạng thái ở thời điểm k+1.
KẾT LUẬN
Bài viết này đã trình bày về nền tảng lý thuyết của bộ lọc Kalman. Trong phần tiếp theo, chúng ta sẽ khám phá cách áp dụng bộ lọc Kalman cho hệ thống một biến.
Tài liệu tham khảo:
[1] Kalman filter tutorial.[2] Embedded Systems Programming – Kalman filtering.
[3] A practical approach to Kalman filter and how to implement it.
[4] How a Kalman filter works, in pictures.
[5] Kalman filtering: Theory and Practice using MATLAB, second edition.
