Sisällysluettelo:

MATLAB -ohjattu Roomba: 5 vaihetta
MATLAB -ohjattu Roomba: 5 vaihetta

Video: MATLAB -ohjattu Roomba: 5 vaihetta

Video: MATLAB -ohjattu Roomba: 5 vaihetta
Video: Getting Started with MATLAB 2024, Heinäkuu
Anonim
MATLAB -ohjattava Roomba
MATLAB -ohjattava Roomba
MATLAB -ohjattava Roomba
MATLAB -ohjattava Roomba

Tämän projektin tavoitteena on hyödyntää MATLABia ja modifioitua iRobot -ohjelmoitavaa robottia. Ryhmämme yhdisti koodaustaitomme luodaksemme MATLAB -komentosarjan, joka käyttää monia iRobotin toimintoja, mukaan lukien kallioanturit, puskurianturit, valoanturit ja kamera. Käytimme näitä anturien ja kameran lukemia tuloina, jolloin voimme luoda tiettyjä haluamiamme lähtöjä käyttämällä MATLAB -kooditoimintoja ja silmukoita. Käytämme myös MATLAB -mobiililaitetta ja gyroskooppia keinona muodostaa yhteys iRobotiin ja hallita sitä.

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

MATLAB 2018a

-Vuoden 2018 MATLAB -versio on suosituin versio, lähinnä siksi, että se toimii parhaiten mobiililaitteeseen yhdistettävän koodin kanssa. Suurin osa koodistamme voidaan kuitenkin tulkita useimmissa MATLAB -versioissa.

iRobot Luo laite

-Tämä laite on erikoisvalmisteinen laite, jonka ainoa tarkoitus on ohjelmointi ja koodaus. (Se ei ole todellinen tyhjiö)

Raspberry Pi (kameralla)

- Tämä on halpa tietokonelevy, joka toimii iRobotin aivoina. Se voi olla pieni, mutta pystyy moniin asioihin. Kamera on lisävaruste. Se käyttää myös vadelmapiä saadakseen kaikki toiminnot ja komennot. Yllä oleva kamera on asennettu 3D -tulostetulle telineelle, jonka ovat luoneet Tennessee -yliopiston Engineering Fundamentals -yksiköt

Vaihe 2: Roomba -tietokantatiedosto

Roomban tietokantatiedosto
Roomban tietokantatiedosto

On päätiedosto, jota tarvitset käyttääksesi Roomban oikeita toimintoja ja komentoja. Tässä tiedostossa kirjoitat koodia, joka hakee toimintoja helpottaaksesi roomban käyttöä.

Voit ladata tiedoston tästä linkistä tai alla olevasta ladattavasta tiedostosta

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

Vaihe 3: Yhdistäminen Roombaan

Ensinnäkin sinun on varmistettava, että robotti on kytketty vadelmapi -kortillesi käyttämällä mikro -USB -pistoketta. Sitten sinun on yhdistettävä tietokoneesi ja robotti oikein samaan WiFi -verkkoon. Kun tämä on tehty, voit käynnistää robotin ja muodostaa yhteyden siihen käyttämällä robottitietokantatiedoston annettua komentoa. (Nollaa robotti aina ennen käyttöä ja sen jälkeen). Käytämme esimerkiksi komentoa "r.roomba (19)" muodostaaksemme yhteyden robottiin ja määritämme muuttujan r laitteellemme. Tämä viittaa tietokantatiedostoon, joka asettaa muuttujamme rakenteeksi, johon voimme viitata milloin tahansa.

Vaihe 4: Koodi

Koodi
Koodi
Koodi
Koodi

Olemme liittäneet alla koko koodin, mutta tässä on lyhyt katsaus, joka korostaa komentosarjamme tärkeitä elementtejä. Hyödynnämme kaikkia antureita ja kameraa maksimoidaksemme robottimme potentiaalin täysin. Mukana oli myös koodi, jonka avulla voimme yhdistää mobiililaitteen robottiin ja käyttää sen gryoskooppia sen manuaaliseen hallintaan.

Aloitimme yksinkertaisella komennolla "r.setDriveVelocity (.06)", joka asettaa robotin eteenpäin nopeuden.06 m/s. Tämä on vain saada robotti liikkeelle etukäteen

Sitten pääskriptimme käynnistetään while -silmukalla, joka hakee tietyn robotin tiedot luomalla rakenteita, joihin voimme viitata ja joita voidaan käyttää alla olevissa ehdollisissa lausekkeissa, jolloin voimme kertoa robotille suorittavan tietyn komennon rakennetietojen perusteella robotti lukee antureillaan. Asetimme sen niin, että robotti lukee kallioanturinsa ja seuraa mustaa polkua

