Mundarija:

Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi: 3 qadam
Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi: 3 qadam

Video: Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi: 3 qadam

Video: Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi: 3 qadam
Video: Stress, Portrait of a Killer - Full Documentary (2008) 2024, Noyabr
Anonim
Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi
Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi
Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi
Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi
Ovoz bilan boshqariladigan sakrash jeki- Google Voice AIY versiyasi
Ovoz bilan boshqariladigan sakrash jeki- Google Voice AIY versiyasi
Ovoz bilan boshqariladigan sakrash jeki- Google Voice AIY versiyasi
Ovoz bilan boshqariladigan sakrash jeki- Google Voice AIY versiyasi

Shunday qilib, siz Rojdestvo uchun AIY ovozli to'plamini oldingiz va u bilan ko'rsatmalarga amal qilib o'ynadingiz. Bu kulgili, lekin hozir?

Quyida tasvirlangan loyihada Raspberry Pi uchun AIY ovozli HAT yordamida qurilishi mumkin bo'lgan oddiy qurilma taqdim etilgan. U Google ovozni aniqlash tizimidan foydalanib, LED va ikkita servolarni boshqaradi, sakrash uyasining qo'llari va oyoqlarini juda oddiy uzatmalar bilan boshqaradi.

Orqa fonda ishlaydigan dasturiy ta'minot AIY ovozli to'plami qo'llanmasida tasvirlangan servo_demo.py skriptining modifikatsiyasi. Qattiq va dasturiy ta'minotni o'rnatish uchun u erda berilgan ko'rsatmalarga amal qiling. Qurilmaning o'zi oson quriladi va qo'l san'atlari uchun ko'p mahorat talab qilmaydi. Bundan tashqari, kesuvchi pichoq, matkap va lehimlanadigan temir yordam beradi.

Agar siz ovozni aniqlash tizimini qo'lingni qimirlatib faollashtirsangiz va "qo'llar yuqoriga" deb aytsangiz, sakrash uyasi qo'l va oyoqlarini ko'taradi, "qo'llar markazi" ikkala servolarni ham o'rta holatga, ham qo'llar va oyoqlarni "pastga tushadi". tushirilishi. "Chapdan yuqoriga" chap qo'llar va oyoqlar ko'tariladi va "o'ngdan pastda" o'nglar pastga, "o'ngdan yuqoriga" aksincha. "Raqs" raqsga tushadi, hech bo'lmaganda. Bu ham gapiradi, iltimos, ilova qilingan videoni ko'ring.

Shunday qilib, ozgina harakat bilan siz o'zingiz raqsga tushadigan, suhbatlashadigan va qo'shiq aytadigan robot yaratishingiz mumkin.

Ayniqsa, kichkina bolalar uchun undan foydalanishni soddalashtirish va "sehrli" omilni kuchaytirish uchun AIY qutisidagi tugma yaqinlik sensori bilan almashtirildi. Oddiyligi uchun men Pololu -dan raqamli masofadan o'lchash datchigidan foydalandim, u ob'ekt 5 sm dan yaqinroq ekanligini aniqlaydi va uni tugma kabi ishlatish mumkin. LEDlar, qurilma qachon buyurtmalarni, tinglashni yoki "o'ylashni" kutayotganini ko'rsatadi. Servo, sensor va LEDlar GPIOZero dasturiy kutubxonasi tomonidan boshqariladi.

Prototip PVX ko'pikli plastinkalardan yasalgan bo'lib, ularni kesuvchi pichoq bilan kesish juda oson va yopishtirilishi mumkin, lekin ayni paytda ancha barqaror. Kattaroq, chiroyli, takomillashtirilgan yoki yanada chiroyli versiyasini qurishdan xavotir olmang, lekin yaxshilanishlaringizni hujjatlashtirsangiz yaxshi bo'lardi.

Siz harakatlanuvchi moslamani taqdim qilmoqchimisiz yoki bolalar uchun qulay, chiroyli ko'rinishga ega bo'lishingizdan qat'i nazar, tananing har ikki tomonini ishlatishingiz mumkin. --------- "Hampelmann"-bu nemischa "sakrash jek" so'zi bo'lib, ma'lum ma'noga ega.

1 -qadam: Ishlatilgan materiallar

Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar

Raspberry Pi 3; Buyuk Britaniyaning Pimoroni shahrida 32 funt

AIY ovozli to'plami; Buyuk Britaniyaning Pimoroni shahrida 25 funt

Pololu raqamli masofa sensori, 5 sm; Exp-tec.de saytida 5,90 evro

Ikkita 9 g servo

Ikkita oq LED va qarshilik

Ba'zi sarlavhalar va o'tish kabellari

2 mm Forex plitasi, 250 x 500 mm; 1.70 €, Modulor, Berlin, Germaniya

Barcha harakatlanuvchi qismlarni ulash uchun M3 vintlar, yong'oqlar va yuvish mashinalari. Men oltita 10 va to'rtta 16 mm neylon vintni ishlatardim.

Servolarni plastinkalarga mahkamlash va qo'llar va viteslarni ulash uchun oltita M2 vint va yong'oq.

