Class Project : Controlling Robot Dog GO1 by Hand Gesture

Class Project : Controlling Robot Dog GO1 by Hand Gesture

System Scenario:

Data Flow Diagram:

คำสั่งมือที่กำหนด

Source Code:

https://github.com/sorasitP/RobotDog_GO1_ControlbyHands

Control Robot (from unitree_legged_sdk)

ใช้ SDK จาก git hub ของ unitree ซึ่งได้ทำการปรับเปลี่ยนในส่วนของการควบคุมแบบ HIGH LEVEL ในไฟล์ example_walk.cpp ใน SDK ให้สามารถอ่านไฟล์ command.txt แล้วสั่งงานหุ่นยนต์สุนัขตามคำสั่งในไฟล์นั้น

คำอธิบาย parameter ต่าง ๆ ใน SDK แบบ HIGH LEVEL

Hands Gesture Detector (from mediapipe)

ใช้ Mediapipe Library ในส่วนของการตรวจจับท่าทางของมือ โดยมีการแก้ไขโค้ดดังนี้

  • สร้างตัวแปรเพื่อรับค่าของข้อต่อต่าง ๆ ภายในมือ

  • นำค่าที่ได้จากข้อต่อต่าง ๆ มาสร้างเงื่อนไขเพื่อแบ่งแยกและตรวจจับท่าทางต่าง ๆ เมื่อเข้าเงื่อนไขท่าทางที่สั่งงานไปจะทำการเขียนคำสั่งลงในไฟล์ command.txt

คลิปตัวอย่างหน้าจอคอมพิวเตอร์ขณะใช้งาน

คลิปอธิบาย Code และตัวอย่างการใช้งาน

System Evaluation

System Performance:

  • System Specification: Ubuntu OS
  • Connection: Wifi (4G/5G)
  • Operating time: ~1 hrs
  • Refresh rate: 30 fps (according to laptop webcam)
  • Latency: very less (real-time)

Usability:

จากผู้ทดสอบ 4 คน (เป็นนักศึกษาฟีโบ้ชั้นปีที่ 3) ได้ค่าเฉลี่ยคะแนนแต่ละด้านดังนี้ (0 – 5 คะแนน)

  • ความเข้าใจง่ายในการใช้งานระบบควบคุมหุ่นยนต์ : 5 คะแนน
  • ความง่ายในการทำ task (ควบคุมให้หุ่นยนต์เดินจากจุดหนึ่งไปอีกจุด) : 4 คะแนน
  • ความน่าสนใจของระบบ : 4.5 คะแนน
  • ความต่อเนื่องในการควบคุม (ความเร็วในการตอบสนองต่อคำสั่ง) : 5 คะแนน

ความคิดเห็นที่ได้เพิ่มเติม

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

สรุปผลโครงการ

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

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

ข้อเสนอแนะ

  • ลองเก็บข้อมูลจากผู้ใช้งานที่ไม่คุ้นเคยกับเทคโนโลยีเพิ่มเติม
  • สามารถลองนำกล้องของ Robot dog มาใช้แทน Webcam ของ laptop ที่ผู้จัดทำใช้ในงานนี้ได้ เพื่อเพิ่มความสมจริงในการ Interact กับหุ่นยนต์ (ในงานนี้ผู้จัดทำยังไม่สามารถเรียกใช้งานกล้องของหุ่นยนต์ได้เลยไม่ได้ทำ)
  • สามารถเพิ่มท่าทางใหม่ ๆ หรือปรับเปลี่ยนท่าทางเดิม เพื่อเพิ่มลูกเล่นในการ Interact กับหุ่นยนต์
  • ลองใช้ Mediapipe หรือ Library อื่น ๆ ในการ Detect สิ่งของ เพื่อเพิ่มลูกเล่นในการ Interact กับสิ่งของให้กับหุ่นยนต์ เช่น เล่นกับลูกบอล

ผู้จัดทำ

นาย สรสิทธิ์ ตติไตรสกุล 63340500065

หน้าที่: เขียนโปรแกรม

อ้างอิง

https://www.generationrobots.com/media/unitree/Go1%20Datasheet_EN%20v3.0.pdf

https://github.com/unitreerobotics/unitree_legged_sdk

https://google.github.io/mediapipe/solutions/hands.html