İçindekiler:

Kinect Kullanarak Hareketleri Taklit Eden Nao Robot: 7 Adım
Kinect Kullanarak Hareketleri Taklit Eden Nao Robot: 7 Adım

Video: Kinect Kullanarak Hareketleri Taklit Eden Nao Robot: 7 Adım

Video: Kinect Kullanarak Hareketleri Taklit Eden Nao Robot: 7 Adım
Video: Dev robot pilotunu taklit edebiliyor 2024, Eylül
Anonim
Kinect Kullanarak Hareketleri Taklit Eden Nao Robot
Kinect Kullanarak Hareketleri Taklit Eden Nao Robot

Bu talimatta size bir Nao robotunun bir kinect sensörü kullanarak hareketlerimizi taklit etmesine nasıl izin verdiğimizi açıklayacağım. Projenin asıl amacı bir eğitim amacıdır: bir öğretmenin belirli hareketleri (örneğin bir dans) kaydetme yeteneği vardır ve bu kayıtları sınıfta çocukların robotu taklit etmesine izin vermek için kullanabilir. Tüm bu öğretilebilir adım adım ilerleyerek, bu projeyi tamamen yeniden oluşturabilmelisiniz.

Bu okulla ilgili bir projedir (NMCT @ Howest, Kortrijk).

Adım 1: Temel Bilgi

Bu projeyi yeniden oluşturmak için bazı temel bilgilere sahip olmalısınız:

- Temel piton bilgisi

- Temel C# bilgisi (WPF)

- Temel trigonometri bilgisi

- Bir ahududu pi üzerinde MQTT'nin nasıl kurulacağı hakkında bilgi

Adım 2: Gerekli Malzemelerin Edinilmesi

Bu proje için gerekli malzemeler:

- Ahududu Pi

- Kinect Sensörü v1.8 (Xbox 360)

- Nao robot veya sanal robot (Koregraf)

Adım 3: Nasıl Çalışır?

Image
Image
Nasıl çalışır
Nasıl çalışır

WPF uygulamasını çalıştıran bir bilgisayara bir kinect sensörü bağlı. WPF uygulaması, MQTT kullanarak Python uygulamasına (robot) veri gönderir. Kullanıcı seçerse yerel dosyalar kaydedilir.

Detaylı açıklama:

Kayda başlamadan önce, kullanıcının MQTT aracısının ip adresini girmesi gerekir. Bunun yanında verilerini yayınlamak istediğimiz konuya da ihtiyacımız var. Başlat'a bastıktan sonra, uygulama komisyoncu ile bir bağlantı kurulup kurulamayacağını kontrol edecek ve bize geri bildirimde bulunacaktır. Bir konunun olup olmadığını kontrol etmek mümkün değildir, bu nedenle bundan tamamen siz sorumlusunuz. Her iki giriş de uygun olduğunda, uygulama izlenen iskeletten MQTT aracısında konuya veri (her eklemden x, y & z koordinatları) göndermeye başlayacaktır.

Robot aynı MQTT aracısına bağlı olduğundan ve aynı konuya abone olduğundan (bunun python uygulamasına da girilmesi gerekir), python uygulaması şimdi verileri WPF uygulamasından alacaktır. Trigonometri ve kendi kendine yazılan algoritmaları kullanarak, koordinatları robotun içindeki motorları gerçek zamanlı olarak döndürmek için kullandığımız açılara ve radyana dönüştürüyoruz.

Kullanıcı kaydı bitirdiğinde stop butonuna basar. Şimdi kullanıcı, kaydı kaydetmek isteyip istemediğini soran bir açılır pencere alır. Kullanıcı iptal düğmesine bastığında her şey sıfırlanır (veriler kaybolur) ve yeni bir kayıt başlatılabilir. Kullanıcı kaydı kaydetmek isterse, bir başlık girmeli ve 'kaydet' düğmesine basmalıdır. 'Kaydet' düğmesine basıldığında, alınan tüm veriler, dosya adı olarak başlık girişi kullanılarak yerel bir dosyaya yazılır. Dosya ayrıca ekranın sağ tarafındaki liste görünümüne eklenir. Bu şekilde, liste görünümünde yeni girişe çift tıklandıktan sonra dosya okunur ve MQTT aracısına gönderilir. Sonuç olarak, robot kaydı oynatacaktır.

Adım 4: MQTT Broker'ı Ayarlama

MQTT Aracısını Ayarlama
MQTT Aracısını Ayarlama

Kinect (WPF projesi) ve robot (Python projesi) arasındaki iletişim için MQTT kullandık. MQTT, bir komisyoncu (üzerinde mqtt yazılımının (örn. Mosquitto) çalıştığı bir linux bilgisayar) ve müşterilerin abone olabileceği (konudan bir mesaj alırlar) ve yayınlayabilecekleri (konu hakkında bir mesaj gönderirler) bir konudan oluşur..

MQTT aracısını kurmak için bu jessie görüntüsünün tamamını indirmeniz yeterlidir. Bu, üzerinde bir MQTT komisyoncusu bulunan Raspberry Pi için temiz bir kurulumdur. Konu "/Sandro".

Adım 5: Kinect SDK V1.8'i Yükleme

Kinect'in bilgisayarınızda çalışması için Microsoft Kinect SDK'sını yüklemeniz gerekir.

Buradan indirebilirsiniz:

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

Adım 6: Python V2.7'yi Yükleme

Robot, NaoQi çerçevesiyle çalışır, bu çerçeve yalnızca python 2.7 (3.x DEĞİL) için kullanılabilir, bu nedenle hangi python sürümünü yüklediğinizi kontrol edin.

Python 2.7'yi buradan indirebilirsiniz:

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

Adım 7: Kodlama

kodlama
kodlama
kodlama
kodlama
kodlama
kodlama

Github:

Notlar:

- Kinect ile kodlama: önce bağlı olan kinect'i arayın. Bunu bir özelliğin içine kaydettikten sonra kinect üzerinde renk ve iskelet akışını etkinleştirdik. Renk akışı canlı videodur, iskelet akışı ise kameranın önündeki kişinin iskeletinin görüntüleneceği anlamına gelir. Bu projenin çalışması için renk akışı gerçekten gerekli değil, sadece etkinleştirdik çünkü iskelet akışını renk akışına bit eşlemek kaygan görünüyor!

- Gerçekte işi yapan gerçekten iskelet akışıdır. İskelet akışını etkinleştirmek, kişinin iskeletinin izlendiği anlamına gelir. Bu iskeletten her türlü bilgiyi alırsınız, örn. kemik yönelimleri, eklem bilgileri,… Projemizin anahtarı eklem bilgileriydi. İzlenen iskeletteki eklemlerin her birinin x-y & z koordinatlarını kullanarak robotu hareket ettirebileceğimizi biliyorduk. Böylece, her.8 saniyede bir (bir zamanlayıcı kullanarak) eklemlerin her birinin x, y & z koordinatlarını mqtt aracısına yayınlarız.

- Python projesinin mqtt aracısı üzerinde bir aboneliği olduğundan, artık bu projenin içindeki verilere erişebiliriz. Robotun her bir ekleminin içinde iki motor bulunur. Bu motorlar doğrudan x, y ve z koordinatları kullanılarak yönlendirilemez. Böylece, trigonometri ve biraz sağduyu kullanarak eklemlerin x, y & z koordinatlarını robotlar için anlaşılmaz açılara dönüştürdük.

Yani temelde her.8 saniyede bir WPF projesi eklemlerin her birinin x, y & z koordinatlarını yayınlar. Sonuç olarak, python projesi içinde bu koordinatlar açılara dönüştürülür ve daha sonra robotun ilgili motorlarına gönderilir.

Önerilen: