this articles is a part of
The FACC'25 event

FACC'25

Các kĩ thut vi April Tag

Các kỹ thuật để xử lý dữ liệu từ AprilTags và biến đổi hình ảnh phục vụ thu thập dữ liệu.

Level

Intermediate

Source

Author

Aggregate

Translator

FTC26749 aDudu

Date Published

Sep 23, 2025

Pipeline

Pipeline AprilTag cơ bản gồm các bước chính:

  • Tiền xử lý: chuyển sang grayscale, có thể cân bằng sáng hoặc làm mờ nhẹ để giảm nhiễu → thẻ hiện rõ hơn.

  • Tìm cạnh và đường viền: Máy tính sẽ quét ảnh và tìm các cạnh sáng/tối và nhóm các cạnh lại thành hình khối có 3 cạnh vì AprilTag là hình vuông .

  • Xác định góc thẻ: Khi đã có hình vuông thì ta sẽ cần tìm chính xác 4 góc của nó. Ở đây ta dùng kỹ thuật subpixel refinement – Nghĩa là không chỉ lấy vị trí góc ở pixel gần nhất (ví dụ 25, 43) mà có thể tính đến phần thập phân (25.3, 43.8). Điều này giúp đọc thẻ chính xác hơn và nhất là khi ảnh mờ.

  • Đọc lưới bit trong thẻ (Sampling): Mỗi AprilTag giống như một mã vạch hình vuông, bên trong là một lưới ô vuông trắng/đen. Máy tính sẽ “quét” từng ô theo chuẩn của family (ví dụ 36h11) để lấy ra chuỗi bit (0/1).

  • Giải mã ID và kiểm tra lỗi: Chuỗi bit vừa đọc được sẽ được giải mã thành một số ID duy nhất (ví dụ Tag #17). Tiếp tới, ta sẽ dùng thuật toán kiểm tra bằng Hamming distance/parity (nếu một vài ô bị đọc sai (do nhiễu hoặc mờ), nó vẫn sửa được nên nhờ vậy mà robot không dễ bị nhầm một thẻ này thành thẻ khác.

  • Tính vị trí và hướng của thẻ (Pose estimation): Từ 4 góc (2D trong ảnh), ta có thể suy ra vị trí & hướng 3D của thẻ ngoài đời thật. Có 2 cách chính:

    1. Homography: Phép biến đổi để ánh xạ hình vuông trong ảnh sang hình vuông thật. Nhanh nhưng không cho thông tin độ sâu tốt.

    2. solvePnP (OpenCV): dùng kích thước thẻ thật + thông số camera → tính được rvec (hướng thẻ xoay như nào) và tvec (khoảng cách từ camera đến thẻ (x,y,z)).
      Ví dụ: Nếu tvec = [0.5, 0.3, 1.2] → Thẻ nằm lệch 0.5m sang bên trái, thẻ nằm cao hơn camera 0.3m, và cách camera 1.2m phía trước

Lưu ý: các bước này đã được tối ưu trong thư viện apriltag (AprilRobotics) để đạt tốc độ và độ chính xác cao. Hiểu ý nghĩa từng bước giúp đội biết tuning (ví dụ contrast vs threshold ảnh hưởng bước 2–4).

Hình ảnh gốc: Hình ảnh chưa qua xử lý từ camera, đơn giản là một mảng các giá trị tương ứng với màu sắc và độ sáng của từng pixel.

  • Loại bỏ màu

  • Giảm mẫu (Decimate)

  • Ngưỡng thích ứng (Adaptive Threshold)

  • Phân vùng (Segmentation)

  • Phát hiện tứ giác (Quad Detection)

  • Giải mã ID

  • Khớp tứ giác ngoài (Fit External Quad)

Kỹ thuật Xử lý: Mặc dù hầu hết các đội thi không phải tự triển khai code để nhận dạng AprilTags trong hình ảnh từ camera, nhưng việc biết những điều cơ bản về cách các thư viện nền tảng hoạt động là hữu ích.

Pose Estimation và hệ tọa độ

Để ứng dụng pose vào robot (ví dụ: di chuyển đến vị trí cách tag 30cm), cần biết cách biến đổi giữa các frame.

1. Kí hiệu

2. Tính toán tọa độ Tag trong Robot Frame

3. Example

Chuyển pose sang robot frame

Chú ý: kiểm tra kỹ hướng sign/axis (ví dụ +Z camera là ra phía trước hay ngược lại) — đọc docs của plugin/solvePnP để biết convention cụ thể.

Các nguồn tham khảo

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

Các kĩ thuật với April Tag

Edit Content