Đo lường chuyển động (IMU) IC MPU6050

Đo lường chuyển động (IMU): Giải mã Gia tốc kế, Con quay hồi chuyển và Thuật toán Sensor Fusion

Trong các hệ thống Robotics hiện đại, từ một chiếc tay cầm chống rung (Gimbal) mượt mà, một chiếc Drone lơ lửng ổn định trên không, cho đến tính năng tự xoay màn hình trên điện thoại, tất cả đều được vận hành bởi một “trái tim” đo lường chuyển động mang tên IMU (Inertial Measurement Unit – Bộ đo lường quán tính).

Đại diện quốc dân và phổ biến nhất trong giới DIY chính là IC MPU6050 (tích hợp IMU 6 bậc tự do – 6DOF). Cấu tạo của nó bao gồm hai cảm biến vi cơ điện tử (MEMS) độc lập: Gia tốc kế và Con quay hồi chuyển. Tuy nhiên, nếu chỉ đọc dữ liệu thô từ hai cảm biến này, hệ thống của bạn chắc chắn sẽ thất bại. Hãy cùng giải mã lý do tại sao.

1. Gia tốc kế (Accelerometer): Đo trọng lực và Vấn đề “Nhiễu rung”

  • Bản chất hoạt động: Gia tốc kế đo lường gia tốc tuyến tính dọc theo 3 trục không gian X, Y, Z. Bên trong chip là một khối lượng siêu nhỏ được treo trên các lò xo silicon. Khi mạch di chuyển, khối lượng này lệch khỏi vị trí cân bằng, làm thay đổi điện dung và tạo ra tín hiệu điện. Đơn vị đo thường là g (với 1g \approx 9.8 m/s^2).
  • Cách đo góc nghiêng: Kể cả khi MPU6050 nằm im trên bàn, gia tốc kế trục Z vẫn luôn chỉ giá trị 1g do lực hút của Trái Đất. Bằng cách dùng các hàm lượng giác (Arctangent) phân tích hình chiếu của véc-tơ trọng lực 1g lên các trục X và Y, ta có thể tính ra được góc nghiêng (Pitch và Roll) tuyệt đối so với mặt đất.
  • Điểm yếu chí mạng – Nhiễu rung tần số cao: Gia tốc kế quá nhạy cảm. Bất kỳ một rung động vật lý nào (tiếng động cơ DC quay, cánh quạt Drone chém gió, hay một cú chạm nhẹ vào bàn) đều cộng dồn vào gia tốc trọng lực. Kết quả là góc nghiêng tính ra bị nhiễu loạn dữ dội, biểu đồ dâng lên hạ xuống liên tục như răng cưa (High-frequency noise). Ở trạng thái tĩnh, gia tốc kế rất đáng tin, nhưng khi hệ thống đang chuyển động mạnh, nó gần như “bị mù”.

2. Con quay hồi chuyển (Gyroscope): Đo tốc độ góc và Vấn đề “Trôi dạt”

  • Bản chất hoạt động: Con quay hồi chuyển dựa trên hiệu ứng Coriolis để đo tốc độ góc (Angular Velocity) xoay quanh các trục X, Y, Z. Tức là nó cho biết vật thể đang xoay nhanh đến mức nào. Đơn vị đo là Độ trên giây (^\circ/s).
  • Cách đo góc nghiêng: Vì Gyroscope chỉ cung cấp tốc độ, để biết được góc nghiêng hiện tại, vi điều khiển phải làm phép toán Tích phân tốc độ góc theo thời gian: \theta = \int \omega \, dt. (Nghĩa là: Góc hiện tại = Góc trước đó + Tốc độ góc \times Thời gian chu kỳ vòng lặp).
  • Điểm yếu chí mạng – Hiện tượng Trôi dạt (Drift): Gyroscope phản ứng cực kỳ nhanh và mượt mà, hoàn toàn miễn nhiễm với các rung động tịnh tiến (rung động của động cơ không làm nó bị nhiễu). Tuy nhiên, do giới hạn vật lý, cảm biến luôn có một mức sai số tĩnh nhỏ (Bias error). Khi ta lấy tích phân theo thời gian, các sai số siêu nhỏ này bị cộng dồn liên tục. Hậu quả là: Dù mạch nằm im bất động, góc tính toán từ Gyroscope vẫn từ từ “trôi” đi (tăng hoặc giảm dần) qua từng giây. Càng để lâu, sai số càng lớn (Low-frequency noise). Ở trạng thái động (ngắn hạn), Gyro rất tốt, nhưng về dài hạn, nó bị sai lệch hoàn toàn so với mặt đất.

3. Thuật toán Sensor Fusion: Nghệ thuật kết hợp dữ liệu

Chúng ta có Gia tốc kế (đúng trong dài hạn, sai trong ngắn hạn vì nhiễu rung) và Con quay hồi chuyển (đúng trong ngắn hạn, sai trong dài hạn vì trôi dạt). Thuật toán Sensor Fusion (Dung hợp cảm biến) sinh ra để lấy điểm mạnh của thằng này bù đắp cho điểm yếu của thằng kia.

A. Bộ lọc bù (Complementary Filter)

Đây là thuật toán phổ biến, nhẹ nhàng và dễ triển khai nhất trên các vi điều khiển cấu hình thấp như Arduino Uno.

Nguyên lý của nó là một phép tính tỷ lệ đơn giản:

Angle = 0.98 \times (Angle + \omega \times dt) + 0.02 \times (Accel\_Angle)

  • Phân tích: Thuật toán tin tưởng 98% vào sự mượt mà và nhanh nhạy của Gyroscope trong ngắn hạn, nhưng liên tục kéo lại 2% giá trị của Accelerometer để triệt tiêu hiện tượng trôi dạt về lâu dài. Kết quả là một góc nghiêng mượt, không bị rung và không bị trôi.

B. Bộ lọc Kalman (Kalman Filter)

Đây là thuật toán kinh điển, phức tạp và hoàn hảo nhất, được dùng trong hàng không vũ trụ và tên lửa.

  • Kalman Filter sử dụng các ma trận thống kê xác suất để liên tục “Dự đoán” (Predict) trạng thái tiếp theo dựa vào Gyroscope, sau đó dùng dữ liệu từ Accelerometer để “Cập nhật” (Update) và sửa sai dự đoán đó. Thuật toán này có khả năng tự động học hỏi phương sai nhiễu của môi trường, cho ra góc nghiêng chính xác gần như tuyệt đối ngay cả khi Drone đang nhào lộn. Nhược điểm là nó đòi hỏi khả năng xử lý toán học ma trận rất nặng của vi điều khiển.

C. Bộ lọc Mahony / Madgwick

Được thiết kế tối ưu riêng cho các IMU tích hợp vi điều khiển nhúng. Madgwick sử dụng thuật toán tối ưu hóa độ dốc (gradient descent) để kết hợp dữ liệu. Nó nhẹ hơn Kalman rất nhiều nhưng lại cho hiệu năng chống nhiễu trên Drone vượt trội hơn hẳn Complementary Filter. Hầu hết các mã nguồn mở điều khiển Drone (Flight Controller) hiện nay đều sử dụng biến thể của bộ lọc Madgwick hoặc Mahony.


Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *