this articles is a part of
The FACC'25 event

FACC'25

Gii thiu thư vin cho Odometry

Gii thiu thư vin cho Odometry

Cách cài đặt các thư viện có sẵn cung cấp khả năng sử dụng Odometry và dữ liệu odometry cho các tác vụ khác.

Cách cài đặt các thư viện có sẵn cung cấp khả năng sử dụng Odometry và dữ liệu odometry cho các tác vụ khác.

Level

Intermediate

Source

Source

Author

Author

Aggregate

Aggregate

Translator

Translator

FTC26749 aDudu

FTC26749 aDudu

Date Published

Date Published

Sep 23, 2025

Sep 23, 2025

Intermediate - Cách cài đặt các thư viện có sẵn cung cấp khả năng sử dụng Odometry và dữ liệu odometry cho các tác vụ khác. 

Road Runner là gì?

Road Runner là một thư viện lập kế hoạch chuyển động (motion planning library), được viết cho cuộc thi robot FTC (FTC robotics competition). Được thiết kế chủ yếu cho chuyển động tự động (autonomous robotic movement), nó cho phép thực hiện việc bám theo quỹ đạo phức tạp và tạo ra quỹ đạo mới trong khi vẫn duy trì khả năng kiểm soát vận tốc (velocity) và gia tốc (acceleration). Điều này giúp robot có khả năng bám quỹ đạo chính xác và tiên tiến hơn.

1. Sự khác biệt giữa Road Runner và Pure Pursuit là gì?

Mặc dù thường được so sánh với nhau, Pure Pursuit rất khác với Road Runner và không nên đặt để đối chiếu trực tiếp.

Pure Pursuit là một thuật toán theo dõi và bám quỹ đạo (path tracking and following algorithm) cho phép các hệ truyền động phi holonomic (non-holonomic drive trains) bám theo quỹ đạo đa chiều thông qua việc sử dụng một điểm nhìn trước (look-ahead point).

Ngược lại, Road Runner bao gồm nhiều thuật toán bám quỹ đạo khác nhau, từ Ramsete đến các trường vector dẫn hướng (guided vector fields). Thuật toán Pure Pursuit mặc định thiếu motion profiling (hồ sơ chuyển động), nghĩa là nó không có ràng buộc về vận tốc (velocity) hay gia tốc (acceleration). Vì Pure Pursuit không có điều khiển gia tốc (acceleration control), nên việc lắp đặt hệ đo quán tính bằng bánh chết (dead wheel odometry) trên robot của bạn là điều bắt buộc. Cả hai công cụ đều có thể được sử dụng để bám theo các quỹ đạo phức tạp.

Liên quan một cách gián tiếp, nhưng thực tế thì việc sử dụng Pure Pursuit không được khuyến khích cho hầu hết các trường hợp trong FTC. Phần lớn robot FTC có xu hướng sử dụng truyền động holonomic (mecanum). Pure Pursuit được thiết kế cho truyền động vi sai (differential drive, còn gọi là tank). Ngay cả với truyền động vi sai, Pure Pursuit vẫn kém hơn một bộ điều khiển như Ramsete. Pure Pursuit thực sự chỉ có thể biện minh trong trường hợp bạn không có và cũng không muốn tạo một bộ sinh quỹ đạo (path generator).

Vui lòng tham khảo FTC Discord để có thêm thông tin chi tiết về chủ đề này.

2. BEFORE START

Localization (Định vị)

Định vị là khả năng để robot biết chính xác vị trí hiện tại của nó trong không gian, thường được biểu diễn dưới dạng tọa độ (x, y, hướng θ). Đây là nền tảng để robot di chuyển có mục tiêu, không chỉ dựa vào ước lượng (open-loop control). Trong đa số trường hợp FTC, định vị được thực hiện qua odometry (encoder bánh xe hoặc dead wheels). Ngoài ra, cũng có những phương pháp tiên tiến hơn như VSLAM — ví dụ Intel Realsense T265. Dữ liệu từ odometry được dùng trong các phương trình động học để tính toán vị trí hiện tại. 

Motion Profile (Hồ sơ chuyển động)

Motion profile là đồ thị biểu diễn cách robot thay đổi vận tốc theo thời gian để đạt đến một vị trí hoặc trạng thái xác định. Trong Road Runner, motion profiles thường mô tả đường cong vận tốc giúp robot đạt được vị trí mục tiêu — bạn có thể điều chỉnh các ràng buộc như vận tốc tối đa, gia tốc tối đa... để thiết lập chuyển động mượt và chính xác hơn. 

Open vs Closed Loop Control (Điều khiển mở và điều khiển kín)

  • Open-loop control (điều khiển mở) là phương pháp điều khiển mà không có phản hồi. Bạn chỉ đưa tín hiệu hoặc giá trị ước lượng vào mà không biết liệu robot có thực hiện đúng hay không. Ví dụ: bạn muốn motor quay ở 50% tốc độ, bạn chỉ truyền 50% công suất mà không kiểm tra kết quả thực tế.


  • Closed-loop control (điều khiển kín) thì ngược lại — có sử dụng phản hồi (ví dụ từ encoder, sensor) để điều chỉnh hành vi, từ đó đạt độ chính xác cao hơn.

3. INSTALLATION

CẢNH BÁO

Vì Road Runner đang dần trở thành phần mềm cũ (legacy software), nên phần hướng dẫn cài đặt nhanh (quickstart) có thể không còn phù hợp với phiên bản SDK tối thiểu được phép sử dụng sau mùa giải 2023-24.

Nếu trên Driver Station bạn gặp lỗi thông báo rằng robot controller đã lỗi thời (obsolete), thì hãy tải SDK chính thức từ FIRST và sử dụng Phương pháp cài đặt số 2.

Phương pháp 1: Tải Quickstart

1.Truy cập đường dẫn:
👉 https://github.com/acmerobotics/road-runner-quickstart/tree/quickstart1
(đây là bản quickstart do Iris_TheRainbow duy trì, không phải acmerobotics, nhưng thường được cập nhật nhanh hơn bản chính thức)

2.Nhấn nút màu xanh lá cây to "Code" → Download ZIP để tải về 

VID Hướng Dẫn.mp4

3.Giải nén file vào một vị trí bất kỳ trong thư mục.

4.Mở folder trong Android studio

5.Done! Đã có thể sử dụng Road Runner

Phương pháp 2: Cài đặt Road Runner vào project của bạn

Thay vì tải một project mẫu có sẵn (như ở Method 1), bạn sẽ thêm Road Runner trực tiếp vào project FTC SDK chính thức mà đội bạn đang dùng.

Chúng ta sẽ giả định rằng bạn đang sử dụng cấu trúc thư mục giống như project FTC chính thức mới nhất (phiên bản 9.1 tại thời điểm viết tài liệu).
Bạn có thể tải project mẫu chuẩn của FTC tại đây (link trong tài liệu gốc).

2. Bây giờ, hãy tìm file build.dependencies.gradle nằm ở thư mục gốc của project.

3. Trong file build.dependencies.gradle (ở thư mục gốc project):

👉 Thêm đoạn sau vào cuối khối repositories: maven { url = 'https://maven.brott.dev/' }

Trong cùng file đó, thêm đoạn sau vào cuối khối dependencies: implementation 'com.acmerobotics.dashboard:dashboard:0.4.15'

WARNING:

  • Những hướng dẫn này chính xác tại thời điểm 17/02/2024.

  • Phiên bản số (0.4.15) có thể sẽ không còn đúng khi bước sang mùa giải FTC 2024–2025.

  • Để có field diagram mới nhất trong Dashboard, bạn cần truy cập lại trang web gốc và dùng phiên bản cập nhật mới nhất.

4.Hãy tìm file TeamCode/build.gradle – cụ thể là file nằm bên trong thư mục TeamCode 

5.Trong file TeamCode/build.gradle, thêm các dependency sau vào trong khối dependencies:

implementation 'org.apache.commons:commons-math3:3.6.1'

implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.7'

implementation 'com.acmerobotics.roadrunner:core:0.5.6'

6. Truy cập vào repository theo đường dẫn được cung cấp. Sau đó bạn có 2 cách tải về:

Nếu máy bạn đã cài sẵn Git: chạy lệnh sau trong terminal/command prompt:

git clone --single-branch -b quickstart1 https://github.com/acmerobotics/road-runner-quickstart.git

Nếu không dùng Git: nhấn nút màu xanh lá cây Code, rồi chọn Download ZIP để tải file nén về máy.

VI. Giới thiệu (Introduction)

1. Pedro Pathing là gì? (What is Pedro Pathing?)

