Bộ lọc Kalman trong thực tế


17

Tôi đã đọc mô tả về bộ lọc Kalman, nhưng tôi không rõ làm thế nào nó kết hợp với nhau trong thực tế. Nó dường như chủ yếu nhắm vào các hệ thống cơ hoặc điện vì nó muốn chuyển đổi trạng thái tuyến tính và nó không hữu ích cho việc phát hiện bất thường hoặc chuyển đổi trạng thái vì cùng một lý do (nó muốn chuyển trạng thái tuyến tính), điều đó có đúng không? Trong thực tế, làm thế nào người ta thường tìm thấy các thành phần dự kiến ​​sẽ được biết trước để sử dụng bộ lọc Kalman. Tôi đã liệt kê các thành phần, xin vui lòng sửa cho tôi nếu sự hiểu biết của tôi về những gì cần biết trước là không chính xác.

Tôi tin rằng những điều này không cần phải được biết "trước":

  • Xử lý tiếng ồnw
  • Tiếng ồn quan sátv
  • Trạng thái thực tế (đây là những gì bộ lọc Kalman cố gắng ước tính)x

Tôi tin rằng những điều này cần được biết "trước" để sử dụng bộ lọc Kalman:

  • Mô hình chuyển đổi trạng thái tuyến tính mà chúng ta áp dụng cho (chúng ta cần biết trước điều này, vì vậy các trạng thái của chúng ta phải được điều chỉnh bởi các luật đã biết, tức là bộ lọc Kalman rất hữu ích để sửa các phép đo khi chuyển từ trạng thái này sang trạng thái khác hiểu và xác định đến một chút tiếng ồn - nó không phải là một công cụ tìm bất thường hay một công cụ để tìm các thay đổi trạng thái ngẫu nhiên)x
  • Kiểm soát véc tơbạn
  • Mô hình điều khiển đầu vào được áp dụng để điều khiển vectơ (chúng ta cần biết trước điều này, vì vậy để sử dụng bộ lọc Kalman, chúng ta cũng cần biết trước các giá trị điều khiển của chúng ta ảnh hưởng đến mô hình như thế nào, tối đa là một số nhiễu gaussian, và hiệu ứng cần phải tuyến tính)bạn
  • Hiệp phương sai của tiếng ồn quá trình (dường như phụ thuộc vào thời gian trong bài viết trên wikipedia, nghĩa là nó phụ thuộc vào thời gian ) - có vẻ như chúng ta cần biết điều này trước và theo thời gian, tôi cho rằng trong thực tế, nó được coi là không đổi?Qk
  • Mô hình quan sát (tuyến tính)H
  • Hiệp phương sai (dường như cũng phụ thuộc thời gian trong bài viết trên wikipedia) - các vấn đề tương tự vớiRQ

PS Và vâng tôi biết nhiều trong số này phụ thuộc vào thời gian, tôi chỉ bỏ tất cả các mớ lộn xộn. Hãy tưởng tượng chữ nhỏ bên phải và xuống từ mỗi tên biến nếu bạn muốn.k


Câu trả lời:


18

Đối với một số bối cảnh, chúng ta hãy quay lại các phương trình Bộ lọc Kalman:

.x(k+1)= =F(k)x(k)+G(k)bạn(k)+w(k)z(k)= =H(k)x(k)+v(k)

Nói tóm lại, đối với một vanilla đồng bằng KF:

phải được xác định đầy đủ. Điều này đến trực tiếp từ các phương trình vi phân của hệ thống. Nếu không, bạn có mộtvấn đề ước tính kép(tức là ước tính cả trạng thái và mô hình hệ thống). Nếu bạn không có phương trình vi phân của hệ thống, thì KF không dành cho bạn!F(k)

, theo định nghĩa, không thể biết được. Rốt cuộc, nếu bạn biết điều đó, nó sẽ không phải là một vấn đề ước tính!x(k)

bạn(k)G(k)

w(k)Q(k)Q

H(k)z(k)

v(k)R(k)

Có một số lượng lớn "thủ thuật" có thể được thực hiện để khắc phục các hạn chế trong KF vanilla đơn giản, nhưng chúng vượt xa phạm vi của câu hỏi này.


Suy nghĩ lại:

Trong khi googling cho "Bộ lọc Kalman" dẫn đến một triệu lượt truy cập, có một vài điều mà tôi nghĩ là đáng xem. Các trang wikipedia là một quá lộn xộn để học hỏi từ một cách hiệu quả :(

Trên AVR Freaks , có một phần giới thiệu "phương trình miễn phí" cho Bộ lọc Kalman mà tôi đã viết cách đây một thời gian để cố gắng giới thiệu nơi nó được sử dụng thực sự.

Nếu bạn không sợ toán học, có một số cuốn sách đáng đọc ở cấp đại học / sau đại học sớm. Hãy thử Brown và Hwang bao gồm tất cả các lý thuyết và nhiều hệ thống ví dụ. Một thứ khác rất được khuyến khích nhưng tôi chưa đọc là Gelb , có ưu điểm khác biệt là giá rẻ!


1
+1 cho liên kết Freaks AVR! Hoàn thành rất tốt. Có lẽ sẽ sử dụng nó trong lớp. :-)
Peter K.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.