ตรวจสอบให้แน่ใจว่าคุณมีลายเซ็นสี รหัสสี และรหัสสี รหัสสี ที่กำหนดค่าด้วยเซ็นเซอร์ AI Vision เพื่อให้สามารถใช้กับบล็อกของคุณได้ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการกำหนดค่า คุณสามารถอ่านบทความด้านล่างนี้ได้:
- การกำหนดค่าลายเซ็นสีด้วยลายเซ็น AI Vision ใน VEXcode V5
- การกำหนดค่ารหัสสีด้วยเซ็นเซอร์ AI Vision ใน VEXcode V5
นอกจากนี้ AI Vision Sensor ยังสามารถตรวจจับ AI Classifcations และ AprilTags ได้อีกด้วย หากต้องการเรียนรู้วิธีเปิดใช้งานโหมดการตรวจจับเหล่านี้ โปรดไปที่นี่:
รับข้อมูลภาพด้วย AI Vision Sensor
คำสั่ง AI Vision Sensor ทุกคำสั่งจะเริ่มต้นด้วยชื่อของ AI Vision Sensor ที่กำหนดค่าไว้ สำหรับตัวอย่างทั้งหมดในบทความนี้ ชื่อของ AI Vision Sensor ที่ใช้จะเป็น ai_vision_1
ถ่ายภาพ
วิธี take_snapshot
จะถ่ายภาพสิ่งที่ AI Vision Sensor กำลังมองเห็นในขณะนั้นและดึงข้อมูลจากสแนปช็อตนั้นเพื่อนำไปใช้ในโปรเจ็กต์ได้ เมื่อถ่ายภาพสแน็ปช็อต คุณจะต้องระบุประเภทของวัตถุที่ AI Vision Sensor ควรรวบรวมข้อมูล:
- Aลายเซ็นสี หรือรหัสสี
- ลายเซ็นภาพเหล่านี้เริ่มต้นด้วยชื่อของ AI Vision Sensor ขีดเส้นใต้คู่ จากนั้นจึงเป็นชื่อของลายเซ็นภาพ เช่น:
ai_vision_1__Blue
- ลายเซ็นภาพเหล่านี้เริ่มต้นด้วยชื่อของ AI Vision Sensor ขีดเส้นใต้คู่ จากนั้นจึงเป็นชื่อของลายเซ็นภาพ เช่น:
-
การจำแนก AI -
AiVision.ALL_AIOBJS
-
เมษายนแท็ก-
AiVision.ALL_TAGS
การถ่ายสแน็ปช็อตจะสร้างทูเพิลของวัตถุที่ตรวจพบทั้งหมดที่คุณระบุ ตัวอย่างเช่น หากคุณต้องการตรวจจับ "สีน้ำเงิน" ลายเซ็นสีและ AI Vision Sensor ตรวจจับวัตถุสีน้ำเงิน 3 ชนิดที่แตกต่างกัน ข้อมูลจากทั้งสามชนิดจะถูกใส่ไว้ในทูเพิล
ในตัวอย่างนี้ ตัวแปร vision_objects
จะจัดเก็บทูเพิลที่มีลายเซ็นสี "สีม่วง"ที่ตรวจพบ จาก AI Vision Sensor ชื่อ ai_vision_1
โดยจะแสดงจำนวนวัตถุที่ตรวจพบและจับภาพใหม่ทุกๆ 0.5 วินาที
while True:
# รับภาพรวมของลายเซ็นสีม่วงทั้งหมดและจัดเก็บไว้ใน vision_objects
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในภาพรวมก่อนดึงข้อมูล
if vision_objects[0].exists == True
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Object count:", len(vision_objects))
wait(0.5, SECONDS)
คุณสมบัติของวัตถุ
วัตถุแต่ละชิ้นจากสแนปช็อตจะมีคุณสมบัติแตกต่างกันที่สามารถนำมาใช้เพื่อรายงานข้อมูลเกี่ยวกับวัตถุนั้นได้ คุณสมบัติที่มีอยู่มีดังนี้:
- รหัส
- ศูนย์X และศูนย์Y
- originX และ originY
- ความกว้าง
- ความสูง
- มุม
- คะแนน
- มีอยู่
ในการเข้าถึงคุณสมบัติของวัตถุ ให้ใช้ชื่อตัวแปรที่จัดเก็บทูเพิลตามด้วยดัชนีของวัตถุ
ดัชนีวัตถุระบุว่าคุณต้องการดึงคุณสมบัติของวัตถุเฉพาะใด หลังจากถ่ายภาพแล้ว AI Vision Sensor จะจัดเรียงวัตถุตามขนาดโดยอัตโนมัติ วัตถุที่ใหญ่ที่สุดจะได้รับการกำหนดดัชนีเป็น 0 ส่วนวัตถุที่มีขนาดเล็กกว่าจะได้รับหมายเลขดัชนีที่สูงกว่า
ตัวอย่างเช่น การเรียกความกว้างของวัตถุที่ใหญ่ที่สุดภายในตัวแปร vision_objects ที่ จะเป็นดังนี้:
vision_objects[0].width
รหัส
คุณสมบัติ id
ใช้ได้เฉพาะกับ AI Classifications และ ของเดือนเมษายน
สำหรับ AprilTagคุณสมบัติ id
แสดงถึงหมายเลข IDAprilTag(s) ที่ตรวจพบ
การระบุ AprilTags ที่เฉพาะ ช่วยให้สามารถนำทางแบบเลือกได้ คุณสามารถตั้งโปรแกรมให้หุ่นยนต์ของคุณเคลื่อนที่ไปยังแท็กบางแท็กในขณะที่เพิกเฉยต่อแท็กอื่นๆ ซึ่งจะทำให้สามารถใช้แท็กเหล่านั้นเป็นป้ายบอกทางสำหรับการนำทางอัตโนมัติได้อย่างมีประสิทธิภาพ
สำหรับการจำแนกประเภท AIรายการคุณสมบัติ id
แสดงถึงประเภทของการจำแนกประเภท AI ที่ตรวจพบ
การระบุการจำแนกประเภท AI เฉพาะ ช่วยให้หุ่นยนต์โฟกัสเฉพาะที่วัตถุที่ระบุได้ เช่น ต้องการนำทางไปยัง Buckyball สีแดงเท่านั้น ไม่ใช่ลูกบอลสีน้ำเงิน
ไปที่บทความเหล่านี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับแท็ก เมษายน และ การจำแนก AI และวิธีการเปิดใช้งานการตรวจจับใน AI Vision Utility
ศูนย์กลางX
และ ศูนย์กลางY
นี่คือพิกัดศูนย์กลางของวัตถุที่ตรวจพบเป็นพิกเซล
พิกัด CenterX และ CenterY ช่วยในการนำทางและการระบุตำแหน่ง เซ็นเซอร์ AI Vision มีความละเอียด 320 x 240 พิกเซล
คุณจะเห็นได้ว่าวัตถุที่อยู่ใกล้กับ AI Vision Sensor มากขึ้นจะมีพิกัด CenterY ต่ำกว่าวัตถุที่อยู่ไกลออกไป
ในตัวอย่างนี้ เนื่องจากจุดศูนย์กลางของมุมมองของเซ็นเซอร์ AI Vision อยู่ที่ (160, 120) หุ่นยนต์จะเลี้ยวขวาจนกระทั่งพิกัดศูนย์กลาง X ของวัตถุที่ตรวจจับได้มีขนาดมากกว่า 150 พิกเซลแต่ต่ำกว่า 170 พิกเซล
while True:
# รับภาพรวมของลายเซ็นสีน้ำเงินทั้งหมดและจัดเก็บไว้ใน vision_objects
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในภาพรวมก่อนดึงข้อมูล
if vision_objects[0].exists == True
# ตรวจสอบว่าวัตถุไม่อยู่ตรงกลางมุมมองของ AI Vision Sensor
if vision_objects[0].centerX > 150 และ 170 > vision_objects[0].centerX:
# หมุนขวาต่อไปจนกว่าวัตถุจะอยู่ตรงกลางมุมมอง
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(5, MSEC)
originX
และ originY
OriginX และ OriginY คือพิกัดที่มุมบนซ้ายของวัตถุที่ตรวจพบเป็นพิกเซล
พิกัด OriginX และ OriginY ช่วยในการนำทางและการระบุตำแหน่ง การรวมพิกัดนี้กับความกว้างและความสูงของวัตถุ ช่วยให้คุณสามารถกำหนดขนาดของกล่องขอบเขตของวัตถุได้ สิ่งนี้สามารถช่วยในการติดตามวัตถุที่กำลังเคลื่อนที่หรือการนำทางระหว่างวัตถุได้
กว้าง
และ สูง
นี่คือความกว้างหรือความสูงของวัตถุที่ตรวจพบเป็นพิกเซล
การวัดความกว้างและความสูงช่วยระบุวัตถุที่แตกต่างกัน ตัวอย่างเช่น Buckyball จะมีความสูงมากกว่า Ring
ความกว้างและความสูงยังระบุระยะห่างของวัตถุจาก AI Vision Sensor อีกด้วย การวัดที่เล็กกว่าปกติหมายความว่าวัตถุนั้นอยู่ไกลออกไป ในขณะที่การวัดที่มากขึ้นแสดงว่าวัตถุนั้นอยู่ใกล้กว่า
ในตัวอย่างนี้ ความกว้างของวัตถุจะถูกใช้สำหรับการนำทาง หุ่นยนต์จะเข้าใกล้วัตถุจนความกว้างถึงขนาดที่กำหนด ก่อนที่จะหยุด
while True:
# รับภาพรวมของลายเซ็นสีน้ำเงินทั้งหมดและจัดเก็บไว้ใน vision_objects
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในภาพรวมก่อนดึงข้อมูล
if vision_objects[0].exists == True
# ตรวจสอบว่าวัตถุที่ใหญ่ที่สุดอยู่ใกล้กับ AI Vision Sensor หรือไม่โดยการวัดความกว้าง
if vision_objects[0].width < 250:
# ขับเข้าใกล้วัตถุมากขึ้นจนกว่าจะกว้างกว่า 250 พิกเซล
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(5, MSEC)
มุม
คุณสมบัติมุม ใช้ได้เฉพาะกับรหัสสี และAprilTags.
เท่านั้น หมายความว่ารหัสสี หรือ AprilTag ที่ตรวจพบมีการวางแนวแตกต่างกันหรือไม่
คุณสามารถดูได้ว่าหุ่นยนต์มีการวางแนวแตกต่างกันหรือไม่เมื่อเทียบกับรหัสสี หรือAprilTag และตัดสินใจนำทางตามนั้น
ตัวอย่างเช่น หากไม่สามารถตรวจพบรหัสสี ในมุมที่เหมาะสม วัตถุที่รหัสสีนั้นแสดงก็อาจไม่สามารถถูกหุ่นยนต์หยิบขึ้นได้อย่างถูกต้อง
คะแนน
คุณสมบัติคะแนน จะถูกใช้เมื่อตรวจจับการจำแนก AIรายการ ด้วยเซ็นเซอร์ AI Vision
คะแนนความเชื่อมั่นแสดงให้เห็นว่าเซ็นเซอร์ AI Vision มีความแม่นยำแค่ไหนในการตรวจจับ ในภาพนี้มีความมั่นใจ 99% ในการระบุการจำแนกด้วย AI ของวัตถุทั้งสี่นี้ คุณสามารถใช้คะแนนนี้เพื่อให้แน่ใจว่าหุ่นยนต์ของคุณเน้นเฉพาะการตรวจจับที่มีความมั่นใจสูงเท่านั้น
มีอยู่
คุณสมบัติ มี
ใช้เพื่อตรวจจับว่ามีการตรวจพบลายเซ็นภาพ ภาพ ที่ระบุไว้ในสแนปช็อตที่ถ่ายครั้งล่าสุดหรือไม่
วิธีนี้ช่วยให้คุณตรวจสอบได้ว่ามีการตรวจพบวัตถุใด ๆ ในสแนปช็อตก่อนหน้านี้หรือไม่ คุณสมบัตินี้จะส่งคืนค่า True เมื่อมีวัตถุอยู่ และส่งคืนค่า False เมื่อวัตถุไม่มีอยู่