Làm cách nào để chọn tham số của bộ lọc Kalman?


8

Giả sử tôi muốn theo dõi vị trí của một chiếc xe trong 2D. Những gì tôi nhận được như dữ liệu cảm biến là vị trí hiện tại của tôi. Vì vậy, trạng thái của tôi là

x=(xyx˙y˙)

trong đó là vị trí cách m so với một số điểm được xác định trước, là vận tốc tính bằng m / s tại thời điểm bắt đầu và là gia tốc tính bằng . Các phép đo làxRx˙Rx¨Rm/s2

z=(x(M)y(M))

Điều tôi có thể chọn là khả năng tăng tốc của tôi ở mỗi bước (bước thời gian có độ dài ):it

u=(x¨(u)y¨(u))

Vì bộ lọc Kalman là bộ lọc tuyến tính, mô hình trạng thái của tôi là:

x(P)=Ax+Bu

Phép đo phụ thuộc vào trạng thái, với một số nhiễu :v

z=Hx+v

với , . Vì người ta có thể phân hủy gia tốc / tốc độ theo các hướng và phương trình cho vị trí mới làAR4×4HR2×4

xnew(t)=x+x˙t+0.5x¨t2ynew(t)=y+y˙t+0.5y¨t2x˙new(t)=x˙+x¨ty˙new(t)=y˙+y¨t

Vì vậy, đưa ra mô hình nhà nước của chúng tôi, chúng tôi nhận được:

x(P)=(10t0010t00100001)Aix+(0.5t2000.5t2t00t)Biui
  1. Đây có phải là một kịch bản / cách tiếp cận hợp lý cho bộ lọc Kalman?

  2. Làm cách nào để tôi chọn ma trận hiệp phương sai không chắc chắn ban đầu / trạng thái ban đầu ? Tôi đã nghe nói rằng người ta chủ yếu làm cho các giá trị ma trận "lớn" - bất kể điều đó có nghĩa là gì. Ví dụ: phải là ma trận đường chéo đối với một số ? Ví dụ: vì đường kính trái đất khoảng và vì sẽ không bao giờ xảy ra hơn đối với ô tô?P0R4×4x

    P0=(a10000a20000a30000a4)
    aR+a1=a2=2000000040000 kma3=a4=90324 km/h

    Đối với tham số trạng thái ban đầu, tôi sẽ đợi hai bước thời gian:

    x0=(x1(M)y1(M)x1(M)x2(M)y1(M)y2(M))

Bước dự đoán

Dự đoán trạng thái hoạt động như trên:

xi+1(P)=Aixi+Biui

Dự đoán hiệp phương sai:

(P)Pi+1(P)=APiAT+QwithQR4×4.
  1. Tôi nhận được lỗi quá trình hiệp phương sai từ đâu? Những tính chất nào nó phải có? Tôi đoán chắc chắn tích cực? Ma trận này có nghĩa là gì?Q

Bước đổi mới

Đổi mới, so sánh phép đo với dự đoán:

y~i+1=zi+1Hxi+1(P)
  1. (đã giải quyết) : Tôi lấy ma trận quan sát từ đâu? Nó có nghĩa là gì?HR2×4

CHỈNH SỬA :

Tôi hiểu rồi. Trong ví dụ của tôi vì nó mã hóa mối quan hệ giữa trạng thái và phép đo.

H=(10000100),

Hiệp phương sai đổi mới:

Si+1=HPi+1(P)HT+R

Đối với lỗi đo lường hiệp phương sai Tôi phải biết điều gì đó về cách thức hoạt động của cảm biến. Tôi đoán đây thường sẽ là một ma trận đường chéo, vì các cảm biến sẽ độc lập (?).RR2×2

Đạt được Kalman:

Ki+1=Pi+1(P)HTSi+11

Bây giờ, cuối cùng là cập nhật trạng thái và hiệp phương sai:

xi+1=xi+1(P)+Ki+1y~
Pi+1=(IKi+1H)Pi+1(P)

Nguồn:

  • http://greg.czerniak.info/guides/kalman1/ (Tôi đã tìm thấy điều này trong khi viết câu hỏi này - nó đã trả lời một vài câu hỏi của tôi, mà tôi hy vọng đã xóa.)
  • Các bài giảng khác nhau tại KIT

martin-thoma.com/kalman-filter là một bài viết tôi đã viết dựa trên câu hỏi này và các câu trả lời.
Martin Thoma

Xin vui lòng xem hai bài báo của chúng tôi trong số tháng 12 năm 2016 của tạp chí SADHANA đính kèm theo đây. Giáo sư.MRAnanthasayanam.
ANANTHASAYANAM

@ANANTHASAYANAM: Tôi đã chuyển đổi câu trả lời của bạn thành một nhận xét. Sẽ tốt hơn nếu bạn có câu trả lời trong các bài viết đó để cung cấp liên kết đến họ.
Peter K.

Câu trả lời:


5

Đây có phải là một kịch bản / cách tiếp cận hợp lý cho bộ lọc Kalman?

Trả lời 1: Có, mô hình của bạn trông hợp lý. Tuy nhiên, bạn đang coi gia tốc là không đổi. Nếu nó sẽ thay đổi trong thử nghiệm của bạn, bạn nên bao gồm mà do lỗi hệ thống của bạn ma trận .Q

Làm cách nào để tôi chọn ma trận hiệp phương sai không chắc chắn ban đầu / trạng thái ban đầu ?P0R4×4x

Trả lời 2: là ban đầu của bạn tình trạng hiệp phương sai. Điều đó thể hiện mức độ bạn biết về ước tính ban đầu của trạng thái . Nếu bạn không biết, thông thường sẽ đặt trong đó là lớn. Xem, ví dụ, câu trả lời này đặt .P0x0

P0=σ2I4
σ2σ2=1000

Tôi nhận được lỗi quá trình hiệp phương sai từ đâu? Những tính chất nào nó phải có? Tôi đoán chắc chắn tích cực? Ma trận này có nghĩa là gì?Q

Trả lời 3: Ma trận này thể hiện lỗi hệ thống của bạn. Các mục trong ma trận này đại diện cho hiệp phương sai của các giá trị tương ứng trong mô hình hệ thống của bạn. Nếu bạn giả sử, ví dụ, gia tốc không đổi như bạn đã làm, nhưng nó sẽ thay đổi trong thế giới thực, thì bạn có thể muốn bao gồm hiệp phương sai tương ứng ở đây.

Bên cạnh đó, luôn luôn nên thử nghiệm với ma trận và của bạn . Làm cho lớn hơn sẽ phụ thuộc nhiều hơn vào dữ liệu trực tiếp của bạn, làm cho lớn hơn sẽ phụ thuộc nhiều hơn vào dự đoán của bạn. Hiếm khi một mô hình là hoàn hảo mà không cần điều chỉnh.QPQP


Tôi nghĩ rằng tôi có thể điều chỉnh trong mỗi bước thời gian và do đó điều chỉnh gia tốc trong từng bước? ui
Martin Thoma

1
Trả lời 2: Tôi nghĩ sẽ mã hóa lỗi đo lường của tôi và sẽ mã hóa sự không chắc chắn hiện tại về trạng thái? RP
Martin Thoma

@MartinThoma 1: Tôi nghĩ bạn nói bạn chỉ có số đo khoảng cách? Làm thế nào bạn có được gia tốc nếu bạn không thể đo được? 2: Bạn đúng. là hiệp phương sai trạng thái ban đầu của bạn và là hiệp phương sai tình trạng hiện thời. Nói chung, không phụ thuộc vào bất kỳ phép đo nào. Theo phương trình của bạn ( ) [mà tôi vừa gắn thẻ], trừ khi hoặc thay đổi theo thời gian, sẽ phát triển độc lập với bất kỳ điều gì khác xảy ra trong hệ thống. P0PkPkPAQP
Peter K.

2
@Emiswelt: Câu trả lời 2 của bạn có vẻ không đúng với tôi. Câu hỏi là làm thế nào để tôi chọn ma trận hiệp phương sai không chắc chắn ban đầu? mà không đề cập đến lỗi đo lường?
Peter K.

2
@Emiswelt: OK. Tôi đã chỉnh sửa. Hãy cho tôi biết nếu nó ổn. Tôi có một chút khác biệt về điểm 3 ... điều này dẫn tôi trở lại suy nghĩ lại điểm 1 ... :-) Tôi sẽ để nó hầm một chút trước khi tôi soạn câu trả lời.
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.