WPILib Kinematics

WPILib Kinematics

Các mô hình động học robot dựa trên thư viện WPILib.

Các mô hình động học robot dựa trên thư viện WPILib.

Level

Advanced

Source

Source

Author

Author

FTC Lib

FTC Lib

Translator

Translator

FTC26749 aDudu

FTC26749 aDudu

Date Published

Date Published

Jan 18, 2026

Jan 18, 2026

package com.arcrobotics.ftclib.kinematics.wpilibkinematics
package com.arcrobotics.ftclib.kinematics.wpilibkinematics

Kinematics là gì?

Bộ kinematics gồm các lớp cho các kiểu truyền động:

  • differential drive (dẫn động vi sai),

  • swerve drive (dẫn động module xoay),

  • mecanum drive (dẫn động bánh Mecanum),

Các lớp kinematics giúp chuyển đổi giữa một đối tượng tổng quát ChassisSpeeds (chứa vận tốc tuyến tính và góc của robot) và vận tốc riêng cho từng loại drivetrain:

  • vận tốc bánh trái/phải cho differential,

  • vận tốc bốn bánh cho mecanum,

  • trạng thái vận tốc & góc cho từng module trong swerve.

Odometry là gì?

Odometry là kỹ thuật sử dụng cảm biến trên robot để ước lượng vị trí của robot trên sân đấu theo thời gian thực.

Trong FTC điều này thường dùng:

  • nhiều encoder (số lượng tùy theo loại truyền động),

  • và có thể thêm gyro để đo hướng quay robot.

Các lớp odometry sử dụng:

  • các lớp kinematics,

  • cùng các dữ liệu tuần hoàn từ người dùng (speedsangles), để tạo ra vị trí robot tương đối theo thời gian.

Odometry trong FTC được dùng như một cách thay thế cho hệ thống odometer mà các đội thường triển khai.

Lớp ChassisSpeeds

Đối tượng ChassisSpeedscốt lõi của WPILib kinematics và odometry.
Nó biểu diễn vận tốc của khung robot qua ba thành phần:

  • vx: vận tốc robot theo trục x (tiến về phía trước).

  • vy: vận tốc robot theo trục y (đi ngang). (Giá trị dương là robot di chuyển sang trái.)

  • omega: vận tốc góc (tốc độ quay) của robot theo radian/giây.

Với drivetrain không holonomic (ví dụ differential drive — không đi ngang),
giá trị vy sẽ luôn = 0 vì robot không thể di chuyển sang ngang. docs.ftclib.org

Tạo Đối tượng ChassisSpeeds

Constructor của ChassisSpeeds rất đơn giản, nhận ba tham số:

  • vx (m/s),

  • vy (m/s),

  • omega (rad/s).

Ví dụ:

// Robot di chuyển 3 m/s tiến thẳng,
// 2 m/s sang phải,
// và quay với tốc độ π rad/s ngược chiều kim đồng hồ.
ChassisSpeeds speeds = new ChassisSpeeds(3.0, -2.0, Math.PI);
// Robot di chuyển 3 m/s tiến thẳng,
// 2 m/s sang phải,
// và quay với tốc độ π rad/s ngược chiều kim đồng hồ.
ChassisSpeeds speeds = new ChassisSpeeds(3.0, -2.0, Math.PI);

Tạo ChassisSpeeds từ Vận tốc theo Tương đối Sân đấu

Bạn có thể tạo đối tượng ChassisSpeeds từ bộ vận tốc liên quan đến sân đấu khi biết hướng hiện tại của robot.

Điều này hữu ích khi lập trình field-oriented control cho swerve hoặc mecanum drive (robot di chuyển theo hướng sân đấu, không theo hướng robot).

Phương thức tĩnh ChassisSpeeds.fromFieldRelativeSpeeds() nhận vào:

  • vx (so với sân đấu),

  • vy (so với sân đấu),

  • omega (tốc độ quay),

  • góc robot hiện tại.

Ví dụ:

// Vận tốc theo sân đấu: 2 m/s về phía đối thủ,
// 2 m/s sang trái,
// tốc độ quay π/2 rad/s,
// robot hiện tại quay 45 độ.
ChassisSpeeds speeds = ChassisSpeeds.fromFieldRelativeSpeeds(
    2.0, 2.0, Math.PI / 2.0,
    Rotation2d.fromDegrees(45.0)
);
// Vận tốc theo sân đấu: 2 m/s về phía đối thủ,
// 2 m/s sang trái,
// tốc độ quay π/2 rad/s,
// robot hiện tại quay 45 độ.
ChassisSpeeds speeds = ChassisSpeeds.fromFieldRelativeSpeeds(
    2.0, 2.0, Math.PI / 2.0,
    Rotation2d.fromDegrees(45.0)
);

Khi đó, phương thức sẽ tính toán vận tốc robot khung (robot frame) tương ứng từ các thông số theo sân đấu.

Chú giải thuật ngữ

  • Kinematics: tập các lớp toán học dùng để chuyển đổi vận tốc giữa robot frame và wheel/module speeds.

  • Odometry: kỹ thuật theo dõi vị trí robot dựa trên cảm biến trong thời gian thực.

  • ChassisSpeeds: struct chứa vận tốc tuyến tính và vận tốc góc của robot.

Field-oriented: điều khiển robot theo hướng field thay vì hướng robot.

ADUDU

A proud team of passionate Robotics Enthusiasts competing in nation-wide Technology competitions in Vietnam, the FIRST Tech Challenge and the FIRST Robotics Competition.

Copyright ©

, all rights reserved

Made by aDudu's Programming Department

made by aDudu

made by aDudu

WPILib Kinematics