ตรวจสอบให้แน่ใจว่าคุณมีลายเซ็นสี สี และรหัสสี สี ที่กำหนดค่าด้วยเซ็นเซอร์ 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 และ ของเดือนเมษายน

AI Vision Utility กำลังติดตาม AprilTags จำนวนสามรายการ แท็กแต่ละอันจะได้รับการระบุ ตำแหน่ง และโครงร่าง เพื่อบ่งชี้การติดตามโดยระบบ ID AprilTag ในตัวอย่างนี้อ่านเป็น 0, 3 และ 9

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

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

ยูทิลิตี้ AI Vision กำลังติดตามวัตถุสี่ชิ้น ได้แก่ BuckyBall สองชิ้นและ Rings สองชิ้น วัตถุแต่ละชิ้นจะได้รับการระบุ ตำแหน่ง และโครงร่าง พร้อมทั้งระบุการติดตามโดยระบบ ยูทิลิตี้จะบันทึก ID ของวัตถุ ในตัวอย่างนี้จะมี ลูกบอลสีแดง ลูกบอลสีน้ำเงิน วงแหวนสีเขียว และวงแหวนสีแดง

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

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

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

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

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

เซ็นเซอร์ AI Vision แสดงให้เห็นการติดตาม Blue Buckyball Buckyball มีสี่เหลี่ยมติดตามอยู่รอบๆ และฉลากด้านบนแสดงให้เห็นว่ามีตำแหน่ง X เท่ากับ 176 และตำแหน่ง Y เท่ากับ 117 จุดศูนย์กลางของสี่เหลี่ยมติดตามจะถูกเน้นเพื่อแสดงว่าตำแหน่งนั้นวัดจากจุดศูนย์กลาง

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

เซ็นเซอร์ AI Vision แสดงให้เห็นการติดตาม Blue Cube จำนวน 2 อัน Cubes มีสี่เหลี่ยมสำหรับติดตามอยู่รอบๆ และอีกอันหนึ่งอยู่ใกล้กล้องมากกว่ามาก ตัวที่อยู่ใกล้จะมีตำแหน่ง Y เท่ากับ 184 และตัวที่อยู่ไกลจะมีตำแหน่ง Y เท่ากับ 70

คุณจะเห็นได้ว่าวัตถุที่อยู่ใกล้กับ 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 คือพิกัดที่มุมบนซ้ายของวัตถุที่ตรวจพบเป็นพิกเซล

เซ็นเซอร์ AI Vision แสดงให้เห็นการติดตาม Blue Buckyball Buckyball มีสี่เหลี่ยมติดตามอยู่รอบๆ และฉลากด้านบนแสดงให้เห็นว่ามีตำแหน่ง X เท่ากับ 176 และตำแหน่ง Y เท่ากับ 117 มุมซ้ายบนของสี่เหลี่ยมติดตามจะถูกเน้นเพื่อแสดงให้เห็นว่าตำแหน่งจุดเริ่มต้นวัดจากมุมซ้ายบน

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

กว้าง และ สูง

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

เซ็นเซอร์ AI Vision แสดงให้เห็นการติดตาม Blue Buckyball Buckyball มีสี่เหลี่ยมติดตามอยู่รอบๆ และป้ายกำกับด้านบนแสดงให้เห็นว่ามีความกว้าง 80 พิกเซลและความสูง 78 พิกเซล ลูกศรสีแดงกำลังเน้นสี่เหลี่ยมการติดตามเพื่อแสดงความกว้างและความสูง

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

เซ็นเซอร์ AI Vision แสดงให้เห็นการติดตาม Blue Cube จำนวน 2 อัน Cubes มีสี่เหลี่ยมสำหรับติดตามอยู่รอบๆ และอีกอันหนึ่งอยู่ใกล้กล้องมากกว่ามาก อันที่อยู่ใกล้จะมีความกว้างเท่ากับ 144 และสูงเท่ากับ 113 และอันที่อยู่ไกลจะมีความกว้างเท่ากับ 73 และสูงเท่ากับ 84

ความกว้างและความสูงยังระบุระยะห่างของวัตถุจากเซ็นเซอร์ 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)

มุม

แอนิเมชั่นของสี่เหลี่ยมสีแดงและสี่เหลี่ยมสีเขียวที่หมุนพร้อมกันเพื่อแสดงค่ามุม 360 องศา

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

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

เซ็นเซอร์ AI Vision จะแสดงการติดตามรหัสสีจากสีเขียวและสีน้ำเงิน ฟีดวิดีโอแสดงให้เห็น Green Cube วางซ้อนกันอยู่บน Blue Cube ค่ามุมของรหัสสีจะถูกเน้นและอ่านได้ 87 องศา ซึ่งระบุว่ารหัสสีถูกวางแนวในแนวตั้ง

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

เซ็นเซอร์ AI Vision จะแสดงการติดตามรหัสสีจากสีเขียวและสีน้ำเงิน ฟีดวิดีโอแสดงให้เห็น Green Cube นั่งอยู่ข้าง ๆ Blue Cube แต่ทำมุมที่แปลกเมื่อเทียบกับเซ็นเซอร์ ค่ามุมของรหัสสีจะถูกเน้นและอ่านค่าเป็น 0 องศา ซึ่งระบุว่าไม่สามารถอ่านค่ามุมของรหัสสีได้

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

คะแนน

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

ยูทิลิตี้ AI Vision กำลังติดตามวัตถุสี่ชิ้น ได้แก่ BuckyBall สองชิ้นและ Rings สองชิ้น วัตถุแต่ละชิ้นจะได้รับการระบุ ตำแหน่ง และโครงร่าง พร้อมทั้งระบุการติดตามโดยระบบ ยูทิลิตี้ยังแสดงรายการคะแนนการจำแนก AI ของวัตถุแต่ละรายการ โดยในตัวอย่างนี้ คะแนนแต่ละคะแนนจะอยู่ที่ 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: