Atlas Robotics
AMR Drive SystemTrung bình

Mecanum Drive trong AMR: đồng bộ 4 bánh và những lỗi cơ khí thường gặp

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

Mecanum Drive trong AMR: đồng bộ 4 bánh và những lỗi cơ khí thường gặp
4 bánh Mecanum bố trí kiểu chữ X, cần đồng bộ chính xác khi đi ngang

Bài Động học Mecanum ở chuyên mục Robotics Fundamentals đã giải đầy đủ ma trận inverse/forward kinematics 4 bánh. Bài này không lặp lại phần toán đó — nó tập trung vào câu hỏi thực tế khi lắp ráp: 4 động cơ độc lập đồng nghĩa 4 nguồn sai số độc lập, và điều đó đòi hỏi gì khác so với Differential Drive 2 bánh đã học ở bài trước.

Khái niệm chính

Một AMR Mecanum cần gấp đôi số lượng phần cứng truyền động so với Differential Drive:

  • 4 bộ động cơ + driver thay vì 2 — chi phí và không gian lắp đặt tăng đáng kể
  • 4 encoder — mỗi bánh cần phản hồi độc lập cho vòng PID riêng
  • Không cần bánh đỡ (caster) — 4 điểm tiếp xúc đã đủ ổn định, khác Differential Drive cần thêm caster để cân bằng

Nguyên lý hoạt động

Mixing 4 bánh mở rộng trực tiếp từ nguyên lý mixing 2 bánh đã học ở bài Differential Drive, chỉ khác số chiều đầu vào (vx, vy, ω thay vì chỉ v, ω):

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

(công thức đầy đủ và cách suy ra đã trình bày ở bài Động học Mecanum — đây là dạng dùng trực tiếp trong firmware)

Điểm khác biệt cốt lõi so với Differential Drive: mỗi bánh trong 4 bánh này cần một vòng PID riêng, và cả 4 vòng PID phải đồng bộ cùng tần số, cùng chu kỳ cập nhật. Ở Differential Drive, lệch nhẹ giữa 2 bánh chỉ gây robot đi hơi cong; ở Mecanum, lệch giữa 4 bánh (đặc biệt khi đi ngang thuần tuý) gây trượt góc và lệch hướng rõ rệt hơn nhiều — vì chuyển động đi ngang phụ thuộc hoàn toàn vào việc 4 bánh tạo lực tổng hợp chính xác theo đúng tỉ lệ tính toán.

Kiến thức kỹ thuật

Công thức

Sai số đồng bộ giữa các driver (thời điểm cập nhật PWM lệch nhau) tích luỹ thành sai số hướng di chuyển thực tế — nghiêm trọng hơn nhiều so với Differential Drive vì Mecanum có 4 nguồn sai số độc lập thay vì 2:

Nếu 1 trong 4 bánh trễ Δt so với 3 bánh còn lại khi đổi setpoint,
trong khoảng Δt đó lực tổng hợp bị lệch khỏi hướng mong muốn

VD: lệnh đi ngang thuần tuý (vy), nếu bánh v1 trễ 20ms so với v2, v3, v4
→ trong 20ms đó, robot chịu một thành phần lực xoay không mong muốn (ω ≠ 0 ngoài ý muốn)
→ tích luỹ qua nhiều chu kỳ gây robot đi ngang bị lệch hướng dần, không đi thẳng theo trục vy

Thông số

Yếu tốDifferential Drive (2 bánh)Mecanum Drive (4 bánh)
Số vòng PID độc lập24
Độ nhạy với lệch đồng bộThấp (chỉ gây cong nhẹ)Cao (gây trượt góc rõ rệt)
Độ nhạy với mòn/kẹt bụi cơ khíThấpCao (con lăn nghiêng 45° dễ kẹt bụi/mòn không đều)
Yêu cầu độ chính xác lắp rápTrung bìnhCao (4 bánh phải cùng đường kính hiệu dụng)

Ứng dụng thực tế

Trong thực tế lắp ráp robot Mecanum (như dự án Robot Mecanum và Atlas A2 trong showcase của trang này), một nguồn sai số thường bị đánh giá thấp là đường kính hiệu dụng không đồng đều giữa 4 bánh — chỉ cần một bánh mòn nhiều hơn 1-2mm đường kính so với 3 bánh còn lại, cùng một giá trị PWM sẽ tạo ra tốc độ dài khác nhau giữa các bánh, gây lệch hướng có hệ thống dù toàn bộ code mixing/PID hoàn toàn đúng. Đây là lý do robot Mecanum nghiêm túc cần hiệu chỉnh (calibration) định kỳ đường kính bánh thực tế, không chỉ dựa vào thông số danh nghĩa nhà sản xuất.

Ví dụ thực tế

lx, ly = 0.15, 0.12  # nua khoang cach truc x, y (m)

def mecanum_mixing(vx, vy, omega):
    k = lx + ly
    v1 = vx - vy - omega * k / 2  # truoc-trai
    v2 = vx + vy + omega * k / 2  # truoc-phai
    v3 = vx + vy - omega * k / 2  # sau-trai
    v4 = vx - vy + omega * k / 2  # sau-phai
    return v1, v2, v3, v4

# Lenh: di ngang thuan tuy sang phai, khong tien khong xoay
v1, v2, v3, v4 = mecanum_mixing(vx=0, vy=0.3, omega=0)
print(f"v1={v1:.2f}  v2={v2:.2f}  v3={v3:.2f}  v4={v4:.2f}")
Output:
v1=-0.30  v2=0.30  v3=0.30  v4=-0.30

Đúng như dự đoán ở phần Nguyên lý: bánh trước-trái và sau-phải quay một chiều, bánh trước-phải và sau-trái quay chiều ngược lại — cả 4 driver cần nhận lệnh PWM tương ứng gần như đồng thời để lực tổng hợp thực sự hướng thẳng theo trục vy, không lệch góc.

Lỗi thường gặp

  • Không đồng bộ chu kỳ cập nhật giữa 4 vòng PID — như tính ở mục Công thức, gây lực tổng hợp lệch hướng, đặc biệt rõ khi đi ngang thuần tuý.
  • Bỏ qua chênh lệch đường kính hiệu dụng giữa các bánh do mòn không đều — gây lệch hướng có hệ thống dù code hoàn toàn đúng, cần hiệu chỉnh định kỳ thay vì chỉ tin thông số danh nghĩa.
  • Lắp nhầm hướng nghiêng con lăn giữa các bánh — 4 bánh Mecanum có 2 kiểu nghiêng đối xứng nhau (trái/phải), lắp nhầm vị trí khiến robot phản ứng hoàn toàn sai với lệnh mixing dù công thức tính đúng.
  • Không vệ sinh định kỳ con lăn (dễ kẹt bụi/dị vật) — con lăn nhỏ nghiêng 45° dễ kẹt bụi/sợi vải hơn nhiều so với bánh trơn thông thường, kẹt một phần con lăn gây ma sát không đều và trượt cục bộ.

Kết luận

Mixing 4 bánh Mecanum là bước mở rộng trực tiếp từ mixing 2 bánh Differential Drive, nhưng cái giá phải trả không chỉ nằm ở công thức phức tạp hơn — nó nằm ở việc 4 nguồn sai số độc lập (đồng bộ PID, mòn không đều, kẹt con lăn) cộng dồn thành sai số hướng đi rõ rệt hơn nhiều so với 2 bánh. Bài tiếp theo trong chuyên mục đi vào Motor Control — vòng điều khiển PID cụ thể áp dụng cho cả 2 kiểu hệ truyền động vừa học.

Mecanum Drive trong AMR: đồng bộ 4 bánh và những lỗi cơ khí thường gặp — Atlasbot