kun taas tosi % while -silmukka menee, kunnes tapahtuu jotain "vääriä" (tässä tapauksessa se jatkuu loputtomasti) data = r.getCliffSensors; data2 = r.getBumpers; % hakee jatkuvasti tietoja kallioanturin arvoista ja määrittää ne muuttujalle % img = r.getImage; % Ottaa kuvan asennetusta kamerasta % image (img); % Näyttää otetun kuvan % red_mean = keskiarvo (keskiarvo (img (:,:, 1))); % Ottaa vihreän värin keskiarvon, jos data.rightFront <2000 r.turnAngle (-2); % kääntää Roomban noin.2 astetta CW, kun oikean etukalliosensorin arvo laskee alle 2000 r. setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % kertoo Roomban jatkavan eteenpäin suunnilleen 0,2 m/s nopeudella, jos molemmat etu- ja vasemman etuanturin arvot ovat alle 2000 % r.turnAngle (0); % käskee Roomban olemaan kääntymättä, jos edellä mainitut ehdot täyttyvät

elseif data2.right == 1 r.moveDistance (-. 12); r.kierroskulma (160); r.setDriveVelocity (.05); elseif data2.vasen == 1 r.moveDistance (-. 2); r. kääntökulma (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.kierroskulma (160); r.setDriveVelocity (.05);

Tämän while -silmukan jälkeen syötetään toinen while -silmukka, joka laukaisee kameran kautta saadut tiedot. Käytämme if -lausetta tämän while -silmukan sisällä, joka tunnistaa kuvan tietyn ohjelman (alexnet) avulla, ja kun se on tunnistanut kuvan, se laukaisee välittömästi mobiililaitteen kaukosäätimen

anet = alexnet; % Määrittää alexnet -syvän oppimisen muuttujalle, vaikka tosi % Ääretön, kun silmukka img = r.getImage; img = suurikokoinen (img, [227, 227]); etiketti = luokitella (anet, img); jos etiketti == "paperipyyhe" || label == "jääkaappi" label = "vesi"; loppukuva (img); otsikko (char (etiketti)); vedetty;

Vaikka silmukka, jonka avulla voimme ohjata laitetta puhelimellamme, noutaa tiedot puhelimen gyroskoopista ja liitämme sen matriisiin, joka suoratoistaa tiedot jatkuvasti takaisin tietokoneen MATLABiin. Käytämme if -lauseketta, joka lukee matriisin tiedot ja antaa lähdön, joka siirtää laitetta puhelimen gyroskoopin tiettyjen arvojen perusteella. On tärkeää tietää, että käytimme mobiililaitteen suunta -antureita. Edellä mainittu yksi kolmesta matriisista luokitellaan puhelimen suunta -antureiden kunkin elementin mukaan, jotka ovat atsimuutti, nousu ja sivu. Jos lausunnot loivat olosuhteet, jotka ilmoittivat, että sivu ylittää arvot 50 tai laskee alle -50, robotti liikkuu tietyn matkan eteenpäin (positiivinen 50) tai taaksepäin (negatiivinen 50). Ja sama koskee sävelkorkeutta. Jos nousun arvo ylittää arvon 25, kun putoukset ovat alle -25, robotti kääntyy 1 asteen kulmassa (positiivinen 25) tai negatiivisessa 1 asteen kulmassa (negatiivinen 25)

kun todellinen tauko (.1) %.5 sekunnin tauko ennen jokaisen arvon ottamista Controller = iphone. Orientation; % Määrittää matriisin iPhonen suunnan arvoille muuttujalle Azimuthal = Controller (1); % Määrittää matriisin ensimmäisen arvon muuttujalle Pitch = Controller (2); % Määrittää matriisin toisen arvon muuttujalle (kallista eteenpäin ja taaksepäin, kun iPhonea pidetään sivuttain) Side = Controller (3); % Määrittää matriisin kolmannen arvon muuttujalle (kallista vasemmalle ja oikealle, kun iPhonea pidetään sivussa) % Antaa lähdön puhelimen suunnan perusteella, jos Sivu> 130 || Sivu 25 r.moveDistance (-. 1) % Siirtää Roombaa taaksepäin noin.1 metriä, jos iPhone on kallistettu taaksepäin vähintään 25 astetta, jos sivu 25 r.turnAngle (-1) % Kääntää Roomban noin 1 asteen vasemmalle, jos iPhone on kallistettu vasemmalle vähintään 25 astetta, jos nousukulma <-25 r. kääntö

Nämä ovat vain koodin tärkeimpien osien kohokohtia, jotka sisällytimme, jos haluat kopioida ja liittää osan nopeasti eduksesi. Koko koodimme on kuitenkin liitteenä alla tarvittaessa

Vaihe 5: Johtopäätös

Tämä kirjoittamamme koodi on suunniteltu erityisesti robotillemme sekä kokonaisnäkemyksemme projektista. Tavoitteenamme oli käyttää kaikkia MATLAB -koodaustaitojamme hyvin suunnitellun käsikirjoituksen luomiseen, joka hyödyntää suurinta osaa robotin ominaisuuksista. Puhelinohjaimen käyttö ei ole niin vaikeaa kuin luulet, ja toivomme, että koodimme voi auttaa sinua ymmärtämään paremmin iRobot -koodauksen taustalla olevaa konseptia.

Suositeltava: