วิสัยทัศน์#
การแนะนำ#
โดรน VEX AIR มีเซ็นเซอร์ตรวจจับภาพสองตัวที่ตรวจจับและติดตามรหัส AprilTag ซึ่งช่วยให้โดรนสามารถวิเคราะห์สภาพแวดล้อม ติดตามวัตถุ และตอบสนองตามข้อมูลภาพที่ตรวจพบได้
ด้านล่างนี้คือรายการบล็อกทั้งหมดที่มีอยู่:
การดำเนินการ — ควบคุมฟีดภาพและบันทึกข้อมูลวัตถุ
รับข้อมูลวัตถุ — บันทึกข้อมูลสำหรับ AprilTag ID
การตั้งค่า — ปรับแต่งว่าวัตถุที่ตรวจพบใดบ้างที่จะสามารถเข้าถึงได้
ตั้งค่ารายการวัตถุ Vision — เลือกวัตถุเฉพาะจากรายการวัตถุที่ตรวจพบ
ค่าต่างๆ — ดึงข้อมูลการมีอยู่ การจำแนกประเภท และคุณสมบัติของวัตถุ
วัตถุวิชั่นมีอยู่ — รายงานว่าตรวจพบวัตถุหรือไม่
วัตถุ Vision คือ AprilTag ID — ตรวจสอบว่า AprilTag ID ที่ตรวจพบตรงกับ ID ที่ระบุหรือไม่
จำนวนวัตถุที่ตรวจพบ — รายงานจำนวนวัตถุที่ตรวจพบ
คุณสมบัติของวัตถุวิชั่น — ดึงรายละเอียดต่างๆ เช่น:
การกระทำ#
รับข้อมูลวัตถุ#
บล็อกสแต็ก รับข้อมูลวัตถุ จะกรองข้อมูลจากเฟรมของเซ็นเซอร์ตรวจจับภาพ เซ็นเซอร์ตรวจจับภาพสามารถตรวจจับรหัส AprilTag ได้
ชุดข้อมูลจะจัดเก็บวัตถุที่เรียงลำดับจากขนาดใหญ่ที่สุดไปเล็กที่สุดตามความกว้าง โดยเริ่มต้นที่ดัชนี 0 คุณสมบัติของวัตถุแต่ละชิ้นสามารถเข้าถึงได้โดยใช้บล็อก Vision object property หากไม่พบวัตถุที่ตรงกัน ระบบจะรายงานชุดข้อมูลว่างเปล่า
รับข้อมูล [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 จะกำหนดว่าควรใช้รายการใดในชุดข้อมูล
ตั้งรายการวัตถุ Vision เป็น [1]
พารามิเตอร์ |
คำอธิบาย |
|---|---|
รายการ |
หมายเลขของรายการในชุดข้อมูลที่จะใช้ |
ตัวอย่าง
เมื่อเริ่มต้น
[Display the smallest-appearing AprilTag ID.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
ตั้งรายการวัตถุ Vision เป็น (จำนวนวัตถุ Vision)
พิมพ์ (คุณสมบัติวัตถุ Vision [id v]) บนคอนโซล ▶
ค่านิยม#
วัตถุวิชั่นมีอยู่จริง#
บล็อก Boolean Vision object exists จะรายงานว่าเซ็นเซอร์ตรวจจับภาพที่ระบุตรวจจับวัตถุใด ๆ อยู่ในขณะนี้หรือไม่
จริง — เซ็นเซอร์ตรวจจับภาพที่ระบุตรวจพบวัตถุ
เท็จ — เซ็นเซอร์ตรวจจับภาพที่ระบุไม่สามารถตรวจจับวัตถุได้
<วัตถุ 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 ไม่ใช่ตัวเลข
<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 จะรายงานจำนวนวัตถุที่ตรวจพบในชุดข้อมูลเป็นจำนวนเต็ม
(จำนวนวัตถุ Vision)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
บล็อกนี้ไม่มีพารามิเตอร์ |
ตัวอย่าง
เมื่อเริ่มต้น
[Display how many AprilTag IDs are detected.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
พิมพ์ (จำนวนวัตถุ Vision) บนคอนโซล ▶
รอ [0.2] วินาที
คุณสมบัติของวัตถุวิสัยทัศน์#
มีคุณสมบัติหลายอย่างที่รวมอยู่ในแต่ละวัตถุ (แสดงด้านล่าง) ที่จัดเก็บไว้หลังจากใช้บล็อก รับข้อมูลวัตถุ
(คุณสมบัติวัตถุ Vision [ความกว้าง v])
ค่าคุณสมบัติทั้งหมด ยกเว้น id อธิบายตำแหน่ง ขนาด การวางแนว หรือทิศทางของวัตถุที่ตรวจพบ ณ ขณะที่ใช้บล็อก get object data ค่าเหล่านี้วัดเป็นพิกเซลหรือองศา เซ็นเซอร์วิชั่นแต่ละตัวมีความละเอียดแตกต่างกัน:
ด้านหน้า: 640 x 480 พิกเซล
มองลงด้านล่าง: 640 x 400 พิกเซล
พารามิเตอร์ |
คำอธิบาย |
|---|---|
คุณสมบัติ |
ควรใช้คุณสมบัติใดของวัตถุที่ตรวจพบ: |
ความกว้าง#
คุณสมบัติ width จะรายงานความกว้างของวัตถุที่ตรวจพบในหน่วยพิกเซล โดยแสดงเป็นจำนวนเต็มตั้งแต่ 1 ถึง 640
(คุณสมบัติวัตถุ 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
(คุณสมบัติวัตถุ 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
(คุณสมบัติวัตถุ 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
(คุณสมบัติวัตถุ 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º |
(คุณสมบัติวัตถุ 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
(คุณสมบัติวัตถุ 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
(คุณสมบัติวัตถุ 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
(คุณสมบัติวัตถุ 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 ที่ตรวจพบเป็นจำนวนเต็ม
(คุณสมบัติวัตถุ Vision [id v])
ตัวอย่าง
เมื่อเริ่มต้น
[Display the detected AprilTag ID.]
ทำตลอดไป
รับข้อมูล [AprilTag ทั้งหมด v] จากกล้อง Vision [ไปข้างหน้า v]
ล้างคอนโซล
ถ้า <วัตถุ Vision มีอยู่?> แล้ว
พิมพ์ (คุณสมบัติวัตถุ Vision [id v]) บนคอนโซล ▶
fine
รอ [0.2] วินาที