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)