2015-12-15 23 views
5

Tôi đang sử dụng bộ lọc kalman (mô hình vận tốc không đổi) để theo dõi vị trí và tốc độ của vật thể. Tôi đo x, y của đối tượng và theo dõi x, y, vx, vy. Mà hoạt động nhưng nếu thêm tiếng gausian noise + - 20 mm vào các chỉ số cảm biến x, y, vx, vy dao động ngay cả khi điểm không chuyển động chỉ là tiếng ồn. Đối với vị trí đó là đủ tốt cho nhu cầu của tôi nhưng vận tốc thay đổi khi điểm là văn phòng phẩm và đó là gây ra vấn đề với tính toán tốc độ đối tượng của tôi. Có cách nào xung quanh vấn đề này? cũng nếu chuyển sang mô hình tăng tốc không đổi, hãy cải thiện điều này? Tôi đang theo dõi một robot thông qua camera.Vị trí theo dõi và vận tốc sử dụng bộ lọc kalman

Tôi đang sử dụng thực hiện opencv và mô hình Kalman của tôi là giống như [1]

[1] http://www.morethantechnical.com/2011/06/17/simple-kalman-filter-for-tracking-using-opencv-2-2-w-code/

Trả lời

2

Điều quan trọng nhất về thiết kế một bộ lọc Kalman không phải là dữ liệu, đó là ước tính lỗi. Các ma trận trong ví dụ đó dường như được chọn tùy ý, nhưng bạn nên chọn chúng bằng cách sử dụng kiến ​​thức cụ thể về hệ thống của bạn. Cụ thể:

  • Lỗi hiệp phương sai có đơn vị. Đó là độ lệch chuẩn bình phương. Vì vậy, lỗi vị trí của bạn là "chiều dài bình phương" và vận tốc trong "chiều dài trên mỗi bình phương". Các giá trị trong các ma trận đó sẽ khác nhau tùy thuộc vào việc bạn làm việc theo m hay mm.
  • Bạn đang triển khai mô hình "vận tốc không đổi", nhưng "processNoiseCov" từ ví dụ đặt cùng các giá trị cho cả tiếng ồn của vị trí và vận tốc. Điều này có nghĩa là bạn có thể sai về vị trí của mình do sai về vận tốc của bạn, và bạn có thể sai vì đối tượng được dịch chuyển xung quanh theo cách độc lập với vận tốc. Trong mô hình CV, bạn có thể mong đợi rằng tiếng ồn của quá trình vị trí sẽ rất thấp (về cơ bản nonzero chỉ vì các lý do số và để che lỗi mô hình) và chuyển động không xác định thực sự của hệ thống sẽ là do vận tốc chưa biết. Vấn đề này cũng cản trở khả năng của KF suy ra vận tốc từ đầu vào vị trí, bởi vì "lỗi dịch chuyển" của vị trí không được quy cho sự thay đổi vận tốc.
  • Nếu bạn đang đặt trong +/- 20mm lỗi (bạn thực sự nên đặt trong tiếng Gaussian nếu bạn muốn mô phỏng hành vi lý tưởng), bạn có độ lệch chuẩn xấp xỉ 11.5mm hoặc phương sai (11.5mm)^2 . Không biết đơn vị của bạn là gì (mm hoặc m) Tôi không thể nói giá trị số của "measurementNoiseCov" nên là gì, nhưng nó không phải là 0,1 (như trong ví dụ).

Và cuối cùng, ngay cả với tất cả những điều đó đúng, hãy nhớ rằng KF cuối cùng là bộ lọc tuyến tính. Bất cứ tiếng ồn nào bạn đưa vào sẽ hiển thị trong đầu ra, chỉ cần thu nhỏ bởi một số yếu tố (độ lợi Kalman).

Các vấn đề liên quan