การเข้ารหัสด้วยเซ็นเซอร์ AI Vision ใน VEXcode V5 C++

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

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

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


รับข้อมูลภาพด้วย AI Vision Sensor

คำสั่ง 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
  • เมษายนTags- aivision::ALL_TAGS

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

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

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

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

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}

วัตถุ

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

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

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

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

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

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

รหัส

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

เครื่องหมายระบุรูปสี่เหลี่ยมจัตุรัส 3 อัน มีหมายเลข ID 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

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

บัคกี้บอลสีน้ำเงินที่ถูกติดตามโดยระบบการมองเห็นคอมพิวเตอร์ วัตถุนั้นมีโครงร่างเป็นสี่เหลี่ยมสีขาว และภายในโครงร่างจะมีสี่เหลี่ยมสีแดงเล็กๆ ล้อมรอบไม้กางเขนสีขาวตรงกลาง ที่มุมบนซ้ายของรูปภาพ มีป้ายกำกับระบุว่าวัตถุนั้นเป็นสีน้ำเงิน โดยมีพิกัด 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 Vision อยู่ที่ (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(right);
    } มิฉะนั้น {
      Drivetrain.stop();
    }
  }
  wait(5, msec);
}

originX และ originY

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

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

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

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

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

    หาก (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(forward);
    } มิฉะนั้น {
      Drivetrain.stop();
    }
  }
  wait(5, msec);
}

มุม

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

คุณสมบัติมุม ใช้ได้เฉพาะกับรหัสสี และAprilTags.

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

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

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

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

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

คะแนน

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

ภาพแสดงวัตถุ 4 ชิ้นที่ถูกติดตามโดยระบบการมองเห็น ได้แก่ ลูกบอล 2 ลูกและวงแหวน 2 วง ลูกบอลสีแดงมีพิกัด 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) {
// รับภาพรวมของวัตถุ Blue ทั้งหมด
AIVision.takeSnapshot(AIVision__Blue);

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

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

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

Last Updated: