Rapberry Pi ile sesli komut algılayan robot // #mfist17



                                          (1)- Rapberry Pi ile sesli komut algılayan robot

        Birkaç aydır üzerinde çalıştığım, Raspberry Pi 3 ile Google’ın GoogleCloudApi’larını kullanılarak sesli komutlara göre hareket eden otonom bir robot yapmak olan projemi bu blogda paylaşmak istedim. (1) Geliştirmekte olduğum bu robotun kullanıcılardan aldığı sesli komutlarla istenilen görevleri yerine getirerek ev işlerinde yardımcı olmasını istediğim için üzerine yerleştirdiğim mikrofondan aldığı sesleri bir yazılımla işleyerek hareket etmesini veya cevap vermesini sağlamaya çalışıyorum. Bu sesleri yani sesli komutları robotun işlemesi için ise Google'ın cloud API yazılımlarından biri olan GoogleCloudSpeechAPI’ı kullanmanın pratik ve hızlı olacağını düşündüğüm için bu yazılımı, Google'ın Raspberry Pi ile birlikte “voice hat” ek donanımı ile birlikte kullanılması üzere yaptığı ve “Magpi” dergisi ile birlikte gelen karton kutu içine kurulan Google Assistant kurulumu için tasarlanan yazılımı Raspberry Pi'nin SD kartına direk yükleyerek bu yazılımın içinde gelen GoogleCloudSpeechAPI’ı aktifleştirerek elde etmiş oldum. Ve artık bu yazılıma benim robotum ile birlikte çalışması için kendi komutlarımı eklemeye başladım.

        Robotun bu sesli komutlarla neler yaptığından bahsetmeden önce donanımından da biraz bahsedeyim. Fotoğrafta da görebileceğiniz üzere robotun ilerlemesi için 4 adet, bir dc fırçalı/redüktörlü elektrik motoru ve bir tekerlekten oluşan meşhur kitlerden kullandım. (1) Robotun gövdesi olarak ise kolay ve pratik olsun diye iki silindirik saklama kutusunu üst üste yapıştırarak kullanmayı tercih ettim. Robotun üst kısmına ise hc-sr04 ultrasonik sensörü ve kamerayı tutup sağa-sola ve yukarı-aşağıya hareket ettirmesi için bir “pan tilt” denilen ve iki mikro servo motorundan oluşan aparatlardan kendim yapmaya karar verdim. (2) Ve plywood'dan bir tane yapmayı başardım.

                                           (2)- 9 gram servolardan oluşan 'pan tilt'

       Saklama kutusunun ön tarafına ise robotun bazı küçük ve hafif cisimleri tutup kaldırabilmesi için üç eksenli minik bir robot kol taktım. (bir ekseni 28byj-48 step motor ile diğer iki ekseni yine 9 gramlık mikro servo motoru ile) (3)

                                                           (3)- Üç eksenli robot kol

        Robotun içinde bulunan komponentlerden de bahsetmek gerekirse, batarya olarak 4000 mAh bir power bank’ı ve iki eski cep telefonu bataryasını seri bağlayarak yaptığım iki hücreli bataryayı güç kaynağı olarak (4),

(4)- Eski cep telefonlarından yapılmış batarya

L298N dc motor sürücü kartını ve ULN2003 step motor sürücü kartını motor sürücüleri olarak, L293B sürücü entegresini robotun önünde bulunan iki 1W gücündeki LED’leri sürecek sürücü olarak (5),

                                        (5)- Robotun ön tarafına yerleştirilen 1W'lık LED'ler

ve XL6009 DC DC voltaj dönüştürücüyü ise bataryadan gelen gerilimin voltajını motorlar için yükseltici olarak, iki TCRT5000 sensör kartını ise çizgi takip sensörü olarak kullandığımı söyleyebilirim.(6)

                                        (6)- Çizgi takibi için TCRT5000 kızılötesi sensörler

        Servoları ve sensörleri Raspberry Pi'ye bağlamak için kullandığım birkaç direnci ise robotun içine yerleştirdiğim orta boy breadboard’a taktım.(7)

                                         (7)- Breadboard

        Bahsettiğim üzere bu robot sesli komutları üzerinde bulunan mikrofondan alıyor, bu mikrofonu ve robotun bazı komutlara konuşarak cevap vermesi için kullanılan taşınabilir hoparlörü ise Raspberry Pi bilgisayarına bir USB PNP ses kartı sayesinde bağladım. (8)

                                         (8)- USB PNP ses kartı, mikrofon ve hoparlör

        Evet şimdi bu koca robotun bu donanımı kullanarak neler yapabildiğinden bahsedelim. İlk olarak, tabii robota verilen direk kontrol sağlamak için 'ileri git’, 'sağa dön’, 'robot kolu sağa döndür/yukarı kaldır’, 'tutacağı aç', 'ledleri yak’, 'kafayı yukarı kaldır/sola döndür’ gibi basit İngilizce sesli komutlara uyarak hareket edebilmektedir. Bunun yanında da robota sorulan, sadece konuşma amaçlı sorular da bazı yaratıcı cevaplar alabilmektedir. Bu cevaplardan bazıları ise Portal 2 adındaki bilgisayar oyunundaki Turret denilen robotların  ilginç sesi ile verilmektedir. Fakat robotun asıl amacı olan ev işlerine yardımcı olabilmek amacına ulaşmak için ise robotun daha karmaşık görevleri yerine getirmesi gerekmektedir. Örneğin robota verilen bir komutla mutfağa kadar gidip bir şeyi alıp gelebilmeli. Bunu yapabilmek için ise iki oda arasında çizgi çekilmesi makul olacaktır. Mesela mutfaktan bir çikolata almak istiyorsunuz, bunu robota tek bir sesli komut vererek yaptırabilirsiniz.
        Tabi bunun gibi görevleri robotun başarılı bir şekilde yapabilmesi için yani robot kolla bir nesneyi başarılı bir şekilde kavrayabilmesi ve nesneyi aldığını anlayabilmesi için görüntü işleme kullanılması gerekmektedir. Daha önceden bu robot üzerinde SimpleCV adındaki bir görüntü işleme yazılımını kullanmıştım fakat bu yazılımı pek yeterli bulmadığım için bu robotun üzerinde ilerde yine Google'ın API'larından biri olan GoogleCloudVisionAPI'ı kullanmayı veya OpenCV adındaki görüntü işleme kütüphanesini kullanmayı düşünüyorum. Böylece bu robotun başka bir odaya gidip bir nesneyi getirmek/ götürmek, bir fotoğraf çekip gelmek veya bir kişiyi takip etmek gibi görüntü işleme gerektiren görevleri de yerine getirebilmesini sağlamayı planlıyorum.

Fritzing Şematik:


Diğer videolar:







Güncellemeler:


GoogleCloudSpeechAPI'i kullanarak yaptığım sesli komutlarla kontrol edilen Raspberry robotuma yeni sesli komutlar ekliyorum.

Sonunda robotun ppap eşliğinde dans etmesini sağlayabildim. :)



Eski Versiyonlar:













Maker Faire İstanbul 2017:

Yarışmalar:
     5 Dakikada Bilim
     Ulusal Yetenek ve Mentör Ağı




Youtube kanalım: https://www.youtube.com/channel/UCKjEFux1TB-xrxLXXTlAb4A

Instagram Hesabım: https://www.instagram.com/ahmetakifkaya

Yorumlar

  1. Tebrikler. Bende buna benzer robot yapıyorum. Python ile google speech'i deniyorum ama Türkçe kelimeleri bazen anlamıyor. Yada ortamda gürültü varsa, kalabalıkta felan sesi başka anlıyor. Bu sorun ingilizce'de var mı merak ettim. Ne tavsiye edersin kardeşim ?

    YanıtlaSil
  2. Yanıtlar
    1. Where is main code in github please tell me

      Sil

Yorum Gönder

Bu blogdaki popüler yayınlar

Google Asistan ile NodeMcu (esp8266) Kartını Kontrol Etmek (IFTTT, Blynk)

Arduino ile İşlevsel Cihaz (Akıllı Hava Durumu Ölçümü, Servo Test, Komponent Kontrol, Metin Okuma...)