ตัวอย่าง:
- อยากรู้รายละเอียดเพิ่มเติม ไปดูในเว็บรุ่นพี่ได้เลยนะ
ภาพรวมแบบกว้างๆ (High-level overview)

- OpenCV วิเคราะห์ภาพจากกล้องที่ติดตั้งด้านบน เพื่อติดตามลูกบิลเลียดและหุ่นยนต์ รวมถึงคำนวณระยะทางและวิถีการชนบนโต๊ะพูล
- ซอฟต์แวร์ส่งคำสั่งไปยัง ESP32 ผ่าน Wi-Fi เพื่อบังคับหุ่นยนต์ให้เคลื่อนที่ไปยังพิกัดที่กำหนดโดยใช้ล้อออมนิวีล (omniwheels)
- เมื่อหุ่นยนต์ไปถึงตำแหน่งและทิศทางเป้าหมายแล้ว มันจะชาร์จและคายประจุจากตัวเก็บประจุ (capacitors) เพื่อจ่ายไฟให้โซลินอยด์ (solenoid) ดีดคิวตีกลูกคิวบอลให้วิ่งไปตามวิถีที่คำนวณไว้
ตัวหุ่นยนต์:

จำลองฟิสิกส์ (Phys simulation)

หน้าจอควบคุม (GUI)

Geometric Targeting: The BilliardBot
การสร้างหุ่นยนต์มาเล่นเกมมันก็สนุกดี แต่การสร้างเครื่องจักรจริงๆ ที่คำนวณและตีลูกบิลเลียดในโลกความเป็นได้เนี่ย ต้องใช้ฟิสิกส์ขั้นเทพเลยนะตัวนี้ โปรเจค BilliardBot นี้รวมเอาระบบติดตามภาพจากด้านบน (overhead visual tracker) เข้ากับคิวตีกที่ขับเคลื่อนด้วยมอเตอร์สองแกน แสดงให้เห็นว่าเรขาคณิตบน Arduino นี่สามารถเอาชนะมนุษย์บนโต๊ะพูลได้เลย
Overhead Computer Vision (OpenCV)
เพื่อจะเล่นพูลได้ หุ่นยนต์ต้องรู้ตำแหน่งของลูกบอลทุกลูกบนผ้าใบนั่น
- โปรเจคใช้แล็ปท็อปที่รัน Python และ OpenCV แยกต่างหาก เชื่อมต่อกับเว็บแคมที่ยึดติดไว้เหนือโต๊ะพูลพอดี ตามที่เห็นในภาพภาพรวม
- สคริปต์ Python จะแยกพื้นที่สีเขียวของผ้าออกมา
- มันจะสแกนหาเฉพาะพิกัดของลูกคิวบอลสีขาว
(X_cw, Y_cw)และลูก 8-Ball(X_8, Y_8) - คอมพิวเตอร์จะสร้างเส้นเวกเตอร์ทางคณิตศาสตร์ระหว่างลูกบอลสองลูกนั้น
- มันจะแปลงมุมเรขาคณิตที่แม่นยำนั้น (เช่น
Aim: 34.5 Degrees, Power: 80%) และส่งผ่าน Wi-Fi ไปยังไมโครคอนโทรลเลอร์ ESP32 บนหุ่นยนต์
The Kinematic Execution (Steppers and Solenoids)
Arduino/ESP32 ทำหน้าที่เป็น "กล้ามเนื้อ" ของหุ่นยนต์
- แท่นเคลื่อนที่แบบคาร์ทีเซียน (แกน X และ Y): หุ่นยนต์จะเลื่อนตัวไปตามรางอลูมิเนียมที่ล้อมรอบโต๊ะพูล โดยใช้ มอเตอร์สเตปเปอร์ NEMA 17 แรงสูง ถ้าแล็ปท็อปบอกให้เล็งที่ 34.5 องศา ไมโครคอนโทรลเลอร์จะคำนวณว่ามอเตอร์แกน X และ Y ต้องหมุนกี่สเตปพร้อมกัน เพื่อวางตัวหุ่นยนต์ให้อยู่ในทิศทางที่ถูกต้อง ตามที่เห็นในภาพหุ่นยนต์
- กลไกการตี: เซอร์โว SG90 ราคาถูกตีลูกบิลเลียดไม่ได้หรอก มันจะแตกซะก่อน
- คิวตีกถูกขับเคลื่อนโดย โซลินอยด์แบบดัน-ดึง (Push-Pull Solenoid) ขนาด 12V อุตสาหกรรมตัวเบิ้ม หรือสปริงที่ขดแน่นและปล่อยโดยเซอร์โวแรงบิดสูง
- ไมโครคอนโทรลเลอร์สั่งการตี รีเลย์คลิก ปล่อยกระแสสูงจากตัวเก็บประจุที่ชาร์จไว้เข้าสู่โซลินอยด์ แบ๊ม! แท่งโลหะก็จะดีดกระแทกลูกคิวบอลอย่างรุนแรง ลงไปตามวิถีพิกัดเวกเตอร์ที่คำนวณไว้เป๊ะๆ! จัดไปวัยรุ่น!
การผสานหุ่นยนต์โครงสร้าง
- ESP32 (ตัวแปลคำสั่งหลักและควบคุมมอเตอร์)
- มอเตอร์สเต็ปเปอร์ NEMA 17 พร้อมไดรเวอร์ A4988 แรงๆ
- เว็บแคม USB แบบแขวน ส่งภาพเข้าไปในสคริปต์ Python OpenCV
- โซลินอยด์อุตสาหกรรม 12V ทำหน้าที่เป็นคิวสไตรก์เกอร์แบบนิวแมติก
- โครงอลูมิเนียมแบบสั่งทำพิเศษ เพื่อให้บอทสามารถเลื่อนไปรอบๆ ขอบโต๊ะได้จริง เหมือนที่เห็นในรูปโปรเจกต์
จัดไปวัยรุ่น! อย่าลืมเช็คสายไฟให้ดี ห้ามช็อตนะตัวนี้ สู้งานนะน้อง!