Elektronika.lt

Elektronika.lt - elektronikos, informacinių ir
ryšių technologijų portalas

Adresas: http://www.elektronika.lt
El. paštas: info@elektronika.lt
 Atspausdinta iš: http://www.elektronika.lt/projektai/elektronika/38277/sukonstruotas-robotas-su-vaizdo-ir-kalbos-atpazinimu/spausdinti/

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu (papildyta)

Publikuota: 2013-02-04 10:16
Tematika: Elektronika, automatika
Vykdytojai: Mėgėjai
Autorius: el. paštas Arnoldas Černiakovas
Inf. šaltinis: Arnoldo robotas

Pagrindinė plokštė su „Atom525“ (18 cm x 18 cm). 2 akumuliatoriai lygiagrečiai sujungti nuo UPS-o (2 x 7 Ah = 14 Ah). ATX maitinimą tiekia keitiklis 12 V -> ATX. 2 USB kameros „Logitech 120“ ir „Logitech 160“ valdomos servų (SSC32 valdiklis). Važiuoklę valdo „eProDas“ valdiklis.


Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Atnaujinta: 2021 08 17 d.

Naujas variantas su neuroniniais tinklais. Pagrindinė pl. (18 x 18 cm) proc. 4 brand. „Intel j1900“ (2,4 GHz).

Ką moka robotas:

  • Atpažįsta veidą ir seka kamerom.
  • Randa nurodytą daiktą ir seka kamerom.
  • Stereo, matomo vaizdo gylio (atstumas iki objekto) nustatymas, ieško toliausio ir artimiausio taško, galima nustatyti apytikslį atstumą iki daikto. Naudojama roboto navigacijai. Aplinkos supratimui.
  • Seka nurodytą tašką.
  • Supranta garsines komandas, komandų dabar nedaug ~50, tai tik bandymas, galima pridėti daug, kiek norima komandų.
  • Gali kalbėti, panaudotas atviro kodo „eSpeak“ variklis.
  • Neuroniniai tinklai atpažįsta veido kontūrus, 1000 daiktų, gyvūnų ir kt. objektų. Veido atpažinimas dar neturi neuron. t. atpažinimo. Programa rašoma.

Visi roboto interfeisai pagaminti ant montažinių plokščių. Schemos ir programų išeities tekstai (source) – ~1,6 GB.

***

Pagrindinė plokštė su „Atom525“ (18 cm x 18 cm). 2 akumuliatoriai lygiagrečiai sujungti nuo UPS-o (2 x 7 Ah = 14 Ah). ATX maitinimą tiekia keitiklis 12 V -> ATX. 2 USB kameros „Logitech 120“ ir „Logitech 160“ valdomos servų (SSC32 valdiklis). Važiuoklę valdo „eProDas“ valdiklis.

Vaizdo atpažinimas „OpenCV“, garso atpažinimas perdarytas „Julius“, „socket“ ryšio modulius su „julius“. Viskas parašyta „Code::Bloks“ + „MinGW“ aplinkoje.

Ką gali robotas:

  • atpažįsta veidą ir seka kamerom, (važiuoklė dar nedarašyta, tik ką pabaigiau mechaniką)
  • randa nurodytą daiktą ir seka kamerom, (važiuoklė nedarašyta)
  • Stereo, matomo vaizdo gylio (atstumas iki objekto) nustatymas, ieško toliausio ir artimiausio taško, galima nustatyti apytikslų atstumą iki daikto. Naudojama roboto navigacijai. Aplinkos supratimui.
  • Seka nurodytą tašką.
  • Supranta garsines komandas, komandų dabar nedaug, tai tik bandymas, galima pridėti daug, kiek norima komandų.
  • Gali kalbėti, panaudotas atviro kodo „eSpeak“ variklis.

Visos programos neoptimizuotos, daug globalių kintamųjų reiks naikinti, architektūra turbūt keisis daug kartų, čia tik pabandymas.

Reikalinga:

  • „MinGW“
  • „Dev-Cpp“ (kažkurias bibliotekas naudojau, nepamenu)
  • „OpenCV 2.42“ yra jau sukompiliuotas variantas, jei ne, + „CMake 2.8“ ...
  • „cvblobslib_OpenCV_v8_3“
  • „eSpeak“
  • „HTK tools“
  • „Code::Bloks“ + „MinGW“
  • „wxWidgets 2.8“

Važiuoklė

Apačioj, schemoj, kur atskirai du mikroschemos 7400 elementai, analogiškas variklio valdymo kanalas kaip viršuj, t. y. 2 DC varikliai (vietoj bc548, panaudojau bc639 galingesnis ir 3K varžas gal sumažinti iki 1K). Aš panaudojau variklius su reduktorium nuo „Mazda 626“ stiklo pakelėjų. Papildomai pastačiau po guolį ant išeinančio velenėlio. Galinis ratas baldinis, laisvai sukantis apie savo ašį.

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Važiuoklės valdiklio schema:

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

„eProDas“ aprašymą ir programą HEX faile surasite internete.

Jų tarpusavio sujungimo schemą atstos valdymo programa (PIC USB „Code::Bloks“ aplinkoje), ten visi IN/OUT aprašyti:

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Lengvai galima suprasti.

Dar prie „eProDas“ jungiasi kliūčių davikliai su „Atmega8“ (schema netvarkinga, kam reiks, „Proteuse“ susitvarkysite):

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

4 buferiai PB4-PB7 porte (mikroperjungėjai arba holai), aš panaudojau 4 holus, o ant buferio – magnetai.

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

PB0–PB3 išėjimai į „eProDas“, nusakantys, kurioj iš 4 pusių kliūtis.

PD4, PD5 kliūties nustatymo kanalas:

PD4, PD5=0 => suveikė paprasti IR davikliai. Mažiausias prioritetas, aprašymas ir šios dalies schema yra www.elektronika.lt. Jie pakabinti ant analoginių įėjimų.

PD4=1, PD5=0 => didžiausias prioritetas, suveikė mech. daviklis.

PD4=0, PD5=1 => kliūtį pamatė TSIOP davikliai.

PD7 – ant šios kojos pakabinti 2 TSOP davikliai. Priekyje TSOP 36 KHz, gale TSOP 38 KHz (kad dažniai priekio ir galo nesimaišytų). Kad dažniai būtų TSOP-ams 36 ir 38 KHz, „Atmega8“ fuses nustatyti į 8 MHz. Arba dar papildomai pažaisti su „Atmega8“ dažnio konstanta ar programoje su užlaikymais ir „nop-ais“. TSOP pastatyti centre, kadangi IR šviesos diodus perjunginėju, nustatau kurioj pusėj kliūtis.

PD0–PD4 – IR šviesos diodai (pastačiau po 4x4)

Paderinamos varžos, daviklio signalo užlaikymo (kad spėtų kompiuteris pamatyti) ir paprastų analoginių daviklių jautrumas.

Kamerų ir manipuliatorių rankinis valdymas

Panaudotas SSC32 valdiklis. P0 kanalas, kameros Y ašis, P7 – X ašis (taip gavosi lituojant valdiklio schemą). Manipuliatoriai dar daromi... Schemą SSC32 surasite internete.

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Dar baigiama schema (dar viena plius „Atmega8“) ir programa prie SSC32, servo variklių perkrovom matuoti ant jo 4 įėjimų.

Gal ką sudomins, gal kas panaudos kažką savo projektuose...

Projekto failai

Nuotraukos

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

2014 m. sausis. Intelektualaus roboto projektas pasistūmėjo į priekį

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Išorinių įrenginių valdymo skydas. Įėjimų-išėjimų aktyvavimui

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Valdymo skydo darbo režimai:

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu     Važiuoklės, IR daviklių ir 32 servo variklių valdymas ir vizualizacija (servo variklių valdymas – „Atmega8“, važiuoklė – PIC18F4550+„Atmega8“)
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu     Maitinimo įtampų kontrolė, įtampų grafikai, įėjimų-išėjimų valdymas. („ATmega32)
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu    Enkoderių vizualizacija – reikšmės, greitis, nuvažiuotas atstumas  („Atiny2313“). EEPROME galima išsaugoti 3 enkoderiu reikšmes – atskaitos taškus pvz. išjungiant robotą.
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu    Sonaras („Atiny2313“). Mato roboto priekyje kliūtis nuo 40 cm. iki 3–4 m.
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu  „STM32F4Discovery“ plokštės  įėjimų-išėjimų valdymas ir vizualizacija. Čia vėliau galvoju šia plokšte pakeisiu visas kitas, nedarašytas tik PC softas, „firmwaras“ pilnas. Gerai neišbandytas stabilumas. Pvz. šviesos diodais, esančiais ant plokštės galima mirksėti.

Visų aukščiau išvardintų valdymo skydo darbo režimų paskirtis – išbandyti išorinių įrenginių veikimą, programavimo galimybes, apsikeitimo greitį, stabilumą, o tik paskui jie liko, kaip roboto rankinis valdymas ir vizualizacija.

1. Važiuoklės, IR daviklių ir 32 servo variklių valdymas ir vizualizacija

Šis darbo režimas jau aprašytas. Buvo klaidų programose, dabar daugelis klaidų ištaisyta.

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

2. Maitinimo įtampų kontrolė, įtampų grafikai ir „Atmega32“ įėjimų-išėjimų valdymas

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

3. Enkoderių vizualizacija

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Davikliai – optopertraukiklis LTH-209-1 nuo atspindžio (taip vadina „Evitoj“ optoporą) 4 vnt., ant rato po 2 vnt., kad nustatytų kryptį. Pasidariau trafaretą ir ant rato ratlankio juodais matiniais dažais uždažiau 18 juodų juostelių (neuždažyti ir uždažyti tarpai lygūs). Daviklius išdėstyti taip, kad spindulys vieno papultu ant juodo pradžios, o kitas pataikytų į juodo vidurį. Pati schema su programom yra archyve.

4. Sonaras

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Kliūtys priekyje žali brūkšniukai. Panaudoti 3 automobiliniai, ultragarsiniai parkavimo davikliai. 2 siųstuvai ir imtuvas. Kad būtų atstumas didesnis vieno siųstuvo nepakako. Mažiausiai problemų būtų jei naudoti „MaxBotix“ daviklius. Bet šiuos jau turėjau. Esama analoginės dalies schema, kuri yra archyve truputi neatitinka, nes derinimo metu tai kondensatorius pridėtas, tai varža kitokia.

Pati „Atiny2313“ programa veikianti be problemų. Su „MaxBotix“ davikliais yra pilna įėjimo stiprintuvų schemų. Sonaras ir enkoderiai ant vieno RS232. Skiriasi tik komandos, kada sonaras išduoda reikšmes, tada enkoderis „tyli“. MAX-o TTL įėjimai lygiagrečiai, išėjimai:

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

5. „STM32F4Discovery“ įėjimų-išėjimų plokštė

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

„Firmwaras“, tvarkyklės ir valdymo programos išeities kodai yra archyve. Uždėjus varneles, kaip parodyta paveikslėlyje, galima pvz. uždegti-gęsinti šviesos diodus. Portas A kažkiek parašytas, na pažiūrėjus į programos išeities kodą galima ir patiems baigti rašyti. Galima valdyti visus laisvus išvadus, priskirti, kad būtų įėjimas ar išėjimas; jei įėjimas, tai kokia įėjimo būsena (0,1); jei analoginis įėjimas, kokia ADC reikšmė; jei išėjimas, tai kažką valdyti.

Išvardytos sąsajos gali būti panaudotos atskirai jūsų būsimiems projektams. Manau, medžiaga kažkam padės kurti savo projektus.

Roboto vaizdo atpažinimo funkcijos

1. Roboto valdymo pagrindinis meniu

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

2. Veido atpažinimas

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Kai naudosite savais tikslais, ištrinkite visus mano duomenis, „C:ROBOTASAROSdata“ kataloge veidų paveiksliukus ir failus esančius „C:ROBOTASAROSDuomenysfacedata_tuscias“ kataloge užrašyti ant esančių. Tai padaryti reikia, nes nereikalingi veidų etalonai stabdo režimo darbą.

3. Scenos stereo gylis

Galima išsaugoti ir pažiūrėti 3D.

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Tas pats vaizdas pasuktas statmenai. Kad tokį išgauti, reikia labai gerai nukalibruoti kameras.

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

4. Ieškoti daiktus

Pirmas variantas

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Antras variantas

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

5. Detektuoti judesį judesių kiekį, intensyvumą, reaguoti į judesį tik nurodytuose zonose

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu
Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Na čia tik keli pagrindiniai pavyzdžiai. Darbo režimų yra žymiai daugiau. Kai kurie darbo režimai 320x240 raiška. Roboto pagrindinė plokštė „Intel 525mw“ su „Atomu“. Pas ką geras kompiuteris, veiks su 640x480 raiška ir didesne. Tik reiks perkompiliuoti.

Kalbos atpažinimas

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Padarytas lietuvių kalbos modelis, bet dėl laiko stokos mažai apmokytas, aišku jis gerai supranta tik mano šneką, kitų klauso nepatikimai, bet bandėm – supranta. Reikia tarti žodžius aiškiai, garsiai ir neskubant. Tarp žodžiu ilgesnės pauzės. Mikrofonas paprastas „Acme“. Na ne visi mikrofonai gerai dirba, reikia atrinkti bandymo keliu. Ne su visom garso plokštėm dirba gerai. Aš serverį paleidžiu ant nešiojamojo kompiuterio ir per „Wi-Fi“ robotas jungiasi. Bandžiau paleisti serverį ant roboto, surinkta automatinio stiprinimo schema su BA3308, bet dirba nelabai gerai. Parašiau „socket“ klientą. Gal su radiomikrofonu būtu gerai?

Nustatymuose reikia nuimti visokius „micboost“, automatinius stiprinimus ir pan., na viską (plikas įvedimas, mikrofono garsumas 50–80 %). Kalbos atpažinimo serveris perrašytas savo tikslais „Julius“, kuris paleidžiamas ant kito kompiuterio, parašytas roboto „socket“ klientas kuris prisijungia prie serverio per LAN. Serverio adresas ar vardas nustatomas roboto sisteminiame meniu.

Dabartiniu metu robotas atpažįsta 130 žodžių ir jų kombinacijas. Jei kam reikės serverio išeities kodų – atsiųsiu. Serveris gali būti paleistas ir tame pačiame kompiuteryje, tada reikia adresą nustatymuose rašyti 127.0.0.1 ir leisti serveriui startuoti robotas.bat faile.

Planuoju parašyti 3D scenos atkūrimą (aplinkos plano atkūrimą), pagal enkoderių, sonaro, optinių daviklių ir kamerų duomenis. Tada pvz. „SQL lite“ duomenų bazėje saugot patalpų planus, ar xml yaml failuose.

Jei robotas mato erdvinį vaizdą, girdi, tai išmoks ir daiktus paimti... Vienas manipuliatorius jau padarytas, antram visos detalės yra, reiks galingą 5–6 V stabilizatorių sukonstruot.

Sukonstruotas robotas su vaizdo ir kalbos atpažinimu

Yra problema su kamerų stereo kalibravimu. Yra atskiras darbo režimas kalibruoti su šachmatų lenta, bet po kurio laiko kamerų lygiagretumas pasižeidžia ir vėl visas vargas. Dar kamerų matricų apskaičiavimuose yra klaidų, bet daugmaž skaičiuoja, kažkada reiks darašyti. Mano interneto kameros sukiojasi ant šarnyrų, vos vos nukrypo – viskas, stereo gylis blogas. Po kalibravimo reikia kameras tvirtinti tvirtai.

Visos schemos su išeities kodais pateikiamos archyve. Jei kas neaišku – rašykit, padėsiu.

‡ 1999–2024 © Elektronika.lt LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!