Lý Thuyết Và Cách đọc Dữ Liệu Cảm Biến IMU

I. Giới thiệu

IMU là gì?

Inertial Measurement Unit = Đơn vị đo lường quán tính, có chức năng cung cấp thông tin về tốc độ góc và góc nghiêng của hệ thống. Dựa trên nguyên lý hoạt động của 2 cảm biến accelemeter (gia tốc kế) và gyroscope ( con quay hồi chuyển ). Tuy nhiên khái niệm này được sử dụng khá lỏng lẻo: do vậy IMU có thể hiểu là đơn vị đo lường quán tính của hệ thống, cung cấp các giá trị cảm biến sau khi đã xử lý giúp cho hệ thống hoạt động tốt nhất.

IMU  cơ bản sẽ bao gồm 6-DOF (6 Degrees Of Freedom) tức là 6 trục độc lập (3 của accel và 3 của gyro). Tuy vậy đôi khi như thế vẫn là không đủ, những dự án phức tạp như là điều khiển máy bay hoặc robot có thể sẽ cần đến 9-DOF (thêm một cảm biến từ trường 3 trục – magnetometer – hoạt động gần giống một la bàn để định hướng), hoặc 10-DOF (thêm một áp kế – barometer – dùng để đo độ cao) hoặc thậm chí 11-DOF (thêm module GPS để xác định vị trí).

Đôi khi các bạn có thể gặp các khái niệm như AHRS hay MARG đều có chỉ đến hệ thống đo lường quan trọng này và chúng đều liên quan với nhau và chỉ khác biệt cách dùng cho từng trường hợp cụ thể. Ví dụ:

MEMS = Microelectromechanical systems. Cách gọi chỉ lên nguyên lý hoạt động của các cảm biến được ứng dụng trong vi điều khiển. Nó dùng hệ thống cơ điện tử.

AHRS = Attitude and heading reference system.

MARG sensors = Magnetic, Angular Rate, and Gravity sensors.

Hình minh họa quy ước Roll Pitch Yaw và chiều dương của nó

Ứng dụng của chúng là gì?

Các cảm biến IMU được sử dụng trong các ứng dụng như: robot tự cân bằng, quadcopter, điện thoại thông minh…. Cảm biến IMU giúp chúng ta có được vị trí của vật thể gắn với cảm biến trong không gian ba. Chúng được sử dụng để phát hiện hướng của điện thoại thông minh hoặc trong các tiện ích như Fitbit, sử dụng cảm biến IMU để theo dõi chuyển động.

Module cảm biến IMU có thể được tích hợp gồm hai hoặc nhiều cảm biến như:

  •  Cảm biến gia tốc (accelemeter)
  •  Cảm biến góc quay (gyroscope)
  •  Cảm biến từ trường (magnetometer)
  •  Áp suất kế để đo độ cao (altimeter).

Từ các giá trị đọc được từ cảm biến, thông thường sẽ cần phải cần xử lý qua các thuật toán calib, lọc, fuse dữ liệu để cho ra các giá trị cảm biến có thể sử dụng cho yêu cầu ứng dụng tùy trường hợp.

II. Nguyên lý hoạt động của từng loại cảm biến.

1. Cảm biến gyroscope.

Khi bạn đặt một con chip IMU để im không chuyển động, giá trị trả về gyro = [0.0, 0.0, 0.0] do không có bất cứ chuyển động quay nào cả. Gyro chỉ đo tốc độ quay chứ không đo trực tiếp góc quay, nên khi bạn quay module một góc nào đó rồi dừng, giá trị của gyro sẽ tăng lên rồi hạ xuống về 0.

2. Cảm biến gia tốc kế.

Nguyên tắc để đo góc dùng gia tốc kế là phân tích sự tác dụng của trọng lực lên các trục ta có thể dùng nó để tính các góc lệch roll và pitch.

3. Cảm biến từ trường.

Cảm biến từ trường đa phần hoạt động dựa trên hiệu ứng Hall. Ta cấp nguồn cho dòng eletron chạy qua mạch, có một tấm dẫn điện như trên hình.

Khi xung quanh nó có từ trường, lực Lorent sẽ làm dòng eletron chạy trong mạch nó di chuyển lệch đi về 2 phía. Nếu ta đo điện áp thì sẽ biết được độ lớn của nguồn từ trường này.

Nếu chọn trục z là trục vuông góc với mặt đất thì góc yaw là góc khi xoay trục z. Nó thường được ứng dụng để đo góc yaw bằng công thức đơn giản. Trên thực tế ta có thể tính toán góc yaw bằng gyroscope, nhưng nếu ta kết hợp thêm cảm biến từ trường nó sẽ cho kết quả chính xác hơn, lấp đi nhược điểm khi dùng gyroscope.

