Turinys:

Nao robotas, imituojantis judesius naudojant „Kinect“: 7 žingsniai
Nao robotas, imituojantis judesius naudojant „Kinect“: 7 žingsniai

Video: Nao robotas, imituojantis judesius naudojant „Kinect“: 7 žingsniai

Video: Nao robotas, imituojantis judesius naudojant „Kinect“: 7 žingsniai
Video: Вебинар Роботы без заборов 2024, Birželis
Anonim
Nao robotas imituoja judesius naudojant „Kinect“
Nao robotas imituoja judesius naudojant „Kinect“

Šioje pamokoje aš jums paaiškinsiu, kaip leidžiame „Nao“robotui imituoti mūsų judesius, naudojant kinect jutiklį. Tikrasis projekto tikslas yra edukacinis tikslas: mokytojas turi galimybę įrašyti tam tikrus judesių rinkinius (pvz., Šokį) ir gali naudoti šiuos įrašus, kad vaikai klasėje galėtų imituoti robotą. Žingsnis po žingsnio pereidami visą šią instrukciją, turėtumėte sugebėti visiškai atkurti šį projektą.

Tai su mokykla susijęs projektas (NMCT @ Howest, Kortrijk).

1 žingsnis: pagrindinės žinios

Norėdami atkurti šį projektą, turite turėti keletą pagrindinių žinių:

- Pagrindinės python žinios

- Pagrindinės C# žinios (WPF)

- Pagrindinės trigonometrijos žinios

- Žinios, kaip nustatyti MQTT ant aviečių pi

2 žingsnis: reikalingų medžiagų įsigijimas

Šiam projektui reikalingos medžiagos:

- Raspberry Pi

- „Kinect Sensor v1.8“(„Xbox 360“)

- Nao robotas arba virutal robotas (Choregraph)

3 žingsnis: kaip tai veikia

Image
Image
Kaip tai veikia
Kaip tai veikia

„Kinect“jutiklis prijungtas prie kompiuterio, kuriame veikia „WPF“programa. WPF programa siunčia duomenis į „Python“programą (robotą) naudodama MQTT. Vietiniai failai išsaugomi, jei vartotojas taip pasirenka.

Išsamus paaiškinimas:

Prieš pradėdamas įrašinėti, vartotojas turi įvesti MQTT brokerio IP adresą. Be to, mums taip pat reikia temos, kuria norime skelbti duomenis. Paspaudus pradėti, programa patikrins, ar galima užmegzti ryšį su tarpininku, ir pateiks mums atsiliepimą. Neįmanoma patikrinti, ar yra tema, todėl esate visiškai atsakingas už šią temą. Kai abu įvestys yra tinkamos, programa pradės siųsti duomenis (x, y ir z koordinatės sudaro kiekvieną jungtį) iš sekamo skeleto į MQTT tarpininko temą.

Kadangi robotas yra prijungtas prie to paties MQTT brokerio ir užsisakė tą pačią temą (tai taip pat turi būti įvesta į „python“programą), „python“programa dabar gaus duomenis iš WPF programos. Naudodami trigonometriją ir savarankiškai parašytus algoritmus, mes konvertuojame koordinačius į kampus ir radianus, kuriuos naudojame realiuoju laiku pasukdami roboto viduje esančius variklius.

Kai vartotojas baigia įrašymą, jis paspaudžia sustabdymo mygtuką. Dabar vartotojas gauna iššokantįjį langą, kuriame klausia, ar jis nori išsaugoti įrašą. Kai vartotojas paspaudžia atšaukti, viskas atstatoma (duomenys prarandami) ir galima pradėti naują įrašymą. Jei vartotojas nori išsaugoti įrašą, jis turėtų įvesti pavadinimą ir paspausti „išsaugoti“. Paspaudus mygtuką „Išsaugoti“, visi gauti duomenys įrašomi į vietinį failą, naudojant failo pavadinimą įvestą pavadinimą. Failas taip pat įtraukiamas į sąrašo rodinį dešinėje ekrano pusėje. Tokiu būdu, dukart spustelėjus naują įrašą sąrašo rodinyje, failas nuskaitomas ir siunčiamas MQTT brokeriui. Todėl robotas paleis įrašą.

4 žingsnis: nustatykite „MQTT Broker“

MQTT brokerio nustatymas
MQTT brokerio nustatymas

Bendravimui tarp „kinect“(WPF projektas) ir roboto („Python“projektas) naudojome MQTT. MQTT sudaro tarpininkas („Linux“kompiuteris, kuriame veikia „mqtt“programinė įranga (pvz., „Mosquitto“)) ir tema, kuria klientai gali užsiprenumeruoti (jie gauna pranešimą iš temos) ir skelbti (jie paskelbia pranešimą šia tema).

Norėdami nustatyti MQTT brokerį, tiesiog atsisiųskite visą Jessie atvaizdą. Tai yra švarus „Raspberry Pi“diegimas su „MQTT“tarpininku. Tema „/Sandro“.

5 veiksmas: „Kinect SDK V1.8“diegimas

Kad „Kinect“veiktų jūsų kompiuteryje, turite įdiegti „Microsoft Kinect“SDK.

Ją atsisiųsti galite čia:

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

6 veiksmas: „Python V2.7“diegimas

Robotas veikia su „NaoQi“sistema, ši sistema prieinama tik „python 2.7“(NE 3.x), todėl patikrinkite, kokią „python“versiją įdiegėte.

Python 2.7 galite atsisiųsti čia:

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

7 žingsnis: kodavimas

Kodavimas
Kodavimas
Kodavimas
Kodavimas
Kodavimas
Kodavimas

„Github“:

Pastabos:

- Kodavimas naudojant kinect: pirmiausia ieškokite prijungto kinect. Išsaugoję tai nuosavybėje, „kinect“įgalinome spalvų ir skeleto srautą. „Colorstream“yra tiesioginis vaizdo įrašas, o skeleto srautas reiškia, kad bus rodomas priešais kamerą esančio žmogaus skeletas. „Colorstream“tikrai nėra būtinas, kad šis projektas veiktų, mes jį tiesiog įgalinome, nes skeleto srauto susiejimas su spalvų srautu atrodo slidus!

- Iš tikrųjų tai yra skeleto srautas, kuris atlieka savo darbą. Skeleto srauto įjungimas reiškia, kad asmens skeletas yra sekamas. Iš šio karkaso jūs gaunate visą informaciją, pvz. kaulų orientacija, bendra informacija, … Mūsų projekto raktas buvo bendra informacija. Naudodami kiekvienos stebimos skeleto sąnarių x-y ir z koordinates, žinojome, kad galime priversti robotą judėti. Taigi, kas.8 sekundes (naudojant laikmatį) mqtt brokeriui skelbiame kiekvienos jungties x, y & z koordinates.

- Kadangi „python“projektas turi „mqtt“tarpininko abonementą, dabar galime pasiekti šio projekto duomenis. Kiekvienos roboto jungties viduje yra du varikliai. Šiuos variklius negalima tiesiog valdyti tiesiogiai naudojant x, y ir z koordinates. Taigi, naudodamiesi trigonometrija ir sveiku protu, sąnarių x, y ir z koordinates pavertėme į robotus nepakankamai stabiliais kampais.

Taigi iš esmės kas 0,8 sekundės WPF projektas skelbia kiekvienos jungties x, y & z koordinates. Vadinasi, python projekto viduje šie koordinačiai paverčiami kampais, kurie vėliau siunčiami į atitinkamus roboto variklius.

Rekomenduojamas: