Tầm nhìn#
Giới thiệu#
Máy bay không người lái VEX AIR có hai cảm biến thị giác giúp phát hiện và theo dõi ID AprilTag. Điều này cho phép máy bay không người lái phân tích môi trường xung quanh, theo dõi các vật thể và phản ứng dựa trên dữ liệu hình ảnh thu được.
Dưới đây là danh sách tất cả các khối có sẵn:
Thao tác — Điều khiển nguồn cấp dữ liệu hình ảnh và thu thập dữ liệu đối tượng.
lấy dữ liệu đối tượng — Thu thập dữ liệu cho ID AprilTag.
Cài đặt — Điều chỉnh các đối tượng được phát hiện mà bạn có thể truy cập.
Đặt mục đối tượng Vision — Chọn một đối tượng cụ thể từ danh sách đối tượng được phát hiện.
Giá trị — Truy xuất sự hiện diện, phân loại và thuộc tính của đối tượng.
Đối tượng thị giác tồn tại — Báo cáo liệu có phát hiện thấy đối tượng hay không.
Đối tượng Vision là ID AprilTag — Kiểm tra xem ID AprilTag được phát hiện có khớp với ID cụ thể hay không.
Số lượng đối tượng thị giác — Báo cáo số lượng đối tượng được phát hiện.
Thuộc tính đối tượng Vision — Truy xuất các chi tiết như:
chiều rộng & chiều cao — Kích thước của đối tượng.
centerX & centerY — Tọa độ vị trí trung tâm trong tầm nhìn của cảm biến.
bearing — Góc của vật thể so với Cảm biến Thị giác phía trước hoặc số độ cần thiết để máy bay không người lái hướng về phía vật thể.
xoay — Hướng của đối tượng.
originX & originY — Tọa độ vị trí góc trên bên trái trong tầm nhìn của cảm biến.
id — Số định danh của ID AprilTag.
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ủa Cảm biến Thị giác. Cảm biến Thị giác có thể phát hiện ID của AprilTag.
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 Vision. Tập dữ liệu trống được báo cáo nếu không phát hiện thấy đối tượng phù hợp nào.
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
Tham số |
Sự miêu tả |
|---|---|
chữ ký |
Lọc tập dữ liệu để chỉ bao gồm dữ liệu có chữ ký đã cho. Chữ ký có sẵn là tất cả các AprilTags. |
máy ảnh |
Cảm biến thị giác dùng để thu thập dữ liệu, theo hướng phía trước hoặc phía dưới. |
Ví dụ
khi bắt đầu
[Climb upward when an AprilTag ID is detected.]
cất cánh đến [300] [mm v] ▶
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
nếu <đối tượng Vision tồn tại?> thì
leo lên [lên v] trong [200] [mm v] ▶
Cài đặt#
đặt mục đối tượng Vision#
Khối lệnh set Vision object item xác định mục nào trong tập dữ liệu sẽ được sử dụng.
đặt mục đối tượng Vision 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ụ
khi bắt đầu
[Display the smallest-appearing AprilTag ID.]
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
xóa bảng điều khiển
nếu <đối tượng Vision tồn tại?> thì
đặt mục đối tượng Vision thành (số lượng đối tượng Vision)
in (đối tượng Vision [id v]) trên bảng điều khiển ▶
Giá trị#
Đối tượng thị giác tồn tại#
Khối Boolean Vision object exists cho biết liệu Cảm biến Thị giác được chỉ định hiện có phát hiện bất kỳ đối tượng nào hay không.
Đúng — Cảm biến thị giác được chỉ định phát hiện một vật thể.
Sai — Cảm biến thị giác được chỉ định không phát hiện vật thể nào.
<đối tượng Vision tồn tại?>
Tham số |
Sự miêu tả |
|---|---|
Khối này không có tham số. |
Ví dụ
khi bắt đầu
[Climb upward when an AprilTag ID is detected.]
cất cánh đến [300] [mm v] ▶
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
nếu <đối tượng Vision tồn tại?> thì
leo lên [lên v] trong [200] [mm v] ▶
Đối tượng Vision là ID AprilTag#
Khối Boolean Vision object is AprilTag ID cho biết liệu ID của AprilTag có phải là một số ID cụ thể hay không.
Đúng — Mã định danh AprilTag chính là số.
Sai — Mã định danh AprilTag không phải là số.
<Vision object is AprilTag ID [1]>
Thông số |
Sự miêu tả |
|---|---|
Mã số ID AprilTag |
Số cần so sánh với số ID AprilTag được phát hiện, từ 0 đến 37. |
Ví dụ
khi bắt đầu
[Display when the target AprilTag ID is detected.]
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
xóa bảng điều khiển
nếu <đối tượng Vision tồn tại?> thì
nếu <Vision object is AprilTag ID [21]> thì
in [Target found!] trên bảng điều khiển ▶
fin
Số lượng đối tượng thị giác#
Khối báo cáo Số lượng đối tượng được phát hiện trong 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.
(số lượng đối tượng Vision)
Thông số |
Sự miêu tả |
|---|---|
Khối này không có tham số. |
Ví dụ
khi bắt đầu
[Display how many AprilTag IDs are detected.]
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
xóa bảng điều khiển
in (số lượng đối tượng Vision) trên bảng điều khiển ▶
chờ [0.2] giây
Thuộc tính đối tượng Vision#
Có nhiều 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.
(đối tượng Vision [chiều rộng v])
Tất cả các giá trị thuộc tính ngoại trừ id mô tả vị trí, kích thước, hướng hoặc góc phương vị của đối tượng được phát hiện tại thời điểm khối get object data được sử dụng. Các giá trị này được đo bằng pixel hoặc độ. Mỗi Cảm biến Thị giác có độ phân giải khác nhau:
Camera trước: 640 x 480 pixel
Hướng xuống dưới: 640 x 400 pixel
Tham số |
Sự miêu tả |
|---|---|
tài sản |
Which property of the detected object to use: |
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 640.
(đối tượng Vision [chiều rộng v])
Ví dụ
khi bắt đầu
[Show if the AprilTag ID appears large or small.]
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
xóa bảng điều khiển
nếu <đối tượng Vision tồn tại?> thì
nếu <(đối tượng Vision [chiều rộng v]) [math_greater_than v] [100]> thì
in [Large] trên bảng điều khiển ▶
nếu không
in [Small] trên bảng điều khiển ▶
fin
fin
chờ [0.2] giây
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 480.
(đối tượng Vision [chiều cao v])
Ví dụ
khi bắt đầu
[Show if the AprilTag ID appears large or small.]
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
xóa bảng điều khiển
nếu <đối tượng Vision tồn tại?> thì
nếu <(đối tượng Vision [chiều cao v]) [math_greater_than v] [100]> thì
in [Large] trên bảng điều khiển ▶
nếu không
in [Small] trên bảng điều khiển ▶
fin
fin
chờ [0.2] giây
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ừ 1 đến 640.
(đối tượng Vision [centerX v])
Ví dụ
khi bắt đầu
[Show if an AprilTag ID is to the left or the right of the camera.]
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
xóa bảng điều khiển
nếu <đối tượng Vision tồn tại?> thì
nếu <(đối tượng Vision [centerX v]) [math_less_than v] [320]> thì
in [To the left] trên bảng điều khiển ▶
nếu không
in [To the right] trên bảng điều khiển ▶
fin
fin
chờ [0.2] giây
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ừ 1 đến 480.
(đối tượng Vision [centerY v])
Ví dụ
khi bắt đầu
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
cất cánh đến [800] [mm v] ▶
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
nếu <đối tượng Vision tồn tại?> thì
nếu <(đối tượng Vision [centerY v]) [math_less_than v] [240]> thì
in [Below the target!] trên bảng điều khiển ▶
nếu không
in [Above the target!] trên bảng điều khiển ▶
fin
nếu không
in [No target found!] trên bảng điều khiển ▶
ổ trục#
Thuộc tính bearing báo cáo một góc cho biết vị trí của vật thể so với máy bay không người lái. Hành vi này phụ thuộc vào loại cảm biến hình ảnh được sử dụng.
Giá trị 0° cho biết tâm của vật thể và cảm biến thẳng hàng. Giá trị dương có nghĩa là vật thể nằm bên phải, trong khi giá trị âm có nghĩa là vật thể nằm bên trái.
Cảm biến |
Trả lại |
|---|---|
Xuống dưới |
Góc quay mà phần trước của máy bay không người lái phải xoay để thẳng hàng với tâm của vật thể, từ -180º đến 180º. |
Phía trước |
Góc lệch của vật thể sang trái hoặc phải so với tâm của cảm biến thị giác, từ -180º đến 180º. |
(đối tượng Vision [bearing v])
Ví dụ
khi bắt đầu
[Align the front of the drone to an AprilTag ID.]
đặt vận tốc quay thành (15)%
cất cánh đến [500] [mm v] ▶
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [hướng xuống v]
nếu <đối tượng Vision tồn tại?> thì
nếu <[-20] [math_less_than v] (đối tượng Vision [bearing v]) [math_less_than v] [20]> thì
[Hover once sensor is centered on the AprilTag ID.]
lơ lửng
phát âm thanh [thành công v] ▶
nếu không nếu <(đối tượng Vision [bearing v]) [math_less_than v] [-21]> thì
quay [trái v]
nếu không
quay [phải v]
xoay#
Thuộc tính xoay báo cáo hướng của ID AprilTag được phát hiện dưới dạng số nguyên tính bằng độ từ 1 đến 359.
(đối tượng Vision [rotation v])
Ví dụ
khi bắt đầu
[Turn left or right based on the rotation of an AprilTag ID.]
cất cánh đến [1000] [mm v] ▶
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
nếu <đối tượng Vision tồn tại?> thì
nếu <[240] [math_less_than v] (đối tượng Vision [rotation v]) [math_less_than v] [300]> thì
quay [trái v] trong [90] độ ▶
nếu không nếu <[60] [math_less_than v] (đối tượng Vision [rotation v]) [math_less_than v] [120]> thì
quay [phải v] trong [90] độ ▶
nếu không
lơ lửng
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ừ 1 đến 640.
(đối tượng Vision [originX v])
Ví dụ
khi bắt đầu
[Draw lines to the AprilTag ID origin from all corners.]
mãi mãi
xóa màn hình
get [all AprilTags v] data from vision [forward v] camera
nếu <đối tượng Vision tồn tại?> thì
vẽ đường thẳng [0] [0] (đối tượng Vision [originX v]) (đối tượng Vision [originY v]) trên màn hình
vẽ đường thẳng [0] [480] (đối tượng Vision [originX v]) (đối tượng Vision [originY v]) trên màn hình
vẽ đường thẳng [640] [0] (đối tượng Vision [originX v]) (đối tượng Vision [originY v]) trên màn hình
vẽ đường thẳng [640] [480] (đối tượng Vision [originX v]) (đối tượng Vision [originY v]) trên màn hình
fin
chờ [0.2] 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ừ 1 đến 480.
(đối tượng Vision [originY v])
Ví dụ
khi bắt đầu
[Draw lines to the AprilTag ID origin from all corners.]
mãi mãi
xóa màn hình
get [all AprilTags v] data from vision [forward v] camera
nếu <đối tượng Vision tồn tại?> thì
vẽ đường thẳng [0] [0] (đối tượng Vision [originX v]) (đối tượng Vision [originY v]) trên màn hình
vẽ đường thẳng [0] [480] (đối tượng Vision [originX v]) (đối tượng Vision [originY v]) trên màn hình
vẽ đường thẳng [640] [0] (đối tượng Vision [originX v]) (đối tượng Vision [originY v]) trên màn hình
vẽ đường thẳng [640] [480] (đối tượng Vision [originX v]) (đối tượng Vision [originY v]) trên màn hình
fin
chờ [0.2] giây
nhận dạng#
Thuộc tính id 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.
(đối tượng Vision [id v])
Ví dụ
khi bắt đầu
[Display the detected AprilTag ID.]
mãi mãi
lấy dữ liệu [tất cả AprilTags v] từ Vision camera [tiến v]
xóa bảng điều khiển
nếu <đối tượng Vision tồn tại?> thì
in (đối tượng Vision [id v]) trên bảng điều khiển ▶
fin
chờ [0.2] giây