Kuidas ehitada robotit?

(Arvutimaailm 11/10)

? Üks tüüpiline robot on ratastel metallkonstruktsioon, mis teeb seda, mida talle on öeldud. Kuidas sellist robotit teha, palju see maksab ja mida vaja on?

! Lihtsamaid roboteid saab valmis teha käsitööna. Kuid tõsisem masin valmib vastavate töövahenditega – näiteks Solidworksi või SolidEdge´iga.

Lihtsamaid roboteid on võimalik ilma erilise projekteerimiseta käsitööna valmis ehitada. Kui robot on keeruline ja paljud detailid valmivad tööstuslikuna, tuleb kasutada roboti projekteerimiseks CAD-süsteeme (lühend ingliskeelsest fraasist computer aided design ehk arvutidisain). Kõige sagedamini kasutatakse mehaanika projekteerimiseks SolidWorksi või SolidEdge´i tarkvarapakette. Nendes annab kogu roboti disaini erinevad variandid läbi proovida, hoides hiljem aega ja raha kokku, mis oleks kulunud mittevajalike detailide valmistamisele.

Kõik detailid luuakse virtuaalsel teel ja nendest koostatakse omakorda koost, kuni valmib kogu robot. Detailide mudelite järgi valmistatakse ka reaalsed detailid. Lisavõimalusena on võimalik robotist fotorealistlik pilt arendada ja ka disainialaseid katsetusi teha ilusama väljanägemise nimel.

Veermik viib igas suunas
Roboti veermikuks on enamasti ratastega ühendatud elektrimootorid, mis koos kerega moodustavad kõiki teisi osi kandva platvormi. Elektrimootoritest on lihtsaim kasutada harjadega alalisvoolumootoreid, mida on kerge alalispingega juhtida, kuna harjad on kontaktis alati selle mähisega, mis paneb rootori magnetvälja suhtes pöörlema. Efektiivsem, kuid kallim on kasutada harjadeta alalisvoolumootoreid, mille mähiseid tuleb elektroonika abil õiges järjekorras kommuteerida. Tavalisel elektrimootoril üksinda pole piisavalt jõumomenti ratta pöörlema panemiseks ja selle pöörlemiskiirus on liiga suur, seega kasutada tuleb reduktoreid, milles hammasülekanne vähendab pöörlemiskiirust ja annab jõumomenti. Soovitav on elektrimootor soetada koos reduktoriga, sest siis ei pea hammasrattaid sobitama hakkama.

Erinevaid elektrimootoreid leiab mitmetest Eesti elektroonikapooditest ja spetsiaalsetest robootikapoodidest internetis.

Mootorid asetatakse enamasti kõrvuti nii, et üks mootor või mootorite grupp veab ühe poole rattaid, teine teise poole omi. Sisuliselt on tegu linttraktori stiilis diferentsiaalse veoskeemiga. Selliselt saab robot keerata nii sõidu ajal kui kohapeal. Jalgpallirobotites kasutatakse suurema manöördusvõime saamiseks omniwheel nimelisi rattaid. Need rattad moodustuvad ratta endaga ristisuunas pöörlevatest rullidest. See tähendab, et ratas saab veereda ka külgsuunas. Kui asetada kolm või neli sellist ratast kas 120- või 90-kraadise nurga alla, on võimalik robotiga sõita igas suunas ringi keeramata. Kaubanduses leiduvate omniwheel-rataste miinuseks on väike rullide arv, mistõttu siledal pinnal veereb ratas konarlikult.

Jalgadega robotitel kasutatakse aga liigendites servomootoreid. Nende iseärasuseks on võime hoida soovitud asendit. Servo koosneb tavalisest DC mootorist, mis läbi reduktori liigutab mootori võlli. Lisaks on veel mootori asendi tuvastamiseks potenstiomeeter ehk takisti, mille takistus muutub võlli pöörates ja juhtelektroonika. Ühe servomootori hind jääb 300 krooni kanti. Kuna jala või manipulaatori kohta tuleb 3-4 servot, siis kujuneb roboti lõplik hind küllaltki kõrgeks.

Kuidas toita robotit?
Suuremates robotites, kus on ka maksumus oluline, võib kasutada pliiakusid, mis on üsna odavad ja lollikindlad. Kui oluliseks muutub kaal ja mõõtmed, võib kasutada NiMH ja Li-Ion akusid, kuid kõige efektiivsemad on siiski liitium-polümeer akud. Need on mudelismis levinud akud, millel on metallkesta asemel pehme fooliumkate, seega on nad oluliselt kergemad, kui teised akud. Nende mahtuvus jääb mõne amper-tunni juurde, kuid nad suudavad lühiajaliselt välja anda sadu ampreid. LiPo akudega tuleb aga hoolikalt ringi käia sest nad ei talu liigset tühjenemist. Ka on nende laadimiseks vaja spetsiaalset laadijat.
Keerulisemates robotites kasutatakse peale elektri ka näiteks suruõhku. Ühe Robotexil kasutatud võistlusroboti pallide löömine töötas suruõhuga. Süsteemi eeliseks on lihtsus.

