Robotex 2008 võistkond 2 - "Commando"
Võistkond
Visioon robotist
Purkide ja sokkide leidmiseks tahame kasutada CMU cam 3-e ja IR sensoreid. Purgid tõstab roboti ees olev haarats kasti. Sokid tõmbavad sisse roboti ees olevad rullid. Robot peaks navigeeruma majakate abil, milleks võiks olla lihtsalt värvilised markerid, mida otsitakse kaameraga. Navigeerumist oleks vaja, et kokku kogutud kraam võimalikult lühikest teed mööda koju viia.Kaamera peaks suutma leida uue purgi või soki enne, kui eelmise võtmise operatsioon on lõpetatud, et võimalikult kiiresti uuesti liikuma hakata.Hea oleks, kui saaks purke ja sokke püüda peatumata. Robotil peaks olema ruumi kõigi purkide ja sokkide hoidmiseks ja korraga transportimiseks.
Töökava
| Tegu | Tegija | Tähtaeg | Olukord |
|---|---|---|---|
| Algne roboti platvorm | Raul | 12.09.2008 | Valmis |
| Purkidekast | Alan | 08.10.2008 | Valmis |
| Purkidetõstja | Alan | 08.10.2008 | Lõppjärgus/katsetamisel |
| Servo toite plaadid | Heiko | 08.10.2008 | Valmis |
| Sokkidekoguja | Hindrik | 08.10.2008 | Lõppjärgus/katsetamisel |
| Compiler chain (CMUCam3) | Tiit, Raul | - | Valmis |
| Atmega projektifailid | Tiit | - | Töös |
| Sokkidekoguja mootor | Hindrik | - | Valmis |
| Sokkidekoguja mootori draiver | Heiko | - | Valmis |
| Roboti elektriskeemid | Tiit | - | Plaanis |
| Kaamera valgustus | Heiko | - | Valmis |
| Kaamera positsioon | Raul | - | Valmis |
| Infrapuna andurid | | - | Plaanis |
| Majakad | | - | Plaanis |
| Solid'i mudel robotist | | - | Teisejärguline |
| Väljakul orienteerumine | Tiit, Heiko | - | Plaanis |
| Kaabeldus | Heiko | - | Valmis |
| CmuCam/ATmega suhtlus | Tiit | - | Valmis |
| CmuCam'i kood | Raul, Tiit | - | Lõppjärgus/katsetamisel |
Dokumentatsioon
Lahenduse kirjeldus
Robot kasutab sokkide, purkide ja majakate leidmiseks CMUCam3-e, mis saab veel andurite infot Atmega128-lt, ning teeb selle info põhjal otsuse. Sidepidamiseks (ja progemiseks) on robotil olemas koht ka ZigBee raadiomoodulile. Roboti veermiku moodustavad kaks vedavat ratast komplektist RD01 ja üks tugirullik ees. Veomootorid ja nende kontroller on samuti RD01 komplektist ja neid juhitakse I2C protokolliga. Toiteks on kakas akut, väiksem LiPo sokkidekoguja mootorile, ja igavene jurakas LiPo aku kõigele muule. Purke korjab robot siinil sõitva haaratsiga ja paneb need enda selga kogumiskasti. Sokid kogutakse kokku värvirullidest koosneva mehhanismiga, mis viib sokid roboti sisse konveierile.
Mehaanika
Purkide kogumine oli lahendatud väga originaalselt ja ruumisäästlikult, siinil sõiteva haaratsiga. Siin koosneb kahest torust: esimest mõõda ronib haarats üles, teise abil takistab pöörlemist ümber esimese toru. Purkide haaramine käib nelja plastik toruga, mis laskuvad ülevalt purgi peale, ning mille vahele jääb purk kinni. Purgiga sõidab haarats üles ja üle kasti. Kastiserv on sellis kujuga, et haarats pääseb sealt läbi, aga purk mitte. Purk kukkub kasti, kuhu mahub neid kuus tükki. Kast on sellise kujuga kus purgid on külili reas ja kaldeall, ning kust nad veerevad välja luugi avanedes.
Sokkide kogumise mehaanika koosneb värvirullidest, mida ajab ringi mootor. Rullid lükkavad soki alumiinium pinda mööda üles ja üle kasti serva. Kasti põhi on lint, mis viskab sokid välja. Sokkidekogumise mehaanika õnnestus lõpuks saada hästi tööle. Rulle ringiajava mootori suure voolutarbe tõttu sai sellele pandud eraldi aku. Võistlusel takistas sokkide kogumist viga elektroonikas, mille tõttu mootorikontroller segaseks läks.
Elektroonika
Roboti elektroonika oli tehtud eraldiseisvate moodulitena. Mooduleid ühendasid lintkaablid ja ka toitejuhtmed. Plaadid paiknesid roboti tagaosas olevate liistakate peal. See raskendas tunduvalt neile juurdepääsu. Samas tekitasid kõik moodulitevahelised kaablid toreda pusa. Tõenäoliselt häirekindlam oleks olnud üks suur trükkplaat.
Kuna robotil oli palju erinevaid mooduleid, siis sai teha ka eraldiseisva toiteplaadi. Sellel paiknes ka pealüliti ja palju kaitsmeid. Juhtmete mugavamaks ühendamiseks oli plaat varustatud ka kruvitavate klemmidega. Mootorikontrollerite esmakordsel käivitamisel tekkis mõningane segadus läbipõlevate kaitsmetega. Õnneks oli vool lihtsalt arvestatust natuke suurem ja aitas tugevamate kaitsmete panek.
Atmega 128 plaat hoolitses roboti kõikide moodulite ja CMU cam3-vahelise andmevahetuse eest. Andurite ühendamiseks läksid kõik analoogsisendid käiku. Siit tuli selle roboti üks tõsisemaid probleeme. Osa sisendeid olid vigased. Tänu sellele oli robotil tõsised häired infrapunaandurite töös. Enne võistlust sai osa neist lülititega asendatud, aga nagu arvata oli, osad neist ei töötanud.
Roboti liikumapanemiseks tellisime RD-01komplekti. See sisaldas mootorikontrollerit, mootoreid ja rattaid. Alguses töötas kõik justkui hästi aga mida aeg edasi, seda rohkem hakkas selgeks saama, et see ei ole kõige stabiilsem. Enamuse ajast töötas see ilusti aga mõnikord hakkas ka trikke tegema.
Roboti rullmehanismi mootorit lülitasin sisse ja välja darlington lültiga. Töötas suhteliselt hästi. Hiljem sai ka selle mootori jaoks eraldi aku panna. Kuna optiline lahtisidestus ei tundunud alguses eriti vajalik, siis pääses tõenäoliselt süsteemi ka mõningal määral häireid. Nende kompenseerimiseks oli igaks juhuks ka toiteosas filter. Kõik ülejäänud mootorid olid ühendatud releeväljunditega.
Roboti purkidehaaramiskäppa juhtis L298 mikroskeem. See sisaldas endast kahte H-silda, millest kasutuses oli üks. Töötas ideaalselt ja lihtne oli juhtida.
Pilditöötlus
Pilditöötlus toimus CMUcam3-l. Kohe alguses sai otsustatud, et kaamera abil tuvastame purke, sokke ja majakaid, ning kataloogide tuvastamise jätame teistele anduritele.
Purkide leidmiseks analüüsis kaamera keskmist pikslite rida. Kaamera kõrgus oli nii sätitud, et keskpunkt oleks kõrgemal kataloogidest, aga madalam ülemisest väljakuäärest. Nii leidis kaamera purke kataloogide tagant. Purgi leidmiseks otsis kaamera mustade pikslite rida valgel taustal. Laiuse järgi määras purgi kauguse. Selline otsimismeetod toimis väga hästi ka kolme meetri kauguselt. Majakate otsimisel oli meetod sama, kuid ainult otsitav värv teine.
Sokke otsis kaamera sarnaselt nagu purke, aga ühe pikslirea asemel kõigilt mis jäid keskjoonest natuke allapoole. Leides rea, kus on kõige rohkem musti piksleid reas, saab selle rea ja maapinna vahelise nurga järgi leida kauguse.
Komponentide nimekiri
| Komponent | Kasutuskoht | Kogus |
|---|---|---|
| CMU cam3 | peamine andur | 1 |
| Komplekt RD-01 | Veermik | 1 |
| Pleksiklaas | Kere | - |
| Atmega128 | Kontroller | 1 |
| DC mootorid | Igalpool | 5 |
| LiPo aku (3200mAh) | Toiteallikas | 1 |
| XBee raadiomoodul | Suhtlus arvutiga | 1 |
| Releed | Mootritele | 4 |
| L298 mikroskeem | Mootoritele | 1 |
| Pistikud | Igalpool | - |
| Suur kondensaator | Toiteosa | 1 |
| Kaismed/ nende pesad | Toiteosa | 6 |
| LED (valge) | Kaamera valgus | 3 |
| Mikrolülitid | Takistuste vältimine | 3 |
| GP2D12 | Infrapuna kaugusmõõdikud | 2 |
| Peegelandurid | Purgi tuvastus | 2 |















