Sisällysluettelo:
- Vaihe 1: Laitteet
- Vaihe 2: MATLAB -asennus
- Vaihe 3: Toiminto: liike
- Vaihe 4: Toiminto: Kuvankäsittely
- Vaihe 5: Toiminto: kartoitus
- Vaihe 6: Yhdistäminen
- Vaihe 7: Testaus
- Vaihe 8: Johtopäätös
Video: Roomba Scout Explorer: 8 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Yhtenä odotetuimmista ja tutkituimmista amerikkalaisista projekteista Mars-rover-hankkeista on tullut ihmisten saavutuksia korkean teknologian autonomisten järjestelmien jatkuvasti etenevässä tuotannossa, jonka ainoana tarkoituksena on tutkia ja tulkita takana olevan punaisen planeetan maa-alueita ja pintoja maapallo. Osana henkilökohtaisempaa projektia, joka kunnioittaa Mars -tehtäviä, tavoitteemme oli luoda roomba -robotti, joka voisi toimia itsenäisesti tietyn ajanjakson aikana ja reagoida sen mukaisesti tiettyihin kriteereihin sen läheisyydessä.
Ainutlaatuisuuden osalta keskityimme luomaan kaavion, joka osoittaa robotin kulkureitin sen alkuperästä. Lisäksi robotti pystyy laskemaan lähistöllä olevien kohteiden määrän panoraamatyylillä.
Vaihe 1: Laitteet
-Roomba w/ kiinnitettävä kamera (erityinen nimi tiedossa)
-Yhdistetty palvelin
-Windows 10 / Mac, jossa on Internet -yhteys
-Kirkas alusta
-Tumma lattia
-Kaikki yksivärisen suunnittelun harhautuneet esineet
Vaihe 2: MATLAB -asennus
Jotta voit luoda tehtäviä ja toimintoja roomballesi, sinulla on oltava erityiset koodit ja työkalupakit, jotka sisältävät roomba -komennot.
Kun MATLAB 2016a ja sitä uudemmat versiot on ladattu, luo kansio, joka sisältää nämä robottitiedostot, ja lisää seuraava MATLAB -tiedosto kansioon ja suorita se asentaaksesi tarvittavat Roomba -tiedostot.
Napsauta sen jälkeen hiiren kakkospainikkeella Nykyinen kansio -ikkunaa, vie hiiri Lisää polku -kohdan päälle ja napsauta Nykyinen kansio. Nyt on määritettävä polku siten, että kutakin näistä tiedostoista käytetään aktivoimaan roomba.
Käytä nyt alla olevaa komentoa komentoikkunassa määrittääksesi roomban:
r = roomba (#).
Symboli # on määritetyn roomban numero. Jos kuitenkin haluat vain roomba -simulaattorin, kirjoita seuraava komento:
r = roomba (0).
Simulaatiota suositellaan liikemallien testaamiseen.
Jos olet utelias, mitä komentoja roomba voi seurata, kirjoita komentoikkunaan seuraava:
tohtori roomba.
Lisätietoja on seuraavalla verkkosivustolla:
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Vaihe 3: Toiminto: liike
Liikkumisen osalta roomban pitäisi liikkua automaattisesti tietyn ajan tuloissa annetun ajan. Robotin liikkeen tavoitteena on reagoida kunnolla, kun sen anturit (puskurit, kevyet puskurit ja kallioanturit) muuttuvat erilaisten esteiden läsnä ollessa. Tämä osa toimisi kaikkien Roomban komentojen perustana, koska koodiin lisätään lisää ominaisuuksia myöhemmin. Joitakin eritelmiä tarvittiin:
-Vahinkojen vähentämiseksi robotin on vähennettävä nopeutta pienemmälle nopeudelle.
-Kun lähestyy kallioa tai seinää, robotti liikkuu taaksepäin ja muuttaa kulmaa törmäyskohdasta riippuen
-Jonkin ajan ajon jälkeen roomba lopulta pysähtyy ja ottaa kuvia ympäröivästä alueesta
Huomaa, että käytetyt arvot olivat suhteessa simulaattoriin; arvoja, kuten kääntökulmien kääntymisnopeuksia ja robotti -anturin esiasetuksia, on muutettava todellista robottia käytettäessä vakauden ja laitevirheiden huomioon ottamisen varmistamiseksi.
Vaihe 4: Toiminto: Kuvankäsittely
Pyynnön mukaisesti meitä pyydettiin muokkaamaan kuvan (tai useiden kuvien) tietoja, jotka robotin kamera vastaanotti, ja päätimme saada roomban "laskemaan" kuvassa näkyvien kohteiden määrän.
Noudatimme tekniikkaa saada MATLAB piirtämään rajat mustien esineiden ympärille, jotka ovat kontrastissa valkoisen taustan kanssa. Tällä toiminnolla on kuitenkin vaikeuksia avoimella alueella kameran havaitsemien eri muotojen ja värien vuoksi, mikä johtaa epätavallisen suureen määrään.
Huomaa, että tämä toiminto ei voi toimia simulaattorissa, koska kamera ei ole mukana; jos yritetään, tapahtuu virhe, joka ilmoittaa vain (:,:, 3) matriisin, jota voidaan käyttää.
Vaihe 5: Toiminto: kartoitus
Yksi lisäominaisuus, jonka halusimme robotille, oli sen sijaintien kartoittaminen, kun se on suoraan vuorovaikutuksessa ympäristön kanssa. Siten alla oleva koodi pyrkii avaamaan kartan ja muodostamaan koordinaattijärjestelmän, joka kertoo kunkin paikan, jossa robotin puskurianturit painetaan. Tämä osoittautui pisin osa kolmesta osasta testattavaksi erikseen, mutta se osoittautui paljon yksinkertaisemmaksi, kun sitä sovellettiin lopulliseen käsikirjoitukseen.
Jotta funktion suoritusajan pituuteen lisättäisiin rajoitus, testaussyistä käytettiin while -silmukan n <20 -rajaa.
Muista kuitenkin, että koodin monimutkaisuuden vuoksi tapahtuu enemmän virheitä, kun koodisegmentti toimii pitkään; aiemmista testeistä kymmenen kuoppaa näyttää olevan pisteiden määrä ennen merkittäviä virheitä.
Vaihe 6: Yhdistäminen
Koska kaikki tämä sijoitetaan yhteen tiedostoon, loimme toiminnon käyttämällä kutakin kahta edellistä vaihetta alitoiminnoiksi. Lopullinen luonnos tehtiin seuraavalla muutoksella redus -funktioon nimeltä "recon". Sekaannusten välttämiseksi MATLAB: lle skriptit "laskuri" ja "rombplot3" nimettiin upotetuiksi funktioiksi "CountR" ja "plotr".
Lopulliseen versioon oli tehtävä useita muutoksia edellisiin skripteihin verrattuna:
-Alkuperä merkitään aina punaisella ympyrällä
-Aina kun roomba pysähtyy puskureistaan, sijainti on merkitty mustalla ympyrällä
-Joka kerta, kun roomba pysähtyy kallioanturistaan, sijainti on merkitty sinisellä ympyrällä
-Aina kun roomba lakkaa tutkimasta aluetta, sijainti on merkitty vihreällä ympyrällä
-Kuvia muutetaan siten, että yläosa poistetaan, koska aikaleima saattaa häiritä tuloksia
-Reunoja ei lasketa kohteeksi, koska niitä on saatu paljon
-Useita muuttujia on muutettu, joten sekaannusten välttämiseksi käytä yllä olevia versioita.
Vaihe 7: Testaus
Kunkin yksittäisen komponentin testit osoittautuivat ajoittain melko sekaisin, minkä vuoksi tiettyjä esiasetettuja arvoja oli muutettava. Temaattinen tausta, jolla halusimme testata robotin kykyjä suljetulla alueella, koostui yksinkertaisesti valkotaulusta, joka oli asetettu paljon tummemmalle lattialle. Voit hajottaa esineitä alueen ympärille; saada ne toimimaan esineinä, jotka törmäävät robotin liikkumisalueelle tai kaukaisiin kohteisiin.
Säädetyn ajan ja perusnopeuden asettamisen jälkeen roomba osoitti asianmukaista liikekäyttäytymistä, pysähtyi ja perääntyi jokaisesta "kalliosta" tai esineestä, johon se törmää, sekä hidastui, kun se havaitsi jotain lähellä. Saavutettuaan halutun kolmen metrin matkaetäisyyden robotti pysähtyi ja arvioi aluetta ottamalla kuvia jokaisesta 45 asteen alueesta ja jatkoi eteenpäin, jos aika sallii. Sen kierrot näyttivät kuitenkin suuremmilta kuin pyydettiin, mikä tarkoittaa, että koordinaattitiedot hämärtyvät.
Joka kerta, kun se pysähtyy, uusi piste asetettiin sen sijainnin likimääräiselle alueelle koordinaattijärjestelmässä; on kuitenkin huomattava, että Roomban alkusuunnalla on keskeinen rooli kartan suunnittelussa. Jos kompassitoiminto olisi voitu toteuttaa, sitä olisi käytetty tärkeänä osana kartan suunnittelua.
Toiminnon todellinen toiminta -aika ylittää aina pyydetyn ajan, mikä on järkevää ottaen huomioon, että se ei voi pysähtyä jonkin palautuksensa keskellä. Valitettavasti tällä kuvien laskentaversiolla on ongelmia, erityisesti alueilla, jotka ovat joko enimmäkseen yksivärisiä tai vaihtelevat kirkkaudessa. koska se yrittää erottaa kaksi sävyä, se pyrkii havaitsemaan kohteita, joita ei haluta, joten se laskee aina järjettömän suureksi.
Vaihe 8: Johtopäätös
Vaikka tämä tehtävä oli erittäin seikkailunhaluinen ja luova työ, joka toi helpotuksen iloa, näin henkilökohtaisten havaintojeni perusteella paljon virheitä, jotka voivat olla ongelmallisia sekä koodissa että robotin käyttäytymisessä.
Aikarajoituksen käytön rajoittaminen while -silmukassa aiheuttaa sen, että kokonaisaika on pidempi kuin haluttu; panoraamatekniikan ja kuvankäsittelyn prosessi voi itse asiassa kestää kauemmin, jos se suoritetaan hitaalla tietokoneella tai sitä ei käytetä etukäteen. Lisäksi esityksessämme käytetty roomba toimi erittäin paljon virheitä, etenkin liikkeessä, verrattuna simulaattoriin. Käytetyllä robotilla oli valitettavasti taipumus kallistua hieman vasemmalle, kun se ajoi suoraan ja teki suurempia käännöksiä kuin haluttiin. Tästä syystä ja monista muista syistä on erittäin suositeltavaa, että näiden virheiden kompensoimiseksi on tehtävä muutoksia sen kulmiin.
Tämä on kuitenkin pitkä mutta älyllisesti stimuloiva projekti, joka oli toiminut mielenkiintoisena oppimiskokemuksena koodien ja komentojen soveltamisesta suoraan vaikuttamaan todellisen robotin käyttäytymiseen.
Suositeltava:
Roomba Bot the Bulider: 5 vaihetta (kuvilla)
Roomba Bot the Bulider: Bot the Builder on roomba, jossa on " nappaajat " etuosaan kiinnitetty pystyy liikuttamaan esineitä. Sen mukana tuleva koodi on asetettu tallentamaan ensimmäinen liike graafisella käyttöliittymällä, jota voit hallita vain hiiren napsautuksella. Afte
MATLAB -ohjattu Roomba: 5 vaihetta
MATLAB -ohjattu Roomba: Tämän projektin tavoitteena on hyödyntää MATLABia ja muokattua iRobot -ohjelmoitavaa robottia. Ryhmämme yhdisti koodaustaitomme luodaksemme MATLAB -komentosarjan, joka käyttää monia iRobotin toimintoja, mukaan lukien kallioanturit, puskurin tunnistimet
Mars Roomba Project UTK: 4 vaihetta
Mars Roomba -projekti UTK: VASTUUVAPAUSLAUSEKE: TÄMÄ TOIMII VAIN, JOS ROOMBA ON MÄÄRITETTY ERITTÄIN TÄLLÄ, TÄMÄ OHJE on luotu ja sen on tarkoitus käyttää TENNESSEE -YLIOPISTOJEN JA FACULTY -palvelun avulla. Tämän koodin avulla voidaan määrittää kirjoitettu ja s
Roomba Explorer: 4 vaihetta
Roomba Explorer: Tämä projekti tutkii tuntemattoman sijainnin eri alueita käyttämällä MATLABia ja iRobotin Create2 Robotia. Käytimme robotin antureita helpottamaan vaarallisen maaston ohjaamista. Hankkimalla valokuvia ja videosyötettä Raspberry Pi: ltä, joka
Bus Pirate 3EEPROM Explorer Board: 5 vaihetta
Bussipiraatti 3EEPROM Explorer Board: Jos sinulla on jokin Hack a Day's Bus Pirates, mitä teet sen kanssa? Opi 1-johdin-, I2C- ja SPI-EEPROM-laitteista 3EEPROM-tutkimuslevyn (kutsumme sitä nimellä THR-EE-PROM) avulla. EEPROM on eräänlainen muistisiru, joka tallentaa tietoja ilman jatkuvaa virtaa