Innehållsförteckning:

Nao -robot som efterliknar rörelser med Kinect: 7 steg
Nao -robot som efterliknar rörelser med Kinect: 7 steg

Video: Nao -robot som efterliknar rörelser med Kinect: 7 steg

Video: Nao -robot som efterliknar rörelser med Kinect: 7 steg
Video: 8 SCARY GHOST Videos Accidentally Caught On Camera 2024, Juni
Anonim
Nao -robot som efterliknar rörelser med Kinect
Nao -robot som efterliknar rörelser med Kinect

I denna instruktiva förklarar jag för dig hur vi låter en Nao -robot efterlikna våra rörelser med en kinect -sensor. Själva målet med projektet är ett pedagogiskt syfte: en lärare har förmågan att spela in vissa uppsättningar rörelser (t.ex. en dans) och kan använda dessa inspelningar för att låta barnen i klassrummet efterlikna roboten. Genom att gå igenom hela detta instruerbara steg för steg bör du kunna återskapa det här projektet fullt ut.

Detta är ett skolrelaterat projekt (NMCT @ Howest, Kortrijk).

Steg 1: Grundläggande kunskap

För att återskapa detta projekt måste du ha grundläggande kunskaper:

- Grundläggande pythonkunskap

- Grundläggande C# -kunskap (WPF)

- Grundläggande kunskaper om trigonometri

- Kunskap om hur man ställer in MQTT på en hallon pi

Steg 2: Skaffa nödvändiga material

Nödvändigt material för detta projekt:

- Raspberry Pi

- Kinect Sensor v1.8 (Xbox 360)

- Nao -robot eller virutal robot (Choregraph)

Steg 3: Hur det fungerar

Image
Image
Hur det fungerar
Hur det fungerar

En kinect -sensor är ansluten till en dator som kör WPF -applikationen. WPF -applikationen skickar data till Python -applikationen (roboten) med MQTT. Lokala filer sparas om användaren väljer det.

Detaljerad förklaring:

Innan vi börjar spela in måste användaren ange ip-adressen till MQTT-mäklaren. Förutom det behöver vi också ämnet som vi vill publicera data om. Efter att ha tryckt på start kommer appen att kontrollera om en anslutning kan upprättas med mäklaren och det kommer att ge oss feedback. Det är inte möjligt att kontrollera om det finns ett ämne, så du är fullt ansvarig för det här. När båda ingångarna är OK kommer applikationen att börja skicka data (x, y & z -koordinater från varje led) från skelettet som spåras till ämnet på MQTT -mäklaren.

Eftersom roboten är ansluten till samma MQTT -mäklare och prenumererar på samma ämne (detta måste också anges i python -applikationen) kommer python -applikationen nu att ta emot data från WPF -applikationen. Med hjälp av trigonometri och självskrivna algoritmer konverterar vi koordinaterna till vinklar och radianer, som vi använder för att rotera motorerna inuti roboten i realtid.

När användaren är klar med inspelningen trycker han på stoppknappen. Nu får användaren en popup som frågar om han vill spara inspelningen. När användaren träffar avbryts, återställs allt (data går förlorade) och en ny inspelning kan startas. Om användaren vill spara inspelningen ska han ange en titel och klicka på "spara". När du trycker på "spara" skrivs all förvärvad data till en lokal fil med titelinmatningen som filnamn. Filen läggs också till i listvyn på höger sida av skärmen. På detta sätt, efter att du dubbelklickat på den nya posten i listvyn, läses filen och skickas till MQTT -mäklaren. Följaktligen spelar roboten inspelningen.

Steg 4: Konfigurera MQTT -mäklaren

Konfigurera MQTT -mäklaren
Konfigurera MQTT -mäklaren

För kommunikationen mellan kinect (WPF -projektet) och roboten (Python -projektet) använde vi MQTT. MQTT består av en mäklare (en Linux -dator som mqtt -programvaran (t.ex. Mosquitto)) körs och ett ämne som klienter kan prenumerera på (de får ett meddelande från ämnet) och publicera (de lägger upp ett meddelande om ämnet).

För att installera MQTT -mäklaren laddar du bara ner hela den här jessie -bilden. Detta är en ren installation för dig Raspberry Pi med en MQTT -mäklare på den. Ämnet är "/Sandro".

Steg 5: Installera Kinect SDK V1.8

För att kinect ska fungera på din dator måste du installera Microsoft Kinect SDK.

Du kan ladda ner den här:

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

Steg 6: Installera Python V2.7

Roboten fungerar med NaoQi -ramverket, denna ram är endast tillgänglig för python 2.7 (INTE 3.x), så kontrollera vilken version av python du har installerat.

Du kan ladda ner python 2.7 här:

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

Steg 7: Kodning

Kodning
Kodning
Kodning
Kodning
Kodning
Kodning

Github:

Anmärkningar:

- Kodning med kinect: först letar du efter den anslutna kinecten. Efter att ha sparat detta inne i en fastighet aktiverade vi färg- och skelettström på kinect. Colorstream är livevideon, medan skeletonstream betyder att ett skelett av personen framför kameran kommer att visas. Colorstream är verkligen inte nödvändigt för att få det här projektet att fungera, vi har bara aktiverat det eftersom bitmapping av skelettströmmen till färgströmmen ser snygg ut!

- I verkligheten är det verkligen skelettströmmen som gör jobbet. Aktivering av skeletonstream innebär att personens skelett spåras. Från detta skelett får du all slags information, t.ex. benorientering, gemensam information, … Nyckeln till vårt projekt var den gemensamma informationen. Med hjälp av xy & z-koordinaterna för var och en av lederna från det spårade skelettet visste vi att vi kunde få roboten att röra sig. Så, var.

- Eftersom python -projektet har en prenumeration på mqtt -mäklaren kan vi nu få tillgång till data i detta projekt. Inuti varje led i roboten finns två motorer. Dessa motorer kan inte bara styras med hjälp av x, y & z -koordinaterna direkt. Så, med hjälp av trigonometri och lite sunt förnuft, konverterade vi x, y & z -koordinaterna för lederna till vinklar som är understable till robotar.

Så i princip var.8 sekund publicerar WPF -projektet x, y & z -koordinater för var och en av lederna. Följaktligen omvandlas dessa koordianter inuti pythonprojektet till vinklar, som sedan skickas till motsvarande motorer i roboten.

Rekommenderad: