Bộ lọc Kalman có phù hợp để lọc các vị trí điểm được chiếu, cho các góc Euler của thiết bị chụp không?


17

Hệ thống của tôi là như sau. Tôi sử dụng camera của thiết bị di động để theo dõi một đối tượng. Từ theo dõi này, tôi nhận được bốn điểm 3D mà tôi chiếu trên màn hình, để có bốn điểm 2D. 8 giá trị này khá ồn, do phát hiện, vì vậy tôi muốn lọc chúng để làm cho chuyển động mượt mà và thực tế hơn. Là phép đo thứ hai, tôi sử dụng đầu ra con quay hồi chuyển của thiết bị, cung cấp ba góc Euler (tức là thái độ của thiết bị). Chúng chính xác hơn và ở tần số lớn hơn (lên đến 100 Hz) so với vị trí 2D (khoảng 20 Hz).

Nỗ lực đầu tiên của tôi là với bộ lọc thông thấp đơn giản, nhưng độ trễ rất quan trọng, vì vậy bây giờ tôi cố gắng sử dụng bộ lọc Kalman, hy vọng nó sẽ có thể làm mịn các vị trí với độ trễ nhỏ. Như đã thấy trong một câu hỏi trước , một điểm quan trọng trong bộ lọc Kalman là mối quan hệ giữa các phép đo và các biến trạng thái bên trong. Ở đây các phép đo là cả 8 tọa độ điểm 2D của tôi và 3 góc Euler, nhưng tôi không chắc chắn về những gì tôi nên sử dụng làm biến trạng thái bên trong và cách tôi nên kết nối các góc Euler với các điểm 2D. Do đó, câu hỏi chính là bộ lọc Kalman có phù hợp với vấn đề này không? Và nếu có, làm thế nào?


Nếu toàn bộ mục đích là làm mịn các giá trị với độ trễ tối thiểu, bạn có thể thử sử dụng bộ lọc pha tối thiểu nếu bạn chưa thử. Tôi sẽ ngạc nhiên nếu bộ lọc kalman có thể cung cấp cho bạn tốt hơn 'độ trễ pha tối thiểu'. Đối với các bộ lọc tuyến tính, tôi hy vọng rằng bộ lọc pha tối thiểu sẽ cho độ trễ nhỏ nhất có thể.
niaren

@niaren: Cảm ơn bạn đã bình luận, tôi cũng sẽ nghiên cứu điều này.
Stéphane Péchard

1
Không rõ số đo của bạn là gì. Trong khung bộ lọc Kalman, "các phép đo" đề cập đến số lượng mà bạn thực sự quan sát. Nếu bạn đang đo bốn điểm 3D (ví dụ: bằng cách kết hợp nhiều hình ảnh camera với nhau), thì đó là những số đo của bạn. Bạn cũng cần quyết định những biến trạng thái nào bạn đang cố ước tính. Bạn đang cố gắng theo dõi các vị trí đối tượng 3D theo thời gian? Nếu vậy, đó là những biến trạng thái của bạn. Có thể phù hợp rằng đại diện 2D có thể được sử dụng chỉ để hiển thị và không được bao gồm như là một phần của mô hình của bạn. Chi tiết bổ sung sẽ giúp đề xuất một cách tiếp cận.
Jason R

Như Jsaon nói, những gì số đo của bạn không rõ ràng. Bạn nói: From this tracking, I get four 3D points that I project on a mobile device screen, to get four 2D points. These 8 values are kinda noisyvà sau đó bạn nói What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. Đó là cái gì Bốn điểm 2D, hay ba góc Euler? Hay tàu xử lý đi các góc Euler -> điểm 3D -> điểm 2D?
Peter K.

Tôi thực sự có hai bộ số đo: vị trí các điểm được phát hiện từ máy ảnh và các góc Euler, nhưng chúng không liên quan đến nhau. Thêm vào đó tôi chỉ quan tâm đến các vị trí được lọc làm đầu ra. Tôi sẽ chỉnh sửa câu hỏi để làm rõ.
Stéphane Péchard

Câu trả lời:


4

Lọc thông thấp

Sẽ thật tốt khi biết ý của bạn là gì bởi "bộ lọc thông thấp đơn giản".

Ví dụ: nếu số đo của bạn tại thời điểm k

pk=[xkyk]

và các ước tính được lọc thông thấp của bạn là:

pkLPF=αpk1LPF+(1α)pk

sau đó bạn sẽ có độ trễ nhóm khá lớn trong bộ lọc khoảng (đối với alpha gần bằng 1). 1/(1α)

Mô hình hóa tín hiệu: Cách tiếp cận đơn giản

Để sử dụng bộ lọc Kalman (hoặc bất kỳ phương pháp tương tự nào), bạn cần có một mô hình về cách thức đo lường được cập nhật và cập nhật.

Thông thường điều này trông giống như:

trong đó ϵ k là tiếng ồn quá trình (lái xe), A là ma trận chuyển trạng thái và B là ma trận đầu vào của bạn.

pk+1TRUE=ApkTRUE+Bϵk
ϵkAB

Và sau đó đo của bạn là: p k = C p T R U E k + D ν k trong đó ν k là tiếng ồn đầu ra (đo lường), C là ma trận đầu ra và D là ma trận nhiễu đo lường của bạn.pk

pk=CpkTRUE+Dνk
νkCD

Ở đây, "trạng thái" của mô hình được chọn là vị trí thực và những thứ bạn đo là đầu ra.

Sau đó, bạn có thể áp dụng các phương trình bộ lọc Kalman cho điều này để có được ước tính trạng thái của vị trí thực.pkTRUE^

Tuy nhiên, cách tiếp cận này rất đơn giản vì nó không sử dụng bất kỳ kiến ​​thức nào về cách các điểm có thể di chuyển (cũng không sử dụng 4 điểm của bạn và bất kỳ kiến ​​thức nào bạn có thể có về cách chúng di chuyển cùng nhau).

Mô hình hóa tín hiệu: Bắt đầu một cách tiếp cận tốt hơn

Trang này cho biết cách thiết lập vấn đề liên quan đến các vị trí và góc euler. Nó đang làm một cái gì đó khác với những gì bạn cần, nhưng trạng thái là:

pkTRUE=[xk yk zk x˙k y˙k z˙k x¨k y¨k z¨k ϕ ψ θ ϕ˙ ψ˙ θ˙ ϕ¨ ψ¨ θ¨ ]T

và các phép đo (đầu ra) là

pk=[xk yk zk ϕ ψ θ ]T

Tất cả các mô hình trên trang đó được thực sự làm là nói: (nhưng đối với mỗi người trong sốx,y,z).

xkTRUE=n=0kx˙nTRUEnΔt+12n=0kx¨nTRUE(nΔt)2
x,y,z

Đây chỉ là "phương trình chuyển động" cổ điển. Xem phương trình (3) tại đây.


pk=αpk1+(α1)pk

α

Δt;12(Δ2)

Δt1/fs

1
fsΔtΔt12Δt2

0

Bộ lọc thông thấp của bạn có thể giống như;

pk=αpk1+(1α)zk

zkkpkk

LPF có thể bị biến dạng tiếp theo:

pk=pk1+K(zkpk1)
K=(1α)

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.