Class Project : Control Robodog with HoloLens

Class Project : Control Robodog with HoloLens

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://learn.microsoft.com/en-us/windows/mixed-reality/mrtk-unity/mrtk2/features/input/hand-tracking?view=mrtkunity-2022-05

https://www.youtube.com/watch?v=BKJ6sjJ9oao

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

https://github.com/nontza/Robodog-with-HoloLen2.git