Kasutaja tarvikud

Lehe tööriistad


projektid:voistlusrobotid:robotex:2011:voistkonnad:3

.

Robotex 2011 võistkond "Siil"

Tegijad

Töö üldpõhimõte

Robot kasutas Blackfin kaamerat ümbritsevast keskkonnast vastase ja oma värava ning pallide tuvastamiseks. Kaamera pildi järgi toimus pidevalt korrigeerimine ning külje-, esi- ja taga distantsisensorid vältisid robotil seinade rammimist. Robot mängis jalpalli, nii et hoidis vastase väravat kogu aeg kaamera vaatevälja keskkohas. Kui samasse kaadrisse jäi ka pall, siis liikus palli suunas, kuid korrigeeris pidevalt liikumist, nii et vastase värav jääks kaadri keskele. Kui pall ja värav olid kaadri keskel, siis sõitis otse kuni vastase väravani. Robotil puudus löögimehanism, nii et lükkamine oli ainumõeldav variant. Pärast palli väravasse toimetamist, tagurdas robot teatud aja (~4 sek.) tagasi ning otsis juba järgmist palli kaadrist, mida vastase väravasse lükata.

Disain

Kaks tublit disainerit kaasati ehituse lõppfaasis, siis kui sai otsustatud teha robotile Mäger seltsiline Siil. Roboti šassii dikteeris välise ümbrisplastiku kuju. Ümbris on valmistatud õhukesest pleksiklaasist ja katus 3mm plastikust. Mis siil siis ilma okasteta on ja tublide disainerite käe all valmis Siilile traatvõrgust ja naeltest kate. Okaste külge tehti veel ka roosad õunad, mille külge kleebiti klubi toetajate logod.

Veermik

Alusplaadiks on 2009a Printer Bobi alusplaat. Mootorid ja kontroller pärinevad ka samalt platvormilt. Rattad said asendatud parematega, selleks tuli pukse natuke peenemaks treida. See sai tehtud puurpingis liivapaberiga. Mootorikontrollerit koos koodritega tööle ei saadudki, koodrid jäeti ühendamata. Esialgu mootorikontrolleri softi ei muudetud, kuid kui lõpuks oli selge, et vana tarkvaraga liigub robot väga ebaühtlaselt ning liikumine on sõltuvuses sellest, mis liikumine oli eelnevalt toimunud, siis tuli seegi ümber teha. Suur osa kontrolleri loogikast sai välja kommenteeritud ning kasutataud kiiruse määramiseks ainult digitaalselt sisse/välja lülitamist ehk sõita sai ainult mootorite maksimumkiirusega. Mootorikontrolleri juhtimine toimus üle UART ning pakett oli järgmine:

Bait 1 Bait 2 Bait 3 Bait 4
Preambula mootor1 mootor2 mootor3

Preambula on võrdne 0-ga. Kuna viimasel hetkel sai ainult maksimumkiirus pandud, siis mootor 1-3 kiiruse baidid näitasid ainult mootori liikumise suunda. Väärtus alla 128 oli vasak suund. Väärtus üle 128 oli parem suund. Väärtus 128 oli mõeldud „free running state“ jaoks, aga seda tööle ei saadudki.
Kuna kiiruse reguleerimist ei ole, siis robot saab liikuda ainult pildil ettenähtud suundades.

Üldine blokkskeem

Elektroonika

Robotil on 11.1V LiPo aku, mis on ühendatud toiteplaadiga. Toite plaadil on kaitsmed, kaitsedioodid, kondensaatorid, Traco pingeregulaator ja kruviterminalid mootorikontrolleri ja Blackfini ühendamiseks. Dioodidest: Schottky dioodile on omane madal pingelang. Schottky dioodid on ahelas tarbijate kaitseks aku valetpidi ühendamise eest. TVS diood on vajalik tarbijate kaitsmiseks piikide ja ülepinge eest. Selles skeemis pinge tõusmisel üle 15V lühistab TVS diood akuklemmid ja viib pinge alla. Toiteplaadilt saab toite mootorikontroller ja sellelt omakorda mootorid. Mootorikontrolleri ja Blackfini üks toiteots läbib lüliti, ground on otse plaadile ühendatud.

Distantsianduritena on kasutatud Sharpi digitaalseid infrapuna andureid. 5cm külgedel ja 40cm ees ja taga. Andurid saavad 3.3V toite Blackfini moodulilt ja edaastavad signaali samuti sellele. Väravavahetuslüliti on ühendatud ahelasse koos eeltakistiga ja pullup takistiga, et välistada lühise tekkimise võimalus. Kui lüliti on sees, siis on BF-ni sisendi potensiaal madal, muidu kõrge. Režiimivahetamise lüliti on ühendatud sama põhimõtte järgi. Selleks, et programmeerimine oleks kiire on JTAG-i pistik ribakaabliga toodud roboti küljele.

Kaamera

Robotil on kasutusel Surveyor SRV-1 Blackfin kaameramoodul, täpsem info leiab siit http://www.surveyor.com/. Tegu siis mooduliga, kus arvutusseadme, 500MHz Analog Devices Blackfin BF537 protsessori, juurde on integreeritud kohe ka kaamera. Tegu väga kompaktse lahendusega, kus Blackfini protsessorit kasutati robot Siili juures peamise arvutusmoodulina.

