สารบัญ:

Nao Robot เลียนแบบการเคลื่อนไหวโดยใช้ Kinect: 7 Steps
Nao Robot เลียนแบบการเคลื่อนไหวโดยใช้ Kinect: 7 Steps

วีดีโอ: Nao Robot เลียนแบบการเคลื่อนไหวโดยใช้ Kinect: 7 Steps

วีดีโอ: Nao Robot เลียนแบบการเคลื่อนไหวโดยใช้ Kinect: 7 Steps
วีดีโอ: Robot imitates your moves with Kinect 2024, พฤศจิกายน
Anonim
Nao Robot เลียนแบบการเคลื่อนไหวโดยใช้ Kinect
Nao Robot เลียนแบบการเคลื่อนไหวโดยใช้ Kinect

ในคำแนะนำนี้ ฉันจะอธิบายให้คุณฟังว่าเราปล่อยให้หุ่นยนต์ Nao เลียนแบบการเคลื่อนไหวของเราโดยใช้เซ็นเซอร์ Kinect ได้อย่างไร เป้าหมายที่แท้จริงของโครงการคือจุดประสงค์ด้านการศึกษา: ครูมีความสามารถในการบันทึกการเคลื่อนไหวบางอย่าง (เช่น การเต้นรำ) และสามารถใช้การบันทึกเหล่านี้เพื่อให้เด็กในห้องเรียนเลียนแบบหุ่นยนต์ได้ เมื่อทำตามขั้นตอนที่สอนได้ทั้งหมดนี้ คุณจะสามารถสร้างโปรเจ็กต์นี้ขึ้นใหม่ได้อย่างสมบูรณ์

นี่เป็นโครงการเกี่ยวกับโรงเรียน (NMCT @ Howest, Kortrijk)

ขั้นตอนที่ 1: ความรู้พื้นฐาน

ในการสร้างโครงการนี้ขึ้นมาใหม่ คุณต้องมีความรู้พื้นฐานบางประการ:

- ความรู้พื้นฐานเกี่ยวกับงูหลาม

- ความรู้พื้นฐาน C# (WPF)

- ความรู้พื้นฐานตรีโกณมิติ

- ความรู้เกี่ยวกับวิธีการตั้งค่า MQTT บนราสเบอร์รี่ pi

ขั้นตอนที่ 2: การได้มาซึ่งวัสดุที่จำเป็น

วัสดุที่จำเป็นสำหรับโครงการนี้:

- ราสเบอร์รี่ปี่

- Kinect เซนเซอร์ v1.8 (Xbox 360)

- หุ่นยนต์หนาวหรือหุ่นยนต์ไวรัล (Choregraph)

ขั้นตอนที่ 3: มันทำงานอย่างไร

Image
Image
มันทำงานอย่างไร
มันทำงานอย่างไร

เซ็นเซอร์ Kinect เชื่อมต่อกับคอมพิวเตอร์ที่ใช้แอปพลิเคชัน WPF แอปพลิเคชัน WPF ส่งข้อมูลไปยังแอปพลิเคชัน Python (หุ่นยนต์) โดยใช้ MQTT ไฟล์ในเครื่องจะถูกบันทึกหากผู้ใช้เลือก

คำอธิบายโดยละเอียด:

ก่อนที่เราจะเริ่มบันทึก ผู้ใช้ต้องป้อนที่อยู่ IP ของโบรกเกอร์ MQTT นอกจากนั้น เรายังต้องการหัวข้อที่เราต้องการเผยแพร่ข้อมูล หลังจากกดเริ่มต้น แอปพลิเคชันจะตรวจสอบว่าสามารถสร้างการเชื่อมต่อกับโบรกเกอร์ได้หรือไม่และจะให้ข้อเสนอแนะแก่เรา ไม่สามารถตรวจสอบว่ามีหัวข้ออยู่หรือไม่ ดังนั้นคุณจึงต้องรับผิดชอบอย่างเต็มที่สำหรับหัวข้อนี้ เมื่ออินพุตทั้งสองตกลง แอปพลิเคชันจะเริ่มส่งข้อมูล (พิกัด x, y & z จากข้อต่อแต่ละข้อ) จากโครงร่างที่กำลังติดตามไปยังหัวข้อบนโบรกเกอร์ MQTT

เนื่องจากโรบ็อตเชื่อมต่อกับโบรกเกอร์ MQTT เดียวกันและสมัครรับข้อมูลในหัวข้อเดียวกัน (ต้องป้อนสิ่งนี้ในแอปพลิเคชัน python ด้วย) แอปพลิเคชัน python จะได้รับข้อมูลจากแอปพลิเคชัน WPF ด้วยการใช้ตรีโกณมิติและอัลกอริธึมที่เขียนขึ้นเอง เราแปลงพิกัดเป็นมุมและเรเดียน ซึ่งเราใช้หมุนมอเตอร์ภายในหุ่นยนต์แบบเรียลไทม์

เมื่อผู้ใช้บันทึกเสร็จแล้ว เขาก็กดปุ่มหยุด ตอนนี้ผู้ใช้ได้รับป๊อปอัปถามว่าเขาต้องการบันทึกการบันทึกหรือไม่ เมื่อผู้ใช้กดยกเลิก ทุกอย่างจะถูกรีเซ็ต (ข้อมูลสูญหาย) และสามารถเริ่มการบันทึกใหม่ได้ หากผู้ใช้ต้องการบันทึก เขาควรป้อนชื่อและกด 'บันทึก' เมื่อกดปุ่ม 'บันทึก' ข้อมูลที่ได้รับทั้งหมดจะถูกเขียนไปยังไฟล์ในเครื่องโดยใช้ชื่อไฟล์เป็นชื่อไฟล์ ไฟล์นี้จะถูกเพิ่มไปยังมุมมองรายการทางด้านขวาของหน้าจอด้วย ด้วยวิธีนี้ หลังจากดับเบิลคลิกที่รายการใหม่ในมุมมองรายการ ไฟล์จะถูกอ่านและส่งไปยังโบรกเกอร์ MQTT ดังนั้นหุ่นยนต์จะเล่นการบันทึก

