FRA631 : Foundations of Robotics


Virtual-Arm : Sort & Store (การประยุกต์ใช้งาน VR ในการควบคุม Robot arm สำหรับงาน Pick & Place)

Member

รายชื่อของสมาชิกเรียงจากซ้ายไปขวา

  • 66340700406 นายวิธวินท์ ปิ่นประเสริฐ (วิน)
  • 66340700401 นายกวิน แย้มด่วน (เต้ย)
  • 66340700405 นายวชิรเมษฐ์ กุลธนาเรืองนนท์ (เจ๋ง) 
  • 66340700404 นายเมธีรัฐ เสนคำสอน (เอ)
  • 66340700402 นายกอบโชค ปภานิธิสกุล (ทาม)

Objective

  1. เพื่อศึกษาและพัฒนาโปรแกรมสำหรับการควบคุมหุ่นยนต์แขนกลให้สามารถเคลื่อนที่ไปยังตำแหน่งที่ต้องการได้
  2. เพื่อศึกษาและพัฒนาโปรแกรมสำหรับใช้กล้องระบุพิกัดและขนาดของวัตถุในการสั่งงานหุ่นยนต์แขนกล
  3. เพื่อประเมินประสิทธิภาพของโปรแกรมที่พัฒนาขึ้น

Scope of work

  1. หุ่นยนต์แขนกลสามารถหยิบวัตถุได้ไม่เกิน 5 กิโลกรัม
  2. โปรแกรมที่พัฒนาสามารถระบุพิกัดและขนาดของวัตถุ

System scenario (By นายวิธวินท์ ปิ่นประเสริฐ (วิน) & นายกวิน แย้มด่วน (เต้ย) & นายกอบโชค ปภานิธิสกุล (ทาม))

System Dataflow (By นายกวิน แย้มด่วน (เต้ย))

Sequence of system (By นายเมธีรัฐ เสนคำสอน (เอ))

เริ่มต้นผู้ใช้งานจะสวมใส่แว่น VR และบังคับแขนกลด้วยจอยของ VR และแขนทั้งสองข้างจะอยู่ในตำแหน่งที่กำหนดไว้

โดยขวดนมจะมีทั้งหมด 3 สี คือ แดง,เขียว,น้ำเงิน ทั้งหมดอย่างละ 2 ขวด และจะถูกลำเลียงไปวางที่ตู้วางขวดนม

เมื่อผู้ใช้เลือกสีขวดนมที่ต้องการได้แล้ว จากนั้นมือของหุ่นยนต์จะหยิบขวดนมที่เลือกไว้

จากนั้นจะส่งขวดนมจากแขนข้างแรกไปยังแขนที่จะลำเลียงไปที่ชั้นวางขวดนม

เมื่อแขนอีกข้างหยิบขวดนมไปนั้นจะลำเลียงไปวางที่ชั้นวางขวดนม โดยผู้ใช้เเว่น VR สามารถดูการทำงานของแขนระหว่างทำภารกิจต่างๆได้ด้วยกล้องจากส่วนของหัวหุ่นยนต์

Kinematics

การหา Homogeneous Transformation เพื่อเทียบแกน ของ UR5e และ ขวดนม (By นายเมธีรัฐ เสนคำสอน (เอ))

สูตรที่ใช้ในการหา Homogeneous Transformation ของการเทียบแกนหมุนแต่ละแกน

เทียบแกน 6 DOF (เฉพาะ UR ไม่มี Gripper ไม่มี กล้อง)

ขนาดของแขนหุ่นยนต์ UR5e

เทียบแกน 6 DOF (มีกล้องไม่มี Gripper)

เทียบแกน 6 DOF (มีกล้อง มี Gripper)

การทำสอบค่า Homogeneous Transformation ที่หามาได้ในโปรแกรม Roboanalyzer

ซึ่งผลจากการนำค่าที่ได้จาก Homogeneous Transformation ไปแทนในโปรแกรม Roboanalyzer นั้นถูกต้องรูปเป็นไปตามหุ่นยนต์แขนกล UR5e จริง

การหา DH parameter และทำ Forward Kinematics ของ UR5e (By นายวชิรเมษฐ์ กุลธนาเรืองนนท์ (เจ๋ง) & นายวิธวินท์ ปิ่นประเสริฐ (วิน) & นายกวิน แย้มด่วน (เต้ย))

การหา DH parameter และทำ Forward Kinematics ของ UR5e หุ่นยนต์แขนกล 6 แกน เราต้องเริ่มต้นด้วยการกำหนดพารามิเตอร์ Denavit-Hartenberg (DH) สำหรับหุ่นยนต์นี้ก่อน โดย DH parameter จะประกอบด้วย 4 ค่าหลัก ได้แก่ θ (theta) มุมหมุนรอบแกน z, d ระยะยืดตามแกน z, a ระยะยืดตามแกน x และ α (alpha) มุมหมุนรอบแกน x พารามิเตอร์เหล่านี้จะช่วยในการกำหนดท่าทางของแขนหุ่นยนต์ในแต่ละข้อต่อ จากนั้นในการคำนวณ Forward Kinematics เราจะใช้ DH parameter ที่ได้มาเพื่อสร้างเมทริกซ์การแปลง (Transformation Matrix) ของแต่ละข้อต่อ และทำการคูณเมทริกซ์การแปลงเหล่านี้ตามลำดับของข้อต่อทั้งหมด ซึ่งจะได้เมทริกซ์การแปลงสุดท้ายที่แสดงตำแหน่งและการวางตัวของหุ่นยนต์ในระบบพิกัดโลก (World Coordinate System) กระบวนการนี้ช่วยให้สามารถคำนวณได้ว่าปลายหุ่นยนต์จะอยู่ที่ตำแหน่งใดในอวกาศเมื่อกำหนดมุมข้อต่อต่างๆ ให้เป็นค่าหนึ่งๆ ถือเป็นพื้นฐานสำคัญในการควบคุมและใช้งานหุ่นยนต์ UR5e อย่างมีประสิทธิภาพ

เมื่อเทียบค่าที่คำนวณ DH parameter และ Forward Kinematics ของ UR5e มาแล้วได้นำมาเช็คกับงานวิจัยที่ได้นำมาเปรียบเทียบแล้วพบว่าตรงตามที่ได้คำนวณมา แต่จะต่างที่เครื่องหมายบวกลบ เพราะการตั้งแกน x,y,z ซึ่งไม่ได้มีผลต่อการทำงาน หลังจากนั้นจะนำไปทดสอบด้วยกระบวนการถัดไป

ทดสอบ Forward Kinematics ด้วยโปรแกรม RoboAnalyzer เพื่อเช็คค่า DH ที่ได้หามา

ผลการทดสอบที่ได้มาตรงตามที่ได้คำนวณไว้ และจะนำไปทดสอบด้วยกระบวนการถัดไป

ทดสอบ Forward Kinematics ด้วยโปรแกรม Python เพื่อเช็คค่า DH ที่ได้หามา

สรุปได้ว่าค่า DH และ Forward Kinematics ที่ได้หามาถูกต้อง

Inverse Kinematics (By นายวชิรเมษฐ์ กุลธนาเรืองนนท์ (เจ๋ง) & นายวิธวินท์ ปิ่นประเสริฐ (วิน) & นายกวิน แย้มด่วน (เต้ย))

คำนวณ Inverse Kinematics อ้างอิงจากงานวิจัย UR5 Inverse Kinematics by Ryan Keating · 2014 , Noah J. Cowan · 2016 [ Johns Hopkins University ]

และ https://github.com/japersik/UR_kinematics.git by Marukhlenko Daniiljapersik

Code : https://github.com/wittawind/IK.git

จากการทดสอบ Inverse Kinematics ด้วย Python โดยได้มีการกำหนดค่า DH parameter และค่าอื่นๆ พบว่าจากงานวิจัยที่นำมาอ้างอิงในการเขียนโปรแกรมนี้ยังไม่สามารถคำนวณหาผลลัพธ์ได้อย่างถูกต้อง เพราะผลลัพธ์ที่ออกมาของมุม theta2 และ theta4 ไม่ตรงตามที่ได้คำนวณใน Forward Kinematics

ดังนั้นเราจึงใช้ Real-Time Data Exchange (RTDE) ใช้ในการสื่อสารระหว่าง Python กับ UR robot

import rtde_control
rtde_c = rtde_control.RTDEControlInterface("127.0.0.1")
rtde_c.moveJ([qbase, qshouder, qelbow, qwrist1, qwrist2, qwrist3], speed, acceleration)
rtde_c.moveJ_IK([pos x, pos y, pos z, Rx, Ry, Rz], speed, acceleration)

เพิ่มเติม : https://hcilab.net/uncategorized/calculate-and-implementation/

Task planning (By นายวชิรเมษฐ์ กุลธนาเรืองนนท์ (เจ๋ง))

Task planning คือการวางแผนและจัดการงานหรือภารกิจให้เป็นระบบ เพื่อให้สามารถดำเนินการและบรรลุเป้าหมายที่ตั้งไว้ได้อย่างมีประสิทธิภาพ โดยมักรวมถึงการกำหนดลำดับความสำคัญ การจัดสรรทรัพยากร และการกำหนดเวลาในการทำงานแต่ละขั้นตอน

Workspace (By นายเมธีรัฐ เสนคำสอน (เอ))

Vision (By นายกวิน แย้มด่วน (เต้ย))

Head Design (By นายวชิรเมษฐ์ กุลธนาเรืองนนท์ (เจ๋ง))

View more : https://hcilab.net/uncategorized/2024/03/29/gimbalcam-ur5/

รายละเอียดเพิ่มเติมสามารถรับชมได้ที่เว็บไซต์ด้านบนนี้

Virtual reality : Unity (By นายกอบโชค ปภานิธิสกุล (ทาม))

Control Panel

  • START = Start the robot system
  • FW = Robot Move Forward
  • BW = Robot Move Backward
  • Right = Robot Move Right
  • Left = Robot Move Left
  • UP = Robot Move Up
  • DOWN = Robot Move Down
  • PICK UP = Robot No1 Pick the Bottle from Tray
  • UNPICK = Robot No2 Pick Bottle from No1 and Move to Place on Shelf
  • Shelf/Tray = Change view of camera (Control Head Motor)

Camera position

  • Tray
  • Between
  • Shelf

Video Final

Software

  • Unity
  • Blender
  • Oculus (Software)
  • ZED SDK (Stereo Camera Software)

DEMO (Video)

Performance (By นายวิธวินท์ ปิ่นประเสริฐ (วิน))

Bandwidth ในการรับส่งข้อมูลในการ Streaming (WEBRTC) (By นายวิธวินท์ ปิ่นประเสริฐ (วิน))

ได้ใช้ QuickBlox เป็นระบบสื่อสาร WebRTC สำเร็จรูปในการ Streaming
จากการทดสอบบน Network ของ KMITL-secure หน่วงของภาพอยู่ที่ < 1 วินาที

Computer Vision : https://hcilab.net/uncategorized/2024/03/28/virtualarm-sort-store-computer-vision/ (By นายกวิน แย้มด่วน (เต้ย))

Unity : https://hcilab.net/class-project/2024/03/28/unity-for-control-ur5-robot/ (By นายกอบโชค ปภานิธิสกุล (ทาม))

Gripper : https://hcilab.net/uncategorized/2024/03/28/update-05-04-2567/ (By นายเมธีรัฐ เสนคำสอน (เอ) & นายวิธวินท์ ปิ่นประเสริฐ (วิน))

Communication : https://hcilab.net/uncategorized/calculate-and-implementation/ (By นายวิธวินท์ ปิ่นประเสริฐ (วิน))

ผลการทดสอบจากผู้ใช้งานจริง

ได้มีการไปทดสอบกับผู้ทดสอบที่ตึกอธิการบดี ของมหาวิทยาลัยเทคโนโลโยีพระจอมเกล้าธนบุรี

คลิประหว่างการทดสอบ

คลิปสัมภาษณ์ผลตอบรับจากผู้คนใช้งานจริง

ผลการทดสอบ

จากการทดสอบคือผู้ใช้สามารถบังคับแขนหุ่นยนต์ UR5e และหัวหุ่นยนต์ เพื่อทำภารกิจได้ตามเป้าหมายที่ได้ตั้งไว้ แต่ต้องใช้เวลาที่นานและผู้ใช้ต้องมีผู้สร้างในการช่วงบอกทางบังคับแขนหุ่นยนต์ในการทำภารกิจ เนื่องจากผู้ใช้เพิ่งเคยมาทดสอบครั้งแรก และระบบมีความขัดคล่องในการส่งข้อมูลในระยะไกล

สิ่งที่ต้องนำมาปรับปรุงแก้ไขในผู้ที่จะนำโปรเจคนี้ไปประยุกต์ใช้

1.) มุมมองกล้องที่หัวหุ่นยนต์เห็นยังไม่สามารถเห็นจังหวะที่มือหยิบขวดนมได้ชัดเจน และความสว่างที่กล้องจากหัวเห็นนั้นยังมืดไป ทำให้การใช้จอยบังคับแขนหุ่นยนต์ทำงานได้ยาก

2.) มุมมองจากกล้อง VR ใหญ่เกินไป ทำให้ผู้ที่สวมใส่มองภาพหน้าจอได้ไม่สะดวก

3.) ไม่มีหนังสือแนะนำการใช้งาน ทำให้ผู้ที่ไม่เคยใช้งานมาก่อน บังคับการทำงานของหุ่นยนต์ได้ไม่สะดวก

วิธีการแก้ไข

1.) เพิ่มตำแหน่งการวางหลอดไฟให้สว่างขึ้น และย้ายตำแหน่งของหัวหุ่นยนต์ให้สามารถมองการทำงานของแขนหุ่นยนต์ได้ดีขึ้น

2.) ปรับมุมมองใน Unity และ VR ให้ผู้ใช้ได้เห็นมุมมองที่สามารถบังคับผ่านจอย VR ได้ง่ายขึ้น

3.) ทำหนังสือแนะนำการใช้ที่สามารถให้ผู้ที่มาใช้งานใหม่สามารถอ่านและนำมาใช้ในการทดสอบได้ง่าย

สุดท้ายนี้กลุ่มพวกเรา Virtual-Arm : Sort & Store (การประยุกต์ใช้งาน VR ในการควบคุม Robot arm สำหรับงาน Pick & Place) ขอขอบคุณทุกท่านที่สนใจในงานของพวกเรา หากมีคำถามเพิ่มเติมหรือข้อผิดพลาดในโปรเจคครั้งนี้ สามารถแจ้งพวกเราได้เลยครับ ขอบคุณครับ