Blackfin moodulil on välja toodud 32 viiguline piikriba. Kasutuses olnud viigud olid konfigureeritud järgmiselt:

Viik Blackfini signaal Kirjeldus
1 3.3V 3.3V toide eraldi plaadile
2 GND Maa eraldi plaadile
3 TX0 USB FTDI kivi Rx
4 RX0 USB FTDI kivi Tx
5 TX1/TMR6 Mootorikontrolleri Rx
27 GPIO-H10 esimene IR distantsisensor
28 GPIO-H11 tagumine IR distantsisensor
29 GPIO-H12 parem IR distantsisensor
30 GPIO-H13 vasak IR distantsisensor
31 GPIO-H14 värava valiku lüliti
32 GPIO-H15 mängulüliti (start)

Tarkvara

Tarkvara on kirjutatud C keeles. Koodi kompileerimiseks kasutatakse GNU Blackfin Toolchain (bfin-elf-gcc) kompilaatorit. Oma arvuti seadistamiseks leiab õpetuse http://www.surveyor.com/ lehelt (alamjaotus Blackfin camera/Blackfin Compiler and Debugger Toolchains). Koodi kontrollerisse laadimiseks kasutati programmi BFloader koos ICEbear programmaatoriga (http://www.section5.ch/icebear).

Kood on jaotatud mooduliteks, mis on visuaalselt toodud ka kahel alloleval diagrammil.

Programm on jaotatud kaheks suuremaks töörežiimiks - jalgpalli mängimise (soccer) režiim ja kaugjutimise (remoteControl) režiim. Töörežiimi vahetamiseks on eraldi mängulüliti (play), mis on mõldud ka stardilülitina. See võimaldab kiiret starti, ilma et peaks moodulite initisialiseerimisi alguses tegema.

Toodud diagrammid näitavad koodi põhilisi mooduleid, millest kirjeldatud on järgmisi:
soccer - see on jalgpalli mängimise moodul, kus mängutsükkel on määratud kindla pikkusega, antud juhul 40 ms. See aeg tuleb kaamera pildi uuendamise kiirusest, mis antud juhul on 30 kaadrit sekundis (intervall 33 ms). Igas tsüklis võetakse uus kaader kaamerast, analüüsitakse seda (leitakse pallid ja väravad), loetakse IR kaugussensorite olekud ning võetakse vastu otsus sõltuvalt praegusest olekust ning kaamera ja sensorite andmetest. Otsus kujutab endast mingit liikumise käsku.

logic - loogikamoodul, kus võetakse vastu otsus edaspidiseks tegevuseks. Siin on kirjas mängualgoritm. Kirjutatud sai 2 erinevat mängustrateegiat - ründav ja kaitsev. Testimisaja vähesuse tõttu jäi kaitsestrateegia rakendamata.

srv - selle teine nimetus võiks olla ka robot ehk tegu on mooduliga, mis edastab kõik roboti riistvaraga seotud funktsioonid (lülitite lülitamine, peamooduli riistvara seadistamine, andurite lugemine) loogilisele tasandile. See võimaldab hoida loogilise tasandi algoritmid eraldi riistvarast.

print (uart) - üks peamine kommunikatsioonimoodul suhtlemaks nii inimese arvutiga kui ka mootorikontrolleriga. UART0 on kasutusel silumiseks mängurežiimis ning kasutaja käskude lugemiseks ning pildi edastamiseks kaugjuhtimisrežiimis. UART1 on kasutusel ainult saatmise osa, kuna mootorikontrolleri ei vasta ühelegi käsule.

camera - kaamera seadistamise ja kaadri võtmise moodul. Vaikimisi on kaamera resolutsiooniks seatud 320 x 240 pikslit.

colors - pildi seadistamise ja analüüsimise moodul. Kasutusel on pildi keskosa skaneerimine 3 joonega. Tuvastatakse oranže palle ning kollast ja sinist väravat. Tulemused antakse x-koordinaadistikus, kus pildi vasak serv on 0 ning parem serv 320.

systemTime - süsteemi ajahaldur. Selle mooduli abil hoitakse mängurežiimis 40 ms tsükliaega. Lisaks sellele on võimalik lugeda reaalajakella, mis väljastab millisekundeid alates stardist. Moodulil on lisaks ka ajalise viite tegemise funktsioonid.

motion - liikumise moodul, mis edastab loogilise mooduli poolt antud käsud juba korrektse andmepaketina mootorikontrollerisse. Liikumise suunad on piiratud (vt. peatükki veermik), seetõttu on ka funktsioonid siin suunapõhised.

io - seadistab peamooduli 32 viigulise piikriba sisendid ja väljundid. Kontrollib ka peamoodulile integreeritud LED-de tööd.

Kood kokkupakitult: blackfin.rar

Hinnang

Positiivne:
  1. Disain
  2. Sai roboti tööle hoolimata komandeeringust
  3. Koostöö
Negatiivne
  1. Blackfini peamoodul ja WiFi moodul läksid läbi
  2. Elektroonik oli puudu
  3. Löögimehanism puudu (tingitud esimesest punktist)

Pildid

projektid/voistlusrobotid/robotex/2011/voistkonnad/3.txt · Viimati muutnud: 2016/09/03 15:43 persoon raivo.riiel