Pedro Pathing là một trình theo dõi đường đi (path follower) ban đầu được phát triển bởi đội FTC 10158 nhằm cách mạng hóa khả năng dẫn đường tự động (autonomous navigation) trong robot. Pedro Pathing sử dụng đường cong Bézier (Bézier curves), điều khiển PIDF (PIDF control), chỉnh sửa lực hướng tâm (centripetal force correction), và nhiều kỹ thuật khác để mang lại khả năng theo dõi đường đi mượt mà, nhanh chóng và chính xác.

Việc sử dụng Pedro Pathing cho các quy trình tự động (autonomous routines) của bạn cho phép:

  • Thực thi đường đi nhanh hơn (Faster path execution): Pedro Pathing sử dụng bốn vector để tính toán công suất bánh xe tối ưu.

  • Chỉnh sửa khi có nhiễu loạn (Correction for disturbances): Vì quá trình định vị (localization) cho phép Pedro Pathing biết được vị trí robot của bạn, nó có thể hiệu chỉnh lại khi bị nhiễu loạn và đưa robot trở lại đúng đường đi.

  • Tạo đường đi tức thì (Creating paths on-the-fly): Vì Pedro Pathing sử dụng điều khiển PID, nó có thể ngay lập tức di chuyển đến bất kỳ vị trí nào.

Bất kể đội của bạn giỏi đến đâu, Pedro Pathing đều có thể cung cấp cho bạn những công cụ cần thiết để tạo ra các chế độ tự động (autos) chất lượng cao, nhanh và ổn định.

2. Điều kiện tiên quyết (Prerequisites)

Để sử dụng Pedro Pathing, bạn phải:

  • Có một hệ thống truyền động đa hướng (omnidirectional drive), chẳng hạn như mecanum, x-drive, hoặc swerve. Điều này bao gồm hầu hết các loại truyền động ngoại trừ tank.

  • Có một dạng hệ thống định vị (localization). Điều này có thể là dead wheels, goBILDA Pinpoint, SparkFun OTOS, hoặc các lựa chọn khác. Nếu bạn không muốn mua thêm thiết bị, bạn có thể sử dụng encoder của động cơ truyền động (drive motor encoders).

  • Đang sử dụng Android Studio. Pedro Pathing không hoạt động với OnBot Java hoặc Blocks. Nếu bạn chưa dùng Android Studio, bạn nên thử!

3. Tinh chỉnh (Tuning)

Để Pedro Pathing hoạt động đúng với robot của bạn, trước tiên nó phải được tinh chỉnh (tuned). Quá trình này được thiết kế để rất dễ tiếp cận và thường chỉ mất tối đa vài ngày.

Pedro Pathing cũng yêu cầu có định vị (localization), tức là biết được vị trí robot của bạn trên sân. Có rất nhiều dạng định vị để bạn lựa chọn.

4. Cài đặt Pedro Pathing (Installing Pedro Pathing)

Có hai cách để cài đặt Pedro Pathing:

Sử dụng Quickstart (Using the Quickstart)

Quickstart là cách dễ nhất để cài đặt Pedro Pathing.

Trong Android Studio, đi đến Main Menu → File → New → Project from Version Control. Với URL, nhập: https://github.com/Pedro-Pathing/Quickstart.git.

HOẶC chạy lệnh:

git clone https://github.com/Pedro-Pathing/Quickstart.git

Đảm bảo bạn đã cài đặt git trước. Xong! Bạn đã cài đặt thành công Pedro Pathing.

Thủ công (Manually)

Trong file build.dependencies.gradle, thêm đoạn sau vào khối repositories { }:

maven { url = 'https://maven.pedropathing.com' }

maven { url = "https://mymaven.bylazar.com/releases" }

Sau đó, thêm đoạn sau vào khối dependencies { }:

implementation 'com.pedropathing:ftc:2.0.1'

implementation 'com.pedropathing:telemetry:0.0.6'

implementation 'com.bylazar:fullpanels:1.0.2'

Tiếp theo, thực hiện Gradle sync bằng cách nhấn "sync now" trong banner màu xanh vừa xuất hiện.

Sau đó, đi tới File → Project Structure → Modules và thay đổi Compile Sdk Version thành 34 cho cả FtcRobotController và TeamCode. Sau đó nhấn Apply và OK.

Cuối cùng, sao chép các file từ gói pedroPathing trong quickstart vào trong mã nguồn của bạn.

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

Giới thiệu thư viện cho Odometry