ชื่อโปรเจกต์: การควบคุมรถ RC จากวิดีโอเกมบนคอมพิวเตอร์
ผมเริ่มเขียนเกม City Building มาพักหนึ่งแล้ว ระหว่างที่พยายามคิดหาวิธีที่จะทำให้มันแตกต่างจากเกม City Building อื่น ๆ อีกหลายร้อยเกมที่มีอยู่ ผมก็ปิ๊งไอเดียขึ้นมาในห้องน้ำว่า มันจะเจ๋งแค่ไหนถ้าเราสร้างโลกเสมือนจริงขึ้นมา แล้วให้วัตถุในชีวิตจริงเคลื่อนที่ไปในนั้นได้
ต้องขอบคุณ Arduino ที่ทำให้การสร้างต้นแบบสิ่งนี้ไม่ได้เป็นเรื่องที่เป็นไปไม่ได้สำหรับนักพัฒนาเดี่ยวอย่างผม ผมจึงลงมือทำ ผมสร้างรถ RC ขึ้นมาด้วยชุดคิทที่เจอในอินเทอร์เน็ต และใช้ Arduino Mega กับ Motor Control Shield (L298P - ผมได้ทำวิดีโอสอนการใช้งานซึ่งคุณสามารถดูได้ที่นี่) ผมเชื่อมต่อมันเข้ากับ ESP 8266 เพื่อให้สามารถเชื่อมต่อกับ WiFi ได้ ESP 8266 จะเชื่อมต่อกับเครือข่าย WiFi และส่งคำสั่งที่ได้รับผ่าน MQTT ไปยัง Arduino ผ่านการสื่อสารแบบ serial ซอร์สโค้ดทั้งหมดมีอยู่ใน git คุณสามารถดูได้ในคำอธิบายของวิดีโอ YouTube.
คำสั่ง MQTT ที่ ESP 8266 ได้รับนั้นถูกเผยแพร่ผ่าน PC ของผมที่กำลังรันเกมอยู่ ผมใช้แอปพลิเคชันทดสอบที่ผมเขียนไว้เมื่อนานมาแล้ว ซึ่งสอนให้รถขับไปรอบ ๆ สนามโดยใช้ machine learning หากคุณสนใจ คุณสามารถดูวิดีโอที่ผมทำเกี่ยวกับเรื่องนี้ได้ที่นี่.
รายละเอียดทางเทคนิคเพิ่มเติม
ตัวเชื่อมข้อมูล Telemetry ระหว่างโลกเสมือนจริงกับโลกทางกายภาพ
โปรเจกต์นี้ช่วยให้ผู้เล่นสามารถขับรถ RC จริงๆ โดยใช้การควบคุมเดียวกับวิดีโอเกมเสมือนจริงบนคอมพิวเตอร์ ซึ่งสร้างประสบการณ์ mixed-reality ที่ทรงพลัง
- การจับมือ (Handshake) ด้วย Unity MQTT: วิดีโอเกม (ที่สร้างด้วย Unity) จะจับค่าอินพุตจากคีย์บอร์ด/จอยสติ๊ก และเผยแพร่ไปยัง MQTT broker Arduino (บนรถ) จะสมัครรับข้อมูลจาก topic เหล่านี้ผ่าน WiFi module
- การแมป Actuator แบบเรียลไทม์: Arduino รับแพ็กเก็ต MQTT และปรับสัญญาณ PWM สำหรับ steering servo และ ESC (Electronic Speed Controller) ทันที เพื่อสะท้อนฟิสิกส์ของรถเสมือนจริงในโลกแห่งความเป็นจริง
ประสิทธิภาพ
- การเล่นเกมที่มี Latency ต่ำ: ได้รับการปรับแต่งเพื่อให้เกิด latency น้อยกว่า 50ms ระหว่างการกดปุ่มบน PC และการเคลื่อนที่ทางกายภาพของรถ เพื่อให้มั่นใจว่าประสบการณ์การใช้งานตอบสนองได้ดีและซิงโครไนซ์กัน