4. Cảm biến áp suất kế (Barometer)

Barometer tính toán độ cao bằng cách sử dụng tính chất độ cao thay đổi theo áp suất, càng lên cao áp suất càng giảm. Ta chỉ cần áp dụng công thực để chuyển đổi.

5. Đặc tính của mỗi loại cảm biến

Gyroscope: Vấn đề thường gặp phải nhất của gyro là độ trôi (drift) , độ trôi thay đổi chậm theo thời gian. Nguyên nhân bởi vì do các tác động cơ khí, rung động tác động lên gyro, sau một thời gian sử dụng thì giá trị trôi này tích lũy lên đáng kể, làm giá trị đo góc không còn chính xác.

Dù vậy, điểm mạnh của gyro là ít bị nhiễu hơn accelemeter, nghĩa là giá trị tức thời của nó đáng tin cậy.

Vậy thì làm thế nào để khắc phục những vấn đề này? Với offset là hằng số thì đơn giả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ì có thể dùng một bộ lọc điện tử tần số thấp (digital low-pass filter), các bạn có thể tham khảo library Filters trên diễn đàn Arduino (http://playground.arduino.cc/Code/Fi…). Vấn đề drift của gyro thì có thể dùng bộ lọc cao tần (digital high-pass filter) do gyro drift khá chậm.

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 nhạy với rung động cơ khí nhỏ khiến cho giá trị tức thời của nó không đáng tin cậy, do đó chúng ta chỉ sử dụng giá trị trung bình của acc thì nó mới có hữu hiệu, vì nếu để lâu dài thì accel không bị trôi như gyro.

III. Các giải thuật tính toán IMU

1. Giải thuật IMU đơn giản

Trong điều khiển máy bay như quadcopter để có thể điều khiển tới lùi, trái phải. Ta cần tính được góc roll và pitch. Tuy nhiên nếu ta xoay quadcopter, nghĩa là góc yaw thay đổi, thì công thức tính 2 góc này cũng sẽ thay đổi. lúc này ta xoay hệ trục tọa độ này theo góc yaw.

_ Một vấn đề nữa, nếu như chúng ta pitch ( pitch là động từ ) cái IMU lên một măt phẳng nghiêng. OK thì IMU sẽ nhận biết được và tính toán để ra góc pitch lệch. Và tại vị trí nghiêng đó, ta tiếp tục xoay nó một góc yaw cỡ 90 độ. Thì chuyện gì sẽ xảy ra? Góc roll lúc này trong thực tế sẽ phải tăng lên. Bởi vì do nguyên lý nhận biết của con IMU này, nó chỉ nhận biết khi có sự thay đổi vận tốc. Nhưng khi làm như trên thì không có sự thay đổi về góc pitch và roll, nên nó giữ nguyên. Nên ta cần biết để tính toán lại.

angle_pitch = angle_pitch – angle_roll*sin(delta yaw_angle in radian)

2. Các giải thuật nâng cao

Đi sâu vào các giải thuật tính toán nâng cao hơn, bạn sẽ cần phải tìm hiểu nhiều kiến thức khác nhau, như là cách biểu diễn trạng thái của một vật thể trong không gian 3D một cách chính xác sử dụng: DCM (Direction Cosine Matrix) và Quaternion. Các công cụ toán như ma trận và đạo hàm, ý tưởng của các bộ lọc nhiễu và ước lượng trạng thái. Các kiến thức đó để có  được dùng để xây dựng các bộ lọc từ đơn giản đến phức tạp như: lọc bù, Kalman nhiều trạng thái, bộ lọc Mahony Filter.

Mục đích cuối cùng đó là có thể ước lượng, đo đạc các thông số của robot một cách chính xác, cho việc điều khiển, theo dõi,….

Cảm biến là loại phổ biến nhất cho các ứng dụng hiện nay là: 

  • MPU6050 accelemeter and gyroscope.
  • Magnetometer HMC5883L.
  • Barometer MS5611.

Và cũng có nhiều loại cảm biến khác có độ chính khác cực cao, và giá thành cũng rất đắt tiền, được sử dụng trong các ứng dụng như máy bay dân dụng, robot quân sự…

Các tài liệu tham khảo

https://github.com/wbhu/IMUforUAV

共有:

  • X
  • Facebook
いいね 読み込み中…

Từ khóa » Nguyên Lý Imu