

Người dùng có thể sử dụng các lớp kinematics cho mecanum drive để thực hiện odometry. FTCLib/WPILib chứa một lớp MecanumDriveOdometry có thể được sử dụng để theo dõi vị trí của một robot sử dụng mecanum drive trên sân đấu dựa vào dữ liệu từ các bộ encoder (encoder) ở từng bánh và gyro (gyroscope) để biết hướng robot.
Lưu ý: Vì phương pháp này chỉ sử dụng encoders và gyro, nên độ ước lượng vị trí (pose) của robot sẽ bị sai lệch (drift) theo thời gian, đặc biệt khi robot va chạm trong thi đấu. Tuy nhiên, odometry thường rất chính xác trong giai đoạn autonomous.
Khởi tạo đối tượng Odometry
Lớp MecanumDriveOdometry yêu cầu ba tham số bắt buộc và một tham số tùy chọn:
Tham số bắt buộc:
Kinematics object của cơ cấu mecanum (MecanumDriveKinematics) đại diện cho robot mecanum drive của bạn.
Góc robot hiện tại (do gyro cung cấp) dưới dạng một đối tượng
Rotation2d.Vị trí ban đầu của các bánh xe (wheel positions) dưới dạng đối tượng
MecanumDriveWheelPositions— chứa vị trí các bánh (quãng đường) theo đơn vị mét. FIRST Robotics Competition Documentation
Tham số tùy chọn:
Pose ban đầu của robot trên sân đấu, dưới dạng một đối tượng
Pose2d. Nếu không cung cấp, robot được giả định bắt đầu tại:
x=0,y=0,θ=0x = 0,\quad y = 0,\quad \theta = 0x=0,y=0,θ=0
Trong đó:x,ylà tọa độ vị trí theo mặt phẳng sân;θ(theta) là góc quay robot. FIRST Robotics Competition Documentation
Quy ước góc:
0độ/radian biểu thị robot đang hướng trực tiếp về phía trạm đồng minh đối diện.Khi robot quay sang trái (quay ngược chiều kim đồng hồ), giá trị gyro nên tăng lên.
Code mẫu – Khởi tạo Odometry (Java)
Cập nhật vị trí robot theo thời gian
Để robot liên tục theo dõi vị trí trong khi hoạt động, bạn cần gọi phương thức update(...) của đối tượng odometry mỗi chu kỳ điều khiển (thường trong periodic() của subsystem).
Phương thức update(...) nhận các tham số:
Góc robot hiện tại (
Rotation2d) từ gyro.Trạng thái các bánh xe (
MecanumDriveWheelPositions) — vị trí encoder của 4 bánh.
Phương thức sẽ trả về một đối tượng Pose2d đại diện cho pose đã được cập nhật của robot.
Mẫu Java – Cập nhật trong periodic()
Reset lại vị trí robot
Bạn có thể reset pose robot nếu cần, ví dụ khi bắt đầu autonomous hoặc sau khi đặt lại gyro:
Reset Odometry (Java):
Lưu ý: Nếu bạn reset gyro, phải gọi resetPose(...) ngay sau đó với góc gyro mới để odometry không bị lệch.
Thuật ngữ kỹ thuật (chú giải)
Odometry: kỹ thuật dùng dữ liệu encoder và gyro để ước lượng vị trí robot theo thời gian.
MecanumDriveOdometry: lớp theo dõi pose robot mecanum drive.
MecanumDriveKinematics: lớp mô tả quan hệ giữa ChassisSpeeds và vận tốc bánh trong cơ cấu mecanum.
Rotation2d: biểu diễn góc quay robot trong mặt phẳng 2D.
Pose2d: biểu diễn pose robot gồm
(x, y, θ).MecanumDriveWheelPositions: thể hiện quãng đường (position) của từng bánh xe mecanum.
Gyro/Gyroscope: cảm biến đo góc quay robot.

