สารบัญ:

หุ่นยนต์หมากรุก Raspberry Pi Lynxmotion AL5D แขน: 6 ขั้นตอน
หุ่นยนต์หมากรุก Raspberry Pi Lynxmotion AL5D แขน: 6 ขั้นตอน

วีดีโอ: หุ่นยนต์หมากรุก Raspberry Pi Lynxmotion AL5D แขน: 6 ขั้นตอน

วีดีโอ: หุ่นยนต์หมากรุก Raspberry Pi Lynxmotion AL5D แขน: 6 ขั้นตอน
วีดีโอ: DIY Robotic Chess Board 2024, พฤศจิกายน
Anonim
Image
Image

สร้างหุ่นยนต์หมากรุกตัวนี้และเห็นว่ามันเอาชนะทุกคน!

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

มนุษย์ที่เล่นเป็นสีขาวเคลื่อนไหว สิ่งนี้ถูกตรวจพบโดยระบบจดจำภาพ จากนั้นหุ่นยนต์จะไตร่ตรองแล้วเคลื่อนไหว และอื่นๆ…

บางทีสิ่งที่แปลกใหม่ที่สุดในหุ่นยนต์ตัวนี้อาจเป็นรหัสสำหรับการจดจำการเคลื่อนไหว โค้ดวิชันซิสเต็มนี้ยังใช้ได้กับหุ่นยนต์หมากรุกที่สร้างขึ้นด้วยวิธีอื่นๆ อีกมาก (เช่น หุ่นยนต์หมากรุกของฉันที่มี LEGO build)

เนื่องจากการเคลื่อนไหวของมนุษย์ได้รับการยอมรับจากระบบการมองเห็น จึงไม่จำเป็นต้องใช้ฮาร์ดแวร์กระดานหมากรุกพิเศษ (เช่น สวิตช์กก หรืออะไรก็ตาม)

รหัสของฉันสามารถใช้ได้สำหรับการใช้งานส่วนตัว

ขั้นตอนที่ 1: ข้อกำหนด

ฮาร์ดแวร์บิลด์
ฮาร์ดแวร์บิลด์

รหัสทั้งหมดเขียนด้วย Python ซึ่งจะทำงานบน Raspberry Pi เหนือสิ่งอื่นใด

Raspberry Pi เป็นคอมพิวเตอร์บอร์ดเดี่ยวขนาดเล็กราคาไม่แพง (ประมาณ 40 ดอลลาร์) ที่พัฒนาโดยมูลนิธิ Raspberry Pi โมเดลดั้งเดิมได้รับความนิยมมากกว่าที่คาดไว้มาก ขายเพื่อการใช้งานเช่นหุ่นยนต์

หุ่นยนต์ของฉันใช้ Raspberry Pi และแขนหุ่นยนต์ถูกสร้างขึ้นจากชุดอุปกรณ์: Lynxmotion AL5D ชุดนี้มาพร้อมกับบอร์ดควบคุมเซอร์โว (ลิงก์ที่ฉันให้ไปคือไซต์ของ RobotShop ในสหรัฐฯ คลิกธงที่ด้านบนขวาของหน้าเว็บไซต์สำหรับประเทศของคุณ เช่น สหราชอาณาจักร)

คุณจะต้องมีโต๊ะ กล้อง ไฟส่องสว่าง แป้นพิมพ์ หน้าจอ และอุปกรณ์ชี้ตำแหน่ง (เช่น เมาส์) และแน่นอนว่าตัวหมากรุกและกระดาน ข้าพเจ้าจะอธิบายสิ่งเหล่านี้โดยละเอียดในขั้นตอนต่อไป

ขั้นตอนที่ 2: การสร้างฮาร์ดแวร์

ฮาร์ดแวร์บิลด์
ฮาร์ดแวร์บิลด์

ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ หัวใจของรหัสวิชันซิสเต็มจะทำงานกับบิลด์ที่หลากหลาย

โครงสร้างนี้ใช้ชุดแขนหุ่นยนต์จาก Lynxmotion, AL5D ในชุดประกอบด้วยบอร์ดควบคุมเซอร์โว SSC-32U ซึ่งใช้สำหรับควบคุมมอเตอร์ที่แขน

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

Raspberry Pi ที่ฉันใช้คือ Raspberry Pi 3 รุ่น B+ สิ่งนี้จะพูดคุยกับบอร์ด SSC-32U ผ่านการเชื่อมต่อ USB

แก้ไข: Raspberry Pi 4 พร้อมใช้งานแล้ว คุณจะต้อง:

  • แหล่งจ่ายไฟ USB-C 15W – เราขอแนะนำ Raspberry Pi USB-C Power Supply อย่างเป็นทางการ
  • การ์ด microSD ที่โหลดด้วย NOOBS ซอฟต์แวร์ที่ติดตั้งระบบปฏิบัติการ (ซื้อการ์ด SD ที่โหลดไว้ล่วงหน้าพร้อมกับ Raspberry Pi ของคุณ หรือดาวน์โหลด NOOBS เพื่อโหลดการ์ดด้วยตัวเอง)
  • แป้นพิมพ์และเมาส์ (ดูภายหลัง)
  • สายเคเบิลสำหรับเชื่อมต่อกับจอแสดงผลผ่านพอร์ต micro HDMI ของ Raspberry Pi 4

ฉันต้องการการเข้าถึงเพิ่มเติมบนแขนหุ่นยนต์ ดังนั้นฉันจึงทำการปรับเปลี่ยนเล็กน้อยโดยใช้ชิ้นส่วน Lynxmotion เพิ่มเติมซึ่งสามารถซื้อได้จาก RobotShop:

1. เปลี่ยนท่อ 4.5 นิ้วเป็นท่อ 6 นิ้ว - Lynxmotion part AT-04 รหัสสินค้า RB-Lyn-115

2. ลองใช้ชุดสปริงเพิ่มเติม แต่กลับไปใช้คู่เดียวเมื่อใช้งานรายการ 3 ด้านล่าง

3. ขยายความสูงโดยใช้ตัวเว้นวรรค 1 นิ้ว - Lynxmotion part HUB-16 รหัสสินค้า RB-Lyn-336

4. ขยายการเข้าถึงของกริปเปอร์โดยใช้แผ่นรองกริปเปอร์สำรองที่ติดด้วยชิ้นส่วนเลโก้สำรองที่ฉันมีและแถบยางยืด (!) ซึ่งใช้ได้ผลดีมาก เนื่องจากมีความยืดหยุ่นในการยกชิ้นส่วน

การแก้ไขเหล่านี้สามารถเห็นได้ในภาพด้านบนทางด้านขวา

มีกล้องติดอยู่เหนือกระดานหมากรุก ใช้เพื่อกำหนดการเคลื่อนไหวของมนุษย์

ขั้นตอนที่ 3: ซอฟต์แวร์ที่เคลื่อนย้ายหุ่นยนต์

รหัสทั้งหมดเขียนด้วย Python 2 จำเป็นต้องมีรหัสจลนศาสตร์ผกผันเพื่อที่จะเคลื่อนย้ายมอเตอร์ต่างๆ ได้อย่างถูกต้องเพื่อให้สามารถเคลื่อนย้ายชิ้นหมากรุกได้ ฉันใช้รหัสห้องสมุดจาก Lynxmotion ซึ่งรองรับการเคลื่อนมอเตอร์ในสองมิติ และได้เพิ่มเข้าไปด้วยรหัสของฉันเองสำหรับ 3 มิติ มุมกริปเปอร์ และการเคลื่อนไหวของกรามกริปเปอร์

ดังนั้นเราจึงมีรหัสที่จะย้ายชิ้นส่วน แยกชิ้นส่วน ปราสาท การสนับสนุน en passant และอื่น ๆ

เครื่องมือหมากรุกคือ Stockfish - ซึ่งสามารถเอาชนะมนุษย์คนใดก็ได้! "Stockfish เป็นหนึ่งในเครื่องมือหมากรุกที่แข็งแกร่งที่สุดในโลก นอกจากนี้ยังแข็งแกร่งกว่าปรมาจารย์หมากรุกที่เก่งที่สุดของมนุษย์อีกด้วย"

รหัสสำหรับขับเคลื่อนกลไกหมากรุก ตรวจสอบว่าการเคลื่อนไหวถูกต้อง และอื่นๆ คือ ChessBoard.py

