비전#
소개#
VEX AIR 드론에는 AprilTag ID를 감지하고 추적하는 두 개의 비전 센서가 있습니다. 이를 통해 드론은 주변 환경을 분석하고, 물체를 추적하며, 감지된 시각 데이터를 기반으로 반응할 수 있습니다.
아래는 사용 가능한 모든 블록 목록입니다.
동작 — 비전 피드를 제어하고 객체 데이터를 캡처합니다.
객체 데이터 가져오기 — AprilTag ID에 대한 데이터를 캡처합니다.
설정 — 감지된 객체 중 접근 가능한 객체를 조정합니다.
Vision 객체 항목 설정 — 감지된 객체 목록에서 특정 객체를 선택합니다.
값 — 객체의 존재 여부, 분류 및 속성을 검색합니다.
Vision 객체가 존재함 — 객체가 감지되었는지 여부를 보고합니다.
Vision 객체는 AprilTag ID입니다 — 감지된 AprilTag ID가 특정 ID와 일치하는지 확인합니다.
Vision 객체 개수 — 감지된 객체의 수를 보고합니다.
Vision 객체 속성 — 다음과 같은 세부 정보를 검색합니다.
행위#
객체 데이터를 가져옵니다.#
객체 데이터 가져오기 스택 블록은 비전 센서 프레임에서 데이터를 필터링합니다. 비전 센서는 AprilTag ID를 감지할 수 있습니다.
데이터셋은 인덱스 0부터 시작하여 너비가 큰 순서부터 작은 순서로 정렬된 객체를 저장합니다. 각 객체의 속성은 Vision 객체 속성 블록을 사용하여 접근할 수 있습니다. 일치하는 객체가 감지되지 않으면 빈 데이터셋이 보고됩니다.
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
매개변수 |
설명 |
|---|---|
서명 |
지정된 서명에 해당하는 데이터만 포함하도록 데이터셋을 필터링합니다. 사용 가능한 서명은 모든 AprilTag입니다. |
카메라 |
비전 센서는 앞쪽 또는 아래쪽에서 데이터를 가져옵니다. |
예
시작 시
[Climb upward when an AprilTag ID is detected.]
[300] [mm v] 높이로 이륙 ▶
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
<Vision 객체가 있나요?>이면
[위로 v] 방향으로 [200] [mm v] 상승 ▶
설정#
비전 객체 항목 설정#
Vision 객체 항목 설정 스택 블록은 데이터 세트에서 사용할 항목을 설정합니다.
Vision 객체 항목을 [1]로 설정
매개변수 |
설명 |
|---|---|
목 |
사용할 데이터 세트 내 항목 번호입니다. |
예
시작 시
[Display the smallest-appearing AprilTag ID.]
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
콘솔 지우기
<Vision 객체가 있나요?>이면
Vision 객체 항목을 (Vision 객체 수)로 설정
콘솔에 (Vision 객체 [id v]) 출력 ▶
값#
비전 객체가 존재합니다#
Vision 객체 존재 여부 부울 블록은 지정된 비전 센서가 현재 객체를 감지하는지 여부를 나타냅니다.
참 — 지정된 비전 센서가 물체를 감지했습니다.
거짓 — 지정된 비전 센서가 물체를 감지하지 못했습니다.
<Vision 객체가 있나요?>
매개변수 |
설명 |
|---|---|
이 블록에는 매개변수가 없습니다. |
예
시작 시
[Climb upward when an AprilTag ID is detected.]
[300] [mm v] 높이로 이륙 ▶
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
<Vision 객체가 있나요?>이면
[위로 v] 방향으로 [200] [mm v] 상승 ▶
비전 객체는 AprilTag ID입니다.#
Vision 객체는 AprilTag ID입니다. 부울 블록은 AprilTag ID가 특정 ID 번호인지 여부를 보고합니다.
맞습니다 — AprilTag ID는 숫자입니다.
틀렸습니다 — AprilTag ID는 숫자가 아닙니다.
<Vision object is AprilTag ID [1]>
매개변수 |
설명 |
|---|---|
AprilTag ID 번호 |
감지된 AprilTag ID 번호(0~37)와 비교할 숫자입니다. |
예
시작 시
[Display when the target AprilTag ID is detected.]
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
콘솔 지우기
<Vision 객체가 있나요?>이면
<Vision object is AprilTag ID [21]>이면
콘솔에 [Target found!] 출력 ▶
끝
비전 객체 개수#
Vision 객체 개수 리포터 블록은 데이터 세트에서 감지된 객체의 개수를 정수로 보고합니다.
(Vision 객체 수)
매개변수 |
설명 |
|---|---|
이 블록에는 매개변수가 없습니다. |
예
시작 시
[Display how many AprilTag IDs are detected.]
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
콘솔 지우기
콘솔에 (Vision 객체 수) 출력 ▶
[0.2]초 기다리기
비전 객체 속성#
객체 데이터 가져오기 블록을 사용한 후 저장되는 각 객체에는 여러 속성이 포함됩니다(아래 참조).
(Vision 객체 [너비 v])
id를 제외한 모든 속성 값은 객체 데이터 가져오기 블록이 사용된 순간의 감지된 객체의 위치, 크기, 방향 또는 방위각을 나타냅니다. 이러한 값은 픽셀 또는 각도로 측정됩니다. 각 비전 센서는 해상도가 다릅니다.
정면: 640 x 480 픽셀
아래쪽을 향한 이미지: 640 x 400 픽셀
매개변수 |
설명 |
|---|---|
재산 |
Which property of the detected object to use: |
너비#
width 속성은 감지된 객체의 너비를 픽셀 단위로 1부터 640까지의 정수로 보고합니다.
(Vision 객체 [너비 v])
예
시작 시
[Show if the AprilTag ID appears large or small.]
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
콘솔 지우기
<Vision 객체가 있나요?>이면
<(Vision 객체 [너비 v]) [math_greater_than v] [100]>이면
콘솔에 [Large] 출력 ▶
아니면
콘솔에 [Small] 출력 ▶
끝
끝
[0.2]초 기다리기
키#
height 속성은 감지된 객체의 높이를 픽셀 단위로 1부터 480까지의 정수로 보고합니다.
(Vision 객체 [높이 v])
예
시작 시
[Show if the AprilTag ID appears large or small.]
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
콘솔 지우기
<Vision 객체가 있나요?>이면
<(Vision 객체 [높이 v]) [math_greater_than v] [100]>이면
콘솔에 [Large] 출력 ▶
아니면
콘솔에 [Small] 출력 ▶
끝
끝
[0.2]초 기다리기
센터엑스#
centerX 속성은 감지된 객체의 중심의 x 좌표를 픽셀 단위로 1부터 640까지의 정수로 나타냅니다.
(Vision 객체 [centerX v])
예
시작 시
[Show if an AprilTag ID is to the left or the right of the camera.]
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
콘솔 지우기
<Vision 객체가 있나요?>이면
<(Vision 객체 [centerX v]) [math_less_than v] [320]>이면
콘솔에 [To the left] 출력 ▶
아니면
콘솔에 [To the right] 출력 ▶
끝
끝
[0.2]초 기다리기
센터Y#
centerY 속성은 감지된 객체의 중심의 y 좌표를 픽셀 단위로 1부터 480까지의 정수로 나타냅니다.
(Vision 객체 [centerY v])
예
시작 시
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
[800] [mm v] 높이로 이륙 ▶
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
<Vision 객체가 있나요?>이면
<(Vision 객체 [centerY v]) [math_less_than v] [240]>이면
콘솔에 [Below the target!] 출력 ▶
아니면
콘솔에 [Above the target!] 출력 ▶
끝
아니면
콘솔에 [No target found!] 출력 ▶
베어링#
방향 속성은 드론을 기준으로 객체의 위치를 나타내는 각도를 보고합니다. 동작은 사용되는 비전 센서에 따라 다릅니다.
0° 값은 물체와 센서의 중심이 정렬되었음을 나타냅니다. 양수 값은 물체가 오른쪽에 있음을, 음수 값은 물체가 왼쪽에 있음을 의미합니다.
감지기 |
보고 |
|---|---|
하향의 |
드론의 앞부분이 물체의 중심과 일치하도록 회전해야 하는 각도는 -180º에서 180º까지입니다. |
앞으로 |
물체가 비전 센서 중심에서 왼쪽 또는 오른쪽으로 -180º에서 180º까지 벗어난 각도입니다. |
(Vision 객체 [방위각 v])
예시
시작 시
[Align the front of the drone to an AprilTag ID.]
회전 속도를 (15)%로 설정
[500] [mm v] 높이로 이륙 ▶
무한 반복
Vision [아래쪽 방향 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
<Vision 객체가 있나요?>이면
<[-20] [math_less_than v] (Vision 객체 [방위각 v]) [math_less_than v] [20]>이면
[Hover once sensor is centered on the AprilTag ID.]
호버링
소리 [성공 v] 재생 ▶
아니면 <(Vision 객체 [방위각 v]) [math_less_than v] [-21]>이면
[왼쪽 v] 방향으로 회전
아니면
[오른쪽 v] 방향으로 회전
회전#
회전 속성은 감지된 AprilTag ID의 방향을 1에서 359 사이의 정수(도 단위)로 보고합니다.
(Vision 객체 [회전 v])
예
시작 시
[Turn left or right based on the rotation of an AprilTag ID.]
[1000] [mm v] 높이로 이륙 ▶
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
<Vision 객체가 있나요?>이면
<[240] [math_less_than v] (Vision 객체 [회전 v]) [math_less_than v] [300]>이면
[왼쪽 v] 방향으로 [90]도 회전 ▶
아니면 <[60] [math_less_than v] (Vision 객체 [회전 v]) [math_less_than v] [120]>이면
[오른쪽 v] 방향으로 [90]도 회전 ▶
아니면
호버링
오리진엑스#
originX 속성은 감지된 객체의 경계 상자의 왼쪽 상단 모서리의 x 좌표를 픽셀 단위로 1부터 640까지의 정수로 나타냅니다.
(Vision 객체 [originX v])
예
시작 시
[Draw lines to the AprilTag ID origin from all corners.]
무한 반복
화면 지우기
get [all AprilTags v] data from vision [forward v] camera
<Vision 객체가 있나요?>이면
화면에 선 [0] [0] (Vision 객체 [originX v]) (Vision 객체 [originY v]) 그리기
화면에 선 [0] [480] (Vision 객체 [originX v]) (Vision 객체 [originY v]) 그리기
화면에 선 [640] [0] (Vision 객체 [originX v]) (Vision 객체 [originY v]) 그리기
화면에 선 [640] [480] (Vision 객체 [originX v]) (Vision 객체 [originY v]) 그리기
끝
[0.2]초 기다리기
기원#
originY 속성은 감지된 객체의 경계 상자의 왼쪽 상단 모서리의 y 좌표를 픽셀 단위로 1부터 480까지의 정수로 나타냅니다.
(Vision 객체 [originY v])
예
시작 시
[Draw lines to the AprilTag ID origin from all corners.]
무한 반복
화면 지우기
get [all AprilTags v] data from vision [forward v] camera
<Vision 객체가 있나요?>이면
화면에 선 [0] [0] (Vision 객체 [originX v]) (Vision 객체 [originY v]) 그리기
화면에 선 [0] [480] (Vision 객체 [originX v]) (Vision 객체 [originY v]) 그리기
화면에 선 [640] [0] (Vision 객체 [originX v]) (Vision 객체 [originY v]) 그리기
화면에 선 [640] [480] (Vision 객체 [originX v]) (Vision 객체 [originY v]) 그리기
끝
[0.2]초 기다리기
ID#
id 속성은 감지된 AprilTag ID의 식별 번호를 정수로 보고합니다.
(Vision 객체 [id v])
예
시작 시
[Display the detected AprilTag ID.]
무한 반복
Vision [앞으로 v] 카메라에서 [모든 AprilTags v] 데이터 가져오기
콘솔 지우기
<Vision 객체가 있나요?>이면
콘솔에 (Vision 객체 [id v]) 출력 ▶
끝
[0.2]초 기다리기