Class Project: Chatbot for Control Robotics Arm

Class Project: Chatbot for Control Robotics Arm

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

โดยใน Class Project นี่ทางผู้พัฒนาจะ Implement Concept เบื้องต้นจากที่กล่าวมา โดยในส่วนของ Chatbot จะเป็นระบบโต้ตอบเบื้องต้นเมื่อมีผู้ใช้งานสั่งงานระบบและในส่วนของการหยิบจับวัตถุวัตถุที่อยู่ใกล้เคียง จะออกแบบระบบที่สามารถทำการหยิบวัตถุภายในระยะที่แขนกลสามารถหยิบได้และอยู่ใน Frame ของกล้องตามที่เราสั่งไปได้ได้

System Scenario

System Dataflow

Design

System Device และ Object ที่ใช้งานทดลอง

  1. แขนกล UR3e

2. กล้อง Zed mini

3. แก้วและขวดน้ำที่จะใช้วัตถุในการทดสอบ

4. คอมพิวเตอร์

Software Implement

  1. Dialogflow API เป็น Web API ที่นิยมในการสร้าง Chatbot เนื่องจากมีระบบ Intent ที่สามารถสร้างตัวโต้ตอบได้ง่ายและสามารถกำหนดกลุ่ม Entities ของคำ ให้เราสามารถแยกออกมาได้เลยว่า กลุ่มคำเหล่านี้จะเป็น Entities ประเภทไหนเพื่อให้ง่ายต่อการจัดการใน Backend ต่อไป เช่น กลุ่มคำของวัตถุ (แก้วน้ำ,ขวดน้ำ) กลุ่มคำของการกระทำ (หยิบ, วาง) กลุ่มคำของสี   
  2. Dialogflow.py เป็น Node ที่ทำหน้าที่รับข้อมูล Speech Data มาจาก Web API Dialogflow เพื่อนำข้อมูล Speech ส่วนนั้นส่งต่อให้กับ Node อื่นๆ และทำหน้าที่ในการสร้าง Speech Response ในการโต้ตอบกับ User ด้วย
  3. Object_detect.py เป็น Node ที่จะรับคำสั่งในการหยิบวัตถุมาจาก Dialogflow.py โดยใน Node นี้จะมีหน้าที่ทำ Object Detection เพื่อระบุตำแหน่งของวัตถุเป้าหมายและตรวจสอบสีของวัตถุ ถ้ามีวัตถุเป็นหมายอยู่ในระยะของกล้องก็จะส่งตำแหน่งของวัตถุไปยัง Manipulation.py
  4. Manipulation.py เป็น Node ที่จะรับตำแหน่งจาก Object_detect.py โดยจะเริ่มตั้งแต่การแปลง Frame ของกล้องเป็น Frame ของแขนกลและการสั่งการให้แขนกล ur3e ไปยังตำแหน่งตามที่ต้องการ รวมถึงการตรวจสอบว่าตำแหน่งของวัตถุเป้าหมายที่ให้มานั้นเกิน limit workspace หรือไม่

Video of Implementation

User Testing

ในส่วนของการทำ User test จะทำการอธิบายก่อนว่าระบบนั้นควรจะสั่งการด้วยคำพูดแบบไหน จากนั้นก็จะให้ User ทำการทดสอบตาม task ทั้ง 6 ข้อเพื่อวัด performance ของระบบ และสอบถามถึงความพึงพอใจต่อระบบเมื่อทำ task เสร็จ

ผลการทดสอบ

 User1User2User3User4
คะแนนของ Task Performance (เต็ม 12 คะแนน)911911
ความง่ายในการใช้งาน (1-5)4434
ประโยชน์ของระบบ (1-5)5545
ความน่าสนใจของระบบ (1-5)5545

ความคิดเห็น

  • ระบบมีจุดประสงค์ที่ชัดเจนสามารถนำไปต่อยอดพัฒนาและใช้ประโยชน์ได้อีก
  • มีความน่าสนใจตรงที่ระบบนั้นมี function การทำงานที่เยอะและหลากหลาย
  • Speech to text มีความยากในสั่งงานประโยคที่เราต้องการให้หยิบวัตถุแบบต่อเนื่อง และมีปัญหา speech to text ที่ตกหล่นคำพูดบางคำไปทำให้สั่งงานระบบไม่ได้
  • ยังมีข้อจำกัดต่างๆภายในระบบอยู่ทำให้ใช้งานยากในบางครั้ง
  • อยากให้ระบบสามารถสั่งคำสั่งเกี่ยวกับแขนกลให้ได้มากกว่านี้
  • เสนอให้แบบ function เอาวัตถุกลับไปวางที่เดิมด้วย

Summary

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

โดยในอนาคตทางผู้จัดทำคาดว่าระบบสามารถพัฒนาต่อให้ระบบนั้นมีความยืดหยุ่นมากขึ้นได้ เนื่องจากว่าตอนนี้สามารถรวม function เพื่อใช้งานได้แก่ Speech to text, Text to speech, Object detection, Manipulation ในการหยิบสิ่งของตามที่สั่งได้ในเบื้องต้นแล้ว

Reference

  1. Ur_rtde: https://sdurobotics.gitlab.io/ur_rtde/
  2. Yolov5: https://pytorch.org/hub/ultralytics_yolov5/
  3. Zedsdk: https://www.stereolabs.com/docs/

ผู้จัดทำ

นายศุภราช อินทรโสภา 63340500063