Skip to main content

ความท้าทายด้านข้อมูลวิสัยทัศน์ - Python

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือสำหรับครู - วัตถุประสงค์ของความท้าทายด้านข้อมูลวิสัยทัศน์

วัตถุประสงค์ของ Vision Data Challenge คือเพื่อให้แน่ใจว่านักเรียนเข้าใจข้อมูลที่รวบรวมจากสแน็ปช็อตของ Vision Sensor และวิธีการคำนวณค่า X และ Y ตรงกลาง นักเรียนของคุณควรทำแล็บนี้ให้เสร็จโดยทำความเข้าใจว่าข้อมูลนั้นอาจตีความได้อย่างไร (เช่น ค่า X ตรงกลางสามารถใช้เพื่อกำหนดว่าวัตถุอยู่ที่ตำแหน่งใดเมื่อเทียบกับจุดศูนย์กลางของหุ่นยนต์) และแนวทางปฏิบัติที่ดีที่สุดในการตั้งชื่อวัตถุเมื่อกำหนดค่า

ภาพสแน็ปช็อตของเซ็นเซอร์วิชั่นจากการกำหนดค่าแสดงให้เห็นมือถือเกียร์สีเหลือง มีการซ้อนสี่เหลี่ยมทับบนเฟืองโดยมีข้อมูลดังต่อไปนี้แสดงไว้ด้านบน: กล่องสีเหลือง, X 90, Y 62, W 102, H 98

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

  1. คำแนะนำใดต่อไปนี้ที่ใช้ในการถ่ายภาพสแน็ปช็อตด้านบน?
    1. vision_5.take_snapshot(REDBOX)
    2. vision_5.take_snapshot(YELLOWBOX)
  2. กรอกค่าเหล่านี้:

    คำสั่งเซ็นเซอร์วิชั่นจะแสดงรายการอยู่ทางด้านซ้าย โดยมีช่องว่างเปล่าให้กรอกค่าต่างๆ จากบนลงล่างจะแสดงรายการบล็อก ดังนี้ วัตถุวิสัยทัศน์ 5 ไม่ใช่ไม่มี 0, วัตถุวิสัยทัศน์ 5 ความยาว, ศูนย์กลางวัตถุที่ใหญ่ที่สุด x, ศูนย์กลางวัตถุที่ใหญ่ที่สุด y, ความกว้างของวัตถุที่ใหญ่ที่สุด และความสูงของวัตถุที่ใหญ่ที่สุด

  3. YELLOWBOX อยู่ทางซ้ายหรือทางขวาของจุดศูนย์กลางของหุ่นยนต์?
  4. YELLOWBOX อยู่เหนือหรือใต้จุดศูนย์กลางของหุ่นยนต์?
  5. YELLOWBOX คือ ไม่ใช่ เป็นชื่อที่ดีที่สุดที่จะใช้กับวัตถุนี้ หากคุณต้องการจดจำได้ง่ายว่าลายเซ็นสีไหนเป็นสีไหน ชื่อไหนดีกว่ากัน? ทำไม
    1. เกียร์สีเหลือง
    2. เยลโล่คิวบ์

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือสำหรับครู - คำตอบ

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

  1. vision_5.take_snapshot(YELLOWBOX)
  2. ข้อมูลที่จัดเรียงตามคำสั่ง VEXcode เสร็จสมบูรณ์แล้ว คำตอบอ่านตามลำดับ วิสัยทัศน์ 5 วัตถุไม่เป็นจริง = จริง; ความยาววิสัยทัศน์ 5 วัตถุ = 1; ศูนย์กลางวัตถุที่ใหญ่ที่สุด x = 141; ศูนย์กลางวัตถุที่ใหญ่ที่สุด y = 111; ความกว้างของวัตถุที่ใหญ่ที่สุด = 102; ความสูงของวัตถุที่ใหญ่ที่สุด = 98
  3. กล่องสีเหลืองอยู่ทางด้านซ้ายของจุดกึ่งกลางของหุ่นยนต์เล็กน้อย แต่ต่างกันเพียง 16.5 พิกเซลเท่านั้น (กึ่งกลาง 157.5 - 141)
  4. YELLOWBOX ต่ำกว่าจุดศูนย์กลางของหุ่นยนต์เล็กน้อย แต่ต่างกันเพียง 5.5 พิกเซลเท่านั้น (111 - ศูนย์กลาง 105.5)
  5. ก. เกียร์สีเหลือง

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

ไอคอนขยายการเรียนรู้ของคุณ ขยายการเรียนรู้ของคุณ - ใช้คำแนะนำการตรวจจับภายในโครงการ

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

def check_red_callback():
  brain.screen.set_font(FontType.MONO40)
  brain.screen.clear_row(3)
  brain.screen.set_cursor(3, 1)
  vision_5_objects = vision_5.take_snapshot(REDBOX)

  if (vision_5_objects):
      brain.screen.print("Red Object Found")
      brain.screen.next_row()
      brain.screen.print("Number of Objects Detected:", len(vision_5_objects))
      brain.screen.next_row()
      brain.screen.print("Center X:", vision_5.largest_object().centerX)
      brain.screen.next_row()
      brain.screen.print("Center Y:", vision_5.largest_object().centerY)
      brain.screen.next_row()
      brain.screen.print("Width:", vision_5.largest_object().width)
      brain.screen.next_row()
      brain.screen.print("Height:", vision_5.largest_object().height)
      brain.screen.next_row()
  
  else:
      brain.screen.print("No Red Object")

นักเรียนที่มีทักษะขั้นสูงอาจใช้คำแนะนำเหล่านี้ภายในโครงการเพื่อใช้ในการตัดสินใจ

while True:
  drivetrain.drive(FORWARD)
  vision_5_objects = vision_5.take_snapshot(REDBOX)
  if (vision_5_objects) and (vision_5.largest_object().centerX < 157.5):
      drivetrain.turn_for(LEFT, 90, DEGREES)
  else:
      drivetrain.turn_for(RIGHT, 90, DEGREES)
      wait(5, MSEC)