Tín hiệu cảm biến thô gần như không bao giờ dùng thẳng được. Nhưng lọc là con dao hai lưỡi: nó làm tín hiệu đẹp hơn và làm nó chậm hơn, mà chậm hơn thì vòng điều khiển kém ổn định.
Các nguồn nhiễu
Biết nguồn thì chọn được cách xử lý.
Nhiễu điện tử nền. Có trong mọi mạch. Ngẫu nhiên, phân bố đều theo tần số. Lọc được bằng trung bình.
Nhiễu từ nguồn xung. Bộ điều khiển động cơ đóng cắt tần số cao tạo nhiễu ở tần số xác định. Lọc được bằng bộ lọc loại tần số đó.
Nhiễu cơ khí. Rung động thật của kết cấu. Đây không phải nhiễu đo mà là tín hiệu thật của thứ ta không quan tâm.
Lượng tử hoá. Cảm biến số chỉ cho giá trị rời rạc. Với chuyển động rất chậm thì tín hiệu nhảy bậc.
Giá trị sai hoàn toàn. Cảm biến thỉnh thoảng trả một giá trị vô lý. Đây là loại nguy hiểm nhất vì bộ lọc trung bình sẽ trộn nó vào kết quả.
Trôi. Giá trị lệch dần theo nhiệt độ hoặc thời gian. Bộ lọc không giải quyết được; cần hiệu chuẩn lại hoặc bù nhiệt.
Bước đầu tiên luôn là giảm nhiễu tại nguồn. Bọc chắn, nối đất đúng, tách dây, mạch xử lý gần cảm biến. Rẻ hơn và tốt hơn mọi bộ lọc.
Các bộ lọc cơ bản
Trung bình trượt. Lấy trung bình vài mẫu gần nhất. Đơn giản nhất. Càng nhiều mẫu càng mượt và càng trễ.
Lọc thông thấp bậc một. Trộn giá trị mới với giá trị cũ theo tỷ lệ. Tốn ít bộ nhớ, dễ chỉnh bằng một tham số. Dùng nhiều nhất trong thực tế.
Lọc trung vị. Lấy giá trị giữa của vài mẫu. Loại được giá trị sai hoàn toàn mà trung bình không loại được. Nên dùng trước bộ lọc trung bình khi tín hiệu có nhiễu xung.
Lọc chặn dải. Loại một tần số cụ thể. Dùng khi biết chính xác tần số nhiễu, ví dụ tần số đóng cắt của bộ điều khiển.
Bộ lọc Kalman. Kết hợp mô hình chuyển động với phép đo. Cho kết quả tốt hơn nhiều nếu có mô hình đúng. Phức tạp hơn và cần chỉnh tham số nhiễu.
Bộ lọc bù. Trộn hai cảm biến bổ trợ nhau — lấy phần tần số cao của cảm biến này và phần tần số thấp của cảm biến kia. Đơn giản và hiệu quả cho việc kết hợp con quay với gia tốc kế.
Đánh đổi giữa mượt và trễ
Điểm cốt lõi mà nhiều người bỏ qua.
Quy luật. Mọi bộ lọc làm mượt đều gây trễ. Không có ngoại lệ.
Vì sao trễ nguy hiểm. Trong vòng điều khiển kín, trễ làm giảm biên độ ổn định. Lọc quá mạnh có thể làm hệ đang ổn định trở thành dao động.
Triệu chứng lọc quá mạnh. Robot phản ứng chậm, vọt quá nhiều, hoặc dao động ở tần số thấp. Người ta thường phản ứng bằng cách lọc mạnh hơn nữa, làm mọi thứ tệ hơn.
Cách chọn mức lọc. Xác định băng thông thật sự cần. Tín hiệu quan tâm biến đổi nhanh nhất ở tần số nào. Lọc bỏ mọi thứ trên tần số đó, không lọc thấp hơn.
Trường hợp không nên lọc nhiều. Tín hiệu dùng cho phát hiện va chạm. Trễ ở đây là trễ trong việc dừng robot.
Trường hợp lọc mạnh được. Tín hiệu chỉ dùng để hiển thị hoặc ghi nhật ký. Không nằm trong vòng điều khiển nên trễ không sao.
Thực hành tốt. Ghi lại cả tín hiệu thô và tín hiệu đã lọc. Khi gỡ lỗi sẽ cần cả hai, và nhiều vấn đề chỉ thấy được ở tín hiệu thô.
Lấy mẫu và đồng bộ
Chi tiết kỹ thuật gây lỗi khó hiểu.
Tần số lấy mẫu. Phải cao hơn đáng kể so với tần số cao nhất của tín hiệu quan tâm. Thấp quá thì tín hiệu tần số cao xuất hiện giả dạng tần số thấp và không phân biệt được.
Lấy mẫu không đều. Nếu chu kỳ lấy mẫu dao động thì bộ lọc hoạt động sai vì nó giả định chu kỳ cố định. Đây là vấn đề thường gặp khi chạy trên hệ điều hành không thời gian thực.
Đồng bộ giữa các cảm biến. Camera cho ảnh ở một thời điểm, IMU cho dữ liệu ở thời điểm khác. Kết hợp mà không đồng bộ đúng thì kết quả sai một cách có hệ thống.
Dấu thời gian tại nguồn. Gán thời gian ngay khi đọc cảm biến, không phải khi dữ liệu tới chương trình xử lý. Chênh lệch giữa hai thời điểm này là nguồn sai số hay bị bỏ qua.
Bù độ trễ đã biết. Nếu biết cảm biến có độ trễ cố định, có thể tính tới trong mô hình thay vì bỏ qua.
Kiểm tra. Cho robot chuyển động theo dao động đã biết và xem các cảm biến có báo cùng pha không. Lệch pha cho biết ngay có vấn đề đồng bộ.
Phát hiện cảm biến hỏng
Phần thường bị bỏ qua và quan trọng cho hệ thống chạy dài.
Kiểm giá trị hợp lý. Giá trị nằm ngoài dải vật lý có thể có thì loại. Đơn giản và bắt được nhiều lỗi.
Kiểm tốc độ thay đổi. Giá trị nhảy nhanh hơn mức vật lý cho phép thì đáng ngờ.
Kiểm tín hiệu đứng im. Cảm biến trả đúng một giá trị không đổi trong thời gian dài thường là đã hỏng hoặc mất kết nối. Loại lỗi này khó phát hiện vì giá trị vẫn nằm trong dải hợp lệ.
So chéo giữa các cảm biến. Hai cảm biến đo cùng đại lượng mà lệch nhau nhiều thì một trong hai sai. Không biết cái nào, nhưng biết có vấn đề.
Theo dõi mức nhiễu. Nhiễu tăng dần là dấu hiệu cảm biến hoặc kết nối đang xuống cấp.
Phản ứng khi phát hiện. Chuyển sang chế độ an toàn, dùng cảm biến dự phòng nếu có, hoặc dừng và báo. Tiếp tục chạy với cảm biến đáng ngờ là quyết định nên tránh.
Và ghi lại. Mỗi lần phát hiện bất thường phải vào nhật ký kèm dữ liệu. Đây là cách duy nhất để về sau biết cảm biến nào hay hỏng và vì sao.
Câu hỏi thường gặp
Loại nhiễu nào nguy hiểm nhất với bộ lọc trung bình?
Giá trị sai hoàn toàn, vì trung bình sẽ trộn nó vào kết quả. Cần lọc trung vị trước để loại giá trị xung trước khi làm mượt.
Vì sao lọc quá mạnh lại nguy hiểm?
Vì mọi bộ lọc làm mượt đều gây trễ, và trễ làm giảm biên độ ổn định của vòng điều khiển kín — có thể biến hệ đang ổn định thành dao động.
Chọn mức lọc thế nào cho đúng?
Xác định tần số cao nhất mà tín hiệu quan tâm thực sự biến đổi, lọc bỏ mọi thứ trên tần số đó và không lọc thấp hơn.
Loại hỏng cảm biến nào khó phát hiện nhất?
Tín hiệu đứng im — cảm biến trả đúng một giá trị không đổi trong thời gian dài. Khó phát hiện vì giá trị vẫn nằm trong dải hợp lệ.
Đọc thêm trong Chip & bo điều khiển và Camera & LiDAR.