TicTacToe-Robot
ในปัจจุบัน มีหุ่นยนต์ที่ทำงานร่วมกับมนุษย์มากมาย ยกตัวอย่างเช่น หุ่นยนต์ผ่าตัดของแพทย์ หุ่นยนต์บริการในร้านอาหาร และในอนาคตจะมีเพิ่มขึ้นอีกแน่นอน โปรเจ็กต์นี้เป็นต้นแบบของการทำกิจกรรมร่วมกันของมนุษย์และหุ่นยนต์ในรูปแบบของเกม “TicTacToe” หรือที่รู้จักกันในชื่อ “XO” นั่นเอง โดยหุ่นยนต์มีความสามารถในการรับรู้ การเรียนรู้ การให้เหตุผล และการแก้ปัญหาต่างๆได้เอง โดยไม่ต้องพึ่งพามนุษย์ไปสั่งงาน โดยในการทำงานลักษณะนี้ก็ถือว่าเป็น ปัญญาประดิษฐ์ (AI : Artificial Intelligence) นั่นเอง
จุดประสงค์ของโปรเจ็กต์
1.เพื่อความบันเทิงของผู้ใช้งาน
2.เพื่อการศึกษาการทำงานของ Opencv , Minimax Algorithms, การควบคุมแขนกลด้วย Python
ขอบเขตของโปรเจกต์
1.สร้างตารางสำหรับการเล่นได้ผ่านการ Calibrate ในโปรแกรมโดยรับภาพจากกล้อง และประมวลผลให้เป็นตารางด้วย Opencv
2.รับค่าพิกัดของวัตถุที่มาวางว่าอยู่บนช่องใด
3.คอมพิวเตอร์ประมวลผลตัดสินใจ และเล่นโต้ตอบอัตโนมัติ
หลักการทำงาน
กล้องที่ติดตั้งอยู่จะรับภาพสนาม จากนั้นจะนำภาพมาประมวลผล เพื่อตั้งค่าพิกัดของตารางสำหรับเล่นเกม และหลังจากเริ่มเกมไปแล้ว กล้องจะรับค่าพิกัดของ “x” หรือ “o” ที่ผู้เล่นวาง จากนั้นคอมพิวเตอร์จะนำพิกัดนั้นจะนำมาวิเคราะห์ด้วย Minimax Algorithms เพื่อเลือก reaction ที่ดีที่สุดในการเล่นกับผู้เล่น เมื่อคอมพิวเตอร์เลือกได้แล้วว่าจะวางพิกัดไหน จะส่งพิกัดนั้นไปที่หุ่นยนต์ และสั่งการให้หุ่นยนต์คีบ “x” หรือ “o” ไปปล่อยที่พิกัดนั้น
ภาพรวมระบบ
ข้อมูลทางเทคนิคของฮาร์ดแวร์ และซอฟแวร์ที่ใช้
•UR3 หรือ Universal Robot (payload 3kg) เป็นหุ่นยนต์แขนกล 6 Degree of Freedom เป็นหุ่นยนต์ที่มีการใช้งานอย่างมากในอุตสาหกรรมการผลิต ในที่นี้จะนำมาใช้เป็นหุ่นยนต์ที่เล่น TicTacToe กับมนุษย์
•OpenCV เป็น Library ที่ใช้ในการประมวลผลภาพ ในที่นี้จะใช้ในการตรวจจับภาพ และแบ่งเป็นตารางขนาด 3×3 สำหรับเล่น TicTacToe
•ur-rtde เป็น Library สำหรับสั่งการ Universal Robot ผ่าน Remote Control โดยเราสั่งให้หุ่นยนต์ไปตำแหน่งต่างๆทั้งแบบ Forward-Kinematic, Inverse-Kinematic และสั่งการ Gripper ผ่าน IO Digital
เริ่มต้นใช้งาน
1.ติดตั้ง Library สำหรับใช้งาน Universal Robot และ Opencv ให้เรียบร้อย
ลิงค์สำหรับติดตั้ง ur-rtde : https://sdurobotics.gitlab.io/ur_rtde/installation/installation.html#quick-install
2.รันโค้ด minimax.py และ ur_real.py
ลิงค์สำหรับติดตั้ง โปรแกรมสำหรับการใช้งาน Tic Tac Toe – Robot : https://github.com/pchayapat/Tic-Tac-Toe-Robot
minimax.py เป็นไฟล์ Python ที่รวมทั้งการอ่านค่าพิกัดจากกล้อง มา Calibrate และส่งค่าไปยังฟังก์ชันการจำลองโปรแกรม TicTacToe
ตัวอย่างวิดิโอการทำงาน
กำหนดให้
1.ผู้เล่นเป็น X (สีม่วง)
2.หุ่นยนต์เป็น O (สีเขียว)
3.สภาพแวดล้อมต่างๆต้องกำหนดให้พอดีกับตาราง และพื้นที่เล่น
4.ติดตั้งกล้องที่เห็นมุมมองจากด้านบนของตาราง
ระยะเวลาเฉลี่ยต่อการเล่น 1 ตา เท่ากับ 1 นาที
เกณฑ์การวัดผลของระบบ
-เวลาที่ใช้ในการตอบสนองของหุ่นยนต์แขนกล 5/5
-ตำแหน่งที่แขนกลวางต้องตรงกับในโปรแกรมจำลอง 5/5
-ความพึงพอใจ/ ความสนุกสนานของผู้เล่น 4/5
ความสนุกของผู้ทดลองใช้
ปัญหาที่พบ
☀ทุกครั้งที่รันโปรแกรมจะใช้เวลาเปิดกล้องค่อนข้างนาน ประมาณ 2-3 นาที ทางผู้จัดทำจึงแก้ปัญหาโดยการสร้างฟังก์ชันสำหรับรีเซ็ต เพื่อให้โปรแกรมรีเซ็ตอัตโนมัติ
☀ตำแหน่งของพิกัดมีความละเอียดอ่อน เพราะฉะนั้นผู้จัดทำจึงต้องเซ็ตสถานที่ให้มีความพร้อม และปลอดภัย หลีกเลี่ยงการเดินชน
☀เมื่อทำการรันไฟล์ ur_real.py รอบที่สองจะมีข้อผิดพลาดเรื่อง port ที่เชื่อมต่อซ้ำกัน ทางผู้จัดทำได้มีการแก้ไขปัญหาดังกล่าวโดยการสร้าง condition เพิ่มเพื่อหลีกเลี่ยงกันกดรันไฟล์หลายรอบ
Ref :
1.https://medium.com/@mayza/%E0%B8%A1%E0%B8%B2%E0%B8%AA%E0%B8%A3%E0%B9%89%E0%B8%B2%E0%B8%87-ai-%E0%B9%80%E0%B8%A5%E0%B9%88%E0%B8%99%E0%B9%80%E0%B8%81%E0%B8%A1%E0%B9%82%E0%B8%AD%E0%B9%80%E0%B8%AD%E0%B9%87%E0%B8%81%E0%B8%8B%E0%B9%8C-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2%E0%B8%AD%E0%B8%B1%E0%B8%A5%E0%B8%81%E0%B8%AD%E0%B8%A3%E0%B8%B4%E0%B8%97%E0%B8%B6%E0%B8%A1-%E0%B8%A1%E0%B8%B4%E0%B8%99%E0%B8%B4%E0%B9%81%E0%B8%A1%E0%B9%87%E0%B8%81%E0%B8%8B%E0%B9%8C-minimax-algorithm-93c371754434
2.https://answers.opencv.org/question/208567/getting-xy-coordinates-from-an-object-in-a-video/
ผู้จัดทำ
นายชยพัทธ์ พีรนพวัฒน์ รหัสนักศึกษา 63340500009 นักศึกษาปี 3 (2022)
มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี สถาบันวิทยาการหุ่นยนต์ภาคสนาม
หน้าที่ :
➢ตั้งค่าพิกัดแต่ละจุดบนตาราง และควบคุมแขนกลผ่านโปรแกรมโดยใช้ ur-rtde library
➢อ่านค่าพิกัดจากโปรแกรม และสั่งการให้แขนกลไปยังตำแหน่งนั้นๆ
✈instagram : pchayapat ✈facebook : Chayapat Peeranoppawat
นายธนัช ธรนิศตระกูล รหัสนักศึกษา 63340500025 นักศึกษาปี 3 (2022)
มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี สถาบันวิทยาการหุ่นยนต์ภาคสนาม
หน้าที่ :
➢ตั้งค่าพิกัดภาพ และพิกัดบนตารางที่ได้รับภาพจากกล้อง ด้วย Opencv library
➢สร้างระบบการเล่นโดยรับค่าพิกัดมาจากกล้อง และส่งพิกัดดังกล่าวไปยังไฟล์แขนไฟล์ ur
✈instagram : omzlette