Table of Contents
Võistkond Mäger 2011
Tegijad
Eelarve
Eelarve: 306 € (5000 eek) ?
Robotiklubi poolt makstud
Kulu | Summa(€) | Selgitus |
---|---|---|
Ühendused PC-le | 68 | Arvega makstud |
Komponendid uuele toiteplaadile | 52 | Farnelli tellimus |
Peegli valmistamine | 48 | Arvega makstud |
Peegli poleerimine | 10 | Arvega makstud |
Kaamera postikulu | 80 | Tšekiga |
PS3 kaamera(eelmisest aastast) | 43 (700 eek) | Tšekiga |
Kokku | 301 |
Hetkel eraarvelt
Kulu | Summa(€) | Maksja |
---|---|---|
LiPo laadija | 14 | Ronald |
7,4V LiPo akud 2x | 16.5 | Ronald |
Pallid 12tk | 11 | Siim |
Plastiku Liim | 6.5 | Siim |
Liivapaber ja poleerimispasta | 4 | Ronald |
LiPo laadijale toitekaabel | 5 | Ronald |
Kaitsmed | 6 | Ronald |
USB-kaabel, D25 pistik, 2×28 andmesidekaabel, termokahanev rüüs | 20 | Ronald |
Kokku | 62 |
DarthMäger
Elektroonika
Roboti elektroonika koosneb arukast kaamerast (smart cam), toitemoodulist, IR vastuvõtu moodulist, PisiXBEE2 moodulist, mootoridraiverist ja erinevatest anduritest(SHARP IR andurid, palli tuvastuse andur).
Robotil on 2 eraldi toiteahelat: 1 mootorite jaoks ja teine ülejäänud osade jaoks.
Roboti kere on “MAA”.
Osa roboti elektroonikast on eelmise, 2010 aasta roboti oma.
Lisandunud on uus toite- ja löögielektroonika moodul ning uus kaamera.
- Üldskeem:
NB! Pilt on 2010 roboti skeemist! PC ja kaamera on koos, pole enam PS3 kaameraid. Pole ümberlülitit aku ja adapteri vahel.
M-ga on tähistatud massiühendused korpusesse!
Kaamera
Ximea CURRERA-R
- Tööstuslik kaamera koos arvutiga
- Töötab toitepingel 12V kuni 48V
- Ethernet, USB, RS232 ja IO liidesed
- Energiasäästlik - 1,2A max vool
- Windows 7
Rohkem infot: http://www.ximea.com/en/machine-vision/smart-camera
Akutester/LIPO alarm
Moodul, mis annab märku LED-ga ja heliga kui LIPO aku on saanud liiga tühjaks. Sobib kasutamiseks 2 ja 3 elemendiliste LIPO akudega, mille pinge on 7,4 .. 11,1 V. Ühendatakse LIPO aku balancer-i pistikusse. Tegemist on valmis mooduliga, mis on valmistatud Hiinas. (Sarnased moodulid on leitavad nt ebay-st märksõnaga „lipo alarm“) Robotil on neid kasutusel 2 tk.
Toite ja löögi moodul
Isevalmistatud moodul, kus on kaitsmed ja tehakse kõik robotile vajalikud pinged.
- Sisendpinge 6,5V kuni 25V
- Kaamera toide: 13,66V 1,5A
- Muu elektroonika toide: 5V 1,5A
Kaamera toite jaoks on kasutatud LM seeria step-up muundurit, et tagada kaamera stabiilne töö ka tühja aku korral.
Elektroonika toites on kasutatud tööstuslikku 5V stepdown konverterit.
Plaadil on mitmejärgulised toitefiltrid.
Kaitsmeid on 3: sisendis ja mõlemas väljundis.
Moodulil on 2 sisendit: “Aku” ja “Adapter” ning moodul on projekteeritud võimaldama “Hotplug” lülitust.
NB! ei tööta viletsate impulsstoite adapteritega, mis näevad suurt kondensaatorit kui lühist…
Lisaks on toitemooduli plaadil ka täiesti eraldiseisev löögielektroonika, mis on mõeldud kahe lineaarmootori juhtimiseks.
- Vajab löögiks ainult ca 200ms impulssi.
- Toitepinge 12…24V.
- Hästi lihtne skeem relee ja paari transistoriga
- Kui kontroller jätab sisendi kõrgeks siis mootorile jääb kah pinge peale! Selle vastu kaitset pole!
- Löögielektroonika sisend on optiliselt lahti sidestatud.
- Sisend impulsi pikkusega saab reguleerida löögi tugevust.
- Realiseeritud on ka automaatne mootorite tagasitõmbe lülitus.
NB! Tagasitõmbe lülitust tuleb veel testida ja välja selgitada, miks lõppastme transistor liialt kuumenes.
Palli andur
Isevalmistatud andur, mis on vajalik selleks, et tuvastada kas pall on löögiulatuses roboti ees. Baseerub Hamamatsu anduri S4282-51 mikroskeemil. Rohkem infot ja skeem Hamamatsu anduri kohta:
Mootorikontroller, Mootoridraiver ja I/O moodul
PC liidestamiseks Mootoridraiveri, andurite, RC5 ja nuppudega on kasutusel modifitseeritud Pisi XBEE2 moodul.
Originaal skeemist on eemaldatud kõik pingeregulaatorid ja sinna on lisatud sillad, et igal pool oleks 5V pinge. Toitesse on lisatud 4 220uF kondensaatorit ja kõigi I/O viikude peal on 20pF kondensaatorid viigu ja toite vahel, et vähendada häireid.
Mootoridraiveriks on kasutusel samuti pisi XBEE2 juurde kuuluv draiveri moodul(3tk). Draiveri skeemi on H silla lähedale lisatud 220uF kondensaatorid, et vähendada pinge kõikumisi ja mootorite poolt tulevaid häireid. Häirete vähendamiseks on veel mootorite juhtmed kokku keerutatud ja keeratud ümber ferriit rõngaste, samuti on ka 100nF kondensaatorid mootori harjadel.
IR vastuvõtja
- FPGA baasil 6 IR anduriga sõltumatu moodul.
- Toitepinge: 5V.
- Väljund: UART TX.
- Baudrate: 57600.
Saadetakse 2 paketti, paketis on 8 data bitti: 6 nooremat on andurite info(kõige noorim on andur 1), vanim on signatuur(1 või 0) ja 1 kasutamata bit. Paketis signatuuriga 0 on rünnatava värava majakat nägevate andurite info(kui andur näeb siis temale vastav bit = 1), paketis signatuuriga 1 on koduvärava majakat nägevate andurite info. Need 2 paketti saadetakse 20 korda sekundis, pakettide omavaheline vahe on 3 bitti. Vahepeal kui midagi ei saadeta on väljund 1. Vastavalt standardile on paketis noorim data bit esimene ja vanim viimane!
Plaadil on iga anduri lähedal 2 LED-i: Sinine põleb kui andur näeb rünnatava värava majakat, punane põleb kui andur näeb koduvärava majakat. Mõlemad põlevad kui andur näeb mõlemat majakat.
Plaadil on 2 nuppu: üks valib väljaku, teine õige värava.
Et ei tekkiks segadust on plaadil kaks 7seg indikaatorit, mis näitavad milline väljak ja milline värav on valitud. Vasakpoolne näitab rünnatava värava majaka IR kanali numbrit, parempoolne koduvärava majaka oma.
Mehaanika
Üldine 3D mudel
Omniwheelid
Rattad on disainitud võttes inspiratsiooni Robocup small-size meeskonnalt Skuba, mis omakorda on saanud inspiratsiooni kelltki teiselt meeskonnalt. Rattad valmistas kõigile meeskondadele Sient OÜ.
Väikesed rattad on kinnitatud suure külge 2.5×8 mm tihvtidega. Kate positsioon fikseeritakse kolme 2.5×8 tihvtiga ning on kinnitatud kolme M2.5×8 poldiga. Ostetud Baltic Boltist.
Selleks, et saada paremad haakuvust, on väikeste rataste peale pandud tihendid. Tegemist on 3×8 o-ring thivtidega. Ostetud Alas-Kuulist.
Rull
Selleks, et pall koonduks keskele ehk ka pööramisel püsiks keskel, on rull disainitud kahes osas. Antud robotil on need ka koonuse kujulised. Kuigi keskele liikumise effektiks ei ole koonuse kuju kõige olulisem, kuid annab siiski teatava efekti, siis kõige olulisem on aga asjaolu, et rull liigub üles-alla. Täpsemalt, kui pall on äärtes, siis on rull kõrgeimas asendis ning kui pall on keskel, siis on rull madalaimas asendis. Kuna rull tahab graviatsiooni tõttu maa suunas minna, siis on see võimalik, kui pall keskele liigub. Seega gravitatsioon suunab palli keskele.
Kuna pole katsetanud muud kui koonusrulle, siis ei saa ka kindlalt väita, et näiteks sirgete rullidega toimub soovitav efekt. Mehhanismis on palju nüannse. Nt pall peab kindlasti rulli alla minema.
Peegel
Tegemist on hüperboolse ristlõikega peegel (hüperboloidpeegel).
Peegel on arvutatud nii, et peeglil asetseks 4.5 m kaugusel asuv värav kõige välimisesääres ja hyperbooli fookus oleks kohakuti kaamera virtuaalse avaga.
Kujund, mis selle pöördkeha tekitab saab kirjeldada valemina, kui pöörkehateljeks on y telg:
Tarkvara
Sellel joonisel on toodud tarkvaraarhitektuuri põhilised klassid, nende hierarhia ning olulisemad liikmed ja meetodid. Ehk sellel joonisel ei ole kõiki klasse, nende liikmeid ja meetodeid.
- Data Baasklass klassidele millede objekte on võimalik DataStorage klassi abil salvestada ja taasesitada.
- SpineData Klass mille objektidele vastavad mootorikontrollerist tulnud paketid. Sisaldab andurite lugemeid, odomeetria tagasisidet. Senises implementatsioonis luuakse ja täidetakse selle klassi objekti klassis SpineSerialComm.
- SpineCmd Klass mille objektidele vastavad algoritmi poolt mootorikontrollerile saadetud käsud. Selle klassi objekti täidab algoritm ning see saadetakse mootorikontrollerile SpineSerialComm poolt.
- VisionData Klass mille objekt sisaldab pilditöötluse poolt tuvastatud olukorda (pallide ja väravate asukohta) ning mõnel juhul ka kaamera kaadrit. Selle klassi esimesed objektid luuakse ImageProcessor klassi konstruktoris. Pilditöötluse käigus täidetakse VisionData objekti välju ning neid objekte edastatakse WorkerThread'i kaudu algoritmile.
- ImageProcessor Klass mis loob VisionData objektid ning mis käivitab ja peatab pilditöötluse lõime. Kasulik pilditöötluse implementatsioon peaks laiendama seda klassi ja üle kirjutama meetodi processing(), mis käivitatakse peale iga uue pildikaadri saabumist. Selles klassis tehakse ka pildikaadrite salvestamine .rgba failiks. Enne pilditöötluse käivitamist peab määrama meetodiga SetFrameSource() ära FrameSource objekt kust pilditöötlus võtab kaadreid.
- ImageProcJ1 Mägra 2011 pilditöötluse algoritm.
- FrameSource Baasklass klassidele mis on võimelised pilditöötlusele töödeldavaid kaadreid andma. Selles klassis on defineeritud roboti pilditöötluse resolutsioon.
- FrameFromRL13C Klass Mägra Ximea kaameraga suhtlemiseks ja sealt kaadrite võtmiseks.
- FrameFromFile .rgba failist pildi laadimine.
- Algorithm Algoritmi baasklass. WorkerThread kutsub selle klassi Execute() meetodi, kus seatekse vajalikud lipud ja kopeeritakse andmed ning siis kutsutakse execute(), mis omakorda kutsub hetkel aktiivse olekuobjekti Run() meetodi ning vajadusel aktiveerib uue oleku (aktiivne olek on klassi liige currentStateObj). Algoritmi loomiseks tuleb teha klass mis on tuletatud klassist Algoritm. Tuletatud klass võib ka kirjutada üle meetodi execute() ja täita algoritmi loogikat üle kirjutatud execute() meetodis. Suuremate algoritmide puhul on siiski soovituslik kasutada olekuid mida esindavad klassist State tuletatud klasside objektid. Algorithm meetoditega transition() saab määrata kasutatavad olekud ning olekute sündmustele (event'idele) vastavad olekute üleminekud.