วิสัยทัศน์#

การแนะนำ#

โดรน VEX AIR มีเซ็นเซอร์ตรวจจับภาพสองตัวที่ตรวจจับและติดตามรหัส AprilTag ซึ่งช่วยให้โดรนสามารถวิเคราะห์สภาพแวดล้อม ติดตามวัตถุ และตอบสนองตามข้อมูลภาพที่ตรวจพบได้

ด้านล่างนี้คือรายการบล็อกทั้งหมดที่มีอยู่:

การดำเนินการ — ควบคุมฟีดภาพและบันทึกข้อมูลวัตถุ

การตั้งค่า — ปรับแต่งว่าวัตถุที่ตรวจพบใดบ้างที่จะสามารถเข้าถึงได้

ค่าต่างๆ — ดึงข้อมูลการมีอยู่ การจำแนกประเภท และคุณสมบัติของวัตถุ

การกระทำ#

รับข้อมูลวัตถุ#

บล็อกสแต็ก รับข้อมูลวัตถุ จะกรองข้อมูลจากเฟรมของเซ็นเซอร์ตรวจจับภาพ เซ็นเซอร์ตรวจจับภาพสามารถตรวจจับรหัส AprilTag ได้

ชุดข้อมูลจะจัดเก็บวัตถุที่เรียงลำดับจากขนาดใหญ่ที่สุดไปเล็กที่สุดตามความกว้าง โดยเริ่มต้นที่ดัชนี 0 คุณสมบัติของวัตถุแต่ละชิ้นสามารถเข้าถึงได้โดยใช้บล็อก Vision object property หากไม่พบวัตถุที่ตรงกัน ระบบจะรายงานชุดข้อมูลว่างเปล่า

บล็อกสแต็ก Get object data#
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]

พารามิเตอร์

คำอธิบาย

ลายเซ็น

กรองชุดข้อมูลเพื่อให้เหลือเฉพาะข้อมูลที่มีลายเซ็นที่กำหนดเท่านั้น ลายเซ็นที่ใช้งานได้คือ AprilTags ทั้งหมด

กล้อง

เซ็นเซอร์ตรวจจับภาพจะดึงข้อมูลจากทิศทาง ด้านหน้า หรือ ด้านล่าง

ตัวอย่าง

เมื่อเริ่มต้น
[Climb upward when an AprilTag ID is detected.]
ขึ้นบินไปความสูง [300] [มม. v] ▶
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ปีน [ขึ้น v] เป็น [200] [มม. v] ▶

การตั้งค่า#

ตั้งค่าวัตถุวิสัยทัศน์รายการหนึ่ง#

บล็อกสแต็ก set Vision object item จะกำหนดว่าควรใช้รายการใดในชุดข้อมูล

บล็อกสแต็กรายการวัตถุ Set AI Vision#
ตั้งรายการวัตถุ Vision เป็น [1]

พารามิเตอร์

คำอธิบาย

รายการ

หมายเลขของรายการในชุดข้อมูลที่จะใช้

ตัวอย่าง

เมื่อเริ่มต้น
[Display the smallest-appearing AprilTag ID.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ตั้งรายการวัตถุ Vision เป็น (จำนวนวัตถุ Vision)
พิมพ์ (คุณสมบัติวัตถุ Vision [id v]) บนคอนโซล ▶

ค่านิยม#

วัตถุวิชั่นมีอยู่จริง#

บล็อก Boolean Vision object exists จะรายงานว่าเซ็นเซอร์ตรวจจับภาพที่ระบุตรวจจับวัตถุใด ๆ อยู่ในขณะนี้หรือไม่

  • จริง — เซ็นเซอร์ตรวจจับภาพที่ระบุตรวจพบวัตถุ

  • เท็จ — เซ็นเซอร์ตรวจจับภาพที่ระบุไม่สามารถตรวจจับวัตถุได้

บล็อกแสดงหรือซ่อนแดชบอร์ด AI Vision#
<วัตถุ Vision มีอยู่?>

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น
[Climb upward when an AprilTag ID is detected.]
ขึ้นบินไปความสูง [300] [มม. v] ▶
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ปีน [ขึ้น v] เป็น [200] [มม. v] ▶

วัตถุวิชั่นคือ AprilTag ID#

บล็อกบูลีน Vision object is AprilTag ID จะรายงานว่า AprilTag ID เป็นหมายเลขประจำตัวที่เฉพาะเจาะจงหรือไม่

  • ถูกต้อง — รหัส AprilTag คือตัวเลข

  • ไม่ถูกต้อง — รหัส AprilTag ไม่ใช่ตัวเลข

ระบบ AI Vision ตรวจพบว่า AprilTag ID เป็นบล็อก Boolean#
<Vision object is AprilTag ID [1]>

พารามิเตอร์

คำอธิบาย

หมายเลขประจำตัว AprilTag

ตัวเลขที่จะนำไปเปรียบเทียบกับหมายเลข AprilTag ID ที่ตรวจพบ ซึ่งมีค่าตั้งแต่ 0 ถึง 37

ตัวอย่าง

เมื่อเริ่มต้น
[Display when the target AprilTag ID is detected.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ถ้า <Vision object is AprilTag ID [21]> แล้ว
พิมพ์ [Target found!] บนคอนโซล ▶
fine

การนับวัตถุวิสัยทัศน์#

บล็อกรายงาน จำนวนวัตถุ Vision จะรายงานจำนวนวัตถุที่ตรวจพบในชุดข้อมูลเป็นจำนวนเต็ม

บล็อกสแต็กรายการวัตถุ Set AI Vision#
(จำนวนวัตถุ Vision)

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น
[Display how many AprilTag IDs are detected.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
พิมพ์ (จำนวนวัตถุ Vision) บนคอนโซล ▶
รอ [0.2] วินาที

คุณสมบัติของวัตถุวิสัยทัศน์#

มีคุณสมบัติหลายอย่างที่รวมอยู่ในแต่ละวัตถุ (แสดงด้านล่าง) ที่จัดเก็บไว้หลังจากใช้บล็อก รับข้อมูลวัตถุ

บล็อกรายงานคุณสมบัติวัตถุ AI Vision#
(คุณสมบัติวัตถุ Vision [ความกว้าง v])

ค่าคุณสมบัติทั้งหมด ยกเว้น id อธิบายตำแหน่ง ขนาด การวางแนว หรือทิศทางของวัตถุที่ตรวจพบ ณ ขณะที่ใช้บล็อก get object data ค่าเหล่านี้วัดเป็นพิกเซลหรือองศา เซ็นเซอร์วิชั่นแต่ละตัวมีความละเอียดแตกต่างกัน:

  • ด้านหน้า: 640 x 480 พิกเซล

  • มองลงด้านล่าง: 640 x 400 พิกเซล

พารามิเตอร์

คำอธิบาย

คุณสมบัติ

ควรใช้คุณสมบัติใดของวัตถุที่ตรวจพบ:

ความกว้าง#

คุณสมบัติ width จะรายงานความกว้างของวัตถุที่ตรวจพบในหน่วยพิกเซล โดยแสดงเป็นจำนวนเต็มตั้งแต่ 1 ถึง 640

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็นความกว้าง#
(คุณสมบัติวัตถุ Vision [ความกว้าง v])

ตัวอย่าง

เมื่อเริ่มต้น
[Show if the AprilTag ID appears large or small.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ถ้า <(คุณสมบัติวัตถุ Vision [ความกว้าง v]) [math_greater_than v] [100]> แล้ว
พิมพ์ [Large] บนคอนโซล ▶
มิฉะนั้น
พิมพ์ [Small] บนคอนโซล ▶
fine
fine
รอ [0.2] วินาที

ความสูง#

คุณสมบัติ height จะรายงานความสูงของวัตถุที่ตรวจพบในหน่วยพิกเซล โดยแสดงเป็นจำนวนเต็มตั้งแต่ 1 ถึง 480

บล็อกคุณสมบัติของวัตถุ AI Vision ที่มีพารามิเตอร์ตั้งค่าเป็นความสูง#
(คุณสมบัติวัตถุ Vision [ความสูง v])

ตัวอย่าง

เมื่อเริ่มต้น
[Show if the AprilTag ID appears large or small.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ถ้า <(คุณสมบัติวัตถุ Vision [ความสูง v]) [math_greater_than v] [100]> แล้ว
พิมพ์ [Large] บนคอนโซล ▶
มิฉะนั้น
พิมพ์ [Small] บนคอนโซล ▶
fine
fine
รอ [0.2] วินาที

เซ็นเตอร์เอ็กซ์#

คุณสมบัติ centerX จะแสดงค่าพิกัด x ของจุดศูนย์กลางของวัตถุที่ตรวจพบในหน่วยพิกเซล โดยแสดงเป็นจำนวนเต็มตั้งแต่ 1 ถึง 640

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น centerX#
(คุณสมบัติวัตถุ Vision [centerX v])

ตัวอย่าง

เมื่อเริ่มต้น
[Show if an AprilTag ID is to the left or the right of the camera.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ถ้า <(คุณสมบัติวัตถุ Vision [centerX v]) [math_less_than v] [320]> แล้ว
พิมพ์ [To the left] บนคอนโซล ▶
มิฉะนั้น
พิมพ์ [To the right] บนคอนโซล ▶
fine
fine
รอ [0.2] วินาที

เซ็นเตอร์วาย#

คุณสมบัติ centerY รายงานค่าพิกัด y ของจุดศูนย์กลางของวัตถุที่ตรวจพบในหน่วยพิกเซล โดยแสดงเป็นจำนวนเต็มตั้งแต่ 1 ถึง 480

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น centerY#
(คุณสมบัติวัตถุ 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] [มม. v] ▶
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ถ้า <(คุณสมบัติวัตถุ Vision [centerY v]) [math_less_than v] [240]> แล้ว
พิมพ์ [Below the target!] บนคอนโซล ▶
มิฉะนั้น
พิมพ์ [Above the target!] บนคอนโซล ▶
fine
มิฉะนั้น
พิมพ์ [No target found!] บนคอนโซล ▶

แบริ่ง#

คุณสมบัติ bearing จะแสดงค่ามุมที่บ่งบอกตำแหน่งของวัตถุเมื่อเทียบกับโดรน โดยพฤติกรรมจะขึ้นอยู่กับเซ็นเซอร์ตรวจจับภาพที่ใช้

ค่า 0° แสดงว่าจุดศูนย์กลางของวัตถุและเซ็นเซอร์อยู่ในแนวเดียวกัน ค่าบวกหมายความว่าวัตถุอยู่ทางด้านขวา ในขณะที่ค่าลบหมายความว่าวัตถุอยู่ทางด้านซ้าย

เซ็นเซอร์

การคืนสินค้า

ลงล่าง

องศาที่ส่วนหน้าของโดรนต้องหมุนเพื่อให้ตรงกับจุดศูนย์กลางของวัตถุ ตั้งแต่ -180º ถึง 180º

ซึ่งไปข้างหน้า

องศาที่วัตถุเบี่ยงไปทางซ้ายหรือขวาจากจุดศูนย์กลางของเซ็นเซอร์ตรวจจับภาพ ตั้งแต่ –180º ถึง 180º

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น centerY#
(คุณสมบัติวัตถุ Vision [ทิศทาง v])

ตัวอย่าง

เมื่อเริ่มต้น
[Align the front of the drone to an AprilTag ID.]
ตั้งความเร็วเลี้ยวเป็น (15)%
ขึ้นบินไปความสูง [500] [มม. v] ▶
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ทางลง 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 ที่ตรวจพบเป็นจำนวนเต็มในหน่วยองศา ตั้งแต่ 1 ถึง 359

บล็อกคุณสมบัติของวัตถุ AI Vision ที่ตั้งค่าพารามิเตอร์เป็นการหมุน#
(คุณสมบัติวัตถุ Vision [การหมุน v])

ตัวอย่าง

เมื่อเริ่มต้น
[Turn left or right based on the rotation of an AprilTag ID.]
ขึ้นบินไปความสูง [1000] [มม. v] ▶
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า 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

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น originX#
(คุณสมบัติวัตถุ 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]) บนหน้าจอ
fine
รอ [0.2] วินาที

ออริจินวาย#

คุณสมบัติ originY รายงานค่าพิกัด y ของมุมบนซ้ายของกรอบล้อมรอบวัตถุที่ตรวจพบในหน่วยพิกเซล โดยแสดงเป็นจำนวนเต็มตั้งแต่ 1 ถึง 480

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น originY#
(คุณสมบัติวัตถุ 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]) บนหน้าจอ
fine
รอ [0.2] วินาที

รหัส#

คุณสมบัติ id จะรายงานหมายเลขประจำตัวของ AprilTag ID ที่ตรวจพบเป็นจำนวนเต็ม

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น tagID#
(คุณสมบัติวัตถุ Vision [id v])

ตัวอย่าง

เมื่อเริ่มต้น
[Display the detected AprilTag ID.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
พิมพ์ (คุณสมบัติวัตถุ Vision [id v]) บนคอนโซล ▶
fine
รอ [0.2] วินาที