Robotex 2002 G1 ja G2 aruanne

Grupi liikmed

Robotex OPEN 2002 võitja
Robotex OPEN 2002 Teine koht

Ülesande püstitus

Meeskondade ülesandeks oli konstrueerida autonoomne robot, mis suudaks võistlupolügoonil olevad mustad pallid valgete seast eristada, ning seejärel liigutama pallid ettenähtud kohta. Täpsem ülesande kirjeldus leheküljel:http://www.ttu.ee/robot/openylesanne.html

Lühikirjeldus

Robot leiab palle pildituvastuse abil. Robotil on peal videokaamera. Pilt saadetakse üle raadiolingi PC arvutisse, kus kujutis töödeldakse ja robotile tagastatakse nurk pallini ja nurk pesani. Robotil on pallide “neelamiseks” hari, mis käib sõidu ajal ringi. Pesa avastamine toimub infrapuna-andurite abil. Pallid asetatakse pessa harja pöörlemissuuna muutmise ja tagasisõitmisega. Roboti paneb liikuma 2 samm-mootorit. Mehhaanika väljatöötlemisel kasutamise MECCANO konstruktorit.

Üldskeem Kommunikatsiooniskeem

Kere

AltvaadeKere kandev konstruktsioon on 2 samm-mootori korpust, mis on omavahel võimalikult jäigalt ühendatud. Mootorite ja ülekande ümber on kandevkonstruktsioonid lisatud vastavalt vajadusele, järgides printsiipi, et masskese peaks olema ratastest veidi eelpool. Masskesme valik tagas kohapeal pööramise võimaluse ja lubas loobuda kolmandast rattast, mis tegi kogu konstruktsiooni lihtsamaks ja kergemaks. Masskeset oleks saanud viia ka mootorite teljele, kuid siis tekkis ebameeldiv kõrvalefekt kohaltvõtul. Roboti mootorid tõstsid esiotsa (toimus roboti pööre ümber mootorite võlli), mis takistas liikumist, kuna esimene ja tagumine ots põrkasid vaheldumisi vastu maad. Antud probleemi vältimiseks on masskese viidud ette ja kere toetamiseks on monteeritud 2 plastiksuuska.



Veermik

Ülekanne on lihtne ja koosneb kahest hammasrattast mootori kohta. Seega ülekanne on XX/XX. Kuna pildituvastuse ja pööramise täpsus oli üllatavalt hea, siis asendasime väiksema läbimõõduga rattad suuremate vastu, millega saavutasime suurema kiiruse.

Kaamera

Kaamera on mustvalge ja ilma optikata.

Mõned pildid, mis on tehtud roboti kaameraga

Roboti kaamerast 01Kaamerast 02Kaamera 3

Kaamerast tuleva pildi töötlemiseks on kasutusel PC arvuti, kuna HB 2MHz mikrokontrolleri abil ei saa reaalajas töödeldud tulemust.

Raadiolink kaamera-PC

Raadiolingi saatjaKuna HB liidesed ei võimalda kasutada i2o, sinihammast, WLAN jne, siis on kaamera videoväljund ühendatud otse 2GHz saatjaga. Vastuvõtjast on otse composit e video väljund PC framegrabber kaardi sisendisse. Analoogset raadiolinki kasutatakse turvalahendustes. PC framegrabber on tavaline videosisendiga TV kaart.

Roboti “Aju”

Robotit juhib HandyBoard. HB on Motorola 6811 mikrokontrolleril baseeruv mikroprotsessorsüsteem. HB omab integreeritud RS232, infrapuna (Sony protokoll), Digital/IO ja Analog/IO liideseid. Taktsagedus 2MHz.


HandyBoard

HB programmeerimine käib IC (InteracticeC) abil. Kahjuks ei saa HB programmeerida GNU gcc abil (stabiilne gcc sellele platvormile puudub), siis kasutasime suletud tarkvara IC3.x. IC toetab mitmeid C konstruktsioone, kuid palju on puudu. Kõige rohkem häiris case valikulause puudumine.

HP programm

HB I/O

Puuteandurid kasutavad HB digital in viike. Infrapunaandurid kasutavad analoosisendeid. PC-st saadetud nurkade edastamiseks on kasutusel HB RS232 port. Kuna HB RS232 port ei opereeri pingega -12V...+12V vaid 0..5V, siis on PC->HB andmete saatmisel vahel HB liides (MAX232). HB juhtimiseks on kasutusel nupud start ja stop.

Raadiolink PC-HB


RS232 raadiolink helisignaali edastamiseks. Kuna HB omab RS232 sisendit, siis PC-HB nurkade edastamine kulges varem kolmejuhtmelise RS232 kaabli kaudu. Kaabel rippus les ja oli suhteliseltKuna PC töötleb pildi ja arvutab välja nurga pallini ja nurga pesani, siis nende andmete saatmiseks ei saa kasutada turvasüsteemist laenatud raadiolinki, mis on mõeldud videosignaali ja ebamugav robotit siduv seade. RS232 raadiolingi realiseerimiseks on kasutusel 433MHz Tranciever. Kuna antud seade on ette nähtud suhtlemiseks BasicStamp nimelise kontrolleriga, ning kontrolleris on sisend/väljund-takistuste sobitamiseks emitterjärgurid, siis sai vastavad järgurid ja toitepinget reguleerivad skeemid ise kokku pandud ja lahendus toimis.



Puuteandurid

PuuteanduridÜlesane lahendamisel võib robot sõita vastu takistust ja kindlasti tuleb midagi ette võtta, näiteks pöörata takistusest eemale. Kuna sein või muu takistus võib ette sattuda igal ajal, siis seadsime robotile lülitina töötavad andurid. Puuteanduri moodustab kaks jäika traati, mis seina või muu takistuse kaasabil moodustab vooluringi. Kahjuks praktikas selgus, et kaks voolu juhtivat traaditükki ei pruugi kokku saades voolu juhtida või ühe "impulsi" asemel antakse mõned impulsid. Esmapilgul lihtsana näiv ülesanne "teha lüliti" osutus üheks keerukamaks probleemiks. Teha tundlik, töökindel ja kerge, kogu robotit piirav puuteandurite võrk oli tegevus, mille peale kulus rohkem aega, kui ülejäänud mehaanika peale kokku.


Signaaligeneraator

SignaaligeneraatorRoboti vedavaks jõuks on samm-mootorid. Mootorite valik võimaldab robotit väga täpselt pöörata. Mootorite pideva pöörlemise tagamiseks peaks HB genereerima digitaalväljundisse stabiilselt signaali. Suured mured tekkisid peale HB-s kasutatava programmikoodi kasvamist. Kuna programm jookseb lõpmatus tsüklis ja "main" tsükkli pikkus kasvas pidevalt, siis jäi HB poolt samm-mootorite "step" signaali genereerimine järjest aeglasemaks. Kindlasti oleks lahendus peatsüklis "step" signaali mitmes kohas saata, kui see oleks ikkagi tagajärgede "ravimine". Robotiehitamine on põnev selle poolest, et erinevaid asju annab väga erinevalt lahendada. Mõne probleemi lahendab mehaanika ja mõne tarkvara. Kuna antud ülesandes on vaja toota juhitavat "step" signaali mõlema ajami jaoks, siis tegime lihtsa elektroonikaskeemi digitaalsignaali tootmiseks.
Signaaligeneraator pilt
  1. R1 muudetava takistusega takisti 1.5K
  2. C1 0.1µF
  3. C2,C3 2nF
  4. Mikroskeem SN74HC00N (K155LA3)
Signaaligeneraator töötas ostsillograafiga mõõtmisel väga hästi. Reaalselt samm-mootori draiveri plaadi külge ühendamisel nõksusid mootorid edasi-tagasi sõltumatult takisti R1 väärtuse muutmisest. Juhendaja andis vihje, et "Kas signaali kuju on ikka ilus?". Kuna "ossi" ekraanil oli signaal kena siis seda kahtlustada ei osanud. Mootorid said kena hoo sisse, kui väljundi silumiseks kondendsaatorid C2 ja C3 skeemi ühendasime. Roboti ehitamise käigus vaikselt tekkiv paranoia sundis skeemi täiendama toitepingega paralleelse elektrolüütkondendsaatori ja valgusdioodindikaatori näol.

Protokoll PC ja roboti vahel

Kuna mõlemad grupid kasutavad sama PC tarkvara, siis alustasime sellest, et leppisime kokku protokolli e "mängureeglid" PC ja Roboti vaheliseks suhtlemiseks. Kuna dokument valmis enne programmikoodi, siis oli selle implementeerimine kerge.

Protokoll andmevahetuseks arvuti ja roboti vahel

Andmeid edastatakse 1 baidiste elementidena

baidi 2 ülemist bitti määravad ära edastatava andmeelemendi sisu.
esimest kahte baiti nim. bitmapiks



00 - nurk lähima objektini e 0-63 kümnendsüsteemis
01 - nurk pesani 64-127
10 - käsklus 128-191
11 - reserv 192-255


Nurk lähima objektini:
bitmap 00
Sisu: Nurk 0-63
Implementeerime
0 - 30 - pööra vasakule (0 pöörab rohkem)
31 - keskpunkt st ei pööra
32 - 62 pööra paremale (62 pöörab rohkem)


Nurk pesani
bitmap 01 (arvud 64-127 kümnendsüsteemis)
64 - 94 pesa vasakul
95 - pesa otse ees
96 - 125 pesa paremal

Käsklus:
bitmap 10
Sisu: Roboti juhtimise käsud
Implementatsioon
0 - stop 128 //robot seisma
1 - start 129
2 - tagasikäik b010000010 e 130
3 - edasikäik 131 b010000011
4 - pööra vasakule 132 b10000100
5 - pööra paremale 133 b10000101
6 - lülitu käsitsijuhtimisele 134 b10000110
7 - lülitub kaamera juhtimisel 135 b10000111
8 - exit 136 // pidu läbi ... start ei mõju ka enam
9 - pallid välja 137

Reserv
bitmap 11 e 192-255 kümnendsüsteemis

PC arvuti

Kuna HB protsessori jõudlus pole piisav pilditöötluse lahendamiseks, siis kasutasime PC masinat videosignaali töötlemiseks reaalajas. Esimesed katsed sai tehtud Matrox framegrabberi ja WinXP peal. Kahjuks "pangus" süsteem katsetamise käigus korduvalt (peale debuggerist väljumist VC all masin bootis alati) Kuna mõistus probleemist üle ei käinud, siis installisime Linux süsteemi, Video4linux teegid, SDL e Simple DirectMedia Layer teegid ja bttv draiveri. Valisime poest odava WinTV "telekakaardi" installeerisme selle masinasse ja kasutades libbgrab teeke saime pildi kätte. Framegrabberisse saime video turvasüsteemides kasutatava 2GHz videovastuvõtja abil. Robotist saabuvat pilti saab vaadata ka suvalise TV programmi abil. Testimisel kasutasime xawtv programmi. G2 Jaani poolt kirjutatud pilditöötluse programmi kasutasime mõlema meeskonnaga. Koodi korduvkasutus ja suuremahuline tööjaotus oli mõlema grupi heade võistlustulemuste alus. Programm kirjutab arvutustulemuse COM porti. Pordiga suhtlemise programmi kirjutamiseks kasutasime levinumat programmeerimismeetodit CAP e CopyAndPaste lehelt Linux Serial Programming HOWTO Programmi ise (Kui Jaan on nõus GPL litsentsiga)

"BOTMASTER" Klahvid

ESC - botmasterist välja
Nooleklahvid (vasakule, paremale, edasi, tagasi)
e - exit saadetakse robotile
s - start
m - command mode on
k - command mode off
f - full screem on/off
c - view mode camera/regogn
9 - kontrastsus vähemaks
0 - kontrastsus suuremaks
7 - heledus väiksemaks
8 - heledus suuremaks

Kasutatud tarkvara

IC3 InteractiveC -Roboti kood http://www.newtonlabs.com/ic/
PC operatsioonisüsteem - GNU/Linux
http://www.linux.org
Video4linux - WinTV draiverid bttv
http://www.exploits.org/v4l/
SDL - pilditöötlus
http://www.libsdl.org/
Dia - aruande vormistamisel
http://www.lysator.liu.se/~alla/dia/
Mozilla - aruande html (ise seda keelt ei vääna)
http://www.mozilla.org/
GNU gcc - PC programmi kompilaator
http://www.gnu.org/software/gcc/gcc.html
KDevelop - c++ ja c IDE http://www.kdevelop.org/
Gimp - aruande vormistus
http://www.gimp.org/
Win95 - vmware (proovivers) IC jooksutamiseks (Wine ei rahuldanud)
http://www.microsoft.com
http://www.vmware.com/


Samm-mootori draiver

Samm-mootori draiverSamm-mootorite ringiajamiseks kasutasime mikroskeeme UNC5804 (üks mootori kohta) Directionjuhitakse HB digital oudist. Step Input saame signaaligeneraatorist.

Probleemid

Mida õppisime?



Mitte midagi:) Kuna oleme veendunud, et katset tuleb korrata!
Tegelikut sai iga liige erinevat kogemust ja teavet. Seega toon ära iga liikme subjektiivse arvamuse http://www.itcollege.ee/~aliiv/robot/.

Lõpp:)

Pilte G1 ja G2 robotitest http://gallery.ejaam.com/view_album.php?set_albumName=robot
Lehe sodis kokku Margus.

Valid HTML 4.0!

Valid CSS!


OK KAUNTER