สมาชิกผู้จัดทำ
ยศวัฒน์ ลิ้มประเสริฐ
1. บทนำ (Introduction)
วัตถุประสงค์
- เพื่อพัฒนาระบบ Pick and Place ที่สามารถระบุตำแหน่งของชิ้นงานได้อย่างแม่นยำโดยใช้กล้องเว็บแคมและเทคโนโลยี ArUco Markers
- เพื่อปรับปรุงประสิทธิภาพการทำงานของหุ่นยนต์ UR3e ในการหยิบและวางชิ้นงานโดยอัตโนมัติในพื้นที่ทำงานที่กำหนด
- เพื่อสร้างระบบอัตโนมัติที่มีความยืดหยุ่น โดยผสานการทำงานระหว่าง OpenCV และไลบรารี ur-rtde ในการประมวลผลภาพและควบคุมหุ่นยนต์แบบเรียลไทม์
ขอบเขตของงาน
- ออกแบบระบบ Pick and Place โดยใช้กล้องเว็บแคมและเทคโนโลยี ArUco Markers ในการระบุตำแหน่งของชิ้นงานใน workspace ซึ่งขอบเขตของพื้นที่ทำงานจะไม่เกิน 50 เซนติเมตรจากฐานของหุ่นยนต์ UR3e
- พัฒนาโปรแกรมที่ใช้ OpenCV สำหรับการประมวลผลภาพจากกล้องเว็บแคม เพื่อระบุตำแหน่งของชิ้นงานและพัฒนาโปรแกรมควบคุมหุ่นยนต์ UR3e โดยใช้ไลบรารี ur-rtde
- ออกแบบระบบให้สามารถหยิบชิ้นงานทีละ 1 ชิ้นโดยมีขนาดชิ้นงาน 2.5 x 2.5 x 2.5 เซนติเมตร
อุปกรณ์และเครื่องมือที่ใช้ (Materials and Tools)
อุปกรณ์ที่ใช้
- กล้องเว็บแคม (Webcam):
ใช้สำหรับจับภาพของชิ้นงานที่ต้องการหยิบและวางในกระบวนการ Pick and Place โดยกล้องเว็บแคมจะส่งข้อมูลภาพให้กับโปรแกรมประมวลผลเพื่อตรวจจับตำแหน่งของชิ้นงาน - ArUco Markers:
ArUco Markers จะถูกติดตั้งอยู่บนขอบของ workspace เพื่อทำหน้าที่กำหนดขอบเขตของพื้นที่ทำงานและช่วยในการระบุตำแหน่งที่แม่นยำของชิ้นงานในพื้นที่ดังกล่าว ข้อมูลที่ได้จากการตรวจจับ ArUco Markers ผ่านกล้องเว็บแคมจะถูกใช้เพื่อคำนวณพิกัดที่แน่นอนของชิ้นงานที่ต้องการหยิบหรือวางโดยพิกัดเหล่านี้จะถูกส่งต่อไปยังหุ่นยนต์ UR3e เพื่อให้สามารถดำเนินการหยิบหรือวางชิ้นงานได้อย่างถูกต้องและแม่นยำ - หุ่น UR3e (UR3e Robot):
เป็นหุ่นยนต์แขนกลแบบ 6 แกน ที่ใช้สำหรับทำงานในกระบวนการ Pick and Place โดยหุ่น UR3e จะรับคำสั่งจากโปรแกรมควบคุมเพื่อทำการเคลื่อนที่ไปยังตำแหน่งที่ระบุและดำเนินการหยิบหรือวางชิ้นงาน - Gripper:
เป็นอุปกรณ์ที่ติดตั้งกับหุ่น UR3e สำหรับจับชิ้นงาน โดย Gripper จะเปิดหรือปิดเพื่อหยิบหรือปล่อยชิ้นงานตามคำสั่งที่ได้รับจากโปรแกรมควบคุม - ชิ้นงาน (Workpiece):
วัตถุที่ใช้ในกระบวนการ Pick and Place ซึ่งจะถูกตรวจจับตำแหน่งโดยกล้องเว็บแคมและถูกหยิบหรือวางโดยหุ่น UR3e
คลังโปรแกรม (Program Library)
- OpenCV:
ไลบรารีสำหรับการประมวลผลภาพที่ใช้ในการวิเคราะห์ภาพที่ได้รับจากกล้องเว็บแคม ซึ่งรวมถึงการใช้ร่วมกับ ArUco Markers เพื่อระบุตำแหน่งของชิ้นงาน - ArUco:
เป็นโมดูลที่ใช้ใน OpenCV สำหรับการตรวจจับและระบุตำแหน่งของ ArUco Markers - NumPy:
ไลบรารีสำหรับการคำนวณและจัดการกับข้อมูลในรูปแบบของอาร์เรย์ ช่วยในการจัดการข้อมูลภาพและคำนวณตำแหน่งของวัตถุจากข้อมูลที่ได้จาก OpenCV - ur-rtde 1.5.9:
ไลบรารีสำหรับการสื่อสารและควบคุมหุ่นยนต์ UR3e โดยใช้ Real-Time Data Exchange (RTDE)
เพื่อส่งคำสั่งและรับข้อมูลจากหุ่นยนต์ในระหว่างกระบวนการ Pick and Place.
ขั้นตอนการพัฒนา (Development Process)
หน้าที่ของระบบ Pick and Place
3.1.1 การระบุตำแหน่งของชิ้นงาน (Workpiece Positioning):
ระบบใช้กล้องเพื่อทำการตรวจจับและระบุตำแหน่งของชิ้นงานที่อยู่บริเวณจุดที่ 1 โดยการประมวลผลภาพจะช่วยให้ระบบรู้ถึงตำแหน่งที่แน่นอนของชิ้นงาน
3.1.2 การหยิบชิ้นงาน (Workpiece Picking):
หลังจากที่ระบบทราบตำแหน่งของชิ้นงานแล้ว ระบบจะส่งคำสั่งไปยังแขนหุ่นยนต์ UR3e เพื่อให้ทำการหยิบชิ้นงานโดยอัตโนมัติ การควบคุมแขนหุ่นยนต์จะถูกปรับตามตำแหน่งที่ตรวจพบ
ของชิ้นงาน
3.1.3 การเคลื่อนย้ายชิ้นงาน (Workpiece Transfer):
เมื่อหยิบชิ้นงานได้แล้วระบบจะสั่งการให้แขนหุ่นยนต์ย้ายชิ้นงานจากจุดที่ 1 ไปยังจุดที่ 2 โดยใช้เส้นทางที่วางแผนไว้อย่างเหมาะสมเพื่อหลีกเลี่ยงสิ่งกีดขวาง
3.1.4 การวางชิ้นงาน (Workpiece Placement):
เมื่อแขนหุ่นยนต์มาถึงจุดที่ 2 ระบบจะสั่งให้หุ่นยนต์ทำการวางชิ้นงานในตำแหน่งที่กำหนดอย่างแม่นยำ
3.1.5 การทำงานซ้ำ (Process Repetition):
ระบบจะทำงานในลักษณะเดียวกันสำหรับชิ้นงานชิ้นต่อไปจนกว่ากระบวนการจะเสร็จสิ้นตามจำนวนชิ้นงานที่ต้องการ
ภาพรวมของระบบ (system overview)
การทำงานเริ่มจาก ระบบการมองเห็น (Vision System) ซึ่งมีหน้าที่จับภาพและเตรียมข้อมูลภาพจากพื้นที่ทำงาน ภาพที่ได้รับจะผ่านกระบวนการ การปรับระนาบ (Image Rectification) เพื่อแก้ไขความบิดเบี้ยวในภาพและทำให้ภาพมีความเรียบและแม่นยำยิ่งขึ้น หลังจากนั้นข้อมูลภาพที่ได้รับการปรับระนาบแล้วจะถูกส่งไปยัง หน่วยการตรวจจับและหาตำแหน่งชิ้นงาน (Object Detection and Localization Unit) ซึ่งจะทำการระบุและหาตำแหน่งของชิ้นงานในภาพ โดยใช้เทคนิคการวิเคราะห์ภาพ (Image Processing) เพื่อระบุตำแหน่งของชิ้นงาน หน่วยนี้จะทำการ หาตำแหน่ง(Localization) ซึ่งคือการแปลงพิกัดของชิ้นงานจากภาพเป็นพิกัดจริงในโลกเทียบกับ Origin base frame ของหุ่นยนต์ UR3e เพื่อให้ตรงกับระบบพิกัดของพื้นที่ทำงานจริง พิกัดที่ได้จากการหาตำแหน่ง จะถูกส่งไปยัง หน่วยการวางแผนเส้นทาง (Path Planning) ซึ่งจะทำการวางแผนเส้นทางสำหรับหุ่นยนต์จากตำแหน่งเริ่มต้นไปยังตำแหน่งเป้าหมาย หน่วยนี้จะรับพิกัดจุดผ่าน (Via Points) จากหน่วยการตรวจจับ
และหาตำแหน่งชิ้นงาน และคำนวณเส้นทางที่เหมาะสมที่สุดสำหรับการเคลื่อนที่ของหุ่นยนต์ ข้อมูลแผนการเดินทางที่ได้จะถูกส่งไปยัง หน่วยการควบคุมหุ่นยนต์ (Robot Controller) ซึ่งมีหน้าที่รับแผนการเดินทางและสั่งการให้หุ่นยนต์ดำเนินการตามแผนที่กำหนดและสั่งการทำงานของ End Effector เพื่อให้หุ่นยนต์ UR3e สามารถทำการหยิบและวางชิ้นงานตามแผนการเดินทางที่ได้วางไว้ได้อย่างมีประสิทธิภาพ โดยมีส่วน User Interface สำหรับแสดงสถานะการทำงานของหุ่นยนต์และระบบ Pick and Place
การติดตั้งและตั้งค่า (Installation and Setu
A) การติดตั้งกล้อง
- เลือกตำแหน่งที่เหมาะสมและติดตั้งกล้อง:
เลือกตำแหน่งที่เหมาะสมในการติดตั้งกล้อง โดยต้องครอบคลุมพื้นที่ทำงานทั้งหมดและมุมมองที่ดีที่สุด โดยในครั้งนี้เลือกติดตั้งกล้องเพื่อให้ได้มุมมองจากด้านบน(Top View) เพื่อให้ง่ายต่อการหาตำแหน่งของชิ้นงานและมีความแม่นยำ ดังนั้นจึงทำการติดตั้งกล้องที่ด้านบนของพื้นที่ทำงาน (Workspace) - ทดสอบการจับภาพ:
ทดสอบกล้องโดยการตรวจจับชิ้นงานจริงในพื้นที่ทำงานเพื่อให้แน่ใจว่ากล้องสามารถบันทึกภาพได้อย่างชัดเจนและครบถ้วน โดยตรวจสอบว่าภาพที่ได้มีความละเอียดเพียงพอ มองเห็นชิ้นงาน
ได้อย่างชัดเจนและตรงกับตำแหน่งจริงของชิ้นงานในพื้นที่ทำงาน รวมถึงการประเมินคุณภาพของการจับภาพและปรับปรุงการตั้งค่ากล้องหากจำเป็น เพื่อให้ระบบการมองเห็นทำงานได้อย่าง
มีประสิทธิภาพ - ตรวจสอบพื้นที่ครอบคลุมและมุมมองของกล้อง:
ใช้ภาพตัวอย่างจากกล้องเพื่อทำการตรวจสอบว่ากล้องสามารถมองเห็นพื้นที่ทำงานครอบคลุมพื้นที่ทำงาน (Workspace) ทั้งหมดได้ครบถ้วนหรือไม่ ให้แน่ใจว่าภาพที่ได้รับจากกล้องครอบคลุม
พื้นที่ทั้งหมดที่ต้องการตรวจจับ และตรวจสอบว่ามีสิ่งกีดขวางในมุมมองของกล้องหรือไม่ ซึ่งอาจทำให้กล้องไม่สามารถเห็นชิ้นงานได้อย่างชัดเจน หรือกล้องมีความเอียงมากจนส่งผลต่อการ
มองเห็นของชิ้นงาน ความเอียงมากเกินไปอาจทำให้การตรวจจับชิ้นงานไม่แม่นยำ
B) เลือกตำแหน่งติดตั้ง ArUco Markers:
1. เลือกตำแหน่งที่เหมาะสมในการติดตั้ง ArUco Markers ที่ครอบคลุมพื้นที่ทำงาน(Workspace) ทั้งหมดได้ครบถ้วน ตำแหน่งที่เลือกควรอยู่ในมุมมองของกล้องอย่างชัดเจนและไม่ถูกบังโดย
สิ่งอื่น เพื่อให้ระบบการมองเห็นสามารถตรวจจับ ArUco Markers ได้ง่ายและชัดเจน
2. สร้าง ArUco Markers:
ใช้โปรแกรม OpenCV เพื่อสร้าง ArUco Markers โดยกำหนดขนาด 6×6 และใช้ ID 0, 1, 2, และ 3 สำหรับ Marker แต่ละตัว จากนั้นตรวจสอบคุณภาพของ Marker เพื่อให้มั่นใจว่ามีลักษณะ
ที่ชัดเจนและพิมพ์ออกมาในขนาดที่ต้องการ
3. ติดตั้ง ArUco Markers:
ทำการติดตั้ง ArUco Markers ในตำแหน่งที่เลือก โดยยึดติด Markers ให้อยู่กับที่ จากนั้นตรวจสอบว่าโปรแกรมสามารถตรวจจับ Marker ได้อย่างถูกต้องหรือไม่
C)หาตำแหน่งพิกัดของ ArUco Markers:
ดำเนินการหาพิกัดของ ArUco Markers โดยใช้ปลาย End Effector ที่ติดอยู่กับหุ่นยนต์ UR3e สัมผัสบริเวณจุดกึ่งกลางของ Marker เพื่อทำการตรวจสอบพิกัดจุดกึ่งกลาง Marker ในเฟรมของ
หุ่นยนต์ โดยอ้างอิงจากจุดเริ่มต้น (origin) ของเฟรมหุ่นยนต์ และบันทึกพิกัดที่ได้ทั้ง 4 จุดสำหรับการควบคุมระบบ Pick and Place
การพัฒนาโปรแกรม (Software Development):
ในขั้นตอนนี้จะเป็นการพัฒนาโปรแกรมโดยใช้แนวคิดการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming หรือ OOP) ซึ่งจะช่วยให้การจัดการโค้ดมีความเป็นระบบระเบียบและง่าย
ต่อการบำรุงรักษาโดยแต่ละกระบวนการหลักในระบบจะถูกแยกออกมาเป็นคลาส (class) จำนวน 4 คลาสดังนี้
3.4.1 class CameraHandler:
- หน้าที่: รับผิดชอบในการเชื่อมต่อและรับภาพจากกล้อง
- ฟังก์ชันหลัก:
__init__(self, camera_index): กำหนดค่ากล้องที่ใช้ในการถ่ายภาพ
capture_frame(self): ใช้ในการจับภาพจากกล้องและบันทึก
release(self): ปิดการเชื่อมต่อกับกล้องเมื่อไม่จำเป็นต้องใช้งานแล้ว
1. __init__
Method
- ทำหน้าที่เป็นตัวสร้าง (constructor) ของคลาส โดยรับพารามิเตอร์
camera_index
,frame_width
, และframe_height
เพื่อกำหนดกล้องที่ต้องการใช้งานและขนาดของเฟรมภาพ - ใช้
cv2.VideoCapture
เพื่อเริ่มต้นการเชื่อมต่อกับกล้อง - ตั้งค่าความกว้าง (
frame_width
) และความสูง (frame_height
) ของเฟรมภาพ - ตรวจสอบว่ากล้องเปิดได้หรือไม่ (
cap.isOpened()
) ถ้าไม่สามารถเปิดได้จะมีการแจ้งเตือนผ่านException
- ตรวจสอบว่ากล้องรองรับการปรับโฟกัสอัตโนมัติ (
cv2.CAP_PROP_AUTOFOCUS
) หรือไม่ ถ้ารองรับก็จะเปิดใช้งานการปรับโฟกัสอัตโนมัติ
2. wait_for_focus
Method
- รอให้กล้องปรับโฟกัสโดยรับพารามิเตอร์
wait_time
ซึ่งเป็นเวลาที่จะรอในหน่วยมิลลิวินาที
3. capture_frame Method
- ทำการอ่านเฟรมภาพจากกล้องและคืนค่าเป็นภาพเฟรม (frame)
- ถ้าไม่สามารถอ่านเฟรมได้ จะมีการแจ้งเตือนผ่าน Exception
4. crop_and_zoom Method
- ทำการครอบภาพ (crop) และซูมภาพตามที่กำหนด
- คำนวณตำแหน่งเริ่มต้น (start_row, start_col) และตำแหน่งสิ้นสุด (end_row, end_col)
ของภาพที่จะถูกครอบ - ทำการครอบภาพและปรับขนาด (resize) ของภาพที่ครอบให้กลับไปเป็นขนาดเดิม
5. save_image Method
- ทำหน้าที่บันทึกภาพ (frame) ที่จับได้ลงไฟล์ โดยมีชื่อไฟล์สามารถกำหนดเองได้
3.4.2 class ArUcoProcessor:
- หน้าที่: ตรวจจับ ArUco markers และทำการครอบเฉพาะพื้นที่ทำงาน (Workspace) ที่กำหนด
- ฟังก์ชันหลัก:
__init__(self, dictionary_type, parameters=None): กำหนดชนิดของ ArUco markers ที่ต้องการตรวจจับ โดยใช้ dictionary_type และค่าพารามิเตอร์เสริม (parameters)
detect_markers(self, frame): ตรวจจับ ArUco markers และส่งคืนตำแหน่งของ markers
draw_markers(self, frame, corners, ids): วาดกรอบรอบๆ ArUco markers ที่ตรวจพบในภาพ
- __init__ (Initializer)
- รับ image_path ซึ่งเป็นที่อยู่ของไฟล์ภาพ
- โหลดภาพจากที่อยู่ที่ระบุ และเก็บไว้ในตัวแปร self.image
- กำหนดพจนานุกรมของ ArUco markers ที่จะใช้สำหรับการตรวจจับ (aruco.DICT_6X6_250)
- กำหนดค่าเริ่มต้นของตัวแปร self.corners และ self.ids เพื่อเก็บข้อมูลของmarkers และ ID
2. find_aruco_corners (ค้นหามุมของ ArUco markers)
- แปลงภาพให้เป็นขาวดำ (gray) และตรวจจับ ArUco markers ในภาพและเก็บมุมและ ID ของ markers ใน self.corners และ self.ids ตามลำดับ
3. order_corners (จัดเรียงมุมของ markers ตาม ID)
4. get_transformed_image
(ปรับตัดกรอบภาพตามตำแหน่งของ markers)
- ตรวจสอบว่ามีการตรวจจับ markers ทั้ง 4 มุมหรือไม่ ถ้าไม่ครบจะเกิดข้อผิดพลาด (
ValueError
) - คำนวณตำแหน่งของมุมของภาพ (
src_corners
) ตามมุมที่ตรวจจับได้ - คำนวณขนาดของภาพที่ปรับแก้แล้วตามมุมที่ได้ (
dst_corners
) - ใช้การเปลี่ยนแปลงเชิงมุมมอง (perspective transformation) เพื่อปรับภาพให้ตรงตามมุมที่ได้
- คืนค่าภาพที่ถูกปรับแก้แล้ว (
warped_image
)
3.4.3 class ImageProcessor:
- หน้าที่: ประมวลผลภาพเพื่อหาวัตถุชิ้นงานและหาตำแหน่งของชิ้นงาน
- ฟังก์ชันหลัก:
__init__(self, kernel_size=5): กำหนดขนาดของ kernel สำหรับการประมวลผลภาพ
convert_to_gray(self, frame): แปลงภาพจาก RGB เป็นภาพขาวดำ (grayscale)
apply_gaussian_blur(self, frame): ใช้ Gaussian blur
threshold_image(self, frame, thresh_value, max_value): ใช้ thresholding ในการแปลงภาพเป็นภาพแบบ binary (ขาว-ดำ)
- __init__:
- กำหนดค่าการเริ่มต้นของคลาสและพิกัดสำหรับ 4 จุด (มุมบนขวา, มุมบนซ้าย, มุมล่างขวา, มุมล่างซ้าย) และข้อมูลความสูง
2. find_colors
- แปลงภาพเป็นสี HSV
- กำหนดช่วงสีสำหรับสีต่าง ๆ (แดง, เหลือง, เขียว, เทา, น้ำเงิน, ม่วง) และสร้างมาสก์แต่ละสี
- รวมมาสก์เหล่านี้เป็นมาสก์สุดท้าย
3. apply_mask
- ใช้มาสก์สุดท้ายในการแยกสีจากภาพที่ปรับ
4. Preprocessing
- แปลงภาพที่ถูกมาสก์เป็นภาพขาวดำ และใช้การ thresholding แบบอินเวิร์ส (binary inversion) เพื่อเตรียมข้อมูลสำหรับการค้นหาเส้นขอบ
5. find_Contour
- ค้นหาเส้นขอบในภาพ ค้นหาและวาดเส้นขอบที่มีพื้นที่ (ระหว่าง 1500 ถึง 15000 พิกเซล)
- คำนวณจุดศูนย์กลางของแต่ละเส้นขอบและแปลงพิกัดพิกเซลเป็นพิกัดจริงโดยใช้จุดที่ให้มา
6. find_cube
- ระบุตำแหน่งของวัตถุโดยการวิเคราะห์จุดศูนย์กลางของจุด Contours
- อัปเดตตำแหน่งของวัตถุตามจุดที่มีค่าพิกัดน้อยที่สุดหรือ hull points หากมี
- ใช้การคำนวณการแปลงพิกัดพิกเซลเป็นพิกัดจริงของเฟรมหุ่นยนต์ UR3e
3.4.4 class RobotController:
- หน้าที่: ควบคุมการเคลื่อนไหวของหุ่นยนต์ รวมถึงการเชื่อมต่อกับหุ่นยนต์และการส่งคำสั่งให้หุ่นยนต์ทำงาน
- ฟังก์ชันหลัก:
__init__(self, ip_address): กำหนดค่า IP address ของหุ่นยนต์เพื่อสร้างการเชื่อมต่อ
move_to_position(self, position, velocity, acceleration): ส่งคำสั่งให้หุ่นยนต์เคลื่อนที่ไปยังตำแหน่งที่ระบุ โดยกำหนดค่าความเร็วและอัตราเร่ง
pick(self): ส่งคำสั่งให้หุ่นยนต์ทำการหยิบชิ้นงาน
place(self): ส่งคำสั่งให้หุ่นยนต์วางชิ้นงานลง
- __init__
- rtde_c: ตัวควบคุมการเคลื่อนที่ (RTDE Control Interface) ของหุ่นยนต์
- rtde_io: อินเทอร์เฟซสำหรับการควบคุมดิจิตอลอินพุตและเอาต์พุต
- pick_coords: พิกัดของชิ้นงานที่ต้องการจับ
- กำหนดค่าความเร็ว (velocity), การเร่ง (acceleration), และค่าการเบลนด์ (blend)ที่ใช้ในการเคลื่อนที่
- สร้าง path สำหรับการเคลื่อนที่ต่าง ๆ ของหุ่นยนต์
2. init_paths(self)
- ออกแบบ path สำหรับการเคลื่อนที่ของหุ่นยนต์ UR3e
- Home
ออกแบบท่า Home ของหุ่นยนต์ ในลักษณะพับข้อต่อเพื่อหลบมุมกล้องขณะถ่ายภาพ
- Home
- การเข้าหยิบชิ้นงาน
วาง Path ให้ Gripper เข้าหยิบชิ้นงานจากด้านข้าง เพื่อหลีกเลี่ยงการชนชิ้นงานด้านข้างชิ้นงานเป้าหมาย
- การยกชิ้นงาน
วาง Path ให้หุ่นยนต์ยกชิ้นงานขึ้นในลักษณะดังภาพ เพื่อหลีกเลี่ยงการชนอุปกรณ์ด้านข้างหุ่นยนต์ขณะเคลื่อนที่ไปยังจุดหมาย
- การวางชิ้นงาน
วาง Path ให้หุ่นยนต์วางชิ้นงานขึ้นในลักษณะดังภาพ เพื่อหลีกเลี่ยงการชนเป้าหมาย
สร้าง path สำหรับการเคลื่อนที่ของหุ่นยนต์ UR3e
การทดสอบและผลการทดสอบ (Testing and Results)
4.1 ทดลองโดยการควบคุมหุ่นยนต์ UR3e แบบอัตโนมัติ
ทำการทดลองทั้งหมด 6 กรณีคือ 1) ชิ้นงานกระจายบนพื้นที่ทำงาน (Workspace), 2) ชิ้นงานอยู่รวมกันเป็นกลุ่มบนพื้นที่ทำงาน (Workspace), 3) ชิ้นงานมีทั้งแบบกระจายและรวมกลุ่มบนพื้นที่
ทำงาน (Workspace), 4) ชิ้นงานอยู่ไกลจากหุ่นยนต์, 5) ชิ้นงานมีทั้งแบบกระจาย รวมกลุ่มบนพื้นที่ทำงาน (Workspace) และอยู่ไกลจากหุ่นยนต์, 6) ไม่มีชิ้นงานบนพื้นที่ทำงาน (Workspace)
โดยในแต่ละกรณีจะทำการทดสอบกรณีละ 30 ชิ้นงาน แต่กรณีที่ 4) ชิ้นงานอยู่ไกลจากหุ่นยนต์และกรณีที่ 6) ไม่มีชิ้นงานบนพื้นที่ทำงาน (Workspace) จะทำการทดลองตรวจสอบความถูกต้อง
ของระบบ โดยดูความถูกต้องของการแสดงผลส่วน User Interface
4.1.1 กรณีที่ 1) ชิ้นงานกระจายบนพื้นที่ทำงาน (Workspace)
สรุปการทดลองระบบ Pick and Place กรณีชิ้นงานกระจายบนพื้นที่ทำงาน(Workspace) ทั้ง 30 ชิ้น พบว่าระบบสามารถตรวจจับและหยิบชิ้นงานทุกชิ้นได้อย่างถูกต้องและไม่มีข้อผิดพลาด
ส่งผลให้การทำงานของระบบประสบความสำเร็จอย่างสมบูรณ์แบบด้วยอัตราความสำเร็จ100%
4.1.2 กรณีที่ 2) ชิ้นงานอยู่รวมกันเป็นกลุ่มบนพื้นที่ทำงาน (Workspace)
สรุปผลการทดสอบระบบ Pick and Place ในกรณีที่ชิ้นงานทั้งหมด 30 ชิ้นถูกจัดวางรวมกันเป็นกลุ่มในพื้นที่ทำงาน พบว่าระบบสามารถตรวจจับและหยิบชิ้นงานได้ถูกต้อง 29 ชิ้น และเกิดความ
ผิดพลาดในการหยิบชิ้นงาน 1 ชิ้น ซึ่งเกิดจากการที่ Gripper ชนชิ้นงาน ทำให้ชิ้นงานเกิดการเปลี่ยนตำแหน่งในขณะที่ระบบกำลังเข้าหยิบชิ้นงาน ส่งผลให้การทำงานของระบบมีอัตราความสำเร็จ
ที่ 96.67%
4.1.3 กรณีที่ 3) ชิ้นงานมีทั้งแบบกระจายและรวมกลุ่มบนพื้นที่ทำงาน (Workspace)
สรุปการทดลองระบบ Pick and Place กรณีชิ้นงานมีทั้งแบบกระจายและรวมกลุ่มบนพื้นที่ทำงาน(Workspace) ทั้ง 30 ชิ้น พบว่าระบบสามารถตรวจจับและหยิบชิ้นงานทุกชิ้นได้อย่างถูกต้อง
และไม่มีข้อผิดพลาด ส่งผลให้การทำงานของระบบประสบความสำเร็จอย่างสมบูรณ์แบบด้วยอัตราความสำเร็จ 100%
4.1.4 กรณีที่ 4) ชิ้นงานอยู่ไกลจากหุ่นยนต์
จากผลการทดลองการทำงานของระบบ Pick and Place ในกรณีที่ชิ้นงานอยู่ไกลจากหุ่นยนต์เกิน 50 เซนติเมตร ซึ่งเป็นระยะที่เกินขีดความสามารถที่หุ่นยนต์จะเคลื่อนที่ไปถึงได้ เมื่อระบบตรวจพบว่าชิ้นงานอยู่ไกลเกิน 50 เซนติเมตร หุ่นยนต์จะหยุดนิ่งที่ตำแหน่ง Home และส่งสัญญาณไฟสีเหลืองกระพริบ เพื่อแจ้งให้ผู้ควบคุมระบบเข้ามาตรวจสอบและแก้ไขสถานการณ์ดังกล่าว ซึ่งจากการทดลองนี้พบว่าหุ่นยนต์สามารถแสดงไฟสีเหลืองกระพริบและหยุดการทำงานที่ตำแหน่งHome ได้อย่างถูกต้องตามที่ตั้งค่าไว้ เมื่อชิ้นงานอยู่ไกลเกิน 50 เซนติเมตร ถือว่าระบบทำงานได้ตามที่คาดหมาย
4.1.4 กรณีที่ 5) ชิ้นงานมีทั้งแบบกระจาย รวมกลุ่มบนพื้นที่ทำงาน (Workspace) และอยู่ไกลจากหุ่นยนต์
สรุปการทดลองระบบ Pick and Place กรณีชิ้นงานมีทั้งแบบกระจาย รวมกลุ่มบนพื้นที่ทำงาน (Workspace) และอยู่ไกลจากหุ่นยนต์ ทั้ง 30 ชิ้น พบว่าระบบสามารถตรวจจับและหยิบชิ้นงานทุกชิ้นได้อย่างถูกต้องและไม่มีข้อผิดพลาด และในส่วนชิ้นงานที่อยู่ไกลจากหุ่นยนต์เกิน 50 เซนติเมตร หุ่นยนต์จะหยุดนิ่งที่ตำแหน่ง Home และส่งสัญญาณไฟสีเหลืองกระพริบ ซึ่งหุ่นยนต์สามารถแสดงไฟสีเหลืองกระพริบและหยุดการทำงานที่ตำแหน่ง Home ได้อย่างถูกต้องตามที่ตั้งค่าไว้ ถือว่าระบบทำงานได้ตามที่คาดหมายส่งผลให้การทำงานของระบบประสบความสำเร็จอย่างสมบูรณ์แบบด้วย
อัตราความสำเร็จ 100%
4.1.6 กรณีที่ 6) ไม่มีชิ้นงานบนพื้นที่ทำงาน (Workspace)
จากผลการทดลองการทำงานของระบบPick and Place ในกรณีกรณีไม่มีชิ้นงานบนพื้นที่ทำงาน(Workspace) หุ่นยนต์จะหยุดนิ่งที่ตำแหน่ง Home และส่งสัญญาณไฟสีเหลือง เพื่อแจ้งให้ผู้ควบคุมทราบ ซึ่งจากการทดลองนี้พบว่าหุ่นยนต์สามารถแสดงไฟสีเหลืองหยุดการทำงานที่ตำแหน่ง Home ได้อย่างถูกต้องตามที่ตั้งค่าไว้ เมื่อไม่พบชิ้นงานบนพื้นที่ทำงาน (Workspace)
ผลการทดลอง
สรุปผลการทดลองรวมของระบบ Pick and Place
5.1 ประสิทธิภาพในการตรวจจับและหยิบชิ้นงาน:
- กรณีชิ้นงานกระจาย: ระบบสามารถตรวจจับและหยิบชิ้นงานทั้งหมด 30 ชิ้นได้อย่างถูกต้อง 100%กรณีชิ้นงานรวมกลุ่ม: ระบบตรวจจับและหยิบชิ้นงานได้ถูกต้อง 29 ชิ้นจากทั้งหมด 30ชิ้น มีข้อผิดพลาดจากการชนของ Gripper โดยมีอัตราความสำเร็จ 96.67%กรณีผสมกระจายและกลุ่ม: ระบบสามารถตรวจจับและหยิบชิ้นงานทั้งหมด 30 ชิ้นได้อย่างถูกต้อง 100%
5.2 การจัดการกับชิ้นงานที่อยู๋นอกขอบเขต:
- กรณีชิ้นงานไกลเกิน 50 เซนติเมตร: หุ่นยนต์หยุดที่ตำแหน่ง Home และส่งสัญญาณไฟสีเหลืองกระพริบ โดยระบบทำงานได้ตามที่คาดหวัง
5.3 กรณีไม่มีชิ้นงานบนพื้นที่ทำงาน:
- ระบบสามารถหยุดที่ตำแหน่ง Home และส่งสัญญาณไฟสีเหลืองเพื่อแจ้งผู้ควบคุมอย่างถูกต้อง
ในการทดลองระบบ Pick and Place ที่ทำการตรวจจับและหยิบชิ้นงานจำนวน 120 ชิ้น ผลการทดลองแสดงให้เห็นว่าระบบสามารถจัดการกับชิ้นงานได้สำเร็จ 119 ชิ้นจากทั้งหมด 120 ชิ้น ซึ่งเท่ากับอัตราความสำเร็จ 99.17% ข้อผิดพลาดที่เกิดขึ้นคือการชนของ Gripper ที่ส่งผลให้ระบบจับชิ้นงานผิดพลาดเพียง 1 ชิ้น การชนของ Gripper ส่งผลให้ชิ้นงานเคลื่อนที่ขยับไปจากตำแหน่งเดิม
การปรับปรุง Gripper เช่น การออกแบบหรือการปรับแต่งให้เหมาะสมกับลักษณะของชิ้นงานอาจช่วยลดโอกาสในการเกิดข้อผิดพลาดในอนาคต