Sisukord:

Roomba Scout Explorer: 8 sammu
Roomba Scout Explorer: 8 sammu

Video: Roomba Scout Explorer: 8 sammu

Video: Roomba Scout Explorer: 8 sammu
Video: Gilwell24 - National Explorer Scout Camp 2024, Juuli
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Üheks kõige oodatumaks ja põhjalikumalt uuritud Ameerika projektiks on Marsi roveri projektidest saanud inimeste saavutused kõrgtehnoloogiliste autonoomsete süsteemide üha edenevas tootmises, mille ainus eesmärk on uurida ja tõlgendada punase planeedi tagamaid ja pindu. maa. Osana isiklikumast projektist, mis austas Marsi missioone, oli meie eesmärk luua roomba robot, mis suudaks teatud aja jooksul iseseisvalt tegutseda ja reageerida vastavalt teatud kriteeriumidele selle läheduses.

Ainulaadsuse osas keskendusime skeemi koostamisele, mis näitas iga rada, mille robot oma päritolust võtab. Lisaks saab robot panoraamstiilis üles lugeda läheduses olevate objektide arvu.

Samm: varustus

-Roomba koos lisatava kaameraga (kindla nimega)

-Ühendatud server

-Windows 10 / Mac Interneti -ühendusega

-Hele platvorm

-Tume põrand

-kõik ühevärvilise disainiga hulkuvad objektid

2. samm: MATLAB -i seadistamine

MATLABi seadistamine
MATLABi seadistamine

Oma roomba jaoks ülesannete ja funktsioonide loomiseks peavad teil olema konkreetsed koodid ja tööriistakomplektid, mis sisaldavad roomba käske.

Kui olete alla laadinud MATLAB 2016a ja edasi, looge nende robotifailide kaust ja sisestage kausta järgmine MATLAB -fail ning käivitage see ülejäänud vajalike Roomba -failide installimiseks.

Pärast seda paremklõpsake aknas Praegune kaust, hõljutage kursorit valiku „Lisa tee” kohal ja klõpsake nuppu „Praegune kaust”. Nüüd tuleks raja luua nii, et kõiki neid faile kasutatakse roomba aktiveerimiseks.

Nüüd kasutage roomba seadistamiseks käsuaknas allolevat käsku:

r = roomba (#).

Sümbol # on määratud toa „number”; kui aga soovite lihtsalt roomba simulaatorit, sisestage lihtsalt järgmine käsk:

r = roomba (0).

Simulatsiooni soovitatakse liikumismustrite testimiseks.

Kui olete huvitatud sellest, milliseid käske roomba saab järgida, tippige käsuaknasse järgmine:

doktor Roomba.

Lisateabe saamiseks külastage järgmist veebisaiti:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

3. samm: funktsioon: liikumine

Funktsioon: liikumine
Funktsioon: liikumine
Funktsioon: liikumine
Funktsioon: liikumine

Mis puutub liikumisse, siis peaks roomba sisendites määratud aja jooksul automaatselt liikuma. Roboti liikumise eesmärk on õigesti reageerida, kui selle andurid (kaitserauad, kerge kaitserauad ja kaljuandurid) muutuvad erinevate takistuste olemasolul. See osa oleks kõigi Roomba käskude alus, kuna hiljem lisatakse koodile rohkem funktsioone. Vaja oli mõnda täpsustust:

-Kahjude vähendamiseks peab robot kiirust vähendama väiksemale kiirusele.

-Kaljule või seinale lähenedes liigub robot tagurpidi ja muudab oma nurka sõltuvalt löögipunktist

-Mõne aja möödudes peatub roomba lõpuks ja pildistab ümbritsevat

Pange tähele, et kasutatud väärtused olid seotud simulaatoriga; väärtusi, nagu pöördenurgad, pöörlemiskiirused ja robotianduri eelseadistused, tuleks tegeliku roboti kasutamisel muuta, et tagada stabiilsus ja seadmete vigade arvestus.

4. samm: funktsioon: pilditöötlus

Funktsioon: pilditöötlus
Funktsioon: pilditöötlus

Vastavalt taotlusele tehti meile ülesandeks muuta roboti kaamera vastuvõetud pildi (või mitme pildi) andmeid, millele otsustasime panna roomba "loendama" objektide arvu, mida ta pildil näeb.

Järgisime tehnikat, mille abil MATLAB tõmbas musta taustaga objektidele piirid, mis on valge taustaga kontrastsed. Sellel funktsioonil on aga avatud alal raskusi, kuna kaamera tajub erinevaid kujundeid ja värve, mille tulemuseks on ebatavaliselt suur arv.

Pange tähele, et see funktsioon ei saa simulaatoris töötada, kuna kaamera pole kaasas; proovimisel ilmneb tõrge, mis kuulutab ainult (:,:, 3) maatriksi.

5. samm: funktsioon: kaardistamine

Funktsioon: kaardistamine
Funktsioon: kaardistamine
Funktsioon: kaardistamine
Funktsioon: kaardistamine
Funktsioon: kaardistamine
Funktsioon: kaardistamine
Funktsioon: kaardistamine
Funktsioon: kaardistamine

Üks lisafunktsioon, mida me robotilt soovisime, oli selle asukohtade kaardistamine, kuna see suhtleb otseselt keskkonnaga. Seega püüab allolev kood avada kaardi ja luua koordinaatsüsteemi, mis kirjeldab üksikasjalikult iga kohta, kus roboti kaitseraua andureid vajutatakse. See osutus pikimaks osaks kolmest osast, mida oli vaja individuaalselt testida, kuid lõppskripti puhul oli see palju lihtsam.

Funktsiooni tööaja pikkusele piirangu lisamiseks kasutati katsetamise ajal while -ahela piirmäära n <20.

Pidage siiski meeles, et koodi keerukuse tõttu tekib koodilõigu pikaajalisel kasutamisel rohkem vigu; varasematest katsetest näib, et kümme muhku on punktide arv enne oluliste vigade ilmnemist.

6. samm: kõrvutamine

Vastandamine
Vastandamine
Vastandamine
Vastandamine
Vastandamine
Vastandamine
Vastandamine
Vastandamine

Kuna kõik see paigutatakse ühte faili, lõime funktsiooni, kasutades alamfunktsioonina mõlemat eelmist sammu. Lõplik eelnõu tehti redutseerimisfunktsiooni järgneva modifikatsiooniga "recon". Segaduse vältimiseks MATLABi puhul nimetati skriptid "counter" ja "rombplot3" ümber manustatud funktsioonideks vastavalt "CountR" ja "plotr".

Vastupidiselt eelmistele skriptidele tuli lõplikus versioonis teha mitmeid muudatusi:

-Päritolu tähistatakse alati punase ringiga

-Iga kord, kui roomba peatub põrkeraudadelt, märgitakse asukoht musta ringiga

-Iga kord, kui roomba oma kaljuanduritelt peatub, on asukoht märgitud sinise ringiga

-Iga kord, kui roomba lõpetab piirkonna uurimise, märgitakse asukoht rohelise ringiga

-Pilte muudetakse nii, et ülemine osa eemaldatakse, kuna ajatempl võib tulemusi häirida

-Piire ei loeta objektina, kuna omandatud arv on üsna suur

-Mitu muutujat on muudetud, nii et segaduste vältimiseks kasutage viitamiseks ülaltoodud versioone.

7. samm: testimine

Testimine
Testimine

Iga üksiku komponendi testid osutusid kohati üsna segaseks, mistõttu oli vaja teatud eelseadistatud väärtusi muuta. Temaatiline taust, millel tahtsime suletud alal roboti võimeid testida, koosnes lihtsalt palju tumedamale põrandale laotud tahvlist. Saate hajutada esemeid ümber piirkonna; pange need toimima objektidena, millega tuleb põrgata või mis asuvad roboti liikumisalast kaugel.

Pärast reguleeritud aja ja baaskiiruse seadmist demonstreeris roomba piisavat liikumiskäitumist, peatudes ja taganedes igast "kaljust" või objektist, kuhu see rammib, samuti aeglustades, kui tuvastab midagi läheduses. Soovitud kolmemeetrise vahemaa saavutamisel jätkab robot ala peatumist ja hindab seda, pildistades iga 45 -kraadise piirkonna ja jätkab, kui aeg seda võimaldab. Selle pöörded tundusid aga taotletust suuremad, mis tähendab, et koordinaatide andmed oleksid varjatud.

Iga kord, kui see peatub, asetati uus punkt selle koordinaatsüsteemi asukoha ligikaudsele piirkonnale; siiski tuleb märkida, et kaardi kujundamisel on keskne roll toa alguse esialgsel suunal. Kui kompassi funktsiooni saaks rakendada, oleks seda kasutatud kaardi kujunduse olulise osana.

Funktsiooni täielikuks käivitamiseks kuluv tegelik aeg ületab alati nõutud aja, mis on mõistlik, kui arvestada, et see ei saa peatuda ühe taastamise keskel. Kahjuks on sellel pildiloenduse versioonil oma probleemid, eriti piirkondades, mis on enamasti ühevärvilised või erineva heledusega; kuna see püüab eristada kahte tooni, kipub tajuma objekte, mida ei soovita, seega loeb see alati meeletult palju.

8. samm: järeldus

Järeldus
Järeldus

Kuigi see ülesanne oli väga seiklusrikas ja loominguline töö, mis tõi kergendusrõõmu, nägin oma isiklikest tähelepanekutest lähtudes väga palju vigu, mis võivad olla problemaatilised nii koodi kui ka roboti käitumise osas.

Ajaspetsifikatsiooni kasutamise piiramine ajatsüklis põhjustab aja kogupikkuse pikenemist kui soovitud; panoraamtehnika ja pilditöötlus võib tegelikult võtta kauem aega, kui seda töötab aeglane arvuti või seda ei kasutata eelnevalt. Lisaks toimis meie esitluses kasutatud roomba simulaatoriga võrreldes väga paljude vigadega, eriti liikumises. Kasutataval robotil oli kahjuks kalduvus veidi vasakule kalduda, kuna see sõitis otse ja tegi soovitud suuremaid pöördeid. Sel põhjusel ja paljudel teistel on tungivalt soovitatav nende vigade kompenseerimiseks muuta selle pöördenurki.

Sellegipoolest on see pikk, kuid intellektuaalselt stimuleeriv projekt, mis oli olnud huvitav õpikogemus koodide ja käskude rakendamiseks, et otseselt mõjutada tegeliku roboti käitumist.

Soovitan: