Sisällysluettelo:

Roomba ja MATLAB: 4 vaihetta (kuvilla)
Roomba ja MATLAB: 4 vaihetta (kuvilla)

Video: Roomba ja MATLAB: 4 vaihetta (kuvilla)

Video: Roomba ja MATLAB: 4 vaihetta (kuvilla)
Video: TAKI TAKI SPIDER-MAN 🔥❤🔪| 2024, Marraskuu
Anonim
Roomba MATLABin kanssa
Roomba MATLABin kanssa

Tässä projektissa käytetään MATLABia ja iRobot Create2 -ohjelmoitavaa robottia. Laittamalla tietomme MATLABista koetukselle pystymme ohjelmoimaan Create2: n tulkitsemaan kuvia ja havaitsemaan signaaleja. Robotin toiminnallisuus riippuu lähinnä MATLAB -mobiilisovelluksesta ja Raspberry Pi -moduulista.

Vaihe 1: Osat ja materiaalit

Osat ja materiaalit
Osat ja materiaalit
Osat ja materiaalit
Osat ja materiaalit
Osat ja materiaalit
Osat ja materiaalit
Osat ja materiaalit
Osat ja materiaalit

1. iRobot Create, versio 2

- Tämä on ohjelmoitava robotti, joka näyttää Roombalta. Huomaa, että tämä iRobotin tuote ei ole tyhjiö. Se on tarkoitettu käyttäjän ohjelmointiin.

2. MATLAB 2017a

- Useimmat vanhemmat versiot ovat yhteensopivia alla käyttämämme koodin kanssa. MATLAB tunnistaa komennon, joka ei ole yhteensopiva käytössäsi olevan version kanssa, ja ehdottaa parhaiten sopivaa komentoa.

3. Raspberry Pi 3 Malli B, versio 1.2

- Tarkista, mikä Raspberry Pi on yhteensopiva iRobotisi kanssa. Katso lisätietoja tästä linkistä: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Tämä ohje antaa olettaa, että työskentelet esiohjelmoidun Raspberry Pi -laitteen kanssa. Huomaa, että sinun on työskenneltävä esiohjelmoidun Pi: n kanssa, jotta seuraavat vaiheet toimivat. Esiohjelmoidun Pi: n avulla voit suorittaa kaikki koodauksesi vain MATLABissa.

4. Kameramoduuli V2 (Raspberry Pi)

- Saatat yllättyä; koostaan huolimatta Raspberry Pi -kameramoduuli on erittäin hyvälaatuinen. Se on halvin ja yhteensopivin vaihtoehto tälle projektille.

Valinnainen: 3D-tulostettu jalusta. Tätä käytetään kameran vakauttamiseen. Se ei vaikuta robotin toimintaan, mutta auttaa koodauksessa, jos haluat käyttää kuvantietoja värien ja/tai objektien tunnistamiseen.

Vaihe 2: Määritykset

Asetukset
Asetukset
Asetukset
Asetukset

1. Raspberry Pi: n ja kameramoduulin liittäminen (laitteisto)

- Raspberry Pi -laitteen virransyöttö edellyttää, että mikro -USB -uros on kytketty mikro -ohjaimen naarasliitäntään. Valinnainen: Jännitesäädintä voidaan käyttää varmistamaan, että jännite ei ylitä 5 V. Kun Raspberry Pi on kytketty virtalähteeseen, voit liittää sen robottiisi suorittamalla urospäät USB a emolevystä mikro -ohjaimen USB -porttiin A.

- Kun Pi on liitetty Roombaan, kamera on valmis asennettavaksi. Kameramoduuli on paljon pienempi kuin odotit. Huomaa, että objektiivi on kiinnitetty kennoon ja valkoinen nauha ulottuu kamerasta. ÄLÄ poista tai revi nauhaa! Tämä on kaapeli, joka tarvitaan liittämään se Raspberry Pi -laitteeseen. Pidä ensin nauhan päästä kiinni ja etsi hopeiset liittimet ja sininen kaapeli. Nämä ovat vastakkaisilla puolilla. Etsi seuraavaksi Raspberry Pi -laitteen ethernet- ja HDMI -porttien välinen paikka. Huomaa, että sitä peittää pieni valkoinen lukko. Nosta lukkoa hitaasti, mutta älä poista sitä aukosta, koska se napsahtaa ja vaurioituu pysyvästi. Kun olet nostanut lukon, tartu nauhaan ja osoita hopeiset liittimet HDMI -porttiin. Sininen puoli on Ethernet -porttia kohti. Liu'uta nauha hitaasti aukkoon, kun se on vielä auki. Sinun ei tarvitse pakottaa sitä paikkaan. Työnnä lukko takaisin paikalleen asettamisen jälkeen. Jos kamera on kiinnitetty kunnolla, sinun pitäisi pystyä vetämään nauhaa (varovasti) ja tuntea jännitystä. Nauha ei saa olla löysä. Kun olet liittänyt kameran Pi -laitteeseen, saatat huomata kuinka löysä se on. Siksi käytimme 3D-tulostettua telinettä sen vakauttamiseen. Voit itse päättää, mitä materiaaleja haluat käyttää pitämään kamerasi paikallaan korkealaatuiseen kuvantamiseen.

2. Oikeiden tiedostojen asentaminen ja Roomban yhdistäminen tietokoneeseen Kun kaikki laitteistot on määritetty, voit nyt siirtyä MATLABin asentamiseen yhdessä niihin liittyvien m-tiedostojen kanssa, joiden avulla voit kommunikoida robotin kanssa. Voit tehdä tämän avaamalla MATLABin ja luomalla uuden kansion, joka pitää kaikki liittyvät tiedostot yhdessä. Käytä tätä komentosarjaa tarvittavien tiedostojen asentamiseen/päivittämiseen:

- Kaikkien tiedostojen pitäisi nyt näkyä luodussa kansiossa. Napsauta hiiren kakkospainikkeella Nykyinen kansio -ikkunaa ja valitse Lisää polkuun lisätäksesi polun hakemistoluetteloon, josta MATLAB etsii tiedostoja. Varmista, että kaikki tiedostot ovat oikealla polulla.

3. Kun tiedostot on asennettu, voit nyt muodostaa yhteyden robottiisi. Aloita käynnistämällä robotti ja nollaamalla se uudelleen heti käynnistyksen jälkeen (älä unohda nollata robotti joka kerta ennen käyttöä ja sen jälkeen). Toiseksi, yhdistä sekä robotti että kannettava tietokone samaan wifi -verkkoon. Tämän jälkeen puhumme esiohjelmoidulle Raspberry Pi -laitteelle MATLABin kautta soittamalla Roomballe sen etunimellä ja toimintohuoneella. Esimerkiksi yhdistäisin robottiin 28 käyttämällä seuraavaa linjaa: R = roomba (28).

- Huomaa, kuinka annoin objektin muuttujalle R. Voin nyt käyttää siihen liittyviä Roomba -toimintoja asennustiedostosta käsittelemällä muuttujaa R kuin rakennetta.

- R.turnAngle (90) Jos kaikki meni hyvin, pitäisi soittaa musiikkiääni, joka vahvistaa yhteyden.

Vaihe 3: MATLAB -logiikka

Tämän vaiheen lopussa oleva PDF -dokumentti on yksityiskohtainen logiikkakaavio MATLABin koodausprosessillemme. Aktivoimme kallion, valon ja valon törmäysanturit, jotta robotti voi kommunikoida kanssamme, kun se havaitsee kohteen sen välittömässä läheisyydessä. Esimerkiksi kun robotti liikkuu eteenpäin, sen valotunnistimet etsivät tiellä olevia esineitä sen vektorin mukaan, jolla se kulkee. Valitsimme robotille etäisyyskynnyksen niin, että kun se lähestyy kohdetta, se kääntyy taaksepäin sen sijaan, että törmäisi siihen. Robotimme on myös konfiguroitu Twitteriin, jonka määritimme koodausprosessissamme (tämä näkyy alla).

Kokemuksen parantamiseksi käytimme MATLAB -sovellusta mobiililaitteissamme, jotta voimme hallita robotin liikkeitä vain kallistamalla puhelimiamme. Tämä on valinnainen toiminto, koska voit varmasti saada robotin liikkumaan käyttämällä MATLAB -koodisegmentin moveDistance -komentoa. Muista, että MATLAB -komentojen käyttäminen robotin ohjaamiseen on suositeltavaa, jos tavoitteesi on tarkka. Jos haluat kohdistaa robotin niin, että kamera ottaa kuvan tietyssä paikassa, saattaa olla parempi koodata robotin liikkeet MATLABissa. Vaikka viihdyttävä, MATLAB -sovelluksen käyttäminen robotin ohjaamiseen ei ole toivottavaa tarkkuuden vuoksi.

Koodi käskee Roomban suorittamaan perusasetukset ja jatka sitten jatkuvan silmukan läpi. Aluksi kannettava tietokone muodostaa linkin Roomban kanssa Roomba () -komennolla. Se myös muodostaa twitter -yhteyden käyttämällä MATLABin webwrite () -komentoa. Silmukka sisältää viisi pääloogista virtaa Roomban ympäristöstä riippuen. Roomba tarkistaa ensin esteiden varalta ja sopeutuu taaksepäin, jos havaitsee sen olevan esteenä. Tähän silmukkaan upotettu on toinen polku, joka varoittaa käyttäjiä, jos Roomba viedään pois. Tärkeä apuohjelma ankarassa Marsin sota -alueella. Kun Roomba on määritellyt asemansa turvalliseksi, se katsoo mobiililaitteen päättävän sen seuraavan liikkeen. Jos mobiililaitetta kallistetaan eteenpäin, se laskee perusnopeuden vierintämittauksen vakavuuden mukaan ja säätää yksittäisten pyörien nopeudet kääntymään nousuasteen mukaan. Puhelin voi myös siirtää Roombaa taaksepäin. Neutraali mobiililaitteen tila sulkee kaksi viimeistä polkua. Lepäävä Roomba etsii ulkomaalaislippua ja varoittaa käyttäjää siitä.

Alla on koodimme (valmistui MATLAB 2017a)

%tuloja: Suuntatiedot wifi -laitteesta, kamerasta

%tietoa, anturitiedot

%lähdöt: liikettä ohjaa wifi -yhdistetty laite ja liike

% tarkistetaan turvallisesti lukemalla anturitiedot. Jos kamera havaitsee

% ulkomaalaislippu, sitten roomba vastaa twiittaamalla vihollisen lipun

% on havaittu.

%tarkoitus: laitteemme elää ilman tarkoitusta paitsi suojella niitä, jotka

% loi sen, se palvelee luojaansa ja tekee

% mitä se kertoi.

Käyttö: olennaisesti ohjelma toimii itsekseen.

tyhjennä kaikki, sulje kaikki, clc

%Objektien ja muuttujien alustaminen

r = roomba (28);

m = mobiledev;

%use response = webwrite (isäntänimi, data)

isäntänimi = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop on toiminnassa… odottaa komentoa';

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (isäntänimi, data);

%jatkuvasti käynnissä oleva silmukka

kun taas 1 == 1

Relavent -tietoja sisältävät rakenteet

o = m. suunta; %mobiililaitteen suunnasta

valo = r.getLightBumpers (); Kevyet puskurin arvot

a = r.getCliffSensors (); %CLiff -anturin arvot

kolahtaa = r.getBumpers (); %Puskurianturit

%puskureita

jos kolahtaa.oikea == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-.2,.2);

%tarkistusvaloanturit

muu valo. vasen> 60 || light.leftFront> 60 || light.leftCenter> 60 || valo. oikea> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-.2,.2);

%tarkista Cliff -anturit

Varkaudenestosignaali ja ilmoitus

elseif a.vasen <300 && a. oikea <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r. piippaus ();

tweet = 'RoboCop on poistettu!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (isäntänimi, data);

%Normaali kallion välttäminen

elseif a. vasen <300 || a. oikein <300 || a. vasen etu <300 || a. oikea etuosa <300

r.moveDistance (-.2,.2);

%Roomba läpäisi tarkastukset ja toimii nyt normaalisti.

%Aluksi mitataan laitteen rulla ja siitä tulee pohja

%nopeus, jota käytetään sitten pyörän nopeuden laskemiseen

%Eteenpäin

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

jos o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

muuten r. stop

loppuun

%Taaksepäin suuntautuva liike

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-.2, -.2)

r. piippaus ();

r. piippaus ();

%resting roomba etsii fluoresoivana merkittyä ulkomaalaislippua

%vihreä pala paperia

muu

r. stop

img = r.getImage (); %ottaa kuvaa

kynnys = harmaasävy (img (200: 383,:, 2))+.1; %vihreän tason laskeminen

jos kynnys>.42

tweet = 'Vihollinen havaittu !!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (isäntänimi, data);

muu

r. stop

loppuun

loppuun

loppuun

Vaihe 4: Johtopäätös

Muista, että voit käyttää yllä kirjoittamaamme käsikirjoitusta, mutta voit aina muuttaa sitä tarpeidesi mukaan. Sitä ei tarvitse ohjata puhelimellasi! (Se tekee siitä kuitenkin hauskempaa.) Valitse menetelmä, jota haluat käyttää robotin hallintaan. Aja ympäriinsä robotin kanssa ja nauti!

Suositeltava: