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

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

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


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

คำสั่ง AI Vision Sensor ทุกคำสั่งจะเริ่มต้นด้วยชื่อของ AI Vision Sensor ที่กำหนดค่าไว้ สำหรับตัวอย่างทั้งหมดในบทความนี้ ชื่อของ AI Vision Sensor ที่ใช้จะเป็น AIVision

ถ่ายภาพสแนปช็อต

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

  • Aลายเซ็นสี หรือรหัสสี
    • ลายเซ็นภาพเหล่านี้เริ่มด้วยชื่อของ AI Vision Sensor ขีดเส้นใต้คู่ จากนั้นจึงเป็นชื่อของลายเซ็นภาพ เช่น: AIVision1__Blue
  • การจำแนกประเภท AI - aivision::ALL_AIOBJS
  • เมษายนแท็ก- aivision::ALL_TAGS

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

ในตัวอย่างนี้ มีการถ่ายภาพสแน็ปช็อตของลายเซ็นสี "สีน้ำเงิน" จากเซ็นเซอร์ AI Vision ที่ชื่อ AIVision1 จะแสดงจำนวนวัตถุที่ตรวจพบในอาร์เรย์และจับภาพใหม่ทุกๆ 0.5 วินาที

while (true) {
// รับภาพรวมของวัตถุสีน้ำเงินทั้งหมด
AIVision.takeSnapshot(AIVision1__Blue);

// ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในสแนปช็อตก่อนดึงข้อมูล
หาก (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, มิลลิวินาที);
}

วัตถุ

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

คุณสมบัติที่มีอยู่มีดังนี้:

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

ในการเข้าถึงคุณสมบัติของวัตถุ ให้ใช้ชื่อของ AI Vision Sensor ตามด้วยวิธีการของวัตถุ และดัชนีของวัตถุ

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

ตัวอย่างเช่น การเรียกความกว้างของวัตถุที่ใหญ่ที่สุดจะเป็น AIVision1.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) {
  // รับภาพรวมของวัตถุสีน้ำเงินทั้งหมด
  AIVision.takeSnapshot(AIVision__Blue);

  // ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในสแนปช็อตก่อนดึงข้อมูล
  หาก (AIVision.objectCount > 0) {

    หาก (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Drivetrain.turn(ขวา);
    } มิฉะนั้น {
      Drivetrain.stop();
    }
  }
  wait(5, มิลลิวินาที);
}

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) {
  // รับภาพรวมของวัตถุสีน้ำเงินทั้งหมด
  AIVision.takeSnapshot(AIVision1__Blue);

  // ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในสแนปช็อตก่อนดึงข้อมูล
  หาก (AIVision.objectCount > 0) {

    หาก (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(ไปข้างหน้า);
    } มิฉะนั้น {
      Drivetrain.stop();
    }
  }
  wait(5, มิลลิวินาที);
}

มุม

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 เมื่อวัตถุไม่มีอยู่


จำนวนวัตถุ

วิธี objectCount ส่งคืนจำนวนวัตถุที่ตรวจพบในสแนปช็อตครั้งล่าสุด

อินเทอร์เฟซ AI Vision Utility ที่ตรวจพบลูกบาศก์สีน้ำเงินสองลูกทางด้านซ้าย โดยแต่ละลูกมีพิกัด X และ Y และมิติกำกับไว้ ระบบเชื่อมต่อแล้ว และ AprilTags จะถูกเปิดใช้งาน ในขณะที่ AI Classification จะถูกปิดใช้งาน ทางด้านขวาจะแสดงการตั้งค่าสีน้ำเงินพร้อมช่วงเฉดสีและความอิ่มตัวที่ปรับได้ โดยตั้งไว้ที่ 22 และ 0.34 ตามลำดับ มีตัวเลือกในการเพิ่มหรือตั้งค่าสีและหยุดวิดีโอ เฟิร์มแวร์ได้รับการอัปเดตเป็นเวอร์ชัน 1.0.0.b16 และมีปุ่มปิดที่ด้านล่าง

ในตัวอย่างนี้ ตรวจพบวัตถุ 2 ชิ้นที่มีลายเซ็นสี "สีน้ำเงิน" ทั้งคู่จะถูกวางไว้ในอาร์เรย์เมื่อใช้เมธอด takeSnapshot

โค้ดสั้นๆ นี้จะอัปเดต EXP Brain อย่างต่อเนื่องด้วยจำนวนวัตถุที่ตรวจพบ จากตัวอย่างที่ให้มา ระบบจะส่งค่า 2 ซ้ำๆ เพื่อระบุว่าตรวจพบวัตถุ 2 ชิ้น

while (true) {
// รับภาพรวมของวัตถุสีน้ำเงินทั้งหมด
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในสแนปช็อตก่อนดึงข้อมูล
หาก (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
รอ (5, มิลลิวินาที);
}

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

Last Updated: