การเขียนโค้ดด้วยเซ็นเซอร์ AI Vision ใน VEXcode V5 Python

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

นอกจากนี้ AI Vision Sensor ยังสามารถตรวจจับ AI Classifcations และ AprilTags ได้อีกด้วย หากต้องการเรียนรู้วิธีเปิดใช้งานโหมดการตรวจจับเหล่านี้ โปรดไปที่นี่:

หากต้องการเรียนรู้รายละเอียดเพิ่มเติมเกี่ยวกับคำสั่งแต่ละคำสั่งเหล่านี้และวิธีใช้ใน VEXcode โปรดไปที่ไซต์ API


รับข้อมูลภาพด้วยเซ็นเซอร์ AI Vision

คำสั่ง 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 - AiVision.ALL_AIOBJS
  • เมษายนแท็ก- AiVision.ALL_TAGS

การถ่ายภาพแบบสแนปช็อตจะสร้างทูเพิลของวัตถุที่ตรวจพบทั้งหมดที่คุณระบุ ตัวอย่างเช่น หากคุณต้องการตรวจจับ "สีน้ำเงิน" ลายเซ็นสีและเซ็นเซอร์ AI Vision ตรวจพบวัตถุสีน้ำเงินที่แตกต่างกัน 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)

# ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในสแนปช็อตก่อนดึงข้อมูล
หาก vision_objects[0].exists == True

brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)

brain.screen.print("จำนวนวัตถุ:", len(vision_objects))
รอ (0.5, วินาที)

คุณสมบัติของวัตถุ

วัตถุแต่ละชิ้นจากสแนปช็อตจะมีคุณสมบัติที่แตกต่างกันซึ่งสามารถใช้เพื่อรายงานข้อมูลเกี่ยวกับวัตถุนั้นๆ ได้ คุณสมบัติที่มีอยู่มีดังนี้:

  • รหัส
  • centerX และ centerY
  • originX และ originY
  • ความกว้าง
  • ความสูง
  • มุม
  • คะแนน
  • มีอยู่

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

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

ตัวอย่างเช่น การเรียกความกว้างของวัตถุที่ใหญ่ที่สุดภายในตัวแปร vision_objects จำนวน จะเป็นดังนี้: vision_objects[0].width

รหัส

คุณสมบัติ id ใช้ได้เฉพาะกับ AI Classifications และ ของวันที่ เมษายน

เครื่องหมายระบุรูปสี่เหลี่ยมจัตุรัส 3 อัน มีหมายเลขประจำตัว 0, 9 และ 3 โดยแต่ละอันมีพิกัดและการวัดขนาดที่สอดคล้องกัน ซึ่งแสดงเป็นข้อความสีขาว ID 0 อยู่ทางซ้าย ID 9 อยู่ทางขวา และ ID 3 อยู่ตรงกลางด้านล่าง เครื่องหมายแต่ละอันจะมีรูปแบบสีดำและสีขาวเฉพาะตัวภายในสี่เหลี่ยม

สำหรับAprilTagคุณสมบัติ id แสดงถึงหมายเลข IDAprilTag(s) ที่ตรวจพบ

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

ลูกบอลสองลูกและวงแหวนสองวงระบุไว้ในภาพ พร้อมป้ายกำกับแสดงตำแหน่ง ขนาด และคะแนน ลูกบอลสีแดงอยู่ทางซ้าย ลูกบอลสีน้ำเงินอยู่ทางขวา วงแหวนสีเขียวอยู่ทางซ้ายล่าง และวงแหวนสีแดงอยู่ทางขวาล่าง วัตถุแต่ละชิ้นจะมีกรอบสีขาวล้อมรอบ และรายละเอียดต่างๆ เช่น พิกัด X, Y, ความกว้าง, ความสูง และคะแนน 99% จะแสดงเป็นข้อความสีขาว

สำหรับการจำแนก AIรายการคุณสมบัติ id แสดงถึงประเภทเฉพาะของการจำแนก AI ที่ตรวจพบ

การระบุ การจำแนกประเภท AIที่เฉพาะเจาะจง ช่วยให้หุ่นยนต์สามารถมุ่งเน้นไปที่วัตถุที่เจาะจงเท่านั้น เช่น ต้องการนำทางไปยัง Buckyball สีแดงเท่านั้น ไม่ใช่สีน้ำเงิน

ไปที่บทความเหล่านี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับ เมษายน และ การจำแนก AI และวิธีการเปิดใช้งานการตรวจจับใน AI Vision Utility

ศูนย์กลางX และ ศูนย์กลางY

นี่คือพิกัดศูนย์กลางของวัตถุที่ตรวจพบเป็นพิกเซล

Buckyball สีน้ำเงินที่กำลังถูกติดตามโดยระบบการมองเห็นด้วยคอมพิวเตอร์ วัตถุนั้นมีโครงร่างเป็นสี่เหลี่ยมสีขาว และภายในโครงร่างเป็นสี่เหลี่ยมสีแดงขนาดเล็กที่ล้อมรอบไม้กางเขนสีขาวตรงกลาง ที่มุมบนซ้ายของรูปภาพ มีป้ายกำกับระบุว่าวัตถุนั้นเป็นสีน้ำเงิน โดยมีพิกัด X:176, Y:117 และขนาด W:80, H:78

พิกัด CenterX และ CenterY ช่วยในการนำทางและการระบุตำแหน่ง เซ็นเซอร์ AI Vision มีความละเอียด 320 x 240 พิกเซล

วัตถุลูกบาศก์สีน้ำเงินสองชิ้นที่ติดตามโดยระบบการมองเห็น วัตถุด้านบนมีป้ายกำกับพิกัด X:215, Y:70 และขนาด W:73, H:84 พร้อมด้วยเส้นขอบสีขาวและกากบาทสีขาวตรงกลาง วัตถุด้านล่างมีป้ายกำกับพิกัด X:188, Y:184 และขนาด W:144, H:113 โดยมีเส้นขอบสีขาวพร้อมเครื่องหมายกากบาทสีขาวตรงกลาง

คุณจะเห็นได้ว่าวัตถุที่อยู่ใกล้กับ AI Vision Sensor จะมีพิกัด CenterY ต่ำกว่าวัตถุที่อยู่ไกลออกไป

ในตัวอย่างนี้ เนื่องจากจุดศูนย์กลางของมุมมองของเซ็นเซอร์วิสัยทัศน์ AI อยู่ที่ (160, 120) หุ่นยนต์จะเลี้ยวขวาจนกระทั่งพิกัดศูนย์กลาง X ของวัตถุที่ตรวจจับได้มีมากกว่า 150 พิกเซล แต่ต่ำกว่า 170 พิกเซล

while True:
# รับภาพรวมของลายเซ็นสีน้ำเงินทั้งหมดและจัดเก็บไว้ใน vision_objects
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในสแนปช็อตก่อนดึงข้อมูล
หาก vision_objects[0].exists == True

# ตรวจสอบว่าวัตถุไม่อยู่ในจุดศูนย์กลางของมุมมองของ AI Vision Sensor
หาก vision_objects[0].centerX > 150 และ 170 > vision_objects[0].centerX:

# หมุนไปทางขวาต่อไปจนกว่าวัตถุจะอยู่ตรงกลางมุมมอง
drivetrain.turn(ขวา)
อื่น ๆ :
drivetrain.stop()
wait(5, MSEC)

originX และ originY

OriginX และ OriginY คือพิกัดที่มุมบนซ้ายของวัตถุที่ตรวจพบเป็นพิกเซล

Buckyball สีน้ำเงินที่ถูกติดตามโดยระบบการมองเห็น โครงร่างสีขาวล้อมรอบวัตถุ โดยมีกากบาทสีขาวอยู่ตรงกลางภายในโครงร่าง ป้ายด้านบนซ้ายระบุสีของวัตถุเป็นสีน้ำเงิน พร้อมด้วยพิกัด X:176, Y:117 และขนาด W:80, H:78 สี่เหลี่ยมสีแดงเล็กๆ เน้นที่มุมบนซ้ายของวัตถุ

พิกัด OriginX และ OriginY ช่วยในการนำทางและการระบุตำแหน่ง การรวมพิกัดนี้กับความกว้างและความสูงของวัตถุ ช่วยให้คุณสามารถกำหนดขนาดของกรอบขอบเขตของวัตถุได้ สิ่งนี้สามารถช่วยติดตามวัตถุที่กำลังเคลื่อนที่หรือการนำทางระหว่างวัตถุได้

กว้าง และ สูง

นี่คือความกว้างหรือความสูงของวัตถุที่ตรวจพบเป็นพิกเซล

รูปภาพแสดง Buckyball สีน้ำเงินพร้อมเส้นขอบสี่เหลี่ยมสีขาวติดตามอยู่ มุมบนซ้ายมีป้ายกำกับระบุว่าเป็นวัตถุสีน้ำเงิน มีพิกัด X:176, Y:117 และขนาด W:80, H:78 ลูกศรสีแดงเน้นความกว้างและความสูงของวัตถุ

การวัดความกว้างและความสูงช่วยระบุวัตถุที่แตกต่างกัน ตัวอย่างเช่น Buckyball จะมีความสูงมากกว่า Ring

วัตถุลูกบาศก์สีน้ำเงินสองชิ้นถูกติดตามโดยระบบการจดจำภาพ ลูกบาศก์ด้านบนมีโครงร่างสีขาวพร้อมป้ายระบุตำแหน่งเป็น X:215, Y:70 และขนาด W:73, H:84 ลูกบาศก์ด้านล่างมีโครงร่างสีขาวคล้ายกัน โดยมีป้ายแสดง X:188, Y:184 และขนาด W:144, H:113 ลูกบาศก์แต่ละลูกจะมีเครื่องหมายกากบาทสีขาวอยู่ตรงกลาง ซึ่งอาจบ่งบอกจุดโฟกัสสำหรับการติดตาม ป้ายกำกับเน้นข้อมูลการวัดและการติดตามสำหรับแต่ละวัตถุ

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

ในตัวอย่างนี้ ความกว้างของวัตถุจะถูกใช้สำหรับการนำทาง หุ่นยนต์จะเข้าใกล้วัตถุจนกระทั่งความกว้างถึงขนาดที่กำหนดก่อนที่จะหยุด

while True:
# รับภาพรวมของลายเซ็นสีน้ำเงินทั้งหมดและจัดเก็บไว้ใน vision_objects
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในสแนปช็อตก่อนดึงข้อมูล
if vision_objects[0].exists == True

# ตรวจสอบว่าวัตถุที่ใหญ่ที่สุดอยู่ใกล้กับ AI Vision Sensor หรือไม่โดยการวัดความกว้าง
หาก vision_objects[0].width < 250:

# ขับเข้าไปใกล้วัตถุจนกระทั่งมีความกว้างมากกว่า 250 พิกเซล
drivetrain.drive(FORWARD)
อื่น ๆ :
drivetrain.stop()

wait(5, MSEC)

มุม

GIF หมุนที่แสดงบล็อกสีแดงและสีเขียว เมื่อวางบล็อกในแนวนอนอย่างสมบูรณ์แบบจากสีแดงไปจนถึงสีเขียว บล็อกจะแสดงเป็น 0 องศา หากบล็อกสีแดงอยู่บนบล็อกสีเขียวในแนวตั้ง จะอยู่ที่ 90 องศา หากบล็อกมีแนวนอนเป็นสีเขียวถึงสีแดงแสดงว่าเป็น 180 องศา หากบล็อกสีเขียวอยู่บนบล็อกสีแดงในแนวตั้ง จะเป็น 20 องศา

คุณสมบัติมุม ใช้ได้เฉพาะรหัสสีสีเท่านั้น และเมษายนแท็ก.

แสดงว่ารหัสสี หรือ AprilTag ที่ตรวจพบนั้นมีการวางแนวต่างกัน

กองลูกบาศก์สองลูก ลูกหนึ่งสีเขียวอยู่ด้านบนและอีกลูกสีน้ำเงินอยู่ด้านล่าง ซึ่งถูกติดตามโดยระบบการมองเห็น มีโครงร่างสีขาวล้อมรอบลูกบาศก์ทั้งสอง โดยมีเครื่องหมายกากบาทสีขาวอยู่ตรงกลางลูกบาศก์สีเขียว ป้ายกำกับที่ด้านล่างของรูปภาพจะแสดงเป็น Green_Blue A:87° ซึ่งระบุสีที่ตรวจพบและการวัดมุม ด้านล่างนั้น พิกัดจะแสดงเป็น X:117, Y:186 โดยมีมิติ W:137, H:172 ซึ่งแสดงตำแหน่งและขนาดของลูกบาศก์ที่ซ้อนกันในกรอบ

คุณสามารถดูได้ว่าหุ่นยนต์มีการวางแนวที่แตกต่างกันหรือไม่เมื่อเทียบกับรหัสสี หรือAprilTag และตัดสินใจนำทางตามนั้น

ลูกบาศก์ 2 ลูก หนึ่งลูกเป็นสีเขียวและอีกหนึ่งลูกเป็นสีน้ำเงิน วางเคียงข้างกันและติดตามโดยระบบการมองเห็น โครงร่างสีขาวล้อมรอบลูกบาศก์ทั้งสองและมีเครื่องหมายกากบาทสีขาวอยู่ตรงกลาง ป้ายกำกับด้านบนซ้ายระบุเป็นสีเขียว_น้ำเงิน A:0° อ้างอิงถึงสีที่ตรวจพบและการวัดมุม ด้านล่างนั้นพิกัดจะแสดงเป็น X:150, Y:102 โดยมีมิติ W:179, H:109 ซึ่งแสดงตำแหน่งและขนาดของลูกบาศก์ภายในกรอบ

ตัวอย่างเช่น หากไม่ตรวจพบรหัสสี ในมุมที่เหมาะสม วัตถุที่รหัสสีนั้นแสดงอาจไม่สามารถถูกหุ่นยนต์หยิบขึ้นได้อย่างถูกต้อง

คะแนน

คุณสมบัติคะแนน จะถูกใช้เมื่อตรวจจับการจำแนกประเภท AIรายการ ด้วยเซ็นเซอร์ AI Vision

ภาพแสดงวัตถุสี่ชิ้นที่ถูกติดตามโดยระบบการมองเห็น ได้แก่ ลูกบอลสองลูกและวงแหวนสองวง ลูกบอลสีแดงมีพิกัด X:122, Y:84, W:67, H:66 และคะแนน 99% ลูกบอลสีน้ำเงินมี X:228, Y:86, W:70, H:68 โดยมีคะแนน 99% วงแหวนสีเขียวมีพิกัด X:109, Y:186, W:98, H:92 และคะแนน 99% วงแหวนสีแดงมีป้ายกำกับว่า X:259, Y:187, W:89, H:91 โดยมีคะแนน 99% วัตถุแต่ละชิ้นมีเส้นขอบเป็นสีขาว ซึ่งบ่งบอกถึงความแม่นยำในการติดตาม

คะแนนความเชื่อมั่นบ่งชี้ว่าเซ็นเซอร์ AI Vision มีความมั่นใจแค่ไหนในการตรวจจับ ในภาพนี้ มีความมั่นใจ 99% ในการระบุการจำแนก AI ของวัตถุทั้งสี่นี้ คุณสามารถใช้คะแนนนี้เพื่อให้แน่ใจว่าหุ่นยนต์ของคุณมุ่งเน้นไปที่การตรวจจับที่มีความมั่นใจสูงเท่านั้น

มีอยู่

คุณสมบัติ มี ใช้เพื่อตรวจจับว่าตรวจพบลายเซ็นภาพ ที่ระบุไว้ ในสแนปช็อตที่ถ่ายครั้งล่าสุดหรือไม่

วิธีนี้จะช่วยให้คุณตรวจสอบได้ว่ามีการตรวจพบวัตถุใดๆ ในสแนปช็อตก่อนหน้านี้หรือไม่ คุณสมบัตินี้จะคืนค่า True เมื่อมีวัตถุอยู่ และคืนค่า False เมื่อวัตถุไม่มีอยู่

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: