System Scenario
System data flow
การเขียนส่งข้อมูลผ่าน UDP
- ทำการสร้าง Client เพื่อทำการส่งคำสั่งไปหา robodog ที่เป็น server ด้วยการส่งแบบ UDP Protocol โดยจะทำการเขียน code ให้ตรงกับเลข IP ของ robodog และทำการเชื่อม Wi-if ของ robodog เพื่อให้สามารถส่งข้อมูลสื่อสารไปหา robodog ได้
การส่ง command ไปหา robodog ด้วยการส่ง Byte ผ่าน Unity C#
- ค่า byte ตัวนี้จะทำการเก็บค่าจะการส่งคำสั่งจากการทดลองรันไฟล์ example_walk.cpp และทำการเก็บค่า byte จากนั้นนำไปเขียนบน Unity C# เพื่อทำการส่งคำสั่งไปควบคุม robodog โดยคำสั่งในตอนนี้จะเป็นเดินข้างหน้า, เลี้ยวซ้าย, เลี้ยวขวา, ยืน และ นั่ง
- ตัวอย่างค่า Byte สำหรับส่งคำสั่งไปควบคุม Robodog (เลี้ยวซ้ายและเลี้ยวขวา)
การออกแบบหน้า UI ที่แสดงผลผ่าน HoloLens
- ออกแบบหน้า UI สำหรับควบคุม robodog ผ่าน HoloLens โดยหน้าต่างการควบคุมจะมีคำสั่งสำหรับนำไปสั่ง robodog ทั้งหมด 5 คำสั่ง เดินหน้า, เลี้ยวซ้าย, เลี้ยวขวา, ยืน, นั่ง โดยหน้า UI จะนำมาจาก MRTK เพื่อนำมาออกแบบปุ่มสำหรับส่งคำสั่ง
- ทำการเพิ่ม Code สำหรับส่งคำสั่งเพื่อนำไปควบคุม Robodog
- ตัวอย่างฟังก์ชั่นสำหรับส่งคำสั่งเพื่อไปควบคุม Robodog
- ใส่ Code ที่มีฟังก์ชั่นสำหรับส่งคำสั่งเพื่อไปควบคุม Robodog โดยฟังก์ชั่นจะทำงานเมื่อมีการกดปุ่มเกิดขึ้น
การออกแบบท่าทางของมือในการนำไปควบคุม Robodog
- สำหรับไปควบคุม robodog ทำการสร้าง object เพื่อไป Track ตามนิ้วมือเพื่อทำการสร้างท่าทางของมือและส่งคำสั่งเพื่อไปควบคุม Robodog โดยจะกำหนดให้นิ้วโป้งเป็น object สำหรับ Track ปลายนิ้วอื่นโดยเมื่อมีการใช้ท่าทางจะทำให้ object ทั้ง 2 ส่วนชนกัน และส่งคำสั่งเพื่อไปควบคุม robodog
- Code สำหรับนำ Object ไปแทนปลายนิ้วเพื่อทำการสร้างท่าทางของมือ
ท่าทางของมือในการส่งคำสั่งจะมีทั้งหมด 3 ท่า
1. ปลายนิ้วโป้งกับนิ้วชี้ เพื่อส่งคำสั่งให้เดินไปข้างหน้า
2.ปลายนิ้วโป้งกับนิ้วกลาง เพื่อส่งคำสั่งให้เลี้ยวซ้าย
3.ปลายนิ้วโป้งกับนิ้วนาง เพื่อส่งคำสั่งให้เลี้ยวขวา
- Code สำหรับ Track ปลายนิ้ว โดยเมื่อมีการชนกันเกิดขึ้นจะทำการเช็ค Tag และเรียกใช้ฟังก์ชั่นเพื่อไปควบคุม Robodog
ปัญหาที่พบ
- สามารถส่งคำสั่งไปควบคุม robodog ได้แต่เนื่องจากมี Bug ของการ Track มือบน HoloLens ทำให้ object เกิดการชนกันจนส่งผลให้ HoloLens ส่งคำสั่งไปมากเกินไปและทำให้ robodog รับคำสั่งมากเกินไปจนทำให้ออกท่าทางหลายอย่างจึงไม่เหมาะกับการนำไปใช้ควบคุม robodog
สรุปผลการใช้งาน
- HoloLens เพื่อไปควบคุม robodog การทดลองสั่งคำสั่งเพื่อไปควบคุม robodog ผ่าน HoloLens สามารถทำได้โดยใช้การสั่งคำสั่งผ่านหน้าต่าง UI
Reference
- Hand Tracking
https://github.com/Ryan-XR/HandJointTracking-HoloLens2
- GitHub ของ Robodog
https://github.com/unitreerobotics/unitree_legged_sdk/blob/v3.8.0/example/example_walk.cpp
https://github.com/sorasitP/RobotDog_GO1_ControlbyHands
- Source Code