

Lớp MecanumDriveKinematics là một công cụ hữu ích để chuyển đổi giữa một đối tượng ChassisSpeeds và một đối tượng MecanumDriveWheelSpeeds, trong đó chứa vận tốc (velocities) của bốn bánh (wheels) của một robot sử dụng mecanum drive.
Tạo đối tượng Kinematics
Lớp MecanumDriveKinematics chấp nhận bốn tham số constructor, mỗi tham số là vị trí của một bánh xe tương đối so với trung tâm robot (relative to the robot center) dưới dạng Translation2d. Thứ tự các tham số là:
bánh trước trái (front left)
bánh trước phải (front right)
bánh sau trái (back left)
bánh sau phải (back right)
Các vị trí bánh xe phải là relative to the center of the robot.
Giá trị x dương biểu thị di chuyển về phía trước robot.
Code mẫu – Khởi tạo Kinematics (Java)
Chuyển ChassisSpeeds → MecanumDriveWheelSpeeds
Phương thức toWheelSpeeds(ChassisSpeeds speeds) được sử dụng để chuyển một đối tượng ChassisSpeeds thành một đối tượng MecanumDriveWheelSpeeds.
Điều này hữu ích khi bạn có các giá trị:
vận tốc tiến (forward)
vận tốc ngang (sideways)
và vận tốc quay (angular velocity)
và cần tính ra tốc độ riêng từng bánh.
Ví dụ Java – Chuyển từ ChassisSpeeds sang Wheel Speeds
Field-Oriented Drive (Điều khiển theo hướng sân đấu)
Bạn có thể tạo một đối tượng ChassisSpeeds từ bộ vận tốc theo hướng sân đấu (field-relative speeds) và sử dụng nó để lấy wheel speeds từ toWheelSpeeds().
Điều này thường dùng khi bạn muốn robot di chuyển theo hướng trên sân thay vì theo hướng robot (ví dụ: robot đi phía trước sân, không lệ thuộc vào hướng robot hiện tại).
Sử dụng tâm quay tuỳ chỉnh (Custom Center of Rotation)
Trong một vài trường hợp, bạn có thể muốn robot quay quanh một góc tùy chỉnh, ví dụ khi tránh chướng ngại hoặc thực hiện chiến thuật đặc biệt.
Phương thức toWheelSpeeds() cũng chấp nhận tham số thứ hai là tâm quay (center of rotation) dưới dạng Translation2d, so với tâm robot.
Dù robot quay quanh điểm này, thì:
vxvàvyvận tốc vẫn áp dụng cho toàn robotnhưng
omega(vận tốc góc) sẽ được đo từ tâm quay mới này.
Ví dụ: nếu vx = 0, vy = 0, và omega ≠ 0 thì robot sẽ quay quanh bánh hoặc điểm bạn đặt làm tâm quay.
Chuyển ngược lại: MecanumDriveWheelSpeeds → ChassisSpeeds
Bạn cũng có thể dùng đối tượng kinematics để chuyển một đối tượng MecanumDriveWheelSpeeds sang một đối tượng ChassisSpeeds duy nhất bằng phương thức:
Kết quả trả về sẽ chứa:
vxMetersPerSecond: vận tốc tiếnvyMetersPerSecond: vận tốc ngang
Ví dụ Java – Chuyển Wheel Speeds thành ChassisSpeeds
Chú giải thuật ngữ
Mecanum Drive Kinematics: toán học đại diện cho mối quan hệ giữa vận tốc robot tổng thể và vận tốc từng bánh xe mecanum.
ChassisSpeeds: struct/vật chứa vận tốc tổng thể của robot gồm
vx,vy, vàomega.MecanumDriveWheelSpeeds: struct/vật chứa vận tốc riêng của 4 bánh trong mecanum drive.
Translation2d: vectơ vị trí 2D biểu diễn vị trí bánh so với tâm robot.
Field-Oriented Drive: điều khiển robot theo hướng sân đấu thay vì theo hướng robot.
Tâm quay tùy chỉnh (custom center of rotation): điểm robot quay quanh ngoài tâm robot.

