สารบัญ:

Rubik's Cube Blindfolded Solver แบบเรียลไทม์โดยใช้ Raspberry Pi และ OpenCV: 4 ขั้นตอน
Rubik's Cube Blindfolded Solver แบบเรียลไทม์โดยใช้ Raspberry Pi และ OpenCV: 4 ขั้นตอน

วีดีโอ: Rubik's Cube Blindfolded Solver แบบเรียลไทม์โดยใช้ Raspberry Pi และ OpenCV: 4 ขั้นตอน

วีดีโอ: Rubik's Cube Blindfolded Solver แบบเรียลไทม์โดยใช้ Raspberry Pi และ OpenCV: 4 ขั้นตอน
วีดีโอ: How To Make A YOUTUBE CAKE with CHECKERBOARD SURPRISE INSIDE! Happy Birthday SUSAN! 2024, กรกฎาคม
Anonim

นี่เป็นเครื่องมือคิวบ์ของ Rubik รุ่นที่ 2 ที่สร้างขึ้นสำหรับการแก้ปริศนาโดยปิดตา รุ่นที่ 1 ถูกพัฒนาโดย javascript คุณสามารถเห็นโครงการ RubiksCubeBlindfolded1

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

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

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

ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น

  • ราสเบอร์รี่ปี่
  • เว็บแคม

หรือจะใช้โน้ตบุ๊กก็ได้

ขั้นตอนที่ 2: การพึ่งพา

  • Python3
  • ห้องสมุด numpy
  • ห้องสมุด OpenCV

$ sudo apt-get ติดตั้ง python3-opencv

แพ็คเกจรูบิกปิดตา

$ pip3 ติดตั้ง RubiksBlindfolded

ขั้นตอนที่ 3: การเตรียมการ

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

อัปเดตฟังก์ชัน get_color_name(hsv) บน colordetection.py

ซอร์สโค้ดดั้งเดิมใช้แพ็คเกจ kociemba เพื่อแก้ปัญหาคิวบ์ โดยจะแก้ไขโดยค้นหาขั้นตอนย้อนกลับของการแย่งชิงใดๆ ในเวอร์ชันนี้ ฉันใช้แพ็คเกจการแก้ปัญหาของตัวเองที่ชื่อ RubiksBlindfolded ซึ่งเผยแพร่บน PyPI ดูคำอธิบายเพื่อทราบวิธีใช้งาน RubiksBlindfolded

ขั้นตอนที่ 4: การใช้งาน

การใช้งาน
การใช้งาน
การใช้งาน
การใช้งาน

หลังจากติดตั้งการพึ่งพาทั้งหมดและตั้งค่ากล้องของคุณแล้ว ถึงเวลาเรียกใช้สคริปต์ blindfolded.py

ขั้นแรก คุณต้องสแกนลูกบาศก์ของคุณในทิศทางที่ถูกต้อง นี่คือโครงสร้างลูกบาศก์ ลำดับการสแกนใบหน้าไม่สำคัญ โปรดสังเกตว่าสีเหล่านี้เป็นสีเริ่มต้นของใบหน้าลูกบาศก์ คุณสามารถเปลี่ยนได้โดยอัปเดตพจนานุกรมสัญลักษณ์บนสคริปต์ blindfolded.py

หากต้องการทำการสแกนให้กดแป้นเว้นวรรคเพื่อบันทึกมุมมองและแป้น ESC หลังจากเสร็จสิ้น

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

ประการที่สาม เฟรมใหม่จะถูกสร้างขึ้นซึ่งแสดงลูกบาศก์ที่วาดออกมา 2 ลูกบาศก์สำหรับลำดับขอบและลำดับมุม คุณสามารถใช้ปุ่มลูกศรซ้ายและขวาเพื่อสลับระหว่างรายการลำดับ และปุ่มลูกศรขึ้นและลงเพื่อสลับระหว่างขอบและมุม สีเทาอ่อนแสดงถึงลำดับปัจจุบัน

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

รหัสแหล่งที่มา

github.com/mn-banjar/blindfolded2

แนะนำ: