Kasutaja tarvikud

Lehe tööriistad


projektid:voistlusrobotid:standardsumo:slayer

Sumorobot "Slayer"

Ajalugu

Tegu on rahvusvahelistele standarditele vastava 3kg klassi autonoomse sumorobotiga. Robotit hakkas ehitama Robotiklubi meeskond „Tõsimeelsed“ 2008 aasta veebruaris "Sumorobotite ehitamise kursus 2008" raames. Enne roboti loomist tutvuti videomaterjaliga maailmaklassi sumorobotitest ja üritati neist eeskuju võtta. Meeskonna nimele kohaselt sai idee üsna konservatiivne - teha lihtsalt kiire ja tugev robot. Esimene asi mida vaja läks olid mootorid. Kuna roboti mõõdud on piiratud siis sobivate mootorite leidmine oli tükk tööd. Ümber mootorite tehti duralumiiniumist kere ja paigutati kõik muu sinna kuhu mahtus. Loomulikult toimus tegevus enne reaalset ehitamist 3D modelleerimistarkvaras.

Kursuse eesmärk oli jõuda aprillis Riiga „Robotika 2008“-le võistlema. Nagu see ikka kipub olema, jäi ka Slayeri lõpuni ehitamine viimastesse ööpäevadesse. Füüsiliselt sai küll asi valmis, aga programm jäi puudulikuks. Võistlus algas hästi - esimeses raundis sai vastane puruks sõidetud ja rohkem midagi selgitada polnud vaja. Ka teine kohtumine veerandfinaalis läks hästi, kuid probleemid tekkisid poolfinaalis. Nimelt otsustasime täis aku sisse panna, kuid ühele mootorikontrollerile see ei meeldinud ja ta ei läinud tööle. Niisiis ühe raundi kaotasime, kuid viga sai parandatud ja algas teine raund. Siis jäi õnne väheks ja ilmsiks tuli roboti nõrgim külg - selle sahk. Vastasega vastamisi kokkusõit lõppes meie roboti esiotsa maast üles tõusmisega ja abitu õhus siplemisega. Demovõistlustel selgus ka, et robot näeb prožektoritevalguses anduritega palju viirastusi. Ühesõnaga hädasid jagus.

Standardne sumorobot on hea asi kuna sellega saab ka rohkem kui ühel võistlusel käia ja selle arendamisel on mõtet. Niisiis otsustatigi Slayeri uuendatud versiooniga osa võtta „Baltic Robot Sumo 2008“-st septembris Riias. Selleks korraks sai välja vahetatud mootorikontrollerid, andurid said ümber paigutatud, ette sai allakäiv sahk tehtud ning põhja alla sai magnetid pandud. Tagatipuks oli ka aega programm aegsasti valmis kirjutada. Tulemus loomulikult oli oluliselt parem kui enne. Võistlusel eelproove tehes tekkisid suured probleemid roboti väljakul püsimisega, aga õnneks leidsime põhjuse kiirelt üles - väljak oli nimelt uue värvikihi all mis läikis palju. Tuli jooneandurite tundlikkust maha keerata ja olime jälle konkurentsis.

Võistlus algas natukese kurvalt kuna esimeses raundis kohtusime võistlusel teise koha saavutanud robotiga millele 2:1 kaotasime ühe hilinenud stardi tõttu. Samas oli seekord võistlusformaat parem - kõik robotid kohtusid omavahel ja loeti punkte. Peale esimest kohtumist võitsime kõiki teisi sest asi töötas lausa laitmatult. Vaid ühe korra 14-st sõitis robot ise väljakult välja. Punktide alusel korraldati poolfinaal ning finaal, kus lõpuks ka olime ja võitjana väljusime. Eesmärk sai täidetud - Slayer sai oma parimasse võimalikku vormi viidud ja võistlus sai võidetud. Edasisi arendusi, mis tähendavad ümbertegemist, robotil plaanis pole ja see jääb nii nagu ta on. Küll aga tekkis ehitamise käigus palju uusi ideid mida uue sumoroboti juures rakendada.

Tehnika

Mootorid

Slayer-i põhilised komponendid on selle 4 sõidumootorit sest nendest sõltub paljuski kõik muu. Kasutusel on elektrilistele kruvikeerajatele mõeldud 15 V alalisvoolumootorid koos 1:6 reduktoriga mis tagas jõumomendi 0.5 Nm ja pöördekiiruse 410 RPM. Mootorid sai valitud koos ratastega teoreetiliste arvutuste tulemusena. Mootoreid tuli modifitseerida, et neile rattad otsa sobiks ja et nad robotiga ettenähtud mõõtudesse jääksid. Pehme kummiseguga rattad on pärit 1:12 suurusega automudelite klassist ja neid on tänu standardile võimalik välja vahetada. Nelja mootori kaal on ligi 1,5 kg.

Vastavalt mootorite parameetritele sai valitud ka mootorikontroller. Kuna robotil on differentsiaalne sõiduveermik, kus vasaku ja parema poole rattad veavad iseseisvalt, siis pidi ka mootorikontrollereid sisuliselt 2 olema. Valitud sai duubel-mootorikontroller Sabertooth 2×10 mis tüürib mõlema poole voolu kuni 10 A piires. Võrreldes eelnevalt kasutatud mudelautode kiiruskontrolleritega oli see oluliselt parem - nii töökindluselt, võimalustelt ja hinnalt. Mudelautode kiiruskontrollerid ei võimaldanud hoo pealt mootori reversseerimist mis on väga halb omadus sumorobotil mis peab kiiresti suutma igas suunas sõita. Uus mootorikontroller oli sellest puudusest vaba.

Kere

Roboti kere loodi nii nagu mootorid seda võimaldasid. Keskne koostisosa on 3 mm duralumiiniumist põhjaplaat, kuhu kinnituvad mootorid koos ratastega, küljed, sahk, magnetid ja andurid. 2 suurt ava põhjaplaadis on jäetud õhu imemiseks põhja alt, et paremat haaret tekitada. Alarõhu tekitamine jäi küll ära, sest propeller ei mahtunud kuhugi ära ja oluliselt lihtsam oli magneteid kasutada, sest väljak on terasest. Roboti kõik 4 külge said ka 3 mm duralumiiniumist CNC masinaga välja lõigatud. Katus kui kõige vähem ohus külg sai 1,5 mm duralumiiniumist katte. Kõik küljed ühendasime 10 x 10 mm alumiiniumist nelinurklattidega millesse keerasime M4 kruvid. Masinatega lõigatud kontruktsioon sai täpne ja nelinurklatid hoidsid keret tugevalt koos. Muidugi tuli kere üsna raske, aga mitte nii raske kui mootorid.

Esimese hooga robotit tehes tunduski, et mida raskem robot, seda suurem impulss vastasele sisse sõites ja seda suurem rataste pidamine tänu raskusjõule, kuid suurem mass tähendab ka aeglasemat kiirendust ning pidurdamist. Kuna mootorite veojõud oli varuga valitud siis lisasime robotile põhja alla ka 4 neodüümmagnetid kunstliku raskusjõu ning sellega kaasneva pidamise, ehk hõõrdejõu tekitamiseks. Mõõtmistulemused näitasid, et magnetite abil tekib ~2 kg kunstlik raskus. Magnetide tõmbejõudu saanuks ka suurendada kuid tekkisid probleemid roboti kohapeal keeramisega - see läks lihtsalt liiga raskeks mootorite jaoks kuna külgsuunas kummid eriti ei libise.

Algselt oli mõttes kere katta musta riidega, et vastasele nähtamatuks jääda. Samas tuli robot ainult millimeetrite jagu väiksem etteantud mõõtudest ning roboti katmine oli küsitav. Lõplikult otsustasime riidega katmisest loobuda kui testid infrapunakaugusmõõdikutega näitasid, et õhuke must riie valgust piisavalt ikkagi ei neela. Haljas metall nägi ka kenam välja.

Üks olulisemaid täiendusi Slayeril on selle allakäiv sahk. Sahk tuli allakäivana teha kuna roboti mõõdud ei võimaldanud fikseeritud sahka kasutada. Sahk kinnitub kahe liigendiga, mida surub alla vedru. Ühel liigendil on päästikusüsteem, mida käivitab pisike servomootor. Sahk oli algselt plaanis teha 4 mm terasest kuid see sai nii massiivne, et läksime 1 mm teraspleki kasutamise peale. Plekk on küll suhteliselt kerge ja nurga alla painutamisel jääb ka üsna jäigaks kuid suurematel kokkupõrgetel deformeerub ikkagi. Plektist sahkasid on aga lihtne juurde teha.

Andurid

Õnneliku mõõtude kokkusattumise tulemusena saime mootoripukside vahele, mootorite alla panna infrapuna (IR) kaugusmõõdikud. Mootorite all, sügaval kere sees ei paista neile väline valgus (ja IR kiirgus) niipalju sisse kui ees- või tagaotsas olles. Sügaval keres olekul on ka teine eelis - kuna Sharpi IR kaugusmõõdikute väljund distantsi vähenedes alla ~20 cm muutub samamoodi nagu distantsi kaugenedes, siis välistades vastase sattumise lähemale kui ~10 cm saime kaugusmõõdiku ebausaldusäärse näidu 30 cm peale. Teisisõnu - kui vastane on meie robotiga vahetus kontaktis, siis kaugusmõõdik näitab, et ta võib olla kas 0 või 30cm kaugusel esiosast. Igatahes on see parem kui kasutada IR kaugusmõõdikut otse esiosas kus vahetu kontakti puhul ei saa kindlalt öelda kas vastane on 0 või 80 cm kaugusel. Tagumisi IR kaugusmõõdikuid nii sügavale keresse panna ei saanud kui esimesi ja nende ebausaldusväärsus jäi 40 cm peale.

Roboti kõigis neljas nurgas, võimalikult serva lähedal on optilised peegeldusandurid. Need on IR LED-ist ja fototransisistorist koosnevad pisikesed seadmed mis võimaldavad mõõta peegeldunud valguse intensiivsust. Kuna väljakut piirav valge joon peegeldab valgust paremini siis selle info abil saab teada kas robot on joonel või mitte.

Elektroonika

Roboti ajuks sai Robotiklubis sumorobotitel ja ka üldiseks kasutamiseks loodud Pisi-XBee mikrokontrolleri plaat ATmega168 mikrokontrolleriga. Plaadil on 8 ADC sisendit, 6 PWM väljundit ja mõned IO otsad. Tähtis osa on XBee raadiosidemoodulil, mille kaudu saab programmi laadida ilma juhtmeta ja mis võimaldab ka roboti katsetamisel infot saada tema olekute kohta. Kontrolleriplaat koos karbiga on tikutoosi mõõtu ja varustatud 3 viiguliste (signaal, +5V, maa) otstega millega ühilduvad kõik mudelismist pärit mootorid, kiiruskontrollerid ja ka analoogväljundiga andurid.

Mikrokontrolleri ADC otste külge ühendasime 4 IR-kaugusmõõdikut ja 4 jooneandurit. Kahe PWM otsa külge läks mootorikontroller ja ühe külge servomootor. Ühe IO viigu külge tuli stardi/stop nupp ja teise külge LED roboti stardist teada andmiseks. Toitevool elektroonikale ja mootoritele tuleb 11,1 V 1600 mAh liitium-polümeer akust mis annab hetkeliselt välja kuni 25 A. Mikrokontrolleri plaadile vajaliku 5 V tekitamiseks on kasutusel pingeregulaator mis on jahutuseks kere külge kinnitatud.

Eesmärk elektroonikaga oli kasutada võimalikult palju kompaktseid valmislahendusi ja asju mida osta ei saanud tegime ise moodulitena. Tulemusena ei jäänud koledaid juhtmepuntraid ja lühiseohtu. Ei saa küll öelda, et juhtmed päris jalust ära oleks, aga vähemalt on igal seadmel ainult üks konkreetne tähistatud juhe ja nad on mehhaaniliselt liikuvatest osadest eraldatud. Kõike seda tegime töökindluses veendumiseks ja inimlike eksimuste vältimiseks.

Programm

Programm sai kirjutatud Robotiklubis arendatud AVR C++ Lib-i kasutades C++ keeles AVR-GCC kompilaatorile. Kõiki roboti osasid on käsitletud objektidena mis võimaldab seadme töötoime muutumisel põhiprogrammi samaks jättes seadmeklass välja vahetada. Ka esteetiliselt näeb objekt-orienteeritud kood parem välja.

Kõige olulisem programmi juures on roboti algoritm. Üldjoontes sõidab Slayer vaikselt ringi ja otsib vastast. Vastast nähes põrutab ta täiskiirusel otse tema poole, vajadusel kurssi korrigeerides. Väljaku piirjoonele jõudes toimub sellest taganemine olenemata sellest kas vastane on ees või mitte. Pealtnäha pole algoritmis midagi keerulist, kuid mängus on palju nüansse.

Suur probleemide põhjustada on roboti mass. Olgu mootorid kui tugevad tahes, kuid isegi magnetide tõmbejõuga robot libiseb. See tähendab, et järskudel liigutustel ei saa kindel olla mis robot täpselt teeb. Ka rataste positsioonianduritest ei oleks siin kasu. Probleemi kõige lihtsam lahendus on kiirust vähemaks võtta ja riskida vastasele alla jäämisega. Üldiselt me seda ka tegime, vähemalt vastase otsimise staadiumis, kuid ikkagi jääb suur oht iseseisvalt väljakult välja sõita.

Robotil on neli joonandurit neljas nurgas mille abil ta teab mis küljega ta joonel asetseb või selle juba ületas. Joone ületamine tähendab, et selle ületanud andur joont enam ei näe ja tema jaoks paistab kõik korras. Siin tekib aga lihtsa algoritmiga viga ja robot võib väljakule tagasi sõitmise asemel hoopis sealt välja sõita. Sellise olukorra vältimiseks on kasutusel tarkvaralised lipukesed mis lähevad püsti kui jooneandur näeb joont. Maksimaalselt lähevad püsti 2 lipukest, mis näitavad ära ka joonele sõitmise suuna. Järgneb ajaliselt määratud tagurdusoperatsioon ja alles pärast seda, kui joont enam näha pole, toimub lipukeste nullimine. Meetod osutus üsna efektiivseks, kuid esineb situatsioone kus robot sõidab hoopis joonelt tagurdades teistpidi välja. Selleks, et robot tagurpidi välja ei sõidaks, tuleks tagurdamise kiirust ja aega vähendada - samas seda tehes võib mõnikord tagurdamine aeglaseks jääda.

Vastase leidmine toimub IR-kaugusmõõdikute abil. Kui vastast näeb (distants vastaseni on alla mingi piiri) üks või mõlemad tagumised kaugusmõõdikud siis robot teeb kiire ~180 kraadi pöörde. Ümberpöördega on aga selline lugu, et seda ei tehta kohapeal vaid väikese pöörderaadiusega - millega samas kaasneb risk, et robot lükatakse palju lihtsamini välja kui piisavalt kiire vastane teda parasjagu tagant lükkab. Kui vastast näevad esimesed IR-kaugusmõõdikud, siis toimub täiskiirusel ründamine. Selleks, et vastasele pihta saada ongi kasutusel kaks IR-kaugusmõõdikut. Nimelt, algoritm korrigeerib roboti kurssi selliselt, et alati näeksid vastast mõlemad kaugusmõõdikud. Kui näeb ainult vasak andur siis keeratakse sõidu pealt natuke vasakule, kui näeb parem siis keeratakse paremale.

Täpsemalt on algoritmiga võimalik tutvuda programmi lähtekoodi uurides. Olulisemad osad on koodis kommenteeritud. Kõik ajad ja kiirused on programmis katse-eksitus meetodil täis aku jaoks paika pandud. Kusjuures aku pingest sõltub ratastelt tagasisidet saamata päris palju. LiPo akude pinge langeb õnneks küll täis oleku ajal aeglaselt.

Komponendid

Komponent Parameetrid Allikas Tootekood Kogus
Mehhaanika
Duralumiinium kereks 500 x 300 x 3 mm Mudelipood 3 tk
Duralumiinium kereks 500 x 300 x 1.5 mm Mudelipood 1 tk
Terasplekk sahaks 198 x 25 x 1 mm TTÜ 5 tk
Alumiinium 1 mm Robotiklubi natuke
Nelinurklatt 10 x 10 mm Sapa 900-0034-00 3 m
Nelinurklatt 20 x 10 mm Sapa 1 m
Polt M4 x 12 mm, 6-kant Baltic Bolt 20 tk
Polt M4 x 16 mm, 6-kant Baltic Bolt 20 tk
Veorattad 65mm diameeter Mudelipood 4 tk
Rataste kinnituspuksid 6-kandilised Käsitöö 4 tk
Elektroonika
Reduktoriga DC mootor ~0.5Nm, 410 RPM RS-estonia 321-3158 4 tk
Servo-mootor sahale micro-servo Mudelipood 1 tk
Mootorikontroller 2x10A Active Robots Sabertooth 2×10 1 tk
Kontrolleriplaat ATmega168 Robotiklubi Pisi-XBee 1 tk
IR kaugusmõõdik 10-80cm analoog Oomipood 1243869 4 tk
Optiline peegeldusandur APDS-9104-L22 Oomipood 1532444 4 tk
Makettplaat 100x160mm, 3 auk ELFA 615-005A 1 tk
Servojuhe 2.54mm 3 viiku, 20cm Mudelipood 11 tk
Aku 11.1V LiPo 1600mAh Mudelipood 1 tk

Parameetrid

Parameeter Väärtus Ühik
Mõõdud 190 x 199 x 86 mm
Kaal 2,9 kg
Võimsus 250 W
Tippkiirus 4 m/s

Pildid

Esimene versioon

Teine versioon

Rohkem pilte

Failid

Solidworks mudel

Programm

Tegijad

Esimese versiooni meeskond "Robotika 2008"-l

Teise versiooni meeskond "Baltic Robot Sumo 2008"-l

projektid/voistlusrobotid/standardsumo/slayer.txt · Viimati muutnud: 2016/09/03 16:27 persoon raivo.riiel