Thursday, May 11, 2017

Implementation

Mechanics

แขนหุ่นยนต์ (Universal Robot) 1 ข้างซึ่งตั้งอยู่ใน LAB 3 ใช้ในการควบคุมเพื่อหยิบชิ้นงานที่วางอยู่บนโต๊ะ โดยชิ้นงานจะถูกวางเรียงลำดับเอาไว้ 2 ชิ้นดังรูปที่ 1   เมื่อระบบเริ่มทำงาน แขนหุ่นยนต์จะขยับอยู่ในท่าเริ่มต้นตามที่ได้กำหนดไว้โดยมีคอมพิวเตอร์ 1 เครื่องที่เชื่อมต่อกับคอมพิวเตอร์อีกเครื่องซึ่งอยู่ใน LAB 2  โดยคอมพิวเตอร์ที่อยู่ใน LAB 3 จะทำหน้าที่รับข้อมูล My Script เพื่อใช้ในการควบคุมแขนหุ่นยนต์ดังรูปที่ 2 3 และ 4  การเคลื่อนที่ของแขนหุ่นยนต์ในระบบนี้จะใช้หน่วยเป็นมิลลิเมตรแต่เนื่องจากระบบได้ออกแบบการเคลื่อนและตำแหน่งของชิ้นงานอบ่างง่ายทำให้ความละเอียดของการเคลื่อนที่ในแนวแกน x = 2 เซนติเมตร, แกน y = 4 เซนติเมตร, แกน z = 2 เซนติเมตร  โดยพื้นที่ทั้งหมดที่สามารถเคลื่อนที่ได้คือ 6 x 4 x 4 ตารางเซนติเมตร
รูปที่ 1 แขนหุ่นยนต์ (Universal Robot) และชิ้นงาน 3 ชิ้น
รูปที่ 2 ท่าเริ่มต้นของแขนหุ่นยนต์
รูปที่ 3 มุมมองด้านข้างของท่าเริ่มต้น

รูปที่ 4 มุมมองด้านหน้าของท่าเริ่มต้น

Electronics


ใช้อุปกรณ์เกี่ยวกับความจริงเสมือน HTC Vive โดยอุปกรณ์ดังกล่าวจะสามารถแสดงผลภาพ 3 มิติแบบ Immersive ได้เนื่องจากมี Head Mounted Display มี Vive Controller 2 อัน สำหรับให้ผู้ใช้งานถือไว้ใช้มือบังคับด้วยท่าทางธรรมชาติและมี 2 Base Station สำหรับใช้ในการ Track ตำแหน่งของอุปกรณ์ Head Mounted Display และ Vive Controller ได้  โดยผู้ใช้สามารถเคลื่อนที่ไปตำแหน่งต่าง ๆ ภายในพื้นที่  3 ลูกบาศก์เมตร และยังสามาถเคลื่อนที่ Vive Controller รอบตัวผู้ใช้ได้อีกด้วย มีปุ่มกดหลายปุ่มที่ผู้ใช้สามารถใช้งานได้ตามสถานะการณ์ต่าง ๆ ดังรูปที่ 5 และ 6
รูปที่ 5 Head Mounted Display และ Vive Controller

รูปที่ 6 Vive Controller

Programming

Virtual Reality

ใช้ Unity สร้างโลกเสมือนสำหรับเป็นพื้นที่ให้ผู้ใช้สามารถปฏิสัมพันธ์กับ AI ได้  โดยในโลกเสมือนได้ออกแบบให้มีขนาดเท่ากับ 3 ลูกบาศก์เมตร  ที่มือของผู้ใช้ซึ่งจับ Vive Controller อยู่จะถูกแสดงเป็นไม้กายาสิทธิ์ ใช้สำหรับปฏิสัมพันธ์กับวัตถุต่าง ๆ ในโลกเสมือน  มีโต๊ะสีดำอยู่กลางห้องซึ่งมีชิ้นงานว่างอยู่ 2 ชิ้นสำหรับให้ผู้ใช้กำหนดตำแหน่งการวางชิ้นงานเพื่อให้ AI ทำการเรียนรู้กระบวนการในการหยิบชิ้นงานไปวางยังตำแหน่งต่าง ๆ ได้  ด้านหน้าของผู้ใช้จะมีป้านสีขาวขนาดใหญ่สำหรับแสดงสถานะการทำงานต่าง ๆ ที่เกิดขึ้นในโลกเสมือน  ทางด้านฝั่งซ็ายของโต๊ะจะมีชุดของปุ่มต่าง ๆ ดังรูปที่ 7  ผู้ใชสามารถควบคุมการทำงานต่าง ๆ ผ่านการกดปุ่มในโลกเสมือนได้ดังนี้
  1. ปุ่ม STOP / RESET : สั่งให้ AI หยุดการเรียนรู้และ RESET สถานะของต่าง ๆ ของ AI  ปรับตำแหน่งชิ้นงานและตำแหน่งของแขนหุ่นยนต์ให้อยู่ในตำแหน่งเริ่มต้น เพื่อให้ผู้ใช้สามารถกำหนดตำแหน่งชิ้นงานในการเรียนรู้ใหม่ได้
  2. ปุ่ม LEARN : สั่งให้ AI ทำการเรียนรู้กระบวนการควบคุมหุ่นยนต์ตามที่ผู้ใช้ได้กำหนดตำแหน่งไว้บนโต๊ะ
  3. ปุ่ม OPTIMAL POLICY : สั่งให้ AI ทำการแสดงการทำงานที่เหมาะสมที่ใช้ในการควบคุมแขนหุ่นยนต์ซึ่งได้จากการเรียนรู้ (LEARN)
  4. ปุ่ม LOAD : ทำการอ่านค่าการเรียนรู้ของ AI จากไฟล์ที่บันทึกไว้มาใช้งาน แบ่งตามรูปแบบของชิ้นงานที่ผู้ใช้กำหนด
  5. SAVE : ทำการบันทึกค่าการเรียนรู้ของ AI ที่เรียนรู้ลงในไฟล์ แบ่งตามรูปแบบของชิ้นงานที่ผู้ใช้กำหนด
  6. ปุ่ม EXECUTE ROBOT : ทำการแปลงกระบวนการทำงาน OPTIMAL POLICY ออกมาให้อยู๋ในรูปของ My Script แล้วส่งข้อมูลผ่าน Socket ไปให้คอมพิวเตอร์ที่อยู่ใน LAB 3 ซึ่งเชื่อมต่ออยู่กับแขนหุ่นยนต์ (Universal Robot)
รูปที่ 7 ภายในโลกเสมือนพื้นที่ 3 ลูกบาศก์เมตร

Q-Learning

ใช้ภาษา C# ในการเขียนโปรแกรมเพื่อประยกุต์ใช้ Reinforcement Learning  การทำงานจะถูกสร้าง Thread แยกขึ้นมาแยกจาก Thread ที่ประมวลกรากราฟิกของ Unity เพื่อให้การทำงานมีความรวดเร็วและเป็นอิสระจาก Thread อื่น ๆ ที่อาจจะทำให้เกิดการ Interrupt ส่งผลให้ความเร็วในการเรียนรู้ของ AI ลดลง  โดยตัวอย่างของ Thread สำหรับ Reinforcement Learning แสดงดังรูปที่ 8
รูปที่ 8 ตัวอย่าง Code ใน Thread ของ Reinforcement Learning

My Script

เนื่องจากในระบบนี้ใช้คอมพิวเอตร์ 2 เครื่องในการสื่อสารระหว่างโลกเสมือน (LAB 2) กับ แขนหุ่นยนต์ (LAB 3) เพื่อส่งข้อมูลการควบคุมแขนหุ่นยนต์ที่ได้เรียนรู้มาแล้ว ดังนั้งจึงได้ออกแบบ Protocol สำหรับการควบคุมแขนหุ่นยนต์ที่สามารถส่งผ่าน Socket ซึ่งเขียนด้วย python ทำงานเป็น server รอรับการเชื่อมต่อจาก client เพื่อรับข้อมูล My Script ทีละ 1 client  โดยออกแบบคำสั่งพื้ฐานไว้ 2 คำสั่งคือ การเคลื่อนที่แขนหุ่นยนต์ และการหยิชิ้นงาน โดยมีรายละเอียดของ Protocol ดังนี้

  • การเคลื่อนย้ายชิ้นงาน : Character ตัวแรกของ Protocol จะเป็นตัว M แล้วตามด้วยตำแหน่งปลายทางที่ต้องการให้แขนหุ่นยนต์ขยับไป โดยมีรูปแบบดังนี้
M <position x> <position y> <position z>\n
ตัวอย่างการเคลื่อนที่แขนหุ่นยนต์ให้อยู่ในตำแหน่งท่าเตรียมจะเขียนได้ดังนี้
M 0 0 40\n
  • การหยิบชิ้นงาน : Character ตัวแรกของ Protocol จะเป็นตัว P แล้วตามด้วยตำแหน่งปลายทางที่ต้องการให้แขนหุ่นยนต์ขยับไป แล้วตามด้วยตัว T เมื่อต้องการหยิบชิ้นงาน หรือตัว F เมื่อต้องการปล่อยชิ้นงาน โดยมีรูปแบบดังนี้
P <position x> <position y> <position z> <T|F>\n
ตัวอย่างการหยิบชิ้นงานที่ตำแหน่งท่าเตรียมจะเขียนได้ดังนี้
P 0 0 20 T
เมื่อนำคำสั่งทั้งสองมารวมกันก็จะสามารถควบคุมแขนของหุ่นยนต์เพื่อหยิบชิ้นงานไปยังตำแหน่งต่าง ๆ ได้  ตัวอย่างการหยิบชิ้นงานสีแดงที่ตำแหน่งเริ่นต้นแล้วนำไปวางไว้บนชิ้นงานสีฟ้าในรูปที่ 4 จะเขียนได้ดังนี้
M 0 0 20
P 0 0 20 T
M 0 0 40
M 40 0 40
P 40 0 40 F
เมื่อผู้ใช้งานกดปุ่ม EXECUTE ROBOT ในโลกเสมือน ระบบจะทำการส่งข้อมูล My Script ไปยังคอมพิวเตอร์ที่อยู่ใน LAB 3

Working

คลิป VDO แสดงการทำงานทั้งหมดของระบบ

Wednesday, May 10, 2017

Design

Mechanics

ในระบบจะมีชิ้นงาน (ไม้สี่เหลี่ยมทรงกระบอก) 2 ชิ้นเพื่อให้แขนหุ่นยนต์หยิบไปยังตำแหน่งต่าง ๆ ตามที่ผู้ใช้สาธิตใน Virtual Reality  และแขนหุ่นยนต์จะมีลักษณะคล้ายแขนของมนุษย์ สามารถเคลื่อนไหวไปยังตำแหน่งต่าง ๆ และหยิบชิ้นงานได้ดังรูปที่ 1
รูปที่ 1 แขนหุ่นยนต์ที่สามารถหยิบชิ้นงานได้[1, 2]

Electronics

ใช้อุปกรณ์อุปกรณ์เกี่ยวกับความจริงเสมือนเพื่อให้ผู้ใช้สามารถปฏิสัมพันธ์กับวัตถุเสมือนและ AI ใน Virtual Reality ได้ดังรูปที่ 2
รูปที่ 2 การปฏิสัมพันธ์ของผู้ใช้กับธนูใน Virtual Reality[3]

Programming

Virtual Reality

สร้างโลกเสมือนโดยมีอุปกรณ์เกี่ยวกับความจริงเสมือนเพื่อให้ผู้ใช้สามารถปฏิสัมพันธ์กับวัตถุเสมือนและ AI ในโลกเสมือนได้ดังรูปที่ 2  โดยผู้ใช้สามารถสาธิตการวางชิ้นงานได้ด้วยท่าทางธรรมชาติ

Q-Learning

ใช้ภาษา C# ในการเขียนโปรแกรมเพื่อประยกุต์ใช้ Reinforcement Learning[4] เพื่อให้ AI เรียนรู้กระบวนการควบคุมแขนหุ่นยนต์เพื่อหยิบชิ้นงานโดยใช้สมการดังรูปที่ 3
รูปที่ 3 การคำนวณ Value[4]

My Script

หลังจากที่ AI เรียนรู้เสร็จแล้ว จะต้องมีการส่งข้อมูลเพื่อการควบคุมแขนหุ่นยนต์จาก LAB 2 ไปยัง LAB 3 โดยการเชื่อมต่อของ Computer ระหว่าง LAB 2 กับ LAB 3 จะใช้วิธีการเชื่อมต่อผ่านระบบ Wireless LAN ดังรูปที่ 4
รูปที่ 4 การเชื่อมต่อคอมพิวเตอร์ 2 เครื่องเข้าด้วยกัน

Reference

[1] : Cybernetic arm, http://cyanak.deviantart.com/art/Cybernetic-arm-322557309
[2] : Companion Cube, http://www.elginpk.com/worsley1112_4/bogert/3.htm
[3] : The Lab, https://www.forbes.com/sites/toddkenreck/2016/04/06/this-htc-vive-trailer-perfectly-expresses-how-amazing-virtual-reality-is/#405e09de1ea1
[4] : Q-Learning, https://en.wikipedia.org/wiki/Q-learning