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