Đôi điều về IMU (Inertial Measurement Unit) – Cảm biến góc quay + cảm biến gia tốc | Cộng đồng Arduino Việt Nam

Có trong tay một module IMU thật tuyệt phải không? Còn chờ gì nữa mà không sử dụng ngay!? Đáng tiếc là không nhanh như thế, IMU – cũng như nhiều cảm biến khác – cần được hiệu chỉnh trước khi sử dụng nếu muôn có một kết quả đáng tin cậy. Sau đây là những vấn đề cần lưu tâm khi sử dụng một module IMU:

  • Accelerometer: accel luôn có offset trên mỗi trục làm cho giá trị đo được thường lệch đi so với thực tế một chút. Ngoài ra, giá trị đó được theo accel thường khá nhiễu khiến cho việc đọc trở nên khó khăn.
  • Gyroscope: cũng như accel, gyro cũng có offset (hay còn gọi là bias) làm lệch các giá trị đo. Một vấn đề khác nữa có thể gặp phải của gyro là drift, có nghĩa là bias thay cũng thay đổi chậm theo thời gian. Dù vậy, điểm cộng là gyro lại ít bị nhiễu hơn accel. 

Vậy thì làm thế nào đối phó với những yếu tố này ? Với offset là hằng số thì đơn thuần chỉ là đo lại giá trị đó và trừ vào giá trị đo. Với việc tín hiệu bị nhiễu thì hoàn toàn có thể dùng một bộ lọc điện tử tần số thấp ( digital low-pass filter ), những bạn hoàn toàn có thể tìm hiểu thêm library Filters trên forum Arduino ( http://playground.arduino.cc/Code/Filters ). Vấn đề drift của gyro thì hoàn toàn có thể dùng bộ lọc cao tần ( digital high-pass filter ) do gyro drift khá chậm .

Một cách chuyên nghiệp hơn, nếu các bạn muốn đo một cách chính xác góc quay thì có một giải pháp rất thông dụng là sensor fusion, có nghĩa là sẽ dùng cả gyro và accel để đo góc và dùng một số loại thuật toán để gộp 2 giá trị với nhau, bù trừ nhau để đưa ra kết quả chính xác nhất. Một số thuật toán thường dùng hiện nay là:

  • Complementary filter: loại này đơn giản nhất nhưng cũng khá hiệu quả
  • Kalman filter: hơi phức tạp nhưng phổ biến nhất và rất hiệu quả, kể cả trong những ứng dụng chuyên nghiệp
  • Mahony filter: khả năng ngang với Madgwick filter
  • Madgwick filter: cái này khá mới so với những cái trên nhưng mình cũng đã thử và thấy rất hiệu quả

Tất cả những filter trên hiện nay đều đã được viết dưới dạng library cho Arduino nên các bạn có thể update trực tiếp bằng IDE Arduino. Các bạn cũng có thể tìm thấy rất nhiều ví dụ trong các thư viện đó. Mình sẽ viết một bài hướng dẫn cụ thể hơn kèm ví dụ cho một module IMU nếu có thời gian.

Source: https://dvn.com.vn
Category: Phụ Kiện

Alternate Text Gọi ngay