Sommario:

Nao Robot che imita i movimenti usando Kinect: 7 passaggi
Nao Robot che imita i movimenti usando Kinect: 7 passaggi

Video: Nao Robot che imita i movimenti usando Kinect: 7 passaggi

Video: Nao Robot che imita i movimenti usando Kinect: 7 passaggi
Video: Раффаэлло Д'Андреа: Восхитительный атлетизм квадролётов 2024, Novembre
Anonim
Nao Robot che imita i movimenti usando Kinect
Nao Robot che imita i movimenti usando Kinect

In questo tutorial ti spiegherò come permettiamo a un robot Nao di imitare i nostri movimenti usando un sensore Kinect. L'obiettivo effettivo del progetto è uno scopo educativo: un insegnante ha la capacità di registrare determinate serie di mosse (ad es. una danza) e può utilizzare queste registrazioni per consentire ai bambini in classe di imitare il robot. Seguendo l'intera istruzione passo dopo passo, dovresti essere in grado di ricreare completamente questo progetto.

Questo è un progetto relativo alla scuola (NMCT @ Howest, Kortrijk).

Fase 1: Conoscenze di base

Per ricreare questo progetto è necessario possedere alcune conoscenze di base:

- Conoscenza di base del pitone

- Conoscenza base di C# (WPF)

- Conoscenze di base di trigonometria

- Conoscenza su come impostare MQTT su un lampone pi

Passaggio 2: acquisizione dei materiali necessari

Materiali necessari per questo progetto:

- Lampone Pi

- Sensore Kinect v1.8 (Xbox 360)

- Nao robot o robot virtuale (Coregraph)

Passaggio 3: come funziona

Image
Image
Come funziona
Come funziona

Un sensore Kinect è connesso a un computer che esegue l'applicazione WPF. L'applicazione WPF invia i dati all'applicazione Python (robot) tramite MQTT. I file locali vengono salvati se l'utente lo sceglie.

Spiegazione dettagliata:

Prima di iniziare la registrazione, l'utente deve inserire l'indirizzo IP del broker MQTT. Oltre a ciò, abbiamo anche bisogno dell'argomento su cui vogliamo pubblicare i dati. Dopo aver premuto start, l'applicazione verificherà se è possibile stabilire una connessione con il broker e ci darà un feedback. Controllare se un argomento esiste non è possibile, quindi sei pienamente responsabile di questo. Quando entrambi gli input sono OK, l'applicazione inizierà a inviare dati (coordinate x, y & z da ciascun giunto) dallo scheletro che viene tracciato all'argomento sul broker MQTT.

Poiché il robot è connesso con lo stesso broker MQTT e sottoscritto sullo stesso argomento (questo deve essere inserito anche nell'applicazione python), l'applicazione python ora riceverà i dati dall'applicazione WPF. Usando la trigonometria e algoritmi auto-scritti, convertiamo le coordinate in angoli e radianti, che usiamo per ruotare i motori all'interno del robot in tempo reale.

Quando l'utente ha terminato la registrazione, preme il pulsante di arresto. Ora l'utente riceve un pop-up che chiede se vuole salvare la registrazione. Quando l'utente preme Annulla, tutto viene ripristinato (i dati vengono persi) e può essere avviata una nuova registrazione. Se l'utente desidera salvare la registrazione, deve inserire un titolo e premere 'salva'. Quando si preme 'salva', tutti i dati acquisiti vengono scritti in un file locale utilizzando l'input del titolo come nome del file. Il file viene anche aggiunto alla visualizzazione elenco sul lato destro dello schermo. In questo modo, dopo aver fatto doppio clic sulla nuova voce nella listview, il file viene letto e inviato al broker MQTT. Di conseguenza, il robot riprodurrà la registrazione.

Passaggio 4: configurazione del broker MQTT

Configurazione del broker MQTT
Configurazione del broker MQTT

Per la comunicazione tra il kinect (progetto WPF) e il robot (progetto Python) abbiamo utilizzato MQTT. MQTT consiste in un broker (un computer linux su cui è in esecuzione il software mqtt (es. Mosquitto)) e un argomento su cui i client possono iscriversi (ricevono un messaggio dall'argomento) e pubblicare (postano un messaggio sull'argomento).

Per configurare il broker MQTT basta scaricare l'intera immagine di jessie. Questa è un'installazione pulita per te Raspberry Pi con un broker MQTT su di esso. L'argomento è "/Sandro".

Passaggio 5: installazione di Kinect SDK V1.8

Affinché Kinect funzioni sul tuo computer, devi installare Microsoft Kinect SDK.

Potete scaricarlo qui:

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

Passaggio 6: installazione di Python V2.7

Il robot funziona con il framework NaoQi, questo framework è disponibile solo per python 2.7 (NON 3.x), quindi controlla quale versione di python hai installato.

Puoi scaricare Python 2.7 qui:

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

Passaggio 7: codifica

codifica
codifica
codifica
codifica
codifica
codifica

Github:

Appunti:

- Codifica con il kinect: per prima cosa cerchi il kinect connesso. Dopo averlo salvato all'interno di una proprietà, abbiamo abilitato color- e skeletonstream sul kinect. Colorstream è il video in diretta, mentre skeletonstream significa che verrà visualizzato lo scheletro della persona davanti alla telecamera. Colorstream non è realmente necessario per far funzionare questo progetto, l'abbiamo solo abilitato perché il bitmap dello skeletonstream nel colorstream sembra perfetto!

- In realtà è davvero lo skeletonstream che fa il lavoro. L'abilitazione di skeletonstream significa che lo scheletro della persona viene monitorato. Da questo scheletro ricevi tutti i tipi di informazioni, ad es. orientamenti ossei, informazioni sulle articolazioni, … La chiave del nostro progetto erano le informazioni sulle articolazioni. Utilizzando le coordinate x-y e z di ciascuna delle articolazioni dello scheletro tracciato, sapevamo di poter far muovere il robot. Quindi, ogni 0,8 secondi (usando un timer) pubblichiamo le coordinate x, y & z di ciascuno dei giunti al broker mqtt.

- Poiché il progetto Python ha una sottoscrizione sul broker mqtt, ora possiamo accedere ai dati all'interno di questo progetto. All'interno di ogni giunto del robot ci sono due motori. Questi motori non possono essere guidati semplicemente utilizzando direttamente le coordinate x, y e z. Quindi, usando la trigonometria e un po' di buon senso, abbiamo convertito le coordinate x, y e z dei giunti in angoli sottostabili per i robot.

Quindi praticamente ogni 0,8 secondi il progetto WPF pubblica le coordinate x, y & z di ciascuno dei giunti. Di conseguenza, all'interno del progetto Python queste coordinate vengono convertite in angoli, che vengono poi inviati ai corrispondenti motori del robot.

Consigliato: