ตรวจสอบให้แน่ใจว่าคุณมีลายเซ็นสี สี และรหัสสี สี ที่กำหนดค่าด้วยเซ็นเซอร์ AI Vision เพื่อให้สามารถใช้กับบล็อกของคุณได้ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการกำหนดค่า คุณสามารถอ่านบทความด้านล่างนี้ได้:
- การกำหนดค่าลายเซ็นสีด้วยลายเซ็น AI Vision ใน VEXcode V5
- การกำหนดค่ารหัสสีด้วยลายเซ็น AI Vision ใน VEXcode V5
นอกจากนี้ AI Vision Sensor ยังสามารถตรวจจับ AI Classifcations และ AprilTags ได้อีกด้วย หากต้องการเรียนรู้วิธีเปิดใช้งานโหมดการตรวจจับเหล่านี้ โปรดไปที่นี่:
รับข้อมูลภาพด้วยเซ็นเซอร์ 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, มิลลิวินาที);
}