ตรวจสอบให้แน่ใจว่าคุณมีลายเซ็นสี สี และรหัสสี สี ที่กำหนดค่าด้วยเซ็นเซอร์ AI Vision เพื่อให้สามารถใช้กับบล็อกของคุณได้ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการกำหนดค่า คุณสามารถอ่านบทความด้านล่างนี้ได้:
- การกำหนดค่าลายเซ็นสีด้วยลายเซ็น AI Vision ใน VEXcode EXP
- การกำหนดค่ารหัสสีด้วยลายเซ็น AI Vision ใน VEXcode EXP
นอกจากนี้ AI Vision Sensor ยังสามารถตรวจจับ AI Classifcations และ AprilTags ได้อีกด้วย หากต้องการเรียนรู้วิธีเปิดใช้งานโหมดการตรวจจับเหล่านี้ โปรดไปที่นี่:
- การจำแนกประเภท AI ด้วยเซ็นเซอร์ AI Vision ใน VEXcode EXP
- AprilTags พร้อมเซ็นเซอร์ AI Vision ใน VEXcode EXP
รับข้อมูลภาพด้วยเซ็นเซอร์ 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 Vision Sensor ขีดเส้นใต้คู่ จากนั้นจึงเป็นชื่อของลายเซ็นภาพ เช่น:
-
การจำแนกประเภท 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 และ ของวันที่ เมษายน
สำหรับ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 อยู่ที่ (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 คือพิกัดที่มุมบนซ้ายของวัตถุที่ตรวจพบเป็นพิกเซล
พิกัด OriginX และ OriginY ช่วยในการนำทางและการระบุตำแหน่ง การรวมพิกัดนี้กับความกว้างและความสูงของวัตถุ ช่วยให้คุณสามารถกำหนดขนาดของกรอบขอบเขตของวัตถุได้ สิ่งนี้สามารถช่วยติดตามวัตถุที่กำลังเคลื่อนที่หรือการนำทางระหว่างวัตถุได้
กว้าง และ สูง
นี่คือความกว้างหรือความสูงของวัตถุที่ตรวจพบเป็นพิกเซล
การวัดความกว้างและความสูงช่วยระบุวัตถุที่แตกต่างกัน ตัวอย่างเช่น Buckyball จะมีความสูงมากกว่า Ring
ความกว้างและความสูงยังระบุระยะห่างของวัตถุจากเซ็นเซอร์ AI Vision อีกด้วย การวัดที่เล็กกว่ามักหมายความว่าวัตถุนั้นอยู่ไกลออกไป ในขณะที่การวัดที่ใหญ่กว่าแสดงว่าวัตถุนั้นอยู่ใกล้กว่า
ในตัวอย่างนี้ ความกว้างของวัตถุจะถูกใช้สำหรับการนำทาง หุ่นยนต์จะเข้าใกล้วัตถุจนกระทั่งความกว้างถึงขนาดที่กำหนดก่อนที่จะหยุด
while (true) {
// รับภาพรวมของวัตถุสีน้ำเงินทั้งหมด
AIVision.takeSnapshot(AIVision1__Blue);
// ตรวจสอบเพื่อให้แน่ใจว่าตรวจพบวัตถุในสแนปช็อตก่อนดึงข้อมูล
หาก (AIVision.objectCount > 0) {
หาก (AIVision.objects[0].width < 250.0) {
Drivetrain.drive(ไปข้างหน้า);
} มิฉะนั้น {
Drivetrain.stop();
}
}
wait(5, มิลลิวินาที);
}
มุม
คุณสมบัติมุม ใช้ได้เฉพาะรหัสสีสีเท่านั้น และเมษายนแท็ก.
นี้แสดงว่ารหัสสี หรือ AprilTag ที่ตรวจพบนั้นมีการวางแนวต่างกัน
คุณสามารถดูได้ว่าหุ่นยนต์มีการวางแนวที่แตกต่างกันหรือไม่เมื่อเทียบกับรหัสสี หรือAprilTag และตัดสินใจนำทางตามนั้น
ตัวอย่างเช่น หากไม่ตรวจพบรหัสสี ในมุมที่เหมาะสม วัตถุที่รหัสสีนั้นแสดงอาจไม่สามารถถูกหุ่นยนต์หยิบขึ้นได้อย่างถูกต้อง
คะแนน
คุณสมบัติคะแนน จะถูกใช้เมื่อตรวจจับการจำแนกประเภท AIรายการ ด้วยเซ็นเซอร์ AI Vision
คะแนนความเชื่อมั่นบ่งชี้ว่าเซ็นเซอร์ AI Vision มีความมั่นใจแค่ไหนในการตรวจจับ ในภาพนี้ มีความมั่นใจ 99% ในการระบุการจำแนก AI ของวัตถุทั้งสี่นี้ คุณสามารถใช้คะแนนนี้เพื่อให้แน่ใจว่าหุ่นยนต์ของคุณมุ่งเน้นไปที่การตรวจจับที่มีความมั่นใจสูงเท่านั้น
มีอยู่
คุณสมบัติ มี ใช้เพื่อตรวจจับว่าตรวจพบลายเซ็นภาพ ที่ระบุไว้ ในสแนปช็อตที่ถ่ายครั้งล่าสุดหรือไม่
วิธีนี้จะช่วยให้คุณตรวจสอบได้ว่ามีการตรวจพบวัตถุใดๆ ในสแนปช็อตก่อนหน้านี้หรือไม่ คุณสมบัตินี้จะคืนค่า True เมื่อมีวัตถุอยู่ และคืนค่า False เมื่อวัตถุไม่มีอยู่
จำนวนวัตถุ
วิธี objectCount ส่งคืนจำนวนวัตถุที่ตรวจพบในสแนปช็อตครั้งล่าสุด
ในตัวอย่างนี้ ตรวจพบวัตถุ 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, มิลลิวินาที);
}