ขั้นตอนที่ 4: การตั้งค่าโบรกเกอร์ MQTT

การตั้งค่าโบรกเกอร์ MQTT
การตั้งค่าโบรกเกอร์ MQTT

สำหรับการสื่อสารระหว่าง kinect (โครงการ WPF) และหุ่นยนต์ (โครงการ Python) เราใช้ MQTT MQTT ประกอบด้วยนายหน้า (คอมพิวเตอร์ลินุกซ์ที่ซอฟต์แวร์ mqtt (เช่น Mosquitto)) กำลังทำงานและหัวข้อที่ลูกค้าสามารถสมัคร (พวกเขาได้รับข้อความจากหัวข้อ) และเผยแพร่ (พวกเขาโพสต์ข้อความในหัวข้อ).

หากต้องการตั้งค่านายหน้า MQTT เพียงดาวน์โหลดภาพเจสซี่ทั้งหมด นี่คือการติดตั้งใหม่ทั้งหมดสำหรับคุณ Raspberry Pi ด้วยโบรกเกอร์ MQTT หัวข้อคือ "/ซานโดร".

ขั้นตอนที่ 5: การติดตั้ง Kinect SDK V1.8

เพื่อให้ kinect ทำงานบนคอมพิวเตอร์ของคุณ คุณต้องติดตั้ง Microsoft Kinect SDK

คุณสามารถดาวน์โหลดได้ที่นี่:

www.microsoft.com/en-us/download/details.a…

ขั้นตอนที่ 6: การติดตั้ง Python V2.7

หุ่นยนต์ทำงานร่วมกับเฟรมเวิร์ก NaoQi เฟรมเวิร์กนี้ใช้ได้กับ python 2.7 เท่านั้น (ไม่ใช่ 3.x) ดังนั้นโปรดตรวจสอบเวอร์ชันของ python ที่คุณติดตั้ง

คุณสามารถดาวน์โหลด python 2.7 ได้ที่นี่:

www.python.org/downloads/release/python-27…

ขั้นตอนที่ 7: การเข้ารหัส

การเข้ารหัส
การเข้ารหัส
การเข้ารหัส
การเข้ารหัส
การเข้ารหัส
การเข้ารหัส

Github:

หมายเหตุ:

- การเข้ารหัสด้วย kinect: ก่อนอื่นคุณต้องมองหา kinect ที่เชื่อมต่อ หลังจากบันทึกสิ่งนี้ไว้ในคุณสมบัติ เราเปิดใช้งาน color- และ skeletonstream บน kinect Colorstream เป็นวิดีโอสด ในขณะที่ Skeletonstream หมายถึงโครงกระดูกของบุคคลที่อยู่ด้านหน้ากล้องจะปรากฏขึ้น Colorstream ไม่จำเป็นจริงๆ เพื่อให้โปรเจ็กต์นี้ทำงานได้ เราเพียงแค่เปิดใช้งานเพราะบิตแมปโครงกระดูกสตรีมไปยัง colorstream นั้นดูลื่นไหล!

- อันที่จริง กระแสโครงกระดูกทำงานจริงๆ การเปิดใช้งาน skeletonstream หมายความว่าโครงกระดูกของบุคคลนั้นกำลังถูกติดตาม จากโครงกระดูกนี้ คุณจะได้รับข้อมูลทุกประเภทเช่น ทิศทางของกระดูก ข้อมูลร่วม … กุญแจสู่โครงการของเราคือข้อมูลร่วม การใช้พิกัด x-y & z ของข้อต่อแต่ละข้อจากโครงกระดูกที่ติดตาม เรารู้ว่าเราสามารถทำให้หุ่นยนต์เคลื่อนที่ได้ ดังนั้น ทุก ๆ.8 วินาที (โดยใช้ตัวจับเวลา) เราจะเผยแพร่พิกัด x, y & z ของแต่ละข้อต่อไปยังโบรกเกอร์ mqtt

- เนื่องจากโปรเจ็กต์ python มีการสมัครสมาชิกกับโบรกเกอร์ mqtt เราจึงสามารถเข้าถึงข้อมูลภายในโปรเจ็กต์นี้ได้ ภายในแต่ละข้อต่อของหุ่นยนต์มีมอเตอร์สองตัว มอเตอร์เหล่านี้ไม่สามารถบังคับทิศทางได้โดยใช้พิกัด x, y & z โดยตรงเท่านั้น ดังนั้น โดยใช้ตรีโกณมิติและสามัญสำนึก เราแปลงพิกัด x, y & z ของข้อต่อให้เป็นมุมที่เข้าใจได้เป็นหุ่นยนต์

โดยพื้นฐานแล้วทุกๆ.8 วินาที โครงการ WPF จะเผยแพร่พิกัด x, y & z ของแต่ละข้อต่อ ดังนั้นภายในโปรเจ็กต์ python พิกัดเหล่านี้จะถูกแปลงเป็นมุม ซึ่งจะถูกส่งไปยังมอเตอร์ที่สอดคล้องกันของหุ่นยนต์

แนะนำ: