Atlas Robotics
Động học RobotTrung bình

Động học robot Mecanum: vì sao 4 bánh xoay được theo mọi hướng

Atlasbot · 17/8/2026 · 11 phút đọc

Động học robot Mecanum: vì sao 4 bánh xoay được theo mọi hướng
4 bánh Mecanum với con lăn nghiêng 45° tạo lực tổng hợp theo mọi hướng

Bài Differential Drive đã nêu rõ hạn chế: robot vi sai không đi ngang được, luôn phải xoay đầu trước khi dịch chuyển sang hướng khác. Bánh Mecanum — dùng trong dự án Robot Mecanum tự hành và Atlas A2 của trang này — giải quyết đúng hạn chế đó, cho phép robot đi ngang, đi chéo, xoay tại chỗ mà không cần xoay thân trước.

Khái niệm chính

Khác bánh thường (bề mặt tiếp xúc phẳng, chỉ sinh lực theo đúng hướng lăn), bánh Mecanum có hàng loạt con lăn nhỏ gắn nghiêng 45° quanh vành bánh. Khi bánh quay, lực ma sát tại điểm tiếp xúc không sinh ra theo hướng lăn của bánh, mà theo hướng vuông góc với trục con lăn — tức lệch 45° so với hướng quay thông thường.

Bốn bánh Mecanum trên một robot được lắp theo hai hướng nghiêng đối xứng nhau (kiểu chữ X nhìn từ trên xuống) — với 4 vector lực lệch 45° khác nhau này, việc phối hợp tốc độ 4 bánh cho phép tổng hợp ra lực theo bất kỳ hướng nào trong mặt phẳng.

Nguyên lý hoạt động

Robot vi sai chỉ điều khiển độc lập được 2 đại lượng (v, ω) từ 2 bánh. Robot Mecanum với 4 bánh điều khiển độc lập được 3 bậc tự do cùng lúc: tiến/lùi (vx), đi ngang (vy), và xoay (ω):

v1 = vx − vy − ω·(lx+ly)/2      # bánh trước-trái
v2 = vx + vy + ω·(lx+ly)/2      # bánh trước-phải
v3 = vx + vy − ω·(lx+ly)/2      # bánh sau-trái
v4 = vx − vy + ω·(lx+ly)/2      # bánh sau-phải

Trong đó lx, ly là nửa khoảng cách giữa các bánh theo hai trục. Bốn công thức này là inverse kinematics của robot Mecanum — biết vận tốc mong muốn của cả robot, suy ra tốc độ cần đặt cho từng bánh riêng lẻ.

Tóm lại: Đổi lại khả năng đi ngang, robot Mecanum phải điều khiển đồng bộ chính xác cả 4 bánh — sai lệch nhỏ giữa các bánh gây trượt nhiều hơn robot vi sai, đây là lý do odometry của robot Mecanum trong thực tế thường kém chính xác hơn odometry robot vi sai cùng cỡ.

Đặt vx = 0, ω = 0, chỉ còn vy ≠ 0:

v1 = −vy      v2 = +vy      v3 = +vy      v4 = −vy

Hai bánh chéo nhau quay cùng chiều, hai bánh chéo còn lại quay ngược chiều — không có công thức nào tương tự khả thi với robot vi sai. Đây chính là điểm khác biệt cơ khí cốt lõi giải thích toàn bộ ưu điểm "đi mọi hướng" của Mecanum.

Kiến thức kỹ thuật

Công thức

Chiều ngược lại — biết tốc độ 4 bánh đo được (từ encoder), tính ra vx, vy, ω thực tế cho odometry — là forward kinematics của Mecanum, phức tạp hơn robot vi sai vì hệ có 4 phương trình nhưng chỉ 3 ẩn số (dư 1 phương trình):

Hệ 4 phương trình, 3 ẩn (vx, vy, ω) — dùng ma trận giả nghịch đảo (pseudo-inverse)
thay vì nghịch đảo ma trận thông thường (chỉ áp dụng được cho ma trận vuông)

[vx, vy, ω]ᵀ = (JᵀJ)⁻¹Jᵀ × [v1,v2,v3,v4]ᵀ   (J là ma trận hệ số 4×3 ở trên)

Phương trình dư (4 thay vì 3) thực ra là lợi thế — cho phép ước lượng và bù trừ một phần trượt bánh bằng cách so sánh chéo giữa 4 phép đo thay vì tin tuyệt đối vào bất kỳ bánh nào.

Thông số

Thông sốGiá trị điển hình
Góc nghiêng con lăn45° (chuẩn phổ biến nhất)
Khoảng cách lx, ly (AMR cỡ nhỏ-trung)0.15 – 0.3m mỗi nửa trục

Ứng dụng thực tế

Khả năng đi ngang (strafe) của Mecanum đặc biệt giá trị trong không gian hẹp như lối đi giữa các kệ hàng trong nhà kho — robot vi sai cần thực hiện thao tác xoay-tiến-xoay (3-point turn) nhiều bước để căn chỉnh vào đúng vị trí đỗ, trong khi robot Mecanum chỉ cần trượt ngang trực tiếp vào đúng vị trí mà không cần xoay thân, tiết kiệm đáng kể thời gian và không gian thao tác — đây chính là lý do các dự án AMR chở hàng trong không gian hẹp (như Atlas A2) ưu tiên cấu hình Mecanum dù đánh đổi bằng độ phức tạp điều khiển và độ chính xác odometry thấp hơn.

Ví dụ thực tế

def mecanum_ik(vx, vy, omega, lx, ly):
    L = (lx + ly) / 2
    v1 = vx - vy - omega * L  # trước-trái
    v2 = vx + vy + omega * L  # trước-phải
    v3 = vx + vy - omega * L  # sau-trái
    v4 = vx - vy + omega * L  # sau-phải
    return v1, v2, v3, v4

# Di chuyển chéo: tiến 0.3 m/s đồng thời sang phải 0.2 m/s, không xoay
v1, v2, v3, v4 = mecanum_ik(vx=0.3, vy=-0.2, omega=0, lx=0.2, ly=0.15)
print(f"v1={v1:.2f} v2={v2:.2f} v3={v3:.2f} v4={v4:.2f}")
Output:
v1=0.50 v2=0.10 v3=0.10 v4=0.50

Bốn bánh chạy 2 tốc độ khác nhau (0.5 và 0.1 m/s) để tổng hợp ra chuyển động chéo — không bánh nào quay theo đúng hướng chuyển động thực tế của robot, minh chứng trực quan cho cách 4 lực lệch 45° tổng hợp thành 1 hướng di chuyển bất kỳ.

Lỗi thường gặp

  • Lắp nhầm hướng con lăn khi thay bánh — bánh Mecanum có tính "thuận/nghịch" (trái và phải là ảnh gương của nhau, không hoán đổi được) — lắp nhầm bên phá vỡ hoàn toàn công thức kinematics, robot di chuyển sai hướng dù code hoàn toàn đúng.
  • Dùng trên sàn không phù hợp — các con lăn nhỏ trên bánh Mecanum cần bề mặt cứng, phẳng, ít ma sát cản trở lăn tự do — sàn thảm hoặc gồ ghề khiến con lăn không lăn đúng cách, phá vỡ giả định toán học đằng sau toàn bộ công thức.
  • Đánh giá thấp sai số odometry so với robot vi sai — như đã nói ở phần Nguyên lý hoạt động, trượt bánh nhiều hơn đáng kể — robot Mecanum thường cần hiệu chỉnh SLAM/AMCL thường xuyên hơn để bù sai số tích luỹ nhanh hơn.
  • Nhầm chiều dương của vy — quy ước "dương" cho trục y (trái hay phải) khác nhau tuỳ tài liệu/thư viện — luôn kiểm tra quy ước trước khi ghép code điều khiển từ nguồn khác, nhầm dấu khiến robot đi ngang ngược hướng mong muốn.

Kết luận

Robot Mecanum đạt được khả năng di chuyển đa hướng nhờ cấu tạo con lăn nghiêng 45° đặc biệt, đổi 2 bậc tự do của robot vi sai lấy 3 bậc tự do độc lập — đánh đổi bằng độ phức tạp điều khiển 4 bánh đồng bộ và độ chính xác odometry thấp hơn do trượt bánh nhiều hơn. Đây cũng là bài cuối cùng của chuyên mục Động học Robot — Forward/Inverse Kinematics cho cả robot vi sai lẫn Mecanum là nền tảng trực tiếp cho chuyên mục tiếp theo: Điều khiển Robot, nơi các công thức động học này được đưa vào vòng lặp điều khiển thời gian thực.

Động học robot Mecanum: vì sao 4 bánh xoay được theo mọi hướng — Atlasbot