Mô hình hóa hệ thống
Để áp dụng bộ lọc Kalman, hệ thống cần được mô tả bằng một mô hình không gian trạng thái tuyến tính, bao gồm hai phương trình cốt lõi. Giả định cơ bản là cả nhiễu của hệ thống và nhiễu của phép đo đều tuân theo phân phối chuẩn (Gaussian).
1. Phương trình Trạng thái (State Equation)
Phương trình này mô tả cách trạng thái của hệ thống tự tiến triển theo thời gian, dựa trên mô hình động học của nó.
$x_k = Fk x{k-1} + B_k u_k + w_k$
Trong đó:
- $x_k$: là vector trạng thái tại thời điểm $k$. Đây là những biến ẩn mà chúng ta muốn ước tính (ví dụ: vị trí, vận tốc).
- $F_k$: là ma trận chuyển trạng thái, mô tả quy luật vật lý hoặc động học giúp dự đoán trạng thái tại bước $k$ từ trạng thái tại bước $k-1$.
- $x_{k-1}$: là vector trạng thái tại thời điểm trước đó ($k-1$).
- $B_k$: là ma trận điều khiển, liên kết đầu vào điều khiển $u_k$ với trạng thái $x_k$.
- $u_k$: là vector đầu vào điều khiển, đại diện cho các tác động bên ngoài đã biết lên hệ thống.
- $w_k$: là nhiễu quá trình (process noise), được giả định là nhiễu trắng Gaussian với giá trị trung bình bằng 0 và ma trận hiệp phương sai $Q_k$ (tức là $w_k \sim N(0, Q_k)$). Nhiễu này đại diện cho sự không chắc chắn trong mô hình động học của hệ thống (ví dụ: các yếu tố ngoại cảnh không được mô hình hóa như gió, ma sát).
2. Phương trình Đo lường (Measurement Equation)
Phương trình này mô tả mối liên hệ giữa trạng thái ẩn của hệ thống và phép đo mà chúng ta có thể quan sát được từ các cảm biến.
$z_k = H_k x_k + v_k$
Trong đó:
- $z_k$: là vector phép đo thực tế thu được từ cảm biến tại thời điểm $k$.
- $H_k$: là ma trận đo lường (hay ma trận quan sát), thực hiện việc ánh xạ từ không gian trạng thái sang không gian đo lường.
- $x_k$: là vector trạng thái tại thời điểm $k$.
- $v_k$: là nhiễu đo lường (measurement noise), được giả định là nhiễu trắng Gaussian với giá trị trung bình bằng 0 và ma trận hiệp phương sai $R_k$ (tức là $v_k \sim N(0, R_k)$). Nhiễu này đại diện cho sự không hoàn hảo và sai số của các thiết bị đo.
Thuật toán
Bộ lọc Kalman hoạt động theo một chu trình hai giai đoạn lặp đi lặp lại: Dự đoán (Predict) và Cập nhật (Update). Về cơ bản, thuật toán dự đoán trạng thái tiếp theo của hệ thống, sau đó sử dụng phép đo thực tế để hiệu chỉnh lại dự đoán đó.
Ký hiệu: Ước tính của trạng thái $x$ tại thời điểm $k$ dựa trên thông tin đến thời điểm $j$ sẽ được viết là $\hat{x}_{k|j}$.
1. Giai đoạn Dự đoán (Time Update / “Predict”)
Trong giai đoạn này, bộ lọc sử dụng mô hình trạng thái để dự đoán trạng thái và hiệp phương sai của sai số ước tính tại bước thời gian tiếp theo ($k$).
- Dự đoán trạng thái tiên nghiệm (a priori):
$\hat{x}_{k|k-1} = F_k \hat{x}_{k-1|k-1} + B_k u_k$(Dự đoán trạng thái tại bước $k$ dựa trên ước tính tốt nhất từ bước $k-1$)
- Dự đoán hiệp phương sai sai số tiên nghiệm:
$P_{k|k-1} = F_k P_{k-1|k-1} F_k^T + Q_k$(Mô tả độ không chắc chắn của dự đoán trạng thái, bao gồm cả sự lan truyền của sai số từ bước trước và nhiễu quá trình $Q_k$)
2. Giai đoạn Cập nhật (Measurement Update / “Correct”)
Khi có một phép đo mới $z_k$, giai đoạn này sẽ hiệu chỉnh lại dự đoán ở trên bằng cách kết hợp thông tin mới này.
- Tính toán Độ lợi Kalman (Kalman Gain):
$K_k = P_{k|k-1} H_k^T (H_k P_{k|k-1} H_k^T + R_k)^{-1}$($K_k$ là trọng số quyết định mức độ tin tưởng vào phép đo mới so với dự đoán)
- Cập nhật ước tính trạng thái hậu nghiệm (a posteriori):
$\hat{x}_{k|k} = \hat{x}_{k|k-1} + K_k (z_k – H_k \hat{x}_{k|k-1})$(Ước tính mới là sự kết hợp giữa dự đoán và sai số thực tế của phép đo, được điều chỉnh bởi $K_k$)
- Cập nhật hiệp phương sai sai số hậu nghiệm:
$P_{k|k} = (I – K_k H_k) P_{k|k-1}$(Độ không chắc chắn của ước tính được giảm xuống sau khi kết hợp thông tin từ phép đo)
Diễn giải thuật toán
- Giai đoạn dự đoán có thể được hình dung như việc thuật toán “nhắm mắt” và sử dụng mô hình vật lý (phương trình trạng thái) để phỏng đoán xem hệ thống sẽ ở đâu trong bước tiếp theo. Cùng lúc đó, độ không chắc chắn của nó ($P$) cũng tăng lên do sự không hoàn hảo của mô hình (được biểu thị bằng nhiễu quá trình $Q_k$).
- Giai đoạn cập nhật là lúc thuật toán “mở mắt” và so sánh dự đoán của mình với thực tế (phép đo $z_k$). Thành phần $(z_k – H_k \hat{x}_{k|k-1})$ được gọi là phần dư (residual), thể hiện sự khác biệt giữa phép đo thực tế và phép đo được dự đoán.
- Độ lợi Kalman ($K_k$) đóng vai trò then chốt. Nó quyết định xem chúng ta nên “tin” vào dự đoán của mô hình hay “tin” vào dữ liệu từ cảm biến hơn.
- Nếu nhiễu đo lường $R_k$ rất lớn (cảm biến không đáng tin cậy), $K_k$ sẽ tiến về 0. Khi đó, ước tính mới $\hat{x}_{k|k}$ sẽ gần bằng dự đoán $\hat{x}_{k|k-1}$.
- Ngược lại, nếu nhiễu của dự đoán $P_{k|k-1}$ rất lớn (mô hình dự đoán không đáng tin cậy), $K_k$ sẽ lớn hơn. Khi đó, ước tính mới sẽ tin tưởng nhiều hơn vào phép đo $z_k$.
Ưu điểm và Hạn chế
Ưu điểm:
- Tối ưu: Đối với các hệ thống tuyến tính và nhiễu tuân theo phân phối Gaussian, bộ lọc Kalman được chứng minh là bộ ước tính tuyến tính không chệch tốt nhất (best linear unbiased estimator – BLUE), nghĩa là nó tối thiểu hóa phương sai của sai số ước tính.
- Đệ quy và hiệu quả: Thuật toán có tính đệ quy, chỉ yêu cầu lưu trữ trạng thái và ma trận hiệp phương sai của bước trước đó. Điều này làm cho nó cực kỳ hiệu quả về mặt tính toán và bộ nhớ, phù hợp cho các hệ thống thời gian thực và nhúng.
- Linh hoạt: Mô hình không gian trạng thái cung cấp một khuôn khổ rất linh hoạt để xử lý các vấn đề đa dạng, từ theo dõi đối tượng đơn giản đến các hệ thống kinh tế vĩ mô phức tạp. Các biến thể như Bộ lọc Kalman Mở rộng (EKF) và Bộ lọc Kalman không mùi (UKF) đã được phát triển để xử lý các hệ thống phi tuyến.
Hạn chế:
- Chỉ tối ưu cho hệ thống tuyến tính.
- Yêu cầu nhiễu phải tuân theo phân phối Gaussian.
- Hiệu năng của bộ lọc phụ thuộc rất nhiều vào việc chọn lựa chính xác các ma trận $F, H, Q, R$. Việc xác định sai các tham số này có thể dẫn đến kết quả lọc kém hoặc thậm chí phân kỳ.
Hạn chế và các Giả định Cốt lõi
Hiệu quả của bộ lọc Kalman phụ thuộc vào việc một số giả định quan trọng được thỏa mãn. Khi các giả định này bị vi phạm, hiệu suất của bộ lọc sẽ suy giảm.
- Yêu cầu mô hình chính xác: Hiệu suất của bộ lọc phụ thuộc rất nhiều vào độ chính xác của mô hình hệ thống. Việc xác định sai các ma trận động học ($F_k, B_k$), ma trận đo lường ($H_k$), và đặc biệt là các ma trận hiệp phương sai nhiễu ($Q_k, R_k$) có thể dẫn đến kết quả lọc kém, ước tính không hội tụ, hoặc thậm chí phân kỳ.
- Giả định tuyến tính: Bộ lọc Kalman cơ bản được thiết kế và chỉ là tối ưu cho các hệ thống động lực học tuyến tính. Đối với các hệ thống phi tuyến, việc áp dụng trực tiếp bộ lọc Kalman sẽ cho kết quả không chính xác.
- Giả định nhiễu Gaussian: Thuật toán giả định rằng cả nhiễu quá trình ($w_k$) và nhiễu đo lường ($v_k$) đều tuân theo phân phối chuẩn (Gaussian). Nếu nhiễu có đuôi dài (heavy-tailed) hoặc có các điểm ngoại lai (outliers) mạnh, bộ lọc có thể cho ra ước tính sai lệch.
Các Biến thể Phổ biến
Để giải quyết các hạn chế của bộ lọc Kalman cơ bản, nhiều biến thể đã được phát triển:
- Bộ lọc Kalman Mở rộng (Extended Kalman Filter – EKF): Được thiết kế cho các hệ thống phi tuyến. EKF xử lý tính phi tuyến bằng cách thực hiện tuyến tính hóa cục bộ các phương trình trạng thái và đo lường xung quanh ước tính hiện tại. Việc tuyến tính hóa này được thực hiện bằng cách tính toán ma trận Jacobian (đạo hàm riêng bậc nhất). Ví dụ, một hàm trạng thái phi tuyến $x_k = f(x_{k-1}, u_k) + w_k$ được xấp xỉ bằng chuỗi Taylor bậc nhất. EKF là một trong những biến thể phổ biến nhất nhưng có thể không ổn định nếu hệ thống có tính phi tuyến cao hoặc nếu các giả định tuyến tính hóa không được đáp ứng tốt.
- Bộ lọc Kalman Không mùi (Unscented Kalman Filter – UKF): Một giải pháp thay thế tiên tiến hơn cho EKF. Thay vì tuyến tính hóa các hàm phi tuyến, UKF sử dụng một kỹ thuật gọi là biến đổi không mùi (unscented transform). Nó chọn một tập hợp các điểm mẫu (gọi là điểm sigma) xung quanh ước tính hiện tại, lan truyền các điểm này qua hàm phi tuyến thực tế, sau đó tính toán trung bình và hiệp phương sai của các điểm đã biến đổi để có được ước tính mới. UKF thường cho kết quả chính xác hơn EKF, đặc biệt với các hệ thống có tính phi tuyến cao, và không yêu cầu tính toán ma trận Jacobian.
- Bộ lọc Kalman Tổ hợp (Ensemble Kalman Filter – EnKF): Đặc biệt hữu ích cho các hệ thống có số chiều trạng thái cực lớn (ví dụ: hàng nghìn đến hàng triệu biến, như trong dự báo thời tiết). EnKF tránh việc tính toán và lưu trữ ma trận hiệp phương sai khổng lồ bằng cách sử dụng một “tổ hợp” (ensemble) các trạng thái mô phỏng. Hiệp phương sai được ước tính từ chính mẫu của tổ hợp này.
- Bộ lọc Thông tin (Information Filter): Là một dạng đại số tương đương của bộ lọc Kalman, nhưng nó lan truyền ma trận thông tin (nghịch đảo của ma trận hiệp phương sai) và vector thông tin. Ưu điểm chính của nó là việc kết hợp thông tin từ nhiều cảm biến trở nên rất đơn giản (chỉ là phép cộng các ma trận và vector thông tin), làm cho nó phù hợp với các ứng dụng cảm biến phân tán.
Ứng dụng Thực tiễn
Bộ lọc Kalman và các biến thể của nó là nền tảng cho vô số công nghệ hiện đại:
- Điều hướng và Dẫn đường: Đây là một trong những ứng dụng kinh điển. Nó được dùng để kết hợp dữ liệu từ GPS (cung cấp vị trí không liên tục, nhiễu) và IMU (cung cấp dữ liệu gia tốc và vận tốc góc tần số cao, bị trôi) để đưa ra ước tính vị trí, vận tốc và hướng ổn định và chính xác cho máy bay, tàu vũ trụ, xe tự hành, và robot.
- Theo dõi Mục tiêu: Các hệ thống radar và sonar sử dụng bộ lọc Kalman để dự đoán và theo dõi quỹ đạo của các vật thể chuyển động như máy bay, tên lửa, hoặc phương tiện giao thông.
- Thị giác Máy tính: Dùng để theo dõi đối tượng trong video, ước tính chuyển động 3D của camera (Visual Odometry), và trong các thuật toán SLAM (Định vị và Lập bản đồ Đồng thời).
- Kinh tế lượng và Tài chính: Mô hình hóa và dự báo các chuỗi thời gian kinh tế, ước tính sự biến động của tài sản, và trong các chiến lược giao dịch thuật toán.
- Robot: Cốt lõi của các hệ thống robot để thực hiện việc hợp nhất cảm biến (sensor fusion), giúp robot nhận thức được trạng thái của chính nó và môi trường xung quanh.
- Dự báo Thời tiết: Các biến thể như EnKF được sử dụng rộng rãi trong các mô hình dự báo thời tiết số để đồng hóa dữ liệu (data assimilation), tức là kết hợp hàng triệu quan sát thực tế (từ vệ tinh, trạm mặt đất) vào mô hình mô phỏng để cải thiện độ chính xác của dự báo.
Một số sự thật thú vị về Bộ lọc Kalman: