
Integrated operation of both robots
โปรแกรมการทำงาน

โค้ดส่วนนี้ใช้สำหรับเริ่มการสื่อสารกับหุ่นยนต์ 2 ตัวผ่านโปรโตคอล RTDE ซึ่งเป็นส่วนหนึ่งของซอฟต์แวร์ของ Universal Robots (UR). โปรโตคอล RTDE ช่วยให้สามารถสื่อสารและควบคุมหุ่นยนต์ในเวลาจริงได้:
import rtde_control
: นำเข้าโมดูลrtde_control
ที่ให้ฟังก์ชันสำหรับควบคุมหุ่นยนต์ UR ผ่าน RTDEimport time
: นำเข้าโมดูลtime
สำหรับการทำงานที่เกี่ยวข้องกับเวลา, เช่น เพิ่มการหน่วงเวลาระหว่างคำสั่งrtde_c_20 = rtde_control.RTDEControlInterface("192.168.200.20")
: เริ่มต้นการสื่อสารกับหุ่นยนต์ที่มี IP 192.168.200.20 โดยสร้างอินสแตนซ์rtde_c_20
สำหรับการส่งคำสั่งไปยังหุ่นยนต์ตัวนี้rtde_c_10 = rtde_control.RTDEControlInterface("192.168.200.10")
: เช่นเดียวกัน, สร้างอินสแตนซ์rtde_c_10
สำหรับควบคุมหุ่นยนต์อีกตัวที่มี IP 192.168.200.10
สรุป: โค้ดนี้จัดตั้งการเชื่อมต่อเพื่อควบคุมหุ่นยนต์ UR 2 ตัวผ่าน IP ที่กำหนด ทำให้สามารถสั่งงานและควบคุมหุ่นยนต์ได้ในเวลาจริง

ฟังก์ชัน move_robot_20()
(หุ่นยนต์ตัวซ้าย) และ move_robot_10()
(หุ่นยนต์ตัวขวา) ถูกออกแบบมาเพื่อควบคุมการเคลื่อนที่ของหุ่นยนต์ 2 ตัวในลำดับที่แตกต่างกัน โดยแต่ละฟังก์ชันจะมีลำดับการเคลื่อนที่หรือการทำงานที่เฉพาะเจาะจงสำหรับหุ่นยนต์นั้นๆ:
move_robot_20()
: ควบคุมหุ่นยนต์ตัวแรก (หุ่นยนต์ที่มี IP 192.168.200.20) โดยมีขั้นตอนการเคลื่อนไหวเริ่มต้นจากตำแหน่ง “HOME”, ไปยังตำแหน่ง “buffer”, ตำแหน่ง “Cam” สำหรับการมองหา, กลับไปที่ “buffer”, จากนั้นเตรียมพร้อม “pick up” และสุดท้ายคือการส่งหรือวางสิ่งของในตำแหน่งที่กำหนดmove_robot_10()
: ควบคุมหุ่นยนต์ตัวที่สอง (หุ่นยนต์ที่มี IP 192.168.200.10) โดยเริ่มจากตำแหน่ง “HOME”, และทำการเคลื่อนไปยังตำแหน่งต่างๆ เพื่อ “GET” สิ่งของ, จากนั้นเคลื่อนไปยัง “Basket_1 Position_1” และกลับมาที่ตำแหน่ง “HOME”
การเรียกใช้ move_robot_20()
และ move_robot_10()
ต่อจากกันแบบนี้จะทำให้การเคลื่อนไหวของหุ่นยนต์ทั้งสองเกิดขึ้นแบบต่อเนื่องกัน หากต้องการให้หุ่นยนต์ทั้งสองทำงานพร้อมกัน จำเป็นต้องใช้เทคนิคการเขียนโค้ดแบบมัลติเธรดหรือการประมวลผลแบบพร้อมกัน (concurrency) เพื่อจัดการกับการทำงานแบบพร้อมกัน
1. ตำแหน่งเริ่มต้นของหุ่นยนต์
– หุ่นยนต์อยู่ในตำแหน่งเริ่มต้นที่เรียกว่า “HOME”
– หุ่นยนต์จะรอคำสั่งจาก Unity โดยรับคำสั่ง “unity_start”
2. เคลื่อนที่ไปยังตำแหน่ง “set_camera”
– เมื่อได้รับคำสั่งจาก Unity หุ่นยนต์จะเคลื่อนที่ไปยังตำแหน่ง “set_camera”
3. ส่งคำสั่งไปหา vision
– หุ่นยนต์จะส่งคำสั่ง “camera_position” ไปยังระบบ vision
4. การถ่ายภาพและหาตำแหน่งของขวดนม
– ระบบ vision จะถ่ายภาพและวิเคราะห์หาตำแหน่งของขวดนมทั้งหมด
– ระบบ vision จะส่งตำแหน่งของขวดนมทีละขวดให้กับหุ่นยนต์
5. การหยิบขวดนม
– เมื่อหุ่นยนต์เคลื่อนที่ไปถึงตำแหน่งของขวดนม ผู้ใช้จะควบคุมหุ่นยนต์เพื่อให้สามารถหยิบขวดนมได้
6. การยืนยันการหยิบขวดนม
– เมื่อผู้ใช้ยืนยันการหยิบขวดนม หุ่นยนต์จะเคลื่อนที่ไปส่งขวดนมให้กับแขนกลอีกข้างหนึ่ง
7. การส่งขวดนมให้กับแขนกล
– เมื่อหุ่นยนต์ไปถึงตำแหน่งส่งขวดนม ผู้ใช้จะควบคุมหุ่นยนต์เพื่อให้สามารถส่งขวดนมได้
8. การทำงานตามลำดับที่บันทึกไว้
– เมื่อยืนยันการส่งขวดนม หุ่นยนต์ทั้งสองตัวจะทำงานตามลำดับที่บันทึกไว้
– หุ่นยนต์ทางฝั่งขวาจะเคลื่อนที่กลับไปที่ตำแหน่ง HOME
– หุ่นยนต์ทางฝั่งซ้ายจะเคลื่อนที่ไปวางขวดนมบนชั้น