การกำหนดเป้าหมายเชิงเรขาคณิต: The BilliardBot
การสร้างหุ่นยนต์เพื่อเล่นวิดีโอเกมทั่วไปนั้นสนุก แต่การสร้างเครื่องจักรทางกายภาพที่คำนวณและประมวลผลการยิงลูกบิลเลียดในโลกจริงนั้นต้องอาศัยฟิสิกส์ขั้นสูง โปรเจกต์ BilliardBot ผสมผสานระบบติดตามภาพจากด้านบนเข้ากับไม้คิวแบบมอเตอร์สองแกนที่แข็งแรงทนทาน ซึ่งพิสูจน์ให้เห็นว่าเรขาคณิตของ Arduino สามารถเอาชนะมนุษย์ที่โต๊ะพูลได้

ระบบ Computer Vision จากด้านบน (OpenCV)
ในการเล่นพูล หุ่นยนต์ต้องรู้ตำแหน่งของลูกบอลทั้งหมดที่อยู่บนผ้าสักหลาด
- โปรเจกต์นี้ใช้แล็ปท็อปแบบ Standalone ที่รัน Python และ OpenCV เชื่อมต่อกับ webcam ที่ยึดอยู่เหนือโต๊ะพูลโดยตรง
- สคริปต์ Python จะแยกส่วนที่เป็นผ้าสักหลาดสีเขียวขนาดใหญ่ออกมา
- โดยเฉพาะอย่างยิ่ง มันจะสแกนหาพิกัดของลูก Cue Ball สีขาว
(X_cw, Y_cw)และพิกัดของลูก 8-Ball เป้าหมาย(X_8, Y_8) - คอมพิวเตอร์จะสร้างเส้นเวกเตอร์ทางคณิตศาสตร์ระหว่างลูกบอลทั้งสอง
- มันจะทำการ serialize มุมเรขาคณิตที่แม่นยำนี้ (เช่น
Aim: 34.5 Degrees, Power: 80%) และส่งผ่าน USB เข้าสู่ Arduino!
การทำงานของ Kinematic (Steppers และ Solenoids)
Arduino ทำหน้าที่เป็น "กล้ามเนื้อ" ของหุ่นยนต์
- แพลตฟอร์ม Cartesian (XY Axis): หุ่นยนต์จะเคลื่อนที่ไปตามรางอะลูมิเนียมที่ล้อมรอบโต๊ะพูล โดยใช้ NEMA 17 Stepper Motors ที่ทรงพลัง หากแล็ปท็อปบอกให้เล็งที่ 34.5 องศา Arduino จะคำนวณจำนวนสเต็ปการหมุนที่มอเตอร์ X และ Y ต้องทำงานพร้อมกันอย่างแม่นยำ เพื่อวางตัวโครงหุ่นยนต์ให้อยู่ในตำแหน่งที่ถูกต้อง
- กลไกการตี: SG90 servo ราคาถูกไม่สามารถตีลูกบิลเลียดได้ แรงกระแทกจะทำให้มันแตก
- ไม้คิวถูกขับเคลื่อนด้วย 12V Push-Pull Solenoid ขนาดใหญ่ระดับอุตสาหกรรม หรือสปริงขดแน่นที่ปล่อยโดย high-torque servo catch
- Arduino จะสั่ง
digitalWrite(strikePin, HIGH)หนึ่ง Relay จะคลิก ปล่อยกระแส 30 Amps เข้าสู่ Solenoid เสียง "ปัง!" ก้านโลหะจะกระแทกลูก Cue Ball อย่างรุนแรงและแม่นยำไปตามเส้นทางพิกัดเวกเตอร์!
การบูรณาการโครงสร้างหุ่นยนต์
- Arduino Mega (ตัวแปล GRBL logic หลัก)
- NEMA 17 Stepper Motors (x3) พร้อม A4988 Drivers ที่แข็งแรง
- Overhead USB Webcam ที่ป้อนข้อมูลเข้าสู่สคริปต์ Python OpenCV
- Industrial 12V Solenoid ทำหน้าที่เป็นตัวตีไม้คิวสไตล์นิวเมติก
- Custom Aluminum V-Slot Extrusion framing เพื่อให้บอทสามารถเลื่อนไปรอบ ๆ ขอบโต๊ะได้!