ฉันใช้รหัสจาก https://chess.fortherapy.co.uk เพื่อเชื่อมต่อกับสิ่งนั้น รหัสของฉัน (ด้านบน) เชื่อมต่อกับสิ่งนั้น!

ขั้นตอนที่ 4: ซอฟต์แวร์ที่รับรู้การเคลื่อนไหวของมนุษย์

ฉันได้อธิบายรายละเอียดนี้ใน Instructable สำหรับ Chess Robot Lego build ของฉันแล้ว - ดังนั้นฉันไม่จำเป็นต้องทำซ้ำที่นี่!

ชิ้นส่วน "สีดำ" ของฉันเดิมเป็นสีน้ำตาล แต่ฉันทาให้เป็นสีดำด้าน (ด้วย "สีกระดานดำ") ซึ่งทำให้อัลกอริทึมทำงานได้ดีขึ้นภายใต้สภาพแสงที่แปรผันมากขึ้น

ขั้นตอนที่ 5: กล้อง, ไฟ, คีย์บอร์ด, ตาราง, จอแสดงผล

กล้อง ไฟ คีย์บอร์ด โต๊ะ จอภาพ
กล้อง ไฟ คีย์บอร์ด โต๊ะ จอภาพ
กล้อง ไฟ คีย์บอร์ด โต๊ะ จอภาพ
กล้อง ไฟ คีย์บอร์ด โต๊ะ จอภาพ

สิ่งเหล่านี้เหมือนกับใน Chess Robot Lego ของฉัน ดังนั้นฉันไม่จำเป็นต้องทำซ้ำที่นี่

ยกเว้นว่าครั้งนี้ฉันใช้ลำโพงที่แตกต่างและดีกว่าอย่างเห็นได้ชัด นั่นคือลำโพง Lenrui Bluetooth ซึ่งฉันเชื่อมต่อกับ RPi ด้วย USB

มีจำหน่ายที่ amazon.com, amazon.co.uk และร้านค้าอื่นๆ

ตอนนี้ฉันกำลังใช้กล้องอื่น - HP Webcam HD 2300 เนื่องจากฉันไม่สามารถทำให้กล้องรุ่นก่อนทำงานได้อย่างน่าเชื่อถือ

อัลกอริทึมจะทำงานได้ดีที่สุดหากกระดานหมากรุกมีสีที่ห่างไกลจากสีของหมาก ในหุ่นยนต์ของฉัน ชิ้นส่วนต่างๆ จะเป็นสีขาวนวลและสีน้ำตาล และกระดานหมากรุกเป็นการ์ดที่ทำด้วยมือ และเป็นสีเขียวอ่อนโดยมีความแตกต่างเล็กน้อยระหว่างช่องสี่เหลี่ยม "สีดำ" และ "สีขาว"

อัลกอริธึมต้องมีการวางแนวกล้องโดยเฉพาะ โปรดแสดงความคิดเห็นด้านล่างหากคุณมีปัญหา แขนมีระยะเอื้อมจำกัด ดังนั้นขนาดสี่เหลี่ยมจัตุรัสควรเป็น 3.5 ซม.

ขั้นตอนที่ 6: การรับซอฟต์แวร์

1. ปลาสต็อก

หากคุณเรียกใช้ Raspbian บน RPi คุณสามารถใช้เครื่องมือ Stockfish 7 ได้ฟรี เพียงแค่เรียกใช้:

sudo apt-get ติดตั้ง stockfish

2. ChessBoard.py รับสิ่งนี้จากที่นี่

3. รหัสอ้างอิงจาก https://chess.fortherapy.co.uk/home/a-wooden-chess… มาพร้อมกับรหัสของฉัน

4. ไลบรารี่ Python 2D Inverse Kinematics -

5. รหัสของฉันที่เรียกใช้รหัสทั้งหมดข้างต้นและทำให้หุ่นยนต์เคลื่อนไหวและรหัสการมองเห็นของฉัน รับสิ่งนี้จากฉันโดยสมัครรับข้อมูลจากช่อง YouTube ของฉันก่อนจากนั้นคลิกที่ปุ่ม "รายการโปรด" ใกล้กับด้านบนของคำแนะนำนี้แล้วโพสต์ความคิดเห็นในคำแนะนำนี้แล้วฉันจะตอบกลับ

แนะนำ: