TemiVR

TemiVR พัฒนาขึ้นมาเพื่อให้ผู้ใช้สามารถควบคุมการเคลื่อนที่หุ่นยนต์บริการ (Temi) ด้วยลู่วิ่งรอบทิศทาง สำหรับเทคโนโลยีภาพเสมือน (KAT VR)

สามารถจับการเคลื่อนไหวของร่างกายได้แบบ Real-Time เพื่อเป็นพื้นฐานสำหรับการเสริมสร้างประสบการณ์ให้กับผู้ใช้งาน Temi ในการควบคุมระยะไกลนอกเหนือจากการใช้ Web Application เพียงอย่างเดียวเท่านั้น

สมาชิกผู้จัดทำ

นักศึกษาสถาบันวิทยาการหุ่นยนต์ภาคสนาม โครงการ Internship ปีการศึกษา 2565

  • จารุวรรณ วิจิตร์แสงสี
  • ศศิกานต์ เจนพิทักษ์ชัย
  • ศุภกร จารุจุณาวงศ์

วัตถุประสงค์

  1. เพื่อศึกษาการใช้งานและพัฒนาระบบสำหรับควบคุมหุ่นยนต์ Temi
  2. เพื่อศึกษาการใช้งาน VR Treadmil (KAT Walk Premium)
  3. เพื่อศึกษาการใช้งาน MQTT ในการรับส่งข้อมูล

แผนการดำเนินงาน

การนำเสนอผลการออกแบบ

แผนผังการทำงานของระบบ TemiVR

  • เมื่อระบบเริ่มทำงานระบบจะรับ Data ของค่า Variable ต่าง ๆ ที่ Back sensor และ Foot sensor จาก KAT VR เข้ามา โดยจะดึงค่าเข้ามาใช้งาน 2 ค่าคือ IsMoving : Boolean ที่แสดงให้เห็นว่าผู้ใช้กำลังเดินอยู่หรือไม่ และ BodyYaw : Degree องศาการหมุนปัจจุบัน
  • เพื่อไม่ให้ Unity Publish บ่อยเกินไปจน Broker ทำงานหนัก จึงมีการหน่วงเวลาในการ Publish โดยจะมีการ Publish ก็ต่อเมื่อ Δt >= 0.1f
  • Publish MQTT Topic โดยใช้ Topic Moving สำหรับค่า IsMoving และ Topic BodyYaw สำหรับค่า BodyYaw
  • เมื่อ Temi ได้รับค่า Moving และ BodyYaw จาก Topic ดังกล่าว จะเก็บค่าของ BodyYaw เอาไว้ในตัวแปร NowAngle เพื่อเช็คว่าปัจจุบันผู้ใช้กำลังอยู่ในองศาที่เท่าไหร่
  • Temi จะทำการเช็คว่าปัจจุบันผู้ใช้กำลังเดินอยู่หรือไม่ ถ้าเดินอยู่จะทำการเดินไปข้างหน้า ไม่ทำการหมุนใด ๆ
  • หากผู้ใช้หยุดเดิน Temi จะนำมุมองศาปัจจุบัน (NowAngle) ไปเทียบกับมุมแรกเริ่ม (FirstAngle) ว่าขณะนี้หมุนจากเดิมไปเท่าไหร่ และจะทำการหมุนตามองศาที่ได้ จากนั้นก็เก็บค่า FirstAngle ให้เท่ากับ NowAngle เพื่อใช้สำหรับเทียบมุมต่อไป

การทำส่วนต่าง ๆ ของระบบ TemiVR

1.ส่วนของ Temi

  • พัฒนา Application ผ่าน Android studio ร่วมกับ SDK ของ Temi
  • ใช้ Libraly Eclipse Paho ในการพัฒนาการรับค่าผ่าน MQTT จาก HiveMQ Broker
  • เมื่อได้รับ Data จาก MQTT แล้ว Temi จะสามารถเดินไปข้างหน้าและหมุนไปในทิศทางที่กำหนดได้ โดยเมื่อกำลังเดินอยู่ Temi จะไม่สามารถหมุนตัวได้ตามข้อจำกัดของตัวหุ่นยนต์

2.ส่วนของ Temi

  • ใช้ Unity ร่วมกับ SDK ของ KAT VR และ SteamVR ในการพัฒนาโปรแกรมบน HTC Vive โดย Unity จะเป็นตัวรับค่าจาก Sensor ของ KAT VR
  • ใช้ MQTT ในการส่ง Data จาก KAT VR ผ่าน HiveMQ Broker

ผลการออกทดลอง

การหมุนของ Temi ได้ทำการทดลองวัดประสิทธิภาพในการหมุนจากค่าที่ได้รับจาก MQTT ซึ่งวัดจากการที่ Temi สามารถหมุนไปในมุมองศาที่ใกล้เคียงกับการหมุนของผู้ใช้หรือไม่

  • จากตารางผลการทดลอง "สีเขียว" แทนการหมุนที่ใกล้เคียงกับการหมุนของผู้ใช้และ "สีแดง" แทนการหมุนที่ไม่ใกล้เคียงกับการหมุนของผู้ใช้ (องศาไม่ตรง,หมุนผิดทาง)

Delay ในการรับคำสั่ง การทดลองหาระยะเวลาที่ใช้ในการส่งค่าจาก KAT VR ไป Temi ผ่าน MQTT เพื่อหาระยะเวลาที่เกิดการ Delay โดยเฉลี่ยและเวลาที่ใช้มากที่สุด

สรุปผลการทดลอง

  1. สรุปผลการทดลองการหมุน มี Accuracy ของการหมุน 90 องศา, 180 องศา และ 360 องศา อยู่ที่ 75% , 50% และ 25% ตามลำดับ และมี Accuracy เฉลี่ยอยู่ที่ 50%
  2. สรุปผลการทดลอง Delay ในการรับคำสั่งจาก MQTT โดย Delay จากการรับคำสั่งเดินหน้าจะมีค่าเฉลี่ยอยู่ประมาณ 1.076 วินาที และ Delay จากการรับคำสั่งหมุนรอบตัวจะมีค่าเฉลี่ยอยู่ประมาณ 1.23 วินาที และระยะเวลาที่ใช้มากที่สุดจะอยู่ที่ประมาณ 2-3 วินาที ทั้งการเดินหน้าและหมุนรอบตัวของ Temi

ข้อเสนอแนะ

  1. ปรับปรุงความแม่นยำในการรับค่าการหมุนตัวของ Temi ให้ตรงกับองศาการหมุนของ KAT VR ให้มากยิ่งขึ้น
  2. ปรับปรุงระยะเวลาในการส่งค่าผ่าน MQTT ให้เกิดการ Delay ให้น้อยที่สุด เนื่องจากหากผู้ใช้ได้รับภาพจากอุปกรณ์ Head-Mounted Display (HMD) ช้ากว่าการเคลื่อนที่จริง อาจทำให้เกิดภาวะ Motion Sickness
  3. พัฒนาระบบรับส่งภาพให้เสร็จสมบูรณ์

ข้อมูลเพิ่มเติม

Source Code (Unity)

Source Code (Temi)