Cảm biến thị giác AI#

Giới thiệu#

Cảm biến thị giác VEX IQ AI có thể phát hiện và theo dõi các vật thể, màu sắc và ID AprilTag. Điều này cho phép robot phân tích môi trường xung quanh, bám theo vật thể và phản ứng dựa trên dữ liệu hình ảnh được phát hiện.

Các ví dụ về AI Vision được thiết kế để sử dụng với Basebot được trang bị cảm biến VEX IQ AI Vision. Trong các ví dụ này, cảm biến được cấu hình với tên AIVision1, tên này xuất hiện trong các khối lệnh.

Dưới đây là danh sách tất cả các khối:

Thao tác — Thu thập dữ liệu từ cảm biến thị giác VEX IQ AI cho một chữ ký đã chọn.

  • lấy dữ liệu đối tượng — Thu thập dữ liệu cho một chữ ký cụ thể, chẳng hạn như màu được cấu hình, đối tượng được đào tạo trước hoặc ID AprilTag.

Cài đặt — Chọn đối tượng bạn muốn tương tác.

Giá trị — Truy cập và sử dụng dữ liệu đã thu thập.

Hành động#

lấy dữ liệu đối tượng#

Khối lệnh lấy dữ liệu đối tượng lọc dữ liệu từ khung hình Cảm biến Thị giác VEX IQ AI thành một chữ ký duy nhất — một mô tả đã lưu về thứ mà cảm biến có thể nhận ra, chẳng hạn như một đối tượng đã được huấn luyện trước, ID AprilTag hoặc một màu sắc hoặc mã màu đã được cấu hình.

Màu sắc và mã màu phải được cấu hình trước trong Tiện ích Thị giác AI trước khi có thể sử dụng chúng với khối này.

Tập dữ liệu lưu trữ các đối tượng được sắp xếp từ lớn nhất đến nhỏ nhất theo chiều rộng, bắt đầu từ chỉ mục 0. Thuộc tính của mỗi đối tượng có thể được truy cập bằng cách sử dụng khối thuộc tính đối tượng AI Vision. Tập dữ liệu trống sẽ được báo cáo nếu không phát hiện thấy đối tượng phù hợp nào.

Khối lệnh Get object data stack block.#
lấy dữ liệu [SELECT_A_SIG v] từ [AIVision1 v]

Tham số

Sự miêu tả

chữ ký

Lọc tập dữ liệu để chỉ bao gồm dữ liệu của chữ ký đã cho. Các chữ ký có sẵn là:

  • ID AprilTag
  • Phân loại AI — Tính khả dụng thay đổi tùy thuộc vào mô hình được cấu hình trong Tiện ích Thị giác AI.
  • TÊN — Một Chữ ký màu hoặc Mã màu trong đó TÊN là tên được cấu hình trong Tiện ích Thị giác AI

Lưu ý: Để tùy chọn ID AprilTag hoặc Phân loại AI hiển thị, tính năng phát hiện của chúng phải được bật trong Tiện ích Thị giác AI.

Ví dụ

khi bắt đầu
[Drive forward if an AprilTag ID is detected.]
mãi mãi
lấy dữ liệu [AprilTag IDs v] từ [AIVision1 v]
nếu <đối tượng [AIVIsion1 v] tồn tại?> thì
lái [tiến v] trong [10] [mm v] ▶

Phân loại AI#

Cảm biến thị giác VEX IQ AI có thể phát hiện các vật thể khác nhau thuộc các phân loại AI nhất định. Tùy thuộc vào mô hình phân loại AI được chọn khi cấu hình cảm biến thị giác VEX IQ AI trong cửa sổ Thiết bị, các vật thể khác nhau sẽ được phát hiện. Các mô hình hiện có sẵn là:

Đồ dùng trong lớp học

  • BlueBall

  • Quả bóng xanh

  • Quả bóng đỏ

  • Vòng Xanh

  • Vòng Xanh

  • Vòng đỏ

  • BlueCube

  • Khối lập phương xanh

  • RedCube

Cuộc thi Robot VEX IQ kết hợp nhiều yếu tố

  • Chùm tia

  • Ghim đỏ

  • Ghim xanh

  • Ghim màu cam

Nâng tầm cuộc thi robot VEX IQ

  • BlueBeanBag

  • RedBeanBag

  • YellowBeanBag

Màu sắc đặc trưng#

Màu sắc đặc trưng là một màu sắc duy nhất mà cảm biến thị giác VEX IQ AI có thể nhận biết. Những màu sắc đặc trưng này cho phép cảm biến phát hiện và theo dõi các vật thể dựa trên màu sắc của chúng. Sau khi cấu hình màu sắc đặc trưng, ​​cảm biến có thể xác định các vật thể có màu sắc cụ thể đó trong tầm nhìn của nó.

Chữ ký màu được sử dụng trong khối lấy dữ liệu đối tượng để xử lý và phát hiện các đối tượng có màu trong thời gian thực. Có thể cấu hình tối đa 7 Chữ ký màu cùng một lúc.

Tiện ích Thị giác AI hiển thị cảm biến thị giác được kết nối phát hiện hai vật thể có màu. Phía bên trái hiển thị nguồn cấp dữ liệu camera trực tiếp với một hộp màu xanh lam ở bên trái và một hộp màu đỏ ở bên phải, mỗi hộp được viền bằng các hộp bao màu trắng. Các nhãn màu đen hiển thị tên, tọa độ và kích thước tương ứng của chúng. Phía bên phải chứa các cài đặt chữ ký màu, với các thanh trượt cho phạm vi sắc độ và độ bão hòa cho cả hộp màu đỏ và màu xanh lam. Các nút để thêm màu, đóng băng video, sao chép và lưu hình ảnh nằm ở phía dưới, cùng với nút đóng ở góc dưới bên phải.

Ví dụ

khi bắt đầu
[Display if any objects matching the RED_BOX signature is detected.]
mãi mãi
đặt con trỏ đến hàng [1] cột [1] trên màn hình
xóa hàng [1] trên màn hình
[Change the signature to any configured Color Signature.]
lấy dữ liệu [RED_BOX v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
in [Color detected!] trên màn hình ▶

Mã màu#

Mã màu là một mẫu cấu trúc gồm 2 đến 4 chữ ký màu được sắp xếp theo một thứ tự cụ thể. Các mã này cho phép cảm biến thị giác VEX IQ AI nhận diện các mẫu màu được xác định trước.

Mã màu đặc biệt hữu ích để nhận dạng các đối tượng phức tạp, căn chỉnh với các yếu tố trong trò chơi hoặc tạo các điểm đánh dấu độc đáo cho việc điều hướng tự động. Có thể cấu hình tối đa 8 mã màu cùng một lúc.

Giao diện Tiện ích Thị giác AI hiển thị một cảm biến thị giác được kết nối phát hiện hai vật thể liền kề, một hộp màu xanh lam ở bên trái và một hộp màu đỏ ở bên phải, được nhóm lại với nhau trong một hộp giới hạn màu trắng duy nhất có nhãn BlueRed. Thông tin phát hiện bao gồm góc (A:11°), tọa độ (X:143, Y:103), chiều rộng (W:233) và chiều cao (H:108). Trên bảng điều khiển bên phải, ba chữ ký màu được liệt kê: Red_Box, Blue_Box và BlueRed, với phạm vi sắc độ và độ bão hòa có thể điều chỉnh. Chữ ký BlueRed kết hợp Blue_Box và Red_Box. Bên dưới nguồn cấp video là các nút có nhãn Đóng băng Video, Sao chép Hình ảnh, Lưu Hình ảnh và Đóng.

Ví dụ

khi bắt đầu
[Display if any objects matching the RED_BLUE code is detected.]
mãi mãi
đặt con trỏ đến hàng [1] cột [1] trên màn hình
xóa hàng [1] trên màn hình
[Change the signature to any configured Color Code.]
lấy dữ liệu [RED_BLUE v] từ [AIVision1 v]
nếu <đối tượng [AIVIsion1 v] tồn tại?> thì
in [Code detected!] trên màn hình ▶

Cài đặt#

đặt mục đối tượng AI Vision#

Khối lệnh set AI Vision object item xác định mục nào trong tập dữ liệu sẽ được sử dụng.

Khối xếp chồng vật phẩm đối tượng Set AI Vision.#
đặt mục đối tượng [AIVision1 v] thành (1)

Thông số

Sự miêu tả

mục

Số thứ tự của mục trong tập dữ liệu cần sử dụng.

Ví dụ

Một chuỗi các khối lệnh bắt đầu bằng khối when started, tiếp theo là khối lệnh comment có nội dung “Hiển thị ID AprilTag được phát hiện lớn nhất”. Bên trong một vòng lặp vô hạn, khối lệnh take a AI Vision snapshot chụp ảnh các ID AprilTag. Khối lệnh if kiểm tra xem đối tượng AI Vision có tồn tại hay không. Nếu đúng, khối lệnh set AI Vision object item gán số lượng đối tượng cho một biến, và khối lệnh print hiển thị ID thẻ của đối tượng được phát hiện trên màn hình.#
khi bắt đầu
[Display the largest detected AprilTag ID.]
mãi mãi
lấy dữ liệu [AprilTag IDs v] từ [AIVision1 v]
xóa hàng [1] trên màn hình
đặt con trỏ đến hàng [1] cột [1] trên màn hình
nếu <đối tượng [AIVision1 v] tồn tại?> thì
đặt mục đối tượng [AIVision1 v] thành (số lượng đối tượng [AIVision1 v])
in (đối tượng [AIVision1 v] [tagID v]) trên màn hình ▶

Giá trị#

Đối tượng AI Vision tồn tại#

Khối Boolean AI Vision object exists cho biết liệu có đối tượng nào được phát hiện trong tập dữ liệu hay không.

  • Đúng — Tập dữ liệu bao gồm một đối tượng được phát hiện.

  • Sai — Tập dữ liệu không bao gồm bất kỳ đối tượng nào được phát hiện.

Khối Boolean tồn tại đối tượng AI Vision.#
<đối tượng [AIVision1 v] tồn tại?>

Thông số

Sự miêu tả

Khối này không có tham số.

Ví dụ

khi bắt đầu
[Drive forward if an object is detected.]
mãi mãi
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
lái [tiến v] trong [10] [mm v] ▶

đếm đối tượng trong AI Vision#

Khối báo cáo Số lượng đối tượng được phát hiện trong AI Vision sẽ hiển thị số lượng đối tượng được phát hiện trong tập dữ liệu dưới dạng số nguyên.

Khối xếp chồng vật phẩm đối tượng Set AI Vision.#
(số lượng đối tượng [AIVision1 v])

Thông số

Sự miêu tả

Khối này không có tham số.

Ví dụ

khi bắt đầu
[Display the total amount of cubes, rings, and balls.]
mãi mãi
xóa hàng [1] trên màn hình
đặt con trỏ đến hàng [1] cột [1] trên màn hình
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
in (số lượng đối tượng [AIVision1 v]) trên màn hình ▶
fin
chờ [0.5] giây

Thuộc tính đối tượng AI Vision#

Có chín thuộc tính được bao gồm trong mỗi đối tượng (hiển thị bên dưới) được lưu trữ sau khi khối lấy dữ liệu đối tượng được sử dụng.

Khối báo cáo thuộc tính đối tượng AI Vision.#
(đối tượng [AIVision1 v] [chiều rộng v])

Tất cả các giá trị thuộc tính, ngoại trừ tagID, mô tả vị trí và kích thước của đối tượng được phát hiện trong tầm nhìn của Cảm biến Thị giác VEX IQ AI tại thời điểm khối lấy dữ liệu đối tượng được sử dụng. Các giá trị này được đo bằng pixel, dựa trên độ phân giải 320 x 240 pixel của cảm biến.

Tham số

Sự miêu tả

tài sản

Nên sử dụng thuộc tính nào của đối tượng được phát hiện:

chiều rộng#

Thuộc tính width báo cáo chiều rộng của đối tượng được phát hiện tính bằng pixel dưới dạng số nguyên từ 1 đến 320.

Khối thuộc tính ngăn xếp đối tượng AI Vision với tham số được đặt thành chiều rộng.#
(đối tượng [AIVision1 v] [chiều rộng v])

Ví dụ

khi bắt đầu
[Drive towards an object until its width is larger than 100 pixels.]
mãi mãi
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <(đối tượng [AIVision1 v] [chiều rộng v]) [math_less_than v] [100]> thì
lái [tiến v]
fin
nếu không
dừng lái

chiều cao#

Thuộc tính chiều cao báo cáo chiều cao của đối tượng được phát hiện tính bằng pixel dưới dạng số nguyên từ 1 đến 240.

Khối thuộc tính ngăn xếp đối tượng AI Vision với tham số được đặt thành chiều cao.#
(đối tượng [AIVision1 v] [chiều cao v])

Ví dụ

khi bắt đầu
[Drive towards an object until its height is larger than 100 pixels.]
mãi mãi
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <(đối tượng [AIVision1 v] [chiều cao v]) [math_less_than v] [100]> thì
lái [tiến v]
fin
nếu không
dừng lái

centerX#

Thuộc tính centerX báo cáo tọa độ x của tâm đối tượng được phát hiện tính bằng pixel dưới dạng số nguyên từ 0 đến 320.

Khối thuộc tính ngăn xếp đối tượng AI Vision với tham số được đặt thành centerX.#
(đối tượng [AIVision1 v] [centerX v])

Ví dụ

khi bắt đầu
[Turn slowly until an object is centered in front of the robot.]
đặt vận tốc quay thành [30] [% v]
quay [phải v]
mãi mãi
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <[140] [math_less_than v] (đối tượng [AIVision1 v] [centerX v]) [math_less_than v] [180]> thì
dừng lái

trung tâmY#

Thuộc tính centerY báo cáo tọa độ y của tâm đối tượng được phát hiện tính bằng pixel dưới dạng số nguyên từ 0 đến 240.

Khối thuộc tính ngăn xếp đối tượng AI Vision với tham số được đặt thành centerY.#
(đối tượng [AIVision1 v] [centerY v])

Ví dụ

khi bắt đầu
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
mãi mãi
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <(đối tượng [AIVision1 v] [centerY v]) [math_less_than v] [140]> thì
lái [tiến v]
fin
nếu không
dừng lái

góc#

Thuộc tính góc báo cáo hướng của Mã màu hoặc ID AprilTag được phát hiện dưới dạng số nguyên tính bằng độ từ 0 đến 359.

Khối thuộc tính đối tượng AI Vision với tham số được đặt thành góc.#
(đối tượng [AIVision1 v] [góc v])

Ví dụ

khi bắt đầu
[Slide left or right depending on how the Color Code is rotated.]
mãi mãi
lấy dữ liệu [RED_BLUE v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <[50] [math_less_than v] (đối tượng [AIVision1 v] [góc v]) [math_less_than v] [100]> thì
lái [phải v]
nếu không nếu <[270] [math_less_than v] (đối tượng [AIVision1 v] [góc v]) [math_less_than v] [330]> thì
lái [trái v]
nếu không
dừng lái
fin
nếu không
dừng lái

nguồn gốcX#

Thuộc tính originX báo cáo tọa độ x của góc trên bên trái của khung bao quanh đối tượng được phát hiện tính bằng pixel dưới dạng số nguyên từ 0 đến 320.

Khối thuộc tính ngăn xếp đối tượng AI Vision với tham số được đặt thành originX.#
(đối tượng [AIVision1 v] [originX v])

Ví dụ

khi bắt đầu
[Display if an object is to the left or the right.]
mãi mãi
xóa hàng [1] trên màn hình
đặt con trỏ đến hàng [1] cột [1] trên màn hình
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <(đối tượng [AIVision1 v] [originX v]) [math_less_than v] [160]> thì
in [To the left!] trên màn hình ▶
nếu không
in [To the right!] trên màn hình ▶
fin
chờ [0.5] giây

nguồn gốc#

Thuộc tính originY báo cáo tọa độ y của góc trên bên trái của khung bao quanh đối tượng được phát hiện tính bằng pixel dưới dạng số nguyên từ 0 đến 240.

Khối thuộc tính ngăn xếp đối tượng AI Vision với tham số được đặt thành originY.#
(đối tượng [AIVision1 v] [originY v])

Ví dụ

khi bắt đầu
[Display if an object is close or far from the robot.]
mãi mãi
xóa hàng [1] trên màn hình
đặt con trỏ đến hàng [1] cột [1] trên màn hình
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <(đối tượng [AIVision1 v] [originY v]) [math_less_than v] [80]> thì
in [Far!] trên màn hình ▶
nếu không
in [Close!] trên màn hình ▶
fin
chờ [0.5] giây

ID thẻ#

Thuộc tính tagID báo cáo số nhận dạng của ID AprilTag được phát hiện dưới dạng số nguyên.

Khối thuộc tính ngăn xếp đối tượng AI Vision với tham số được đặt thành tagID.#
(đối tượng [AIVision1 v] [tagID v])

Ví dụ

khi bắt đầu
[Drive forward when AprilTag ID 0 is detected.]
mãi mãi
lấy dữ liệu [AprilTag IDs v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <(đối tượng [AIVision1 v] [tagID v]) [math_equal v] [0]> thì
lái [tiến v]
nếu không
dừng lái
fin
chờ [0.5] giây

Đối tượng AI Vision là gì?#

Khối Đối tượng AI Vision là gì? trả về giá trị Boolean cho biết liệu đối tượng được phát hiện có khớp với một phân loại cụ thể hay không.

  • Đúng — Mục trong tập dữ liệu là đối tượng cụ thể.

  • Sai — Mục trong tập dữ liệu không phải là đối tượng cụ thể.

Phân loại AI Vision AI là một khối Boolean đối tượng.#
<đối tượng [AIVision1 v] là [BlueBall v]?>

Tham số

Sự miêu tả

sự vật

So sánh mục này với Phân loại AI nào.

Ví dụ

khi bắt đầu
[Display if a Blue Cube is detected.]
mãi mãi
lấy dữ liệu [Phân loại AI v] từ [AIVision1 v]
xóa hàng [1] trên màn hình
đặt con trỏ đến hàng [1] cột [1] trên màn hình
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <đối tượng [AIVision1 v] là [BlueCube v]?> thì
in [Cube detected!] trên màn hình ▶
chờ [0.5] giây

Đối tượng AI Vision là AprilTag?#

Khối AI Vision object is AprilTag? trả về giá trị Boolean cho biết liệu đối tượng được phát hiện có phải là AprilTag khớp với ID cụ thể hay không.

  • Đúng — Đối tượng được phát hiện là một AprilTag với ID đã cho.

  • Sai — Đối tượng được phát hiện không phải là AprilTag có ID đã cho.

Đối tượng AI Vision là khối Boolean AprilTag.#
<đối tượng [AIVision1 v] là AprilTag [0]?>

Tham số

Sự miêu tả

Mã định danh AprilTag

Mã số định danh cần so sánh với AprilTag đã được phát hiện.

Ví dụ

khi bắt đầu
[Report if AprilTag 3 is detected.]
mãi mãi
xóa màn hình
đặt con trỏ đến hàng [1] cột [1] trên màn hình
lấy dữ liệu [AprilTag IDs v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <đối tượng [AIVision1 v] là AprilTag [3]?> thì
in [That is 3!] trên màn hình ▶
nếu không
in [That isn't 3!] trên màn hình ▶
fin
fin
chờ [0.1] giây

Đối tượng AI Vision là ID của AprilTag?#

Khối AI Vision object is AprilTag ID? trả về giá trị Boolean cho biết liệu ID AprilTag được phát hiện có khớp với một ID cụ thể hay không.

  • Đúng vậy — Mã số AprilTag chính là con số đó.

  • Sai — Mã định danh AprilTag không phải là số.

AI Vision đã phát hiện ID của AprilTag là khối Boolean.#
<[AIVision1 v] object is AprilTag ID [1] ?>

Thông số

Sự miêu tả

Mã số ID AprilTag

Con số này dùng để so sánh với số ID AprilTag đã được phát hiện.

Ví dụ:

khi bắt đầu
[Report if AprilTag ID 3 is detected.]
mãi mãi
xóa màn hình
đặt con trỏ đến hàng [1] cột [1] trên màn hình
lấy dữ liệu [AprilTag IDs v] từ [AIVision1 v]
nếu <đối tượng [AIVision1 v] tồn tại?> thì
nếu <[AIVision1 v] object is AprilTag ID [3] ?> thì
in [That is 3!] trên màn hình ▶
nếu không
in [That isn't 3!] trên màn hình ▶
fin
fin
chờ [0.1] giây