Elektroonika
Olulisim elektroonikakomponent lihtsamal robotil on mikrokontroller, milles töötab juhtiv programm. Mikrokontroller on umbes nagu arvuti, millel hulk primitiivseid LPT ja COM pordi sarnaseid ühendusi. Neilgi leidub USB-, Etherneti ja muid liideseid, kuid lõpuks taandub juhtimine ikkagi lihtsate loogika- ja analoogsignaalide peale.

Mikrokontrollereid saab elektroonikapoodidest hinnaga 50-300 krooni. Ainult mikrokontrollerist siiski ei piisa, neile on vaja veel lisakomponente, nagu kvartsostsillaator, mis paneb mikrokontrolleri mõne kuni mõnekümne megahertsise taktsagedusega tööle. Lisaks on veel toiteahela komponendid, nagu pingeregulaator, mis tagab olenemata aku tühjenemisest kindla toite ja kondensaatorid, mis siluvad kõikumisi.

Elektroonika vormistatakse trükkplaatidena, mille disainimiseks kasutatakse enamasti vabavaralist CadSofti toodetud Eagle´it. Programm võimaldab koostada trükkplaadi skeemi ja selle järgi plaadi pinnalaotuse. Vabavaralise versiooniga saab küll teha maksimaalselt kahekihilist piiratud pindalaga trükkplaati, aga rohkemaks ei ole enamasti vajadust. Programmiga tuleb kaasa suur kogu erinevaid komponente. Need koosnevad skeemitähisest ja jäljest. Skeemitähist on näha skeemi vaates. Jälge on näha plaadi pinnalaotusel ja see peab ühtima kompondi reaalsete mõõtmetega ja jalgade paiknemisega.
Trükkplaadid valmistatakse sageli ise, kasutades UV meetodit või ka kilele printimist ja hiljem kuuma triikrauaga tahma ülekannet. Viimane meetod on lihtsalt kasutatav ka kodustes tingimustes. Keerulisemad, metalliseeritud läbiviikudega ja mitmekihilised plaadid lastakse teha vastavates firmades.

Täiturid ja andurid
Täitureid ehk igasuguseid elektrivoolu füüsiliseks liikumiseks teisendavaid seadmeid, kaasarvatud veermikumootoreid juhitakse enamasti loogiliste (digitaalsete) elektrisignaalidega. Näiteks võib ühe tüüpilise AVR või PIC mikrokontrolleri üks viik (rahvasuus ka “jalg”) väljastada 0 või 5V pinget. Vool, mida selle pinge juures tarbida saab on väike, aga kui seda väljastav viik ühendada transistoriga, saab läbi transistori juhtima või mitte juhtima hakata juba oluliselt suuremat voolu. Kuna transitori läbib vool ainult ühes suunas, siis selleks, et panna mootor vastavalt soovile pöörlema mõlemat pidi, tuleb kasutada H-silla nimelist elektriskeemi. See skeem koosneb kahest transistorite paarist, millest ühed juhivad mootorist voolu läbi ühtepidi, teised teistpidi. Neid ei tohi muidugi korraga juhtima panna, sest see oleks lühis toiteallikale. Mootori kiirust reguleeritakse, kasutades PWM signaali, mille sagedus on enamasti 15 kHz. Sageli kasutatakse robootikas valmis H-silla mikroskeemi või koguni mootorikontrollerit, kuhu on sisse ehitatud lisaks H-sillale ka selle juhtloogika. Viimase hea omadus seisneb selles, et programmeerimise vea tõttu ei saa lühist tekitada.

Andurid on seadmed, mis annavad roboti mikrokontrollerile infot selle kohta, mis toimub roboti ümber. Peaaegu alati on robotil vaja aru saada takistuste olemasolust teel – selleks saab kasutada lihtsaid lüliteid, mis kontaktis takistusega saadavad mikrokontrollise loogilise signaali. Samas oleks targem juba enne kontakti teada takistusest või objektist, mida otsitakse ja siin tulevad appi erinevad kaugusandurid.

Kaks levinumat kauguse mõõtmise meetodit lihtsatel robotitel on optiline triangulatsioon ja ultraheli kaja saabumise aja mõõtmine. Esimest meetodit kasutavad praktiliselt ainult firma Sharp infrapunaandurid. Teise meetodiga andureid toodavad mitmed firmad. Infrapuna-kaugusandurite hinnad jäävad 150-450 krooni vahemikku ja ultraheli omad 300-650 krooni vahele.

Võimekamad robotid on varustatud kaameraga ja selle pilti analüüsiva pardaarvutiga. Peale kõrgema hinna tuleb pildi analüüsimiseks kirjutada ka rohkem tarkvara, mis võib vahel ka üsna keeruline olla.

Tarkvara
Kui eelnev programeerimise kogemus puudub, siis robotile tarkvara kirjutamine võib rohkemgi aega võtta kui roboti ehitamine. Samas võib tarkvara kirjutamise käigus osutuda vajalikus robotit ümber ehitada, sest alles roboti liikumapanemisel selgub, kuidas kontseptsioon ennast tõestab. Kui robotit juhib PC, käib selle programeerimine samade vahenditega, millega tavalisi arvutiprogrammegi tehakse.

Mikrokontrollerite tootjad seevastu on valdavas enamuses varustanud kasutajad vaid C keele kompilaatoriga. C keele programmist tehakse Assembler ja sellest masinkood, mis laaditakse spetsiaalse füüsilise programmaatori abil mikrokontrollerisse, kus see toitevoolu ühendamisel tööle hakkab. Kompilaator ja programmaator on olulised asjad, mille kättesaadavuse ja hinna üle peaks mikrokontrolleri valikul otsustama.

Mikrokontrolleri programm taandub väga lihtsustatult lõpuks mikrokontrolleri viikude lülitamisele ja nende oleku lugemisele. Seega tüüpilises roboti programmis loetakse pidevalt sisendeid, mis saabuvad anduritest ja määratakse väljundeid, mis juhivad täitureid. Programm töötab sisuliselt lõputus tsüklis, milles korduvalt otsustatakse nii uute kui vanade andmete põhjal, milliseid täitureid ja kuidas juhtida.

Programmi lihtsustamiseks jagatakse see tihti vastavalt tegevustele olekuteks. Näiteks jalgapalliroboti üks olek võib olla palli otsimine, teine selle löömine.
Tarkvara koostamisel on soovitav programm jagada vähemalt kaheks – algoritmi osaks ja täitevfunktsionaalsuseks. Viimane võib kanda ka teegi nime, mis on sisuliselt kogum funktsioone roboti andurite ja täituritega suhtlemiseks. Kasutades funktsioone, pole algoritmi tasandil vaja tegeleda mikrokontrolleri spetsiifiliste käskudega.

Tarkvara kirjutamine ei maksa reaalselt küll midagi, aga see võtab palju aega, seega tasub enne selle koostamist natuke planeerida ja vältida programmi muutumist niiöelda spagetiks. Samuti tuleb arvestada, et tarkvara testimine võtab aega, kuna robotit tuleb pidevalt paika sättida ja vahel ka akut laadida.
Tavaliselt on iga programmeeritava üksuse jaoks loodud oma programmeerimiskeskond. See koosneb tekstiredaktorist, kuhu kirjutatakse koodi, kompilaatorist, mis genereerib masinkoodi ja debugimise vahenditest. Viimased võimaldavad avastada vigu ja jälgida programmi tööd. Kui tegemist on mikrokontrolleriga, siis kasutades spetsiaalset riistvara on võimalik jälgida selle mälu ja registrite sisu. Levinud võimalus on ka koodi sammhaaval käivitamine, kuna reaalselt toimub käskude täitmine tuhandeid kordi sekundis.

Robotites on väga sageli kasutuses ATmega toodetud AVR protsessorid. Nende programmeerimiseks kasutatakse AVR Studio 4 nimelist programmi. Kuna antud tüüpi mikrokontroller on väga levinud, on selle jaoks ka teisi keskkondi.
Keerulisemaid roboteid juhib enamasti arvuti. Olenevalt operatsioonisüsteemist kasutatakse erinevaid süsteeme. Windowsi jaoks on üks levinumad keskkondi Microsoft Visual Studio. Keerulisemad videotöötlust kasutavad süsteemid on kirjutatud enamasti kahes keeles. Kasutajaliides ja muud osad, mis ei pea reaalajas jooksma, kirjutatakse C#-is. Kiired videotöötluse rakendused luuakse, kasutades keelt C++ ja lingitakse põhiprogrammi külge dll (Dynamic-link library) failidena.

Roboti ehitamine üldiselt läheb maksma ligikaudu 2500-3000 krooni pluss tööaeg, arvutite olemasolu ning tahtmine asja teha lõpuni.

Mikk Leini
TTÜ Robotiklubi juhatuse liige
Artikli koostamisel olid abiks Heiko Pinker ja Katrin Haug

Kasutame veebilehel nn Cookie´sid, et toetada tehnilisi funktsioone ja pakkuda sellega paremat kasutajakogemust.

Kasutame ka andmeanalüütikat ja reklaamiteenuseid. Klõpsa nupul Rohkem teavet, kui tahad lähemalt teada.