Isi kandungan:

Pergerakan Meniru Robot Nao Menggunakan Kinect: 7 Langkah
Pergerakan Meniru Robot Nao Menggunakan Kinect: 7 Langkah

Video: Pergerakan Meniru Robot Nao Menggunakan Kinect: 7 Langkah

Video: Pergerakan Meniru Robot Nao Menggunakan Kinect: 7 Langkah
Video: On-line teleoperation robot using Kinect sensor (trial 1) 2024, September
Anonim
Pergerakan Meniru Robot Nao Menggunakan Kinect
Pergerakan Meniru Robot Nao Menggunakan Kinect

Dalam arahan ini saya akan menerangkan kepada anda bagaimana kita membiarkan robot Nao meniru pergerakan kita menggunakan sensor kinect. Matlamat sebenar projek ini adalah tujuan pendidikan: seorang guru mempunyai kemampuan untuk merakam set pergerakan tertentu (misalnya tarian) dan dapat menggunakan rakaman ini untuk membiarkan anak-anak di kelas meniru robot. Dengan melalui keseluruhan langkah demi langkah ini, anda seharusnya dapat membuat sepenuhnya projek ini.

Ini adalah projek berkaitan sekolah (NMCT @ Howest, Kortrijk).

Langkah 1: Pengetahuan Asas

Untuk membuat projek ini, anda mesti mempunyai beberapa pengetahuan asas:

- Pengetahuan asas python

- Pengetahuan asas C # (WPF)

- Pengetahuan asas trigonometri

- Pengetahuan tentang cara menyediakan MQTT pada raspberry pi

Langkah 2: Memperolehi Bahan yang Diperlukan

Bahan yang diperlukan untuk projek ini:

- Pai raspberi

- Kinect Sensor v1.8 (Xbox 360)

- Robot Nao atau robot virutal (Choregraph)

Langkah 3: Bagaimana Ia Berfungsi

Image
Image
Bagaimana ia berfungsi
Bagaimana ia berfungsi

Sensor kinect disambungkan ke komputer yang menjalankan aplikasi WPF. Aplikasi WPF mengirimkan data ke aplikasi Python (robot) menggunakan MQTT. Fail tempatan disimpan jika pengguna memilihnya.

Penjelasan terperinci:

Sebelum kita memulakan rakaman, pengguna harus memasukkan alamat ip broker MQTT. Selain itu, kami juga memerlukan topik di mana kami ingin menerbitkan data. Setelah menekan mula, aplikasi akan memeriksa sama ada hubungan dapat dibuat dengan broker dan itu akan memberi kami maklum balas. Memeriksa apakah topik yang ada tidak mungkin, jadi anda bertanggungjawab sepenuhnya untuk topik ini. Apabila kedua-dua input OK, aplikasi akan mula mengirim data (koordinat x, y & z dari setiap sendi) dari kerangka yang sedang dilacak ke topik di broker MQTT.

Kerana robot dihubungkan dengan broker MQTT yang sama dan berlangganan pada topik yang sama (ini harus dimasukkan dalam aplikasi python juga) aplikasi python sekarang akan menerima data dari aplikasi WPF. Dengan menggunakan trigonometri dan algoritma yang ditulis sendiri, kami menukar koordinat menjadi sudut dan radian, yang kami gunakan untuk memutar motor di dalam robot secara real-time.

Apabila pengguna selesai membuat rakaman, dia menekan butang berhenti. Kini pengguna mendapat pop timbul yang bertanya adakah dia mahu menyimpan rakaman. Apabila pengguna menekan membatalkan, semuanya diset semula (data hilang) dan rakaman baru dapat dimulakan. Sekiranya pengguna ingin menyimpan rakaman, dia harus memasukkan tajuk dan tekan 'save'. Semasa memukul 'simpan' semua data yang diperoleh ditulis ke fail tempatan menggunakan input tajuk sebagai nama fail. Fail juga ditambahkan ke senarai pandangan di sebelah kanan skrin. Dengan cara ini, setelah mengklik dua kali entri baru di listview, fail tersebut dibaca dan dihantar ke broker MQTT. Akibatnya, robot akan memainkan rakaman.

Langkah 4: Menubuhkan MQTT Broker

Menubuhkan MQTT Broker
Menubuhkan MQTT Broker

Untuk komunikasi antara kinect (projek WPF) dan robot (projek Python) kami menggunakan MQTT. MQTT terdiri daripada broker (komputer linux yang menjalankan perisian mqtt (mis. Mosquitto)) dan topik yang boleh dilanggan oleh pelanggan (mereka menerima mesej dari topik) dan menerbitkan (mereka menghantar mesej mengenai topik tersebut).

Untuk menubuhkan broker MQTT, muat turun keseluruhan gambar jessie ini. Ini adalah pemasangan yang bersih untuk anda Raspberry Pi dengan broker MQTT di atasnya. Topiknya adalah "/ Sandro".

Langkah 5: Memasang Kinect SDK V1.8

Untuk kinect berfungsi di komputer anda, anda perlu memasang Microsoft Kinect SDK.

Anda boleh memuat turunnya di sini:

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

Langkah 6: Memasang Python V2.7

Robot berfungsi dengan kerangka NaoQi, kerangka ini hanya tersedia untuk python 2.7 (NOT 3.x), jadi periksa versi python yang telah anda pasang.

Anda boleh memuat turun python 2.7 di sini:

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

Langkah 7: Pengekodan

Pengekodan
Pengekodan
Pengekodan
Pengekodan
Pengekodan
Pengekodan

Github:

Catatan:

- Pengekodan dengan kinect: pertama anda mencari kinect yang bersambung. Setelah menyimpannya di dalam harta tanah, kami mengaktifkan aliran warna dan kerangka pada kinect. Colorstream adalah video langsung, sementara skeletonstream bermaksud kerangka orang di hadapan kamera akan dipaparkan. Colorstream tidak begitu diperlukan untuk menjayakan projek ini, kami hanya mengaktifkannya kerana bitmapping skeletonstream ke colorstream kelihatan licin!

- Pada hakikatnya ia adalah aliran kerangka yang menjalankan tugas. Mengaktifkan skeletonstream bermaksud bahawa kerangka orang itu sedang dikesan. Dari kerangka ini, anda menerima semua maklumat seperti. orientasi tulang, maklumat bersama, … Kunci projek kami adalah maklumat bersama. Dengan menggunakan koordinat x-y & z setiap sendi dari rangka yang dilacak, kami tahu kami dapat membuat robot bergerak. Jadi, setiap.8 saat (menggunakan pemasa) kami menerbitkan koordinat x, y & z setiap sendi kepada broker mqtt.

- Oleh kerana projek python mempunyai langganan pada broker mqtt, kita kini dapat mengakses data di dalam projek ini. Di dalam setiap sendi robot terdapat dua motor. Motor ini tidak boleh dipandu menggunakan koordinat x, y & z secara langsung. Oleh itu, dengan menggunakan trigonometri dan beberapa akal, kami menukar koordinat x, y & z pada sendi menjadi sudut yang kurang baik menjadi robot.

Jadi pada dasarnya setiap.8 saat projek WPF menerbitkan koordinat x, y & z setiap sendi. Akibatnya, di dalam projek python koordinat ini diubah menjadi sudut, yang kemudian dihantar ke motor robot yang sesuai.

Disyorkan: