FRA500 : Human-Robotics Interface Class Project [Sausage Bot into FIBO Tour]

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

แม้ว่าจะมีการนำเสนอข้อมูลผ่านรูปภาพหรือวิดีโอ แต่รูปแบบดังกล่าวยังไม่สามารถถ่ายทอดประสบการณ์เชิงพื้นที่ (Spatial Experience) ได้อย่างเต็มที่ ผู้ใช้งานจึงไม่สามารถรับรู้ขนาด ระยะทาง หรือบรรยากาศของสถานที่ได้อย่างสมจริง

ด้วยเหตุนี้ จึงเกิดแนวคิดในการพัฒนา ระบบ Virtual Reality (VR) Tour ที่สามารถจำลองสถานที่จริงให้ผู้ใช้งาน “เข้าไปสำรวจได้” โดยไม่จำเป็นต้องเดินทาง ช่วยลดข้อจำกัดด้านค่าใช้จ่าย เพิ่มโอกาสในการเข้าถึง และยกระดับประสบการณ์การเรียนรู้ให้มีความสมจริงมากยิ่งขึ้น

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

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

  • เพื่อศึกษาและพัฒนาระบบโลกเสมือนจริง (Virtual Reality) สำหรับจำลองพื้นที่จัดแสดงหุ่นยนต์และนวัตกรรม ชั้น 7 ของ FIBO
  • เพื่อศึกษาและพัฒนาระบบประมวลผลการเคลื่อนไหวของผู้ใช้งานจากข้อมูล HTC VIVE Tracker
  • เพื่อพัฒนาการส่งข้อมูลสถานะการเคลื่อนไหวผ่านโปรโตคอล MQTT ระหว่างโปรแกรมที่ทำงานบนอุปกรณ์ต่างเครื่อง
  • เพื่อศึกษาและพัฒนาแอปพลิเคชันบนโปรแกรม Unity สำหรับแสดงผลบน Meta Quest 2 ให้สอดคล้องกับการเคลื่อนไหวจริง
  • เพื่อศึกษาและออกแบบการบูรณาการระบบ สำหรับเชื่อมต่อและประสานการทำงานขององค์ประกอบต่าง ๆ ภายในระบบ

System Scenario

ภาพนี้แสดงให้เห็นว่าการจำลองการใส่แว่น VR , Vive Tracker และ HTC Basestation เพื่อนำตัวผู้ใช้เข้าไปสู่การเยี่ยมชมแบบจำลองพื้นที่จัดแสดงหุ่นยนต์และนวัตกรรม ชั้น 7 ของ FIBO และในการทำโครงการนี้จะมีการใช้อุปกรณ์ทั้งหมด 3 ชนิด คือ

System Overview

แผนภาพนี้แสดงสถาปัตยกรรมของระบบที่ทำหน้าที่เชื่อมโยงการเคลื่อนไหวของผู้ใช้งานในโลกจริง เข้าสู่โลกเสมือน (VR) แบบเรียลไทม์ โดยเริ่มต้นจากการตรวจจับการเคลื่อนไหวผ่าน VIVE Tracker นำไปประมวลผลด้วย SteamVR และ Unity ก่อนจะส่งข้อมูลผ่านระบบเครือข่ายด้วย MQTT Broker เพื่อนำไปแสดงผลลัพธ์บนแว่น Meta Quest การทำงานของระบบสามารถแบ่งออกเป็น 4 ส่วนหลัก ได้แก่

  • 1. การติดตามการเคลื่อนไหว (Hardware Tracking): ระบบเริ่มต้นจากผู้ใช้งาน (User) สวมใส่อุปกรณ์ VIVE Tracker ซึ่งจะทำงานร่วมกับตัวยิงเลเซอร์อินฟราเรด (Base Station) เพื่อตรวจจับตำแหน่งและการเคลื่อนไหวในพื้นที่จริงอย่างแม่นยำ
  • 2. การประมวลผลข้อมูล (Logic Processing): ข้อมูลเซ็นเซอร์ดิบ (Raw Sensor Data) จะถูกส่งไปยัง SteamVR เพื่อแปลงเป็นข้อมูลท่าทาง (Pose Data) ซึ่งประกอบด้วย ตำแหน่ง (Position) องศาการหมุน (Rotation) และความเร็ว (Linear Velocity) จากนั้นข้อมูลชุดนี้จะถูกส่งต่อไปยังโปรแกรม Unity บนฝั่ง PC เพื่อคำนวณและจัดการลอจิกการเคลื่อนไหวทั้งหมด
  • 3. การสื่อสารข้อมูล (Data Communication): เมื่อ Unity บน PC ประมวลผลเสร็จสิ้น ข้อมูลจะถูกนำมาจัดให้อยู่ในรูปแบบ JSON Payload และส่งออกไป (Publish) ยัง MQTT Broker ซึ่งรับบทบาทเป็นเซิร์ฟเวอร์ตัวกลางในการกระจายข้อมูลผ่านเครือข่าย
  • 4. การแสดงผล (VR Rendering & Output): แอปพลิเคชันที่พัฒนาด้วย Unity บนแว่น Meta Quest จะทำหน้าที่เป็นผู้รับข้อมูล (Subscriber) จาก MQTT Broker เพื่อนำข้อมูลตำแหน่งที่ได้มาอัปเดตการเรนเดอร์กราฟิก และส่งสัญญาณภาพ (Visual Display) ออกไปแสดงผลให้ผู้ใช้งานเห็นผ่านแว่น VR ในขั้นตอนสุดท้าย

System Design

ในการออกแบบและพัฒนาระบบนี้ จะมีการใช้ SDK ตามดังต่อไปนี้

System Overview Programming

สำหรับ System Design ในส่วนของการทำงานของระบบ จะเริ่มต้นจากฝั่งผู้ใช้งาน เราจะใช้ VIVE Tracker จำนวน 3 ตัว ติดที่เอว ขาซ้าย และขาขวา เพื่อเก็บข้อมูลการเคลื่อนไหวจริงของร่างกาย โดยตัว Tracker จะส่งข้อมูล Sensor แบบ Raw ผ่าน Wireless USB Dongle ไปยังคอมพิวเตอร์ จากนั้นข้อมูลจะถูกประมวลผลโดย SteamVR ซึ่งทำหน้าที่เป็น Tracking Runtime แปลงข้อมูล Sensor ให้เป็น Pose Data และในการทำงานของระบบนี้จะใช้ข้อมูลตำแหน่ง การหมุน และความเร็วเชิงเส้น ที่ถูกส่งผ่าน SteamVR Plugin ไปยัง Motion Processing Module ที่พัฒนาด้วย Unity บน PC ซึ่งในส่วนนี้จะเป็นหัวใจหลักของระบบ โดยใช้ในการวิเคราะห์ท่าทาง เช่น การเดิน การหมุน หรือ Gesture ต่าง ๆ หลังจากประมวลผลเสร็จ ระบบจะส่งข้อมูลในรูปแบบ JSON ผ่านโปรโตคอล MQTT บนเครือข่าย Wi-Fi ไปยัง MQTT Broker และสุดท้ายฝั่งของ Meta Quest 2 จะมี VR Visualization Module ที่ Subscribe ข้อมูลจาก MQTT Broker และนำข้อมูลการเคลื่อนไหวไปแสดงผลในโลกเสมือนจริงแบบ Real-time และสามารถอธิบายในส่วนของ Motion Processing Module และ VR Visualization Module เพิ่มเติมได้ตามดังต่อไปนี้

1.Motion Processing Module

    สำหรับ Motion Processing Module มีการทำงานดังต่อไปนี้

    ก่อนที่จะเริ่มคำนวณท่าทาง ระบบจะต้องเตรียมความพร้อมของข้อมูลดิบที่ได้จากแว่นและเซนเซอร์ (SteamVR) ให้เสถียรและยุติธรรมสำหรับผู้เล่นทุกคนเสียก่อน

    • Startup Delay Guard Function: ระบบจะทำการหน่วงเวลาเล็กน้อยตอนเปิดระบบ เพื่อป้องกันจังหวะที่ Sensor เริ่มทำงานและค่ายังแกว่งอยู่ ซึ่ง Function จะช่วยทำให้ระบบนิ่งและเสถียรก่อน
    • Initialize Function: เป็นฟังก์ชันตั้งค่าเริ่มต้นและปรับสมดุลตามสรีระ โดยทำงานเพียงครั้งเดียวตอนเริ่มระบบ เพื่อเก็บค่า 2 อย่างคือ
      • Reference Forward: บันทึกทิศทางที่ผู้เล่นหันหน้าอยู่ ณ ตอนนั้น เพื่อใช้เป็นเข็มทิศส่วนตัว (Baseline) สำหรับอ้างอิงการเลี้ยว
      • Height Normalization: ดึงความสูงของเอวมาคำนวณสร้าง Threshold (ซึ่งก็คือเกณฑ์ความเร็วและระยะก้าว) เพื่อให้คนตัวเล็กและคนตัวสูงใช้แรงในการเดินเท่าเทียมกัน
    • Signal Filter: สำหรับนำข้อมูลความเร็วดิบของเท้าซ้ายและขวามาผ่านสมการเกลี่ยสัญญาณ (Lerp) เพื่อลดนอยส์ (Noise) หรืออาการเซนเซอร์สั่น และคัดกรองเอาเฉพาะความเร็วของเท้าข้างที่ขยับเร็วที่สุด (Max Leg Speed) ส่งต่อไปให้ระบบคิดต่อ

    ต่อไปนี้คือ Core Function ของระบบ โดยข้อมูลที่กรองแล้วจะถูกส่งเข้า 3 ฟังก์ชันนี้ ซึ่งทำงานแยกส่วนกันอย่างอิสระภายใน 1 เฟรม (Evaluated per frame) เพื่อวิเคราะห์การเคลื่อนไหวในแต่ละมิติ

    • Action Function: เป็นฟังก์ชันตรวจจับสถานะการเคลื่อนที่ (STOP/WALK/RUN) โดยมีหลักการคือนำ Leg Speed ไปเทียบกับ Threshold ที่ผ่านการ Calibrate มาแล้ว และมี Logic ยืนยันสถานะ ด้วยการใช้ Timers (ตัวหน่วงเวลา) เพื่อแยกระหว่างการขยับเท้าหลอก ๆ กับการเดินต่อเนื่อง (Sustained Walk) จริง ๆ ทำให้สถานะไม่สวิงไปมา
    • Direction Function: ฟังก์ชันตรวจจับทิศทาง (FORWARD/BACKWARD) มีหลักการคือใช้ Dot Product เพื่อคำนวณหาระยะทางความห่างระหว่างเท้ากับเอวเฉพาะในแนวแกน Z และมี Logic ยืนยันสถานะ ด้วยการนำความเร็วเอว (linearVelocity) มา Dot Product ด้วย เพื่อเช็คโมเมนตัมร่างกาย (Intent) และมีระบบ Force Stop ที่จะบังคับให้ตัวละครหยุดเดินทันที หากผู้เล่นก้าวสลับทิศทางกะทันหัน เพื่อป้องกันบั๊กเดินไถล (Moonwalking)
    • Turn Function: ฟังก์ชันตรวจจับการเลี้ยว (TURN LEFT/TURN RIGHT/TURN BACK) โดยมีหลักการคือวัดองศาระหว่างทิศที่หันปัจจุบันกับเข็มทิศเริ่มต้น (Reference Forward) และมี Logic ยืนยันสถานะการเลี้ยวจะสมบูรณ์ก็ต่อเมื่อระบบตรวจพบว่า “เท้ามีการก้าวขยับด้วย” (ไม่ได้แค่บิดเอวเฉยๆ) และเมื่อยืนยันการเลี้ยวแล้ว ระบบจะทำการ Reset Reference Forward ใหม่ ทันที เพื่อให้แกนโลกหมุนตามผู้เล่นอย่างต่อเนื่อง
    • Event Dispatcher Function: คือฟังก์ชันรวบรวมและกระจายคำสั่ง โดยทำหน้าที่เป็นตัวตัดสินใจขั้นสุดท้าย โดยระบบจะเปรียบเทียบสถานะใหม่กับเฟรมที่แล้ว ซึ่งมีกลไกการส่งคือ หากพบว่ามีสถานะใดสถานะหนึ่งเปลี่ยนแปลง (State Changed) ระบบจะทำการมัดรวมข้อมูลทั้ง 3 แกน (Action, Direction, Turn) ณ เสี้ยววินาทีนั้น ให้กลายเป็น JSON Payload เพียง 1 ก้อน (Single Package) และจะทำการยิงข้อมูล (Publish) ผ่าน MQTT Broker เพื่อส่งตรงเข้าสู่แว่น VR ทันที ทำให้ตัวละครขยับแขนขา หันหน้า และเคลื่อนที่ได้อย่างสอดคล้องเป็นธรรมชาติที่สุด

    2. VR Visualization Module

    Demo Video

    Testing & Evaluation

    จากการนำโครงการไปให้กลุ่มตัวอย่างทดลองเล่นจริง จำนวน 7 คน และทำการเก็บผลการทดสอบผ่านการใช้ Google Form และสัมภาษณ์โดยตรง สามารถวิเคราะห์และสรุปออกมาได้ ดังต่อไปนี้

    1. ด้าน System Performance

    ทำการทดสอบ System Performance ผ่าน Unity Profiler และได้ผลการทดสอบออกมาดังต่อไปนี้

    • Motion Processing Module
      • ระบบประมวลผลหลักของตัวเกม (PlayerLoop) ใช้เวลาทำงาน 8.85 ms/frame ซึ่งถือว่าอยู่ในเกณฑ์เร็วมาก
    • VR Visualization Module
      • จะมี FPS ในช่วงหน้าห้อง อยู่ที่ 60 FPS และในช่วงหลังห้อง อยู่ที่ 0.48 FPS แสดงว่าฉากหลังห้องมีรายละเอียดกราฟิกสูงมาก ทำให้ระบบเรนเดอร์ไม่ทัน
      • Algorithm Speed จะอยู่ที่ 2.25 ms ซึ่งถือว่าอยู่ในเกณฑ์เร็วมาก

    2. ด้าน Usability

    มีการจัดทำแบบสอบถาม (Google Form) โดยเลือกใช้ Framework ที่สอดคล้องกับโครงการ และได้ผลตามดังต่อไปนี้

    2.1. การประเมินความพึงพอใจ (System Usability Scale – SUS)

    • คะแนน SUS เฉลี่ย: 59.58 คะแนน
    • การแปลผล: คะแนนอยู่ในระดับที่ ต่ำกว่าเกณฑ์มาตรฐาน (68 คะแนน) ซึ่งสะท้อนว่าผู้ใช้งานส่วนใหญ่ยังพบปัญหาในการใช้งาน หรือรู้สึกว่าระบบยังไม่ลื่นไหลเท่าที่ควร โดยคะแนนรายบุคคลมีความแตกต่างกันค่อนข้างมาก (ตั้งแต่ 27.5 จนถึง 90 คะแนน)

    2.2. การประเมินภาระงาน (Workload Profile – WP)

    จากการประเมินภาระงานใน 6 มิติ (คะแนนเต็ม 5) พบว่า:

    • ภาระงานด้านการปฏิบัติ (Action Demands): มีค่าเฉลี่ยสูงสุดที่ 3.83 แสดงว่าผู้เล่นต้องใช้ความพยายามทางกายภาพ ความเร็ว หรือความแม่นยำในการควบคุมสูง
    • ภาระงานด้านการป้อนข้อมูล (Input/Output Demands): มีค่าเฉลี่ย 3.33 สะท้อนถึงความยากในการควบคุมหรือการตอบสนองของปุ่มกด/การสัมผัส
    • ภาระงานด้านความรู้ความเข้าใจ (Cognitive Demands): มีค่าเฉลี่ยต่ำสุดที่ 2.17 แสดงว่าตัวเกมไม่ได้เข้าใจยากหรือต้องใช้การตัดสินใจที่ซับซ้อนเกินไป

    3. ด้าน Values for Specific Task

    มีการจัดทำแบบสอบถาม (Google Form) และสัมภาษณ์โดยตรงกับกลุ่มตัวอย่างที่ทดลองเล่นจริง สามารถวิเคราะห์และสรุปผลออกมาได้ตามดังต่อไปนี้

    • ด้านการสื่อสารคุณค่าและวัตถุประสงค์ (System Comprehension)
      • ผู้ใช้งานเข้าใจเป้าหมายของระบบได้ชัดเจน รับรู้ได้ว่าระบบถูกพัฒนาขึ้นเพื่ออะไรและมีประโยชน์อย่างไร แสดงให้เห็นว่าการออกแบบเชิงแนวคิด (Conceptual Design) สามารถสื่อสารกับผู้ใช้งานได้สำเร็จ
    • ด้านประสบการณ์การเข้าชมที่สมจริง (Immersive Virtual Tour)
      • ผู้ใช้งานสามารถสัมผัสบรรยากาศของพื้นที่ได้ในระดับที่ดี โดยเฉพาะในโซนที่ระบบทำงานได้เสถียร (หน้าห้อง) ซึ่งช่วยจำลองสเกลพื้นที่และรายละเอียดของการจัดแสดงได้เหมาะสม แม้ไม่สมจริง 100% แต่เพียงพอให้รับรู้ภาพรวมและบรรยากาศของสถานที่
    • ด้านการเสริมสร้างความเข้าใจในพื้นที่จัดแสดง (Spatial Understanding)
      • ระบบช่วยให้ผู้ใช้งานเห็นภาพรวมของสถานที่ เข้าใจเลย์เอาต์ และตำแหน่งต่าง ๆ ได้ในระดับหนึ่ง ทำให้สามารถจินตนาการการจัดวางพื้นที่จริงได้
    • ด้านอุปสรรคต่อการบรรลุเป้าหมาย (Task Barriers & User Feedback)
      • ข้อจำกัดด้านเทคนิค (VR/Performance): มีการระบุว่าการเคลื่อนที่ยังไม่ราบรื่น และการเรนเดอร์ใน VR ทำไม่ทัน ทำให้ภาพกระตุกและส่งผลให้ผู้เล่นเกิดอาการปวดหัว
      • ข้อจำกัดด้านการควบคุม: ระบบควบคุมยังขาดความละเอียด (Precision) ทำให้ควบคุมการเคลื่อนที่ยากเล็กน้อย

    Reference

    ในการจัดทำโครงการได้มีการใช้ Reference ตามดังต่อไปนี้

    จากการทำโครงการนี้ สามารถสรุปผลได้ว่า ระบบทำงานได้จริงและสื่อสารแนวคิดได้ชัดเจน ผู้ใช้เข้าใจเป้าหมายของระบบ และสามารถรับรู้บรรยากาศของสถานที่ได้ในระดับดี อย่างไรก็ตาม ระบบยังมีข้อจำกัดด้านประสิทธิภาพในโหมด VR และความลื่นไหลในการควบคุม ส่งผลให้คะแนนความพึงพอใจโดยรวม (SUS = 59.58) ยังต่ำกว่าเกณฑ์มาตรฐาน ซึ่งชี้ให้เห็นว่าระบบมีศักยภาพ แต่ยังต้องการการพัฒนาต่อในด้าน Performance และ UX

    Recommendations & Future Development

    จากการทดสอบและประเมินผล รวมถึงหลังจากการนำเสนอผลงานในคาบเรียน สามารถสรุปคำแนะนำและแนวทางการพัฒนาต่อไป

    1. Recommendations

    • การเคลื่อนที่ยังไม่ราบรื่น และการเรนเดอร์ใน VR ทำไม่ทัน ทำให้ภาพกระตุกและส่งผลให้ผู้เล่นเกิดอาการปวดหัวเล็กน้อยในบางบุคคล
    • ระบบควบคุมยังขาดความละเอียด (Precision) ทำให้ควบคุมการเคลื่อนที่ยากเล็กน้อย
    • เปลี่ยนจากหันซ้ายเพื่อเปิดเพลง FIBO หันขวาเพื่อฟังการเรื่องราว FIBO และกลับหลังหันที่หยุดเสียงทั้งสองดังกล่าว ให้เป็นการเดินที่เมื่อถึงระยะที่กำหนดจะเปิดเสียงบรรยายหรือเพลงแทน
    • การลองนำไปทดสอบกับกลุ่มตัวอย่างอื่นที่อาจไม่คุ้นเคยกับ FIBO หรือไม่เคยมาสถานที่นี้มาก่อน เพื่อตรวจสอบคุณค่าของโครงงาน

    2. Future Development

    ในระยะต้นจะทำการปรับปรุงระบบที่เป็น Core Feature ตามดังต่อไปนี้

    • Improve VR Performance: ปรับปรุง Rendering Pipeline และลด Frame Drop ในโหมด VR เพื่อแก้ปัญหา FPS ตกและอาการปวดหัวของผู้ใช้
    • Enhance Control Precision: พัฒนาระบบควบคุมให้แม่นยำและตอบสนองได้ลื่นไหลขึ้น เพื่อลดภาระงานด้านกายภาพของผู้ใช้

    และสำหรับระยะถัดไป จะทำการปรับปรุงและขยายขอบเขตงานได้ตามดังต่อไปนี้

    • จัดทำชั้นที่ 1, 2 และ 7
    • ปรับปรุง Model หุ่นยนต์และนวัตกรรมที่มีความสมจริงมากยิ่งขึ้น
    • ใส่ Model หุ่นยนต์และนวัตกรรมเพิ่มเติม
    • จัดทำ Guide ให้สามารถเข้าใจได้ง่ายขึ้น

    นอกจากนี้โครงการของเรายังเล็งเห็นโอกาสในการขยายไปสู่การทำสถานที่อื่น ๆ เช่นกัน เช่น มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี, Futurium, พิพิธภัณฑ์ หรือโบราณสถาน เป็นต้น

    Responsibilities