Bir necha tomchi plastik elim

2 -qadam: Qurilmani yig'ish va ishlatish

Qurilmani yig'ish va ishlatish
Qurilmani yig'ish va ishlatish
Qurilmani yig'ish va ishlatish
Qurilmani yig'ish va ishlatish
Qurilmani yig'ish va ishlatish
Qurilmani yig'ish va ishlatish

AIY ovozli to'plamiga kelsak, to'plam bilan birga kelgan tavsifdagi ko'rsatmalarga amal qiling, shu jumladan servo bo'limi. Men AIY ovoz uzilishidagi servo portlarga bir nechta uch pinli sarlavhalarni lehimlashni maslahat berardim, shuning uchun siz HAT bilan servo, sensor va LEDlarni juda oson ulashingiz mumkin.

O'tish jakiga kelsak, men bu erda taqdim etgan chizmalardan svg va PDF-fayllarni shablon sifatida ishlatishingiz yoki ularni o'z g'oyalaringizga ko'ra o'zgartirishingiz mumkin. O'tish nuqtasi va tishli orasidagi masofa servo, qo'l va oyoqda bir xil bo'lishini ta'minlash uchun siz sakrovchining oyoqlari va qo'llarini harakatlantiruvchi vitesning asosiy tartibini saqlashni xohlashingiz mumkin.

Shu bilan bir qatorda, agar siz qo'llar va oyoqlar to'g'ridan -to'g'ri to'rtta alohida servo yoki ilg'or vites bilan boshqarilsa, siz ham versiyani yaratishingiz mumkin.

Chizilgan rasmdan foydalanib, Forex, karton yoki kontrplak plastinkasidan bo'laklarni kesib oling va teshiklarni tegishli joylarga burang. Teshiklarning yaxshi hizalanishini ta'minlash uchun masofa bo'laklarini qo'l va oyoqlarning burilish nuqtalariga yopishtiring.

Servo va harakatlanuvchi qismlarni asosiy plastinkaga mahkamlang. Ko'rsatilganidek, masofa sensori va LEDni qo'shing. Servo M2 vintlar bilan, barcha harakatlanuvchi qismlar M3 vintlar bilan o'rnatiladi. Men neylon M3 vintlarini ishlatardim, lekin faqat estetik sabablarga ko'ra.

Servo qo'llar o'rta holatga qo'yilganligini tekshiring. Servo qo'llar va viteslarni ulang, men buning uchun M2 vintlarini ishlatardim.

AIY kartasidagi servo ulagichlarga servo, LED va masofa sensori ulang. Sizga uzaytiruvchi/o'tish kabellari kerak bo'lishi mumkin. Men chap servo "servo0" ga (GPIO 26), o'ng servo "servo2" ga (GPIO 13), LEDlar "servo5" ga (GPIO 24), sensor esa AIYda "servo3" (GPIO 5) ulanganman. ovoz HAT.

Taqdim etilgan "Hampelmann.py" faylini AIY "src" pastki jildiga nusxalash va uni hamma uchun to'g'ridan -to'g'ri bajariladigan qilib qo'yish. Buning uchun siz fayl menejerida faylni tanlashingiz mumkin, keyin sichqonchaning o'ng tugmachasini bosing va Xususiyatlar -ni tanlang, Ruxsatnomalarni tanlang, Ijroga o'ting, ~ har kimni tanlang. Yoki konsolda "chmod +x src/Hampelmann.py" deb yozing.

Hamma narsa joyida va to'g'rilanganligini yoki kerak bo'lganda ko'charligini tekshiring. Dev buyruq qatorini oching, "src/Hampelmann.py" kiriting va dasturni ishga tushiring. Agar siz qo'l yoki barmoqlaringizni masofa sensori oldida harakatlantirsangiz, AIY birligi buyurtma so'raydi va LEDlar miltillaydi. Amalga oshirilgan buyurtmalar "o'ng/chap/qo'llar yuqoriga/pastga/markaz", "raqs", "LEDni yoqish/o'chirish" va "xayr".

O'ynang. Qo'lingizni sensor oldida harakatlantiring, so'ralganda gapiring va qurilmaga reaktsiya berish uchun biroz vaqt bering. Kechikish ancha yuqori. Crtl+C yoki "Xayr" tugmasi dasturni to'xtatadi.

Siz faylni Nano yoki boshqa oddiy matn muharriri yordamida o'zgartirishingiz mumkin.

Izohlar: Shuni yodda tutingki, ba'zi so'zlar va atamalar bosh harf bilan boshlanadigan so'zlar sifatida tan olinadi, "Markaz" yoki "O'ng markaz", boshqalari emas, masalan. "To'g'ri". Harakatni boshlash uchun siz ovozni aniqlash moduli tomonidan berilgan aniq shaklni ishlatishingiz kerak.

3 -qadam: Python skript

Yuqorida aytib o'tganimizdek, skript AIY ovozli ko'rsatmalaridan olingan servo_demo.py skriptiga asoslangan va ba'zi qo'shimchalar bilan. Birinchi versiya - bu Hampelmann.py fayli. GPIOZero -dan AngularServo servo diapazonini cheklash va qanchalik uzoqqa ketishini aniq belgilashga imkon beradi, lekin men ingliz ovozini aslidan ko'ra afzal ko'raman. Qurilma ingliz, nemis, italyan, frantsuz va ispan tillarida ham gapirishi mumkin, lekin tushunmaydi (?). Quyida inglizcha ovozli, biroz italyan va nemis tilidagi Hampelmann2.py skriptini topasiz. Shuni yodda tutingki, ularni ishga tushirish uchun skriptlarni bajariladigan qilib qo'yish kerak.

#!/usr/bin/env python3 # Bu skript AIY ovozli HAT uchun servo_demo.py skriptining moslashuvi, # AIY o'tish moslamasi uchun optimallashtirilgan aiy.audio import aiy.cloudspeech import aiy.voicehat gpiozero import LED dan. gpiozero importidan AngularServo dan gpiozero importidan Vaqtni import qilish uyqu def (): tanib oluvchi = aiy.cloudspeech.get_recognizer () taniyuvchi.expect_phrase ("o'ngdan yuqoriga") tan oluvchi. Center ') # katta harflar ataylab mavjud. ("qo'llar pastga") tanib oluvchi. kutish_ iborasi ("qo'llar markazi") tan oluvchi. kutish_ iborasi ("raqs") tan oluvchi..audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1-ulanish yoki, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3-ulagich, GPIO 13 led0 = LED (24) # LEDlar servo5ga ulangan/GPIO 24 masofa = Tugma (5) # masofa sensori ulangan servo3/GPIO 05 # boshqalarga: servo1 da GPIO 6, servo4 da 12 aiy.audio.say ("Salom!",) aiy.audio.say ("Boshlash uchun qo'lingizni sensorga yaqinlashtiring",) rost.: led0.on () # LEDlar bosma ("Ovozni aniqlashni faollashtirish uchun qo'lni masofa sensori yoniga yaqinlashtiring, keyin gapiring") chop eting ('Kutilayotgan kalit so'zlar: qo'llar/chap/o'ng yuqoriga/pastga/markaz,') chop etish ('LEDni yoqish/o'chirish, raqs va xayr.') print () masofa.wait_for_press () chop etish ('Tinglayapti …') aiy.audio.say ("Buyurtmalaringizni bering",) led0.blink () # yorug'lik milt -milt = matnni tanib olish.recognize () agar matn Yo'q bo'lsa: aiy.audio.say ('Kechirasiz, men sizni eshitmadim.',) boshqa: chop etish ('Siz aytdingiz "', matn, '"') # Sizga ruxsat Matnda "o'ng yuqoriga" bo'lsa, tizimlar talqinini tekshiring: chop etish ("Servo0 maksimal holatiga ko'chiriladi") servo0.angle = 35 elif "o'ngga pastga" matnda: chop etish ('Servo0 harakatlanmoqda minimal pozitsiyaga ') servo0.angle = -35 elif' O'ng markaz 'matnda: #to'g'ri sarlavhalar muhim bosma (' servo0 o'rta holatiga ko'chiriladi ') servo0.angle = 0 elif' chapga 'matnda: chop etish (' Servo2 ni maksimal holatga o'tkazish ') servo2.angle = -35 elif' chapga 'matnda: chop etish (' servo2 minimal holatga o'tkazilmoqda ') o'rta pozitsiya ') servo2.angle = 0 elif "qo'llar yuqoriga" matnda: chop etish (' servo2 maksimal holatiga o'tkaziladi ') servo2.angle = -35 servo0.angle = 35 elif' qo'llar pastga 'matnda: chop etish (' harakatlanmoqda servo2 minimal holatga ') servo2.angle = 35 servo0.angle = -35 elif' qo'llar markazida 'matnda: chop etish (' servo2 o'rta holatiga ko'chirilmoqda ') servo2.angle = 0 servo0.angle = 0 elif' LED o'chirilgan ' matnda: chop etish ("tashqi LED 0 o'chirilishi") led0.off () elif "LED yoqilgan" matnda: chop etish ("tashqi LED 0 yoqilishi") led0.on () # yorug'lik elif "raqs" matnda: print ('hozir raqs raqami birinchi') aiy.audio.say ("Xo'sh, men qo'limdan kelganicha harakat qilaman!"), led0.on () # chiroqlar yondi i uchun (3) diapazonda: servo0.angle = 0 servo2.angle = 0 uyqu (1) servo0.angle = 35 servo2.angle = -35 uyqu (1) servo0.angle = 0 servo2.angle = -35 uyqu (1) servo0.angle = -25 servo2.angle = 0 uyqu (1) servo0.angle = 30 servo2.angle = 20 uyqu (1) servo0.angle = 0 servo2.angle = 0 led0.off () # yorug'lik o'chirilgan elif Matnda "xayr" led0.off () uxlash (3) chop etish ('xayr!') tanaffus boshqa: chop etish ('kalit so'z aniqlanmagan!') aiy.audio.say ("Kechirasiz, men sizni tushunmadim",) agar _name_ == ' _main_ ': asosiy ()

Tavsiya: