1. บทนำ (Introduction)
1.1 วัตถุประสงค์ของการพัฒนา:
- เพื่อพัฒนาระบบ Pick and Place ที่สามารถระบุตำแหน่งของชิ้นงานได้อย่างแม่นยำโดยใช้กล้องเว็บแคมและเทคโนโลยี ArUco Markers
- เพื่อปรับปรุงประสิทธิภาพการทำงานของหุ่นยนต์ UR3e ในการหยิบและวางชิ้นงานโดยอัตโนมัติในพื้นที่ทำงานที่กำหนด
- เพื่อสร้างระบบอัตโนมัติที่มีความยืดหยุ่น โดยผสานการทำงานระหว่าง OpenCV และไลบรารี ur-rtde ในการประมวลผลภาพและควบคุมหุ่นยนต์แบบเรียลไทม์
1.2 ขอบเขตของงาน:
- ออกแบบระบบ Pick and Place โดยใช้กล้องเว็บแคมและเทคโนโลยี ArUco Markers ในการระบุตำแหน่งของชิ้นงานใน workspace ซึ่งขอบเขตของพื้นที่ทำงานจะไม่เกิน 50 เซนติเมตรจากฐานของหุ่นยนต์ UR3e
- พัฒนาโปรแกรมที่ใช้ OpenCV สำหรับการประมวลผลภาพจากกล้องเว็บแคม เพื่อระบุตำแหน่งของชิ้นงานและพัฒนาโปรแกรมควบคุมหุ่นยนต์ UR3e โดยใช้ไลบรารี ur-rtde
- ออกแบบระบบให้สามารถหยิบชิ้นงานทีละ 1 ชิ้นโดยมีขนาดชิ้นงาน 2.5 x 2.5 x 2.5 เซนติเมตร
2. อุปกรณ์และเครื่องมือที่ใช้ (Materials and Tools)
2.1 อุปกรณ์ที่ใช้:
- กล้องเว็บแคม (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
2.2 คลังโปรแกรม (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.
3. ขั้นตอนการพัฒนา (Development Process)
3.1 หน้าที่ของระบบ 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):
ระบบจะทำงานในลักษณะเดียวกันสำหรับชิ้นงานชิ้นต่อไปจนกว่ากระบวนการจะเสร็จสิ้นตามจำนวนชิ้นงานที่ต้องการ
3.2 การออกแบบระบบ (System Design):
3.2.1 ภาพกระบวนการทำงานของระบบ Pick and Place
Diagram การควบคุมการทำงานของระบบ Pick and Place
จาก Diagram ของระบบ Pick and Place ประกอบด้วยหลายส่วนสำคัญที่ทำงานร่วมกัน โดยแบ่งออกเป็นสี่ส่วนหลัก ได้แก่ ระบบการมองเห็น (Vision System), หน่วยการตรวจจับและหาตำแหน่งชิ้นงาน (Object Detection and Localization Unit), การวางแผนเส้นทาง (Path Planning), และการควบคุมหุ่นยนต์ (Robot Controller).
การทำงานเริ่มจาก ระบบการมองเห็น (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
3.2.2 ระบบการมองเห็น (Vision System):
ระบบการมองเห็น (Vision System) เป็นองค์ประกอบสำคัญในระบบ Pick and Place ซึ่งทำหน้าที่ในการจัดการและเตรียมข้อมูลภาพจากพื้นที่ทำงาน เพื่อให้สามารถตรวจจับและหาตำแหน่ง
ของชิ้นงานได้ การทำงานของระบบการมองเห็นประกอบด้วยขั้นตอนหลักดังนี้:
- การถ่ายภาพ (Image Capture):
ใช้การจับภาพจากกล้อง web camera ระบบจะบันทึกภาพพื้นที่ทำงานเพื่อให้ได้ข้อมูลภาพที่จำเป็นต่อการวิเคราะห์ในขั้นตอนถัดไป - การแปลงภาพเป็นขาวดำ (Grayscale Conversion):
กระบวนการที่เปลี่ยนภาพสีให้เป็นภาพที่มีเฉพาะความเข้มของสีเทา โดยที่ไม่มีสีอื่น ๆ ข้อมูลสีในภาพจะถูกลดลงเหลือเพียงความสว่าง (luminance) เท่านั้น ซึ่งช่วยลดความซับซ้อน
ในการประมวลผลภาพและสามารถทำให้การวิเคราะห์ภาพสะดวกและรวดเร็วขึ้น - การค้นหาพื้นที่ทำงาน (Workspace Detection):
การค้นหาพื้นที่ทำงานในภาพ จะใช้เทคนิคการตรวจจับ markers ที่ได้ทำการติดตั้งไว้บนขอบของพื้นที่ทำงานจริง - การตัดขอบ (Edge Detection):
การตรวจจับขอบเขตของพื้นที่ทำงาน โดยตัดพื้นที่นอกขอบเขตที่ต้องการออกจากภาพ - การปรับระนาบ (Image Rectification):
การปรับระนาบเพื่อแก้ไขความบิดเบี้ยวของภาพ เพื่อให้ภาพที่ได้มีความเรียบและตรงตามความเป็นจริง ทำให้ภาพที่ถ่ายได้มีความถูกต้องแม่นยำมากขึ้น โดยการปรับแก้ลักษณะภาพที่อาจมีความผิดปกติจากการถ่ายภาพในมุมที่ไม่ตรง
3.2.3 การตรวจจับและหาตำแหน่งชิ้นงาน (Object Detection and Localization Unit):
หน่วยนี้รับภาพที่ปรับระนาบแล้ว โดยมีหน้าทีในการตรวจจับและระบุตำแหน่งของชิ้นงานภายในภาพที่ได้รับจากระบบการมองเห็น (Vision System) หลังจากที่ภาพผ่านการปรับระนาบ
(Image Rectification) แล้ว การทำงานของหน่วยนี้สามารถแบ่งออกเป็นขั้นตอนดังต่อไปนี้:
- การตรวจจับชิ้นงาน (Object Detection):
ทำการตรวจจับชิ้นงานที่อยู่ในภาพ โดยใช้เทคนิคการวิเคราะห์ภาพเพื่อระบุที่ตั้งและลักษณะของชิ้นงาน หนึ่งในเทคนิคที่ใช้คือการหาจุด Contour ซึ่งเป็นเส้นรอบรูปที่แยกชิ้นงานออกจาก
พื้นหลัง เทคนิคนี้ช่วยให้สามารถระบุขอบเขตของชิ้นงานได้อย่างชัดเจน - การหาจุดกึ่งกลาง Contour (Finding the Contour Centroid):
เมื่อได้ตำแหน่งของจุด Contour ของชิ้นงานแล้ว จะคำนวณหาจุดกึ่งกลางของจุด Contour ซึ่งเป็นจุดที่สามารถใช้เป็นตัวแทนของตำแหน่งกึ่งกลางของชิ้นงาน จุดกึ่งกลางนี้เป็นจุดที่สำคัญ
ในการกำหนดตำแหน่งของชิ้นงานในพิกัดภาพ - การกำหนดเฟรมอ้างอิง (Reference Frame Definition):
กำหนดเฟรมอ้างอิงหรือระบบพิกัด (Coordinate System) ที่ใช้ในภาพ เพื่อให้สามารถแปลงพิกัดของชิ้นงานจากพิกัดในภาพไปเป็นพิกัดในโลกจริงได้ เฟรมอ้างอิงนี้มักจะอิงกับตำแหน่ง
ของกล้องหรืออุปกรณ์ตรวจจับ - การหาตำแหน่ง (Localization):
หลังจากตรวจจับชิ้นงานได้แล้ว จะทำการแปลงพิกัดของชิ้นงานจากพิกัดในภาพ (พิกัดพิกเซล) ไปเป็นพิกัดโลกจริง (World Coordinates) ซึ่งอ้างอิงจากฐานของหุ่นยนต์ UR3e การแปลงนี้คำนวณโดยใช้ข้อมูลการหาค่าพารามิเตอร์ของเฟรมอ้างอิงที่สัมพันธ์กับพื้นที่ทำงานจริง - การส่งพิกัดโลก (Send World Coordinates):
เมื่อได้พิกัดจริงของชิ้นงานแล้ว พิกัดนี้จะถูกส่งไปยังหน่วยการวางแผนเส้นทาง (Path Planning Unit) เพื่อใช้ในการกำหนดเส้นทางการเคลื่อนที่ของหุ่นยนต์
3.2.4 การวางแผนเส้นทาง (Path Planning):
หน่วยการวางแผนเส้นทางมีบทบาทสำคัญในการกำหนดเส้นทางการเคลื่อนที่ที่เหมาะสมที่สุดสำหรับหุ่นยนต์ โดยใช้ข้อมูลพิกัดที่ได้รับจากหน่วยการตรวจจับและหาตำแหน่งชิ้นงาน
(Object Detection and Localization Unit) การทำงานของหน่วยนี้สามารถแบ่งออกเป็นขั้นตอนดังนี้:
- รับพิกัดจุดผ่าน (Receive Via Points):
รับพิกัดของชิ้นงานที่ต้องการเคลื่อนย้ายจากหน่วยการตรวจจับและหาตำแหน่งชิ้นงาน พิกัดจุดผ่าน (Via Points) เหล่านี้จะเป็นจุดสำคัญที่ใช้ในการกำหนดเส้นทางการเคลื่อนที่ของหุ่นยนต์
เพื่อให้หุ่นยนต์สามารถไปถึงตำแหน่งเป้าหมายได้อย่างถูกต้อง - การวางแผนเส้นทาง (Path Planning):
ทำการวางเส้นทางจากตำแหน่งเริ่มต้นของหุ่นยนต์ไปยังตำแหน่งเป้าหมาย โดยพิจารณาปัจจัยต่าง ๆ เช่น อุปสรรคที่อยู่ในพื้นที่ ความสามารถในการเคลื่อนที่ของหุ่นยนต์และพิกัดจุดผ่านที่ได้รับมา เพื่อให้หุ่นยนต์สามารถเคลื่อนที่ได้อย่างมีประสิทธิภาพและปลอดภัย ไม่ชนกับสิ่งกีดขวางและใช้เส้นทางที่เหมาะสมที่สุดตามเงื่อนไขที่กำหนด - ส่งออกแผนการเดินทาง (Output Travel Plan):
ทำการส่งข้อมูลแผนการเดินทาง รายละเอียดเส้นทางไปยังหน่วยการควบคุมหุ่นยนต์ (Robot Controller) เพื่อให้หุ่นยนต์สามารถปฏิบัติตามแผนที่กำหนดได้อย่างแม่นยำ รวมถึงการควบคุม
คำสั่งต่าง ๆ เช่น ส่วน User Interface และ End Effector ที่หุ่นยนต์จะต้องปฏิบัติ
3.2.5 การควบคุมหุ่นยนต์ (Robot Controller): หน่วยการควบคุมหุ่นยนต์รับแผนการเดินทางจากหน่วยการวางแผนเส้นทางและสั่งการให้หุ่นยนต์ทำงานตามแผนที่กำหนด
- รับแผนการเดินทาง (Receive Path Plan):
รับแผนการเดินทางที่วางแผนไว้จากหน่วยการวางแผนเส้นทาง ข้อมูลแผนการเดินทางนี้จะรวมถึงรายละเอียดการเคลื่อนที่ของหุ่นยนต์จากจุดเริ่มต้นไปยังจุดเป้าหมาย รวมถึงคำสั่งต่าง ๆ
ที่หุ่นยนต์ต้องปฏิบัติ - ดำเนินการเคลื่อนที่ (Execute Movement):
หุ่นยนต์จะทำการเคลื่อนที่ตามตำแหน่งการเดินทางที่ได้รับ ในระหว่างการเคลื่อนที่หุ่นยนต์จะทำการหยิบและวางชิ้นงานตามที่กำหนดไว้ - ควบคุม End Effector (End Effector Control):
ควบคุม End Effector ซึ่งเป็นอุปกรณ์ที่ติดตั้งอยู่ปลายแขนหุ่นยนต์ โดย End Effector จะทำหน้าที่หยิบชิ้นงานจากตำแหน่งที่กำหนดและวางชิ้นงานในตำแหน่งเป้าหมายตามแผนการเดินทาง
ที่ได้รับ - ควบคุมส่วน User Interface (Control User Interface):
ควบคุมการแสดงผลส่วน User Interface ซึ่งเป็นส่วนที่ผู้ใช้สามารถสังเกตการทำงานของหุ่นยนต์ และตรวจสอบสถานะการทำงานของหุ่นยนต์ได้
3.3 การติดตั้งและตั้งค่า (Installation and Setup):
3.3.1 การติดตั้งกล้อง
- เลือกตำแหน่งที่เหมาะสมและติดตั้งกล้อง:
เลือกตำแหน่งที่เหมาะสมในการติดตั้งกล้อง โดยต้องครอบคลุมพื้นที่ทำงานทั้งหมดและมุมมองที่ดีที่สุด โดยในครั้งนี้เลือกติดตั้งกล้องเพื่อให้ได้มุมมองจากด้านบน(Top View) เพื่อให้ง่ายต่อการหาตำแหน่งของชิ้นงานและมีความแม่นยำ ดังนั้นจึงทำการติดตั้งกล้องที่ด้านบนของพื้นที่ทำงาน (Workspace)
ภาพตำแหน่งการติดตั้งกล้อง web camera
2. ทดสอบการจับภาพ:
ทดสอบกล้องโดยการตรวจจับชิ้นงานจริงในพื้นที่ทำงานเพื่อให้แน่ใจว่ากล้องสามารถบันทึกภาพได้อย่างชัดเจนและครบถ้วน โดยตรวจสอบว่าภาพที่ได้มีความละเอียดเพียงพอ มองเห็นชิ้นงาน
ได้อย่างชัดเจนและตรงกับตำแหน่งจริงของชิ้นงานในพื้นที่ทำงาน รวมถึงการประเมินคุณภาพของการจับภาพและปรับปรุงการตั้งค่ากล้องหากจำเป็น เพื่อให้ระบบการมองเห็นทำงานได้อย่าง
มีประสิทธิภาพ
ภาพที่ถูกบันทึกด้วยกล้อง web camera
3. ตรวจสอบพื้นที่ครอบคลุมและมุมมองของกล้อง:
ใช้ภาพตัวอย่างจากกล้องเพื่อทำการตรวจสอบว่ากล้องสามารถมองเห็นพื้นที่ทำงานครอบคลุมพื้นที่ทำงาน (Workspace) ทั้งหมดได้ครบถ้วนหรือไม่ ให้แน่ใจว่าภาพที่ได้รับจากกล้องครอบคลุม
พื้นที่ทั้งหมดที่ต้องการตรวจจับ และตรวจสอบว่ามีสิ่งกีดขวางในมุมมองของกล้องหรือไม่ ซึ่งอาจทำให้กล้องไม่สามารถเห็นชิ้นงานได้อย่างชัดเจน หรือกล้องมีความเอียงมากจนส่งผลต่อการ
มองเห็นของชิ้นงาน ความเอียงมากเกินไปอาจทำให้การตรวจจับชิ้นงานไม่แม่นยำ
ภาพมุมมองของกล้อง web camera
3.3.2 ติดตั้ง ArUco Markers
- เลือกตำแหน่งติดตั้ง ArUco Markers:
เลือกตำแหน่งที่เหมาะสมในการติดตั้ง ArUco Markers ที่ครอบคลุมพื้นที่ทำงาน(Workspace) ทั้งหมดได้ครบถ้วน ตำแหน่งที่เลือกควรอยู่ในมุมมองของกล้องอย่างชัดเจนและไม่ถูกบังโดย
สิ่งอื่น เพื่อให้ระบบการมองเห็นสามารถตรวจจับ ArUco Markers ได้ง่ายและชัดเจน
ภาพตำแหน่งที่ติด Markers
2. สร้าง ArUco Markers:
ใช้โปรแกรม OpenCV เพื่อสร้าง ArUco Markers โดยกำหนดขนาด 6×6 และใช้ ID 0, 1, 2, และ 3 สำหรับ Marker แต่ละตัว จากนั้นตรวจสอบคุณภาพของ Marker เพื่อให้มั่นใจว่ามีลักษณะ
ที่ชัดเจนและพิมพ์ออกมาในขนาดที่ต้องการ
ตัวอย่างโค้ดที่ใช้ในการสร้าง Markers
ภาพ Markers ที่ถูกสร้าง
3. ติดตั้ง ArUco Markers:
ทำการติดตั้ง ArUco Markers ในตำแหน่งที่เลือก โดยยึดติด Markers ให้อยู่กับที่ จากนั้นตรวจสอบว่าโปรแกรมสามารถตรวจจับ Marker ได้อย่างถูกต้องหรือไม่
ภาพตำแหน่งการติดตั้ง Markers
ตัวอย่างโค้ดที่ใช้ในการตรวจจับ Markers
ภาพการตรวจจับ Markers
3.3.3 หาตำแหน่งพิกัดของ ArUco Markers:
ดำเนินการหาพิกัดของ ArUco Markers โดยใช้ปลาย End Effector ที่ติดอยู่กับหุ่นยนต์ UR3e สัมผัสบริเวณจุดกึ่งกลางของ Marker เพื่อทำการตรวจสอบพิกัดจุดกึ่งกลาง Marker ในเฟรมของ
หุ่นยนต์ โดยอ้างอิงจากจุดเริ่มต้น (origin) ของเฟรมหุ่นยนต์ และบันทึกพิกัดที่ได้ทั้ง 4 จุดสำหรับการควบคุมระบบ Pick and Place
ภาพการตรวจสอบพิกัดของ Marker เทียบกับเฟรมหุ่นยนต์ UR3e
ตารางแสดงพิกัดของ Markers
Id | ตำแหน่ง | พิกัดแกน X (mm.) | พิกัดแกน Y (mm.) |
0 | Top Left | 259.57 | 147.28 |
1 | Top Right | 652.07 | 151.85 |
2 | Bottom Right | 652.48 | -158.57 |
3 | Bottom Left | 652.02 | -153.71 |
3.4 การพัฒนาโปรแกรม (Software Development):
ในขั้นตอนนี้จะเป็นการพัฒนาโปรแกรมโดยใช้แนวคิดการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming หรือ OOP) ซึ่งจะช่วยให้การจัดการโค้ดมีความเป็นระบบระเบียบและง่าย
ต่อการบำรุงรักษาโดยแต่ละกระบวนการหลักในระบบจะถูกแยกออกมาเป็นคลาส (class) จำนวน 4 คลาสดังนี้
CameraHandler รับผิดชอบการจัดการกับกล้อง web camera การเชื่อมต่อกับกล้องและการดึงภาพจากกล้อง ArUcoProcessor จัดการกับ ArUco markers ซึ่งเป็นเครื่องหมายที่ใช้ในการระบุ
ตำแหน่งในภาพ คลาสนี้จะทำการตรวจจับและคำนวณพิกัดหรือมุม ImageProcessor สำหรับตรวจจับชิ้นงานและหาพิกัด RobotControllerควบคุมการเคลื่อนไหวของหุ่นยนต์ รวมถึงฟังก์ชัน
ในการหยิบและวางชิ้นงาน
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) ที่จับได้ลงไฟล์ โดยมีชื่อไฟล์สามารถกำหนดเองได้
ภาพผลลัพธ์ที่ได้จาก class CameraHandler
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)
- จัดเรียงมุมของ markers ให้สอดคล้องกับ ID ที่ระบุ (0, 1, 2, 3) โดยจัดเก็บข้อมูลในลำดับของมุมในตัวแปร ordered_corners
- ถ้ามี ID ใดไม่พบ ก็จะเก็บ None ไว้ในตำแหน่งนั้น
ภาพผลการตรวจจับ ArUco Markers
4. get_transformed_image
(ปรับตัดกรอบภาพตามตำแหน่งของ markers)
- ตรวจสอบว่ามีการตรวจจับ markers ทั้ง 4 มุมหรือไม่ ถ้าไม่ครบจะเกิดข้อผิดพลาด (
ValueError
) - คำนวณตำแหน่งของมุมของภาพ (
src_corners
) ตามมุมที่ตรวจจับได้ - คำนวณขนาดของภาพที่ปรับแก้แล้วตามมุมที่ได้ (
dst_corners
) - ใช้การเปลี่ยนแปลงเชิงมุมมอง (perspective transformation) เพื่อปรับภาพให้ตรงตามมุมที่ได้
- คืนค่าภาพที่ถูกปรับแก้แล้ว (
warped_image
)
ภาพการปรับตัดกรอบภาพตามตำแหน่งของ markers
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
- ใช้มาสก์สุดท้ายในการแยกสีจากภาพที่ปรับ
ภาพ Mask
4. Preprocessing
- แปลงภาพที่ถูกมาสก์เป็นภาพขาวดำ และใช้การ thresholding แบบอินเวิร์ส (binary inversion) เพื่อเตรียมข้อมูลสำหรับการค้นหาเส้นขอบ
5. find_Contour
- ค้นหาเส้นขอบในภาพ ค้นหาและวาดเส้นขอบที่มีพื้นที่ (ระหว่าง 1500 ถึง 15000 พิกเซล)
- คำนวณจุดศูนย์กลางของแต่ละเส้นขอบและแปลงพิกัดพิกเซลเป็นพิกัดจริงโดยใช้จุดที่ให้มา
ภาพจุด Contours ที่พบ
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
4. การทดสอบและผลการทดสอบ (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)
ภาพการเข้าหยิบชิ้นงานกรณีชิ้นงานกระจายบนพื้นที่ทำงาน (Workspace)
ตารางแสดงผลการทดลองกรณีที่ 1) ชิ้นงานกระจายบนพื้นที่ทำงาน (Workspace)
ชิ้นงานที่ | ผลการทดลองระบบ Pick and place | หมายเหตุ | |
สำเร็จ | ล้มเหลว | ||
1 | 1 | ||
2 | 1 | ||
3 | 1 | ||
4 | 1 | ||
5 | 1 | ||
6 | 1 | ||
7 | 1 | ||
8 | 1 | ||
9 | 1 | ||
10 | 1 | ||
11 | 1 | ||
12 | 1 | ||
13 | 1 | ||
14 | 1 | ||
15 | 1 | ||
16 | 1 | ||
17 | 1 | ||
18 | 1 | ||
19 | 1 | ||
20 | 1 | ||
21 | 1 | ||
22 | 1 | ||
23 | 1 | ||
24 | 1 | ||
25 | 1 | ||
26 | 1 | ||
27 | 1 | ||
28 | 1 | ||
29 | 1 | ||
30 | 1 | ||
รวม | 30 | 0 | 100% |
สรุปการทดลองระบบ Pick and Place กรณีชิ้นงานกระจายบนพื้นที่ทำงาน(Workspace) ทั้ง 30 ชิ้น พบว่าระบบสามารถตรวจจับและหยิบชิ้นงานทุกชิ้นได้อย่างถูกต้องและไม่มีข้อผิดพลาด
ส่งผลให้การทำงานของระบบประสบความสำเร็จอย่างสมบูรณ์แบบด้วยอัตราความสำเร็จ100%
4.1.2 กรณีที่ 2) ชิ้นงานอยู่รวมกันเป็นกลุ่มบนพื้นที่ทำงาน (Workspace)
ภาพการเข้าหยิบชิ้นงานกรณีชิ้นงานอยู่รวมกันเป็นกลุ่มบนพื้นที่ทำงาน (Workspace)
ตารางแสดงผลการทดลองกรณีที่ 2) ชิ้นงานอยู่รวมกันเป็นกลุ่มบนพื้นที่ทำงาน(Workspace)
ชิ้นงานที่ | ผลการทดลองระบบ Pick and place | หมายเหตุ | |
สำเร็จ | ล้มเหลว | ||
1 | 1 | ||
2 | 1 | ||
3 | 1 | ||
4 | 1 | ||
5 | 1 | ||
6 | 1 | ||
7 | 1 | ||
8 | 1 | ||
9 | 1 | ||
10 | 1 | ||
11 | 1 | ||
12 | 1 | ||
13 | 1 | ||
14 | 1 | ||
15 | 1 | ||
16 | 1 | ||
17 | 1 | Gripper ชนชิ้นงาน | |
18 | 1 | ||
19 | 1 | ||
20 | 1 | ||
21 | 1 | ||
22 | 1 | ||
23 | 1 | ||
24 | 1 | ||
25 | 1 | ||
26 | 1 | ||
27 | 1 | ||
28 | 1 | ||
29 | 1 | ||
30 | 1 | ||
รวม | 29 | 1 | 96.67% |
สรุปผลการทดสอบระบบ Pick and Place ในกรณีที่ชิ้นงานทั้งหมด 30 ชิ้นถูกจัดวางรวมกันเป็นกลุ่มในพื้นที่ทำงาน พบว่าระบบสามารถตรวจจับและหยิบชิ้นงานได้ถูกต้อง 29 ชิ้น และเกิดความ
ผิดพลาดในการหยิบชิ้นงาน 1 ชิ้น ซึ่งเกิดจากการที่ Gripper ชนชิ้นงาน ทำให้ชิ้นงานเกิดการเปลี่ยนตำแหน่งในขณะที่ระบบกำลังเข้าหยิบชิ้นงาน ส่งผลให้การทำงานของระบบมีอัตราความสำเร็จ
ที่ 96.67%
4.1.3 กรณีที่ 3) ชิ้นงานมีทั้งแบบกระจายและรวมกลุ่มบนพื้นที่ทำงาน (Workspace)
ภาพการเข้าหยิบชิ้นงานกรณีชิ้นงานมีทั้งแบบกระจายและรวมกลุ่มบนพื้นที่ทำงาน(Workspace)
ตารางแสดงผลการทดลองกรณีที่ 3) ชิ้นงานมีทั้งแบบกระจายและรวมกลุ่มบนพื้นที่ทำงาน (Workspace)
ชิ้นงานที่ | ผลการทดลองระบบ Pick and place | หมายเหตุ | |
สำเร็จ | ล้มเหลว | ||
1 | 1 | ||
2 | 1 | ||
3 | 1 | ||
4 | 1 | ||
5 | 1 | ||
6 | 1 | ||
7 | 1 | ||
8 | 1 | ||
9 | 1 | ||
10 | 1 | ||
11 | 1 | ||
12 | 1 | ||
13 | 1 | ||
14 | 1 | ||
15 | 1 | ||
16 | 1 | ||
17 | 1 | ||
18 | 1 | ||
19 | 1 | ||
20 | 1 | ||
21 | 1 | ||
22 | 1 | ||
23 | 1 | ||
24 | 1 | ||
25 | 1 | ||
26 | 1 | ||
27 | 1 | ||
28 | 1 | ||
29 | 1 | ||
30 | 1 | ||
รวม | 30 | 0 | 100% |
สรุปการทดลองระบบ Pick and Place กรณีชิ้นงานมีทั้งแบบกระจายและรวมกลุ่มบนพื้นที่ทำงาน(Workspace) ทั้ง 30 ชิ้น พบว่าระบบสามารถตรวจจับและหยิบชิ้นงานทุกชิ้นได้อย่างถูกต้อง
และไม่มีข้อผิดพลาด ส่งผลให้การทำงานของระบบประสบความสำเร็จอย่างสมบูรณ์แบบด้วยอัตราความสำเร็จ 100%
4.1.4 กรณีที่ 4) ชิ้นงานอยู่ไกลจากหุ่นยนต์
ภาพระบบ Pick and Place กรณีชิ้นงานอยู่ไกลจากหุ่นยนต์
จากผลการทดลองการทำงานของระบบ Pick and Place ในกรณีที่ชิ้นงานอยู่ไกลจากหุ่นยนต์เกิน 50 เซนติเมตร ซึ่งเป็นระยะที่เกินขีดความสามารถที่หุ่นยนต์จะเคลื่อนที่ไปถึงได้ เมื่อระบบตรวจพบว่าชิ้นงานอยู่ไกลเกิน 50 เซนติเมตร หุ่นยนต์จะหยุดนิ่งที่ตำแหน่ง Home และส่งสัญญาณไฟสีเหลืองกระพริบ เพื่อแจ้งให้ผู้ควบคุมระบบเข้ามาตรวจสอบและแก้ไขสถานการณ์ดังกล่าว ซึ่งจากการทดลองนี้พบว่าหุ่นยนต์สามารถแสดงไฟสีเหลืองกระพริบและหยุดการทำงานที่ตำแหน่งHome ได้อย่างถูกต้องตามที่ตั้งค่าไว้ เมื่อชิ้นงานอยู่ไกลเกิน 50 เซนติเมตร ถือว่าระบบทำงานได้ตามที่คาดหมาย
4.1.4 กรณีที่ 5) ชิ้นงานมีทั้งแบบกระจาย รวมกลุ่มบนพื้นที่ทำงาน (Workspace) และอยู่ไกลจากหุ่นยนต์
ภาพการเข้าหยิบชิ้นงานกรณีชิ้นงานมีทั้งแบบกระจาย รวมกลุ่มบนพื้นที่ทำงาน (Workspace) และอยู่ไกลจากหุ่นยนต์
ตารางแสดงผลการทดลองกรณีที่ 5) ชิ้นงานมีทั้งแบบกระจาย รวมกลุ่มบนพื้นที่ทำงาน(Workspace) และอยู่ไกลจากหุ่นยนต์
ชิ้นงานที่ | ผลการทดลองระบบ Pick and place | หมายเหตุ | |
สำเร็จ | ล้มเหลว | ||
1 | 1 | ||
2 | 1 | ||
3 | 1 | ||
4 | 1 | ||
5 | 1 | ||
6 | 1 | ||
7 | 1 | ||
8 | 1 | ||
9 | 1 | ||
10 | 1 | ||
11 | 1 | หุ่นยนต์แสดงไฟสีเหลืองกระพริบและหยุดการทำงานที่ตำแหน่ง Homeได้อย่างถูกต้อง | |
12 | 1 | ||
13 | 1 | ||
14 | 1 | ||
15 | 1 | ||
16 | 1 | ||
17 | 1 | ||
18 | 1 | ||
19 | 1 | ||
20 | 1 | ||
21 | 1 | ||
22 | 1 | ||
23 | 1 | ||
24 | 1 | ||
25 | 1 | หุ่นยนต์แสดงไฟสีเหลืองกระพริบและหยุดการทำงานที่ตำแหน่ง Homeได้อย่างถูกต้อง | |
26 | 1 | ||
27 | 1 | ||
28 | 1 | ||
29 | 1 | ||
30 | 1 | ||
รวม | 30 | 0 | 100% |
สรุปการทดลองระบบ Pick and Place กรณีชิ้นงานมีทั้งแบบกระจาย รวมกลุ่มบนพื้นที่ทำงาน (Workspace) และอยู่ไกลจากหุ่นยนต์ ทั้ง 30 ชิ้น พบว่าระบบสามารถตรวจจับและหยิบชิ้นงานทุกชิ้นได้อย่างถูกต้องและไม่มีข้อผิดพลาด และในส่วนชิ้นงานที่อยู่ไกลจากหุ่นยนต์เกิน 50 เซนติเมตร หุ่นยนต์จะหยุดนิ่งที่ตำแหน่ง Home และส่งสัญญาณไฟสีเหลืองกระพริบ ซึ่งหุ่นยนต์สามารถแสดงไฟสีเหลืองกระพริบและหยุดการทำงานที่ตำแหน่ง Home ได้อย่างถูกต้องตามที่ตั้งค่าไว้ ถือว่าระบบทำงานได้ตามที่คาดหมายส่งผลให้การทำงานของระบบประสบความสำเร็จอย่างสมบูรณ์แบบด้วย
อัตราความสำเร็จ 100%
4.1.6 กรณีที่ 6) ไม่มีชิ้นงานบนพื้นที่ทำงาน (Workspace)
ภาพระบบ Pick and Place กรณีไม่มีชิ้นงานบนพื้นที่ทำงาน (Workspace)
จากผลการทดลองการทำงานของระบบPick and Place ในกรณีกรณีไม่มีชิ้นงานบนพื้นที่ทำงาน(Workspace) หุ่นยนต์จะหยุดนิ่งที่ตำแหน่ง Home และส่งสัญญาณไฟสีเหลือง เพื่อแจ้งให้ผู้ควบคุมทราบ ซึ่งจากการทดลองนี้พบว่าหุ่นยนต์สามารถแสดงไฟสีเหลืองหยุดการทำงานที่ตำแหน่ง Home ได้อย่างถูกต้องตามที่ตั้งค่าไว้ เมื่อไม่พบชิ้นงานบนพื้นที่ทำงาน (Workspace)
5. ผลการทดลอง
สรุปผลการทดลองรวมของระบบ 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 เช่น การออกแบบหรือการปรับแต่งให้เหมาะสมกับลักษณะของชิ้นงานอาจช่วยลดโอกาสในการเกิดข้อผิดพลาดในอนาคต