Xây dựng bộ lọc Kalman đơn giản

Bộ lọc Kalman là một bộ lọc đệ quy để ước lượng trạng thái của hệ thống tuyến tính, và cả hệ thống phi tuyến khi áp dụng phép ước lượng phi tuyến sang tuyến tính.

Bộ lọc Kalman được ứng dụng rất nhiều trong lĩnh vực kĩ thuật, đặc biệt là lĩnh vực điều khiển. Và dĩ nhiên lý thuyết của bộ lọc hoàn toàn không đơn giản, nhưng may mắn là có thể tìm thấy trên mạng vô số tài liệu về bộ lọc này cũng như sách, báo.

Dưới đây là bài viết tôi thực hiện khi thực tập đại học, trình bày rất đơn giản về bộ lọc Kalman, cũng như một ứng dụng nho nhỏ của bộ lọc này, nhằm mục đích loại bỏ tín hiệu nhiễu từ cảm biến. Chương trình được mô phỏng bằng Matlab.

Các giá trị đọc được từ cảm biến thường chứa nhiễu, tác động bởi nhiều nguồn khác nhau, như nhiễu quá trình, nhiễu nhiệt, nhiều từ bộ biến đổi ADC… Giá trị đọc được do đó dao đông ngay cả khi giá trị thực là hằng số. Ví dụ đơn giản như một cảm biến phao trên mặt nước của một bình chứa, gợn sóng làm giá trị thu được dao động xung quanh vị trí cân bằng ngay cả khi mực nước không đổi. Ngay lúc này bạn có thể nghĩ rằng chỉ cần lấy giá trị trung bình của các giá trị đọc về là ổn. Đúng vậy, cộng trung bình là phương pháp rất đơn giản, và khá hiệu quả. Còn Kalman là bộ lọc thông thấp bậc nhất trong trường hợp này.

Và trong trường hợp có nhiều giá trị liên quan đến đại lượng cần ước lượng được sử dụng, bộ lọc Kalman có thể kết hợp nhiều giá trị đó lại với nhau, cho ra kết quả chính xác hơn. Ví dụ như nếu biết thêm được lưu lượng nước vào và ra của bình chứa thì tổng cộng có 2 giá trị liên quan đến mực nước, là giá trị mực nước và lưu lượng vào ra, kết quả sẽ khả quan hơn với bộ lọc Kalman.

Bài viết cũng có bàn luận đến vấn đề khi giá trị mong muốn thay đổi, thì cần có sự thỏa hiệp giữa tốc độ bám đuổi của giá trị ước lượng với giá trị thực với độ dao động của giá trị ước lượng. Tức là khi muốn giá trị ước lượng thay đổi nhanh thì giá trị ước lượng không phẳng lắm, còn muốn giá trị ước lượng được phẳng hơn thì nó sẽ ít có khả năng bám theo sự thay đổi nhanh của giá trị thực tế.

R_1

 

R_01_gia_tri_dau_vao_thay_doi  

Điểm màu xanh là giá trị đọc được trực tiếp từ cảm biến, đường màu đỏ là giá trị ước lượng với bộ lọc Kalman bậc 1.


Chương trình thực hiện bộ lọc bậc 1 rất đơn giản, có thể thực hiện đễ dàng trên các chíp VĐK 8 bít, có thể sử dụng để xử lý các tín hiệu từ cảm biến để cho kết quả tốt hơn.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s