IMU trong AMR: phát hiện trượt bánh mà odometry không thấy được
Atlasbot · 22/8/2026 · 11 phút đọc
Chuyên mục Sensor & Perception đã có loạt bài riêng giải thích IMU là gì, accelerometer và gyroscope đo gì, cách hiệu chuẩn. Bài này không nhắc lại nguyên lý cảm biến — thay vào đó tập trung đúng câu hỏi đặc thù của AMR: IMU đóng vai trò gì trong kiến trúc phần cứng robot di động, và tại sao gần như mọi AMR nghiêm túc đều fusion IMU với encoder thay vì chỉ dùng một trong hai.
Khái niệm chính
Trong kiến trúc AMR, IMU đảm nhiệm 3 vai trò cụ thể mà encoder một mình không làm được:
- Phát hiện nghiêng/rung — cảnh báo khi robot đi qua bề mặt không bằng phẳng, có nguy cơ lật (liên quan trực tiếp tới bài toán ổn định đã nêu ở bài Các loại AMR)
- Cung cấp vận tốc góc độc lập — gyro đo trực tiếp tốc độ xoay của thân robot, không phụ thuộc vào giả định "bánh không trượt" như odometry từ encoder
- Phát hiện trượt bánh (wheel slip) — đây là vai trò quan trọng nhất trong AMR thực tế, trình bày chi tiết ở phần dưới
Nguyên lý hoạt động
Odometry từ encoder (đã học ở bài Encoder) giả định ngầm rằng bánh xe không trượt — quãng đường tính từ số vòng quay bánh xe chỉ đúng khi bánh thực sự lăn trên mặt sàn, không quay tại chỗ do mất độ bám (sàn trơn, tải lệch, gia tốc quá đột ngột).
IMU cung cấp một nguồn dữ liệu độc lập, không phụ thuộc giả định đó: gia tốc kế đo trực tiếp gia tốc thực tế của thân robot. Khi 2 nguồn dữ liệu — vận tốc suy ra từ encoder và gia tốc đo từ IMU — mâu thuẫn nhau đáng kể, đó là dấu hiệu rõ ràng của trượt bánh. Bộ lọc EKF (đã học ở chuyên mục Robotics Fundamentals, phần Localization) là nơi hợp nhất 2 nguồn dữ liệu này thành một ước lượng vị trí đáng tin cậy hơn từng nguồn riêng lẻ.
Kiến thức kỹ thuật
Công thức
Phát hiện trượt bánh bằng cách so sánh vận tốc dự đoán từ encoder với vận tốc suy ra từ tích phân gia tốc IMU:
v_odom = ω_bánh × r (từ encoder, giả định không trượt)
v_imu(t) = v_imu(t-1) + a_imu × Δt (tích phân gia tốc đo được từ IMU)
Nếu |v_odom − v_imu| > ngưỡng_trượt → nghi ngờ bánh đang trượt,
giảm độ tin cậy (trọng số) của odometry trong bộ lọc EKF tại thời điểm đó
Thông số
| Loại IMU | Số bậc tự do (DOF) | Phù hợp |
|---|---|---|
| 6-DOF (accel + gyro, VD: MPU6050) | 6 | AMR cỡ nhỏ-vừa, đủ cho phát hiện trượt + fusion cơ bản |
| 9-DOF (thêm magnetometer) | 9 | Cần thêm hướng la bàn tuyệt đối, môi trường ít nhiễu từ |
Ứng dụng thực tế
Trong hệ thống ROS2 thực tế, package robot_localization chạy EKF hợp nhất dữ liệu /odom (từ encoder) và /imu (gia tốc + vận tốc góc) thành một ước lượng vị trí mượt và đáng tin cậy hơn — đây là ứng dụng trực tiếp của nguyên lý đã nêu ở bài EKF tại chuyên mục Robotics Fundamentals, áp dụng cụ thể vào phần cứng AMR. Vị trí lắp đặt IMU cũng quan trọng không kém thuật toán: gắn IMU càng gần trọng tâm robot, dữ liệu gia tốc/vận tốc góc đo được càng phản ánh đúng chuyển động thực của toàn thân robot, thay vì bị nhiễu bởi hiệu ứng đòn bẩy (lever arm) khi gắn lệch xa trọng tâm.
Ví dụ thực tế
Kịch bản: robot lệnh chạy tiến với vận tốc bánh đo được từ encoder v_odom = 0.3 m/s,
nhưng bánh đang ở trên vũng dầu loang, mất độ bám
IMU đo gia tốc gần như 0 trong 1 giây liên tục
→ v_imu ước lượng ≈ 0 m/s (robot thực tế gần như đứng yên)
So sánh: |v_odom − v_imu| = |0.3 − 0| = 0.3 m/s > ngưỡng_trượt (VD: 0.1 m/s)
→ Hệ thống phát hiện trượt bánh, giảm trọng số odometry trong EKF,
dựa nhiều hơn vào IMU + dữ liệu LiDAR scan-matching cho tới khi bám lại sàn
Nếu không có bước phát hiện này, robot sẽ tin rằng mình đã di chuyển 0.3m dù thực tế đứng yên — sai số này cộng dồn rất nhanh vào bản đồ định vị nếu xảy ra lặp lại nhiều lần.
Lỗi thường gặp
- Gắn IMU xa trọng tâm robot hoặc gần động cơ rung mạnh — dữ liệu gia tốc/vận tốc góc bị nhiễu bởi rung động cơ học, không phản ánh đúng chuyển động thực của toàn thân robot.
- Chỉ dùng odometry mà không fusion với IMU — như ví dụ trên, robot sẽ không phát hiện được trượt bánh, dẫn tới sai số vị trí tích luỹ nhanh mà không có cảnh báo.
- Bỏ qua drift của gyro theo thời gian — vận tốc góc từ gyro có sai số tích luỹ dần (drift) nếu chỉ tích phân đơn thuần không có cơ chế hiệu chỉnh — đây là lý do EKF thường kết hợp thêm nguồn dữ liệu khác (magnetometer, hoặc so khớp bản đồ) để giới hạn drift.
- Không hiệu chuẩn IMU trước khi lắp vào robot — bias và độ lệch trục chưa hiệu chuẩn khiến dữ liệu gia tốc/góc sai lệch có hệ thống, ảnh hưởng trực tiếp độ chính xác phát hiện trượt bánh.
Kết luận
IMU trong AMR không chỉ là "cảm biến đo góc nghiêng" như thường nghĩ ban đầu — kết hợp với encoder qua EKF, nó là công cụ chính để phát hiện trượt bánh, một sai số mà odometry đơn thuần hoàn toàn không nhận ra được. Vị trí lắp đặt gần trọng tâm và hiệu chuẩn đúng cách quyết định chất lượng dữ liệu này. Bài tiếp theo trong chuyên mục đi vào Bumper và Emergency Stop — lớp bảo vệ vật lý cuối cùng khi mọi cảm biến khác đều không kịp phản ứng.