Bộ lọc Kalman (Kalman Filter)

by tudienkhoahoc

Bộ lọc Kalman là một thuật toán đệ quy mạnh mẽ, được dùng để ước tính trạng thái của một hệ thống động từ một chuỗi các phép đo không hoàn hảo hoặc chứa nhiễu. Điểm cốt lõi của bộ lọc là khả năng kết hợp một cách tối ưu các dự đoán về trạng thái của hệ thống với các phép đo thực tế để đưa ra một ước tính chính xác hơn so với việc chỉ dựa vào một trong hai nguồn thông tin. Nó được sử dụng rộng rãi trong nhiều lĩnh vực như điều hướng (GPS, hàng không vũ trụ), robot, xử lý tín hiệu, thị giác máy tính, và kinh tế lượng.

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)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)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ố điều thú vị về Bộ lọc Kalman

Một số sự thật thú vị về Bộ lọc Kalman:
  • Nguồn gốc từ chương trình Apollo: Bộ lọc Kalman được phát triển ban đầu bởi Rudolf E. Kálmán vào năm 1960. Tuy nhiên, ứng dụng nổi tiếng nhất và có lẽ là quan trọng nhất trong giai đoạn đầu của nó là trong chương trình Apollo của NASA. Bộ lọc Kalman đã được sử dụng để ước tính quỹ đạo của tàu vũ trụ Apollo, kết hợp dữ liệu từ radar và các cảm biến trên tàu, giúp các phi hành gia hạ cánh chính xác lên Mặt Trăng.
  • Không chỉ là “bộ lọc”: Mặc dù có tên là “bộ lọc”, Kalman Filter thực chất là một bộ ước tính trạng thái. Nó không chỉ loại bỏ nhiễu (như các bộ lọc thông thường), mà còn ước tính các biến trạng thái không thể đo trực tiếp.
  • Ứng dụng trong phim Hollywood: Bộ lọc Kalman (và các biến thể của nó) được sử dụng rộng rãi trong kỹ xảo điện ảnh, đặc biệt là trong các cảnh quay theo dõi chuyển động (motion tracking) và ghép hình (compositing). Nó giúp ước tính chuyển động của camera và các đối tượng trong cảnh, tạo ra các hiệu ứng hình ảnh chân thực.
  • “Cuộc chiến” giữa Kalman và Wiener: Trước khi Kalman Filter ra đời, bộ lọc Wiener (Wiener Filter) là một phương pháp phổ biến để lọc nhiễu. Tuy nhiên, bộ lọc Wiener có những hạn chế, chẳng hạn như yêu cầu tín hiệu phải dừng (stationary) và khó áp dụng cho các hệ thống đa biến. Kalman Filter đã giải quyết được những hạn chế này, trở thành một công cụ mạnh mẽ và linh hoạt hơn.
  • Vẫn còn được nghiên cứu và phát triển: Mặc dù đã ra đời hơn 60 năm, Bộ lọc Kalman vẫn là một chủ đề nghiên cứu tích cực. Các nhà khoa học vẫn đang tìm kiếm các biến thể mới, các phương pháp cải tiến, và các ứng dụng mới cho bộ lọc Kalman. Ví dụ, các nghiên cứu gần đây tập trung vào việc phát triển các bộ lọc Kalman mạnh mẽ hơn (robust Kalman filters) có thể xử lý tốt hơn các điểm ngoại lai (outliers) và các trường hợp mô hình không chính xác.
  • Sự đơn giản đánh lừa: Về mặt toán học, các phương trình của bộ lọc Kalman (phiên bản tuyến tính) có vẻ khá đơn giản. Tuy nhiên, việc hiểu sâu sắc về cách thức hoạt động, cách điều chỉnh các tham số, và cách áp dụng nó vào các bài toán thực tế lại đòi hỏi kiến thức chuyên sâu về xác suất, thống kê, và lý thuyết hệ thống.
  • “Lời nguyền chiều” (Curse of Dimensionality): Khi số chiều của vector trạng thái tăng lên, việc tính toán và lưu trữ ma trận hiệp phương sai trở nên tốn kém và thậm chí không khả thi. Đây là một trong những thách thức lớn khi áp dụng bộ lọc Kalman cho các hệ thống có số chiều cao, dẫn đến sự phát triển của các phương pháp như Ensemble Kalman Filter.
  • Nội dung được thẩm định bởi Công ty Cổ phần KH&CN Trí Tuệ Việt

    P.5-8, Tầng 12, Tòa nhà Copac Square, 12 Tôn Đản, Quận 4, TP HCM.

    [email protected]

    Ban biên tập: 
    GS.TS. Nguyễn Lương Vũ
    GS.TS. Nguyễn Minh Phước
    GS.TS. Hà Anh Thông
    GS.TS. Nguyễn Trung Vĩnh

    PGS.TS. Lê Đình An

    PGS.TS. Hồ Bảo Quốc
    PGS.TS. Lê Hoàng Trúc Duy
    PGS.TS. Nguyễn Chu Gia
    PGS.TS. Lương Minh Cang
    TS. Nguyễn Văn Hồ
    TS. Phạm Kiều Trinh

    TS. Ngô Văn Bản
    TS. Kiều Hà Minh Nhật
    TS. Chu Phước An
    ThS. Nguyễn Đình Kiên

    CN. Lê Hoàng Việt
    CN. Phạm Hạnh Nhi

    Bản quyền thuộc về Công ty cổ phần Trí Tuệ Việt