Kazalo:

MATLAB nadzorovana Roomba: 5 korakov
MATLAB nadzorovana Roomba: 5 korakov

Video: MATLAB nadzorovana Roomba: 5 korakov

Video: MATLAB nadzorovana Roomba: 5 korakov
Video: A Super Giant look at Hades 2024, November
Anonim
Roomba z nadzorom MATLAB
Roomba z nadzorom MATLAB
Roomba z nadzorom MATLAB
Roomba z nadzorom MATLAB

Cilj tega projekta je uporaba MATLAB -a in spremenjenega programabilnega robota iRobot. Naša skupina je združila naše sposobnosti kodiranja, da bi ustvarila skript MATLAB, ki uporablja številne funkcije iRobota, vključno s senzorji pečine, senzorji odbijača, svetlobnimi senzorji in kamero. Te odčitke senzorjev in kamer smo uporabili kot vhode, kar nam je omogočilo, da smo ustvarili določene izhode, ki smo jih želeli z uporabo kodnih funkcij in zank MATLAB. Mobilno napravo in žiroskop MATLAB uporabljamo tudi kot način za povezavo z iRobotom in njegovo upravljanje.

1. korak: Deli in materiali

Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali

MATLAB 2018a

-Različica MATLAB za leto 2018 je najbolj priljubljena različica, predvsem zato, ker najbolje deluje s kodo, ki se poveže z mobilno napravo. Večino naše kode pa je mogoče razlagati v večini različic MATLAB.

iRobot Ustvari napravo

-Ta naprava je posebej izdelana naprava, katere edini namen je programiranje in kodiranje. (To ni dejanski vakuum)

Raspberry Pi (s kamero)

- To je draga računalniška plošča, ki deluje kot možgani iRobota. Morda je majhen, vendar je sposoben veliko stvari. Kamera je dodaten dodatek. Za pridobivanje vseh svojih funkcij in ukazov uporablja tudi malinovo pi. Zgornja kamera je nameščena na 3D tiskanem stojalu, ki so ga ustvarili oddelki za osnove inženiringa na Univerzi v Tennesseeju

2. korak: Datoteka zbirke podatkov Roomba

Datoteka zbirke podatkov Roomba
Datoteka zbirke podatkov Roomba

Za uporabo ustreznih funkcij in ukazov za vašo roombo potrebujete glavno datoteko. V tej datoteki ste napisali funkcije, ki črpajo kodo, da bo upravljanje roombe bolj obvladljivo.

Datoteko lahko prenesete s te povezave ali spodaj prenesene datoteke

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

3. korak: Povežite se z Roombo

Najprej se morate prepričati, da je vaš robot povezan z vašo malinovo pi ploščo z vtičem mikro USB. Nato morate pravilno povezati računalnik in robota z istim WiFi. Ko to storite, lahko vklopite robota in se z njim povežete z danim ukazom v datoteki baze podatkov robota. (Vedno trdo ponastavite robota pred uporabo in po njej). Na primer, z ukazom "r.roomba (19)" se povežemo z našim robotom in svoji napravi dodelimo spremenljivko r. To se nanaša na datoteko zbirke podatkov, ki nastavi našo spremenljivko kot strukturo, na katero se lahko kadar koli sklicemo.

4. korak: Koda

Kodeks
Kodeks
Kodeks
Kodeks

Spodaj smo priložili celotno kodo, vendar je tukaj kratek pregled, ki poudarja pomembne elemente v naši pisavi. Uporabili smo vse senzorje in kamero, da bi v celoti izkoristili potencial našega robota. Vključili smo tudi kodo, ki nam je omogočila, da mobilno napravo povežemo z robotom in z njenim grioskopom ročno upravljamo.

Začeli smo s preprostim ukazom "r.setDriveVelocity (.06)", ki nastavi hitrost robota naprej na 0,06 m/s. To je samo zato, da se robot vnaprej premakne

Nato se naš glavni skript zažene z zanko while, ki pridobi podatke o danem robotu z ustvarjanjem struktur, na katere se lahko sklicujemo in jih uporabimo v spodnjih pogojnih stavkih, kar nam omogoča, da povemo robotu, da izvede določen ukaz na podlagi podatkov o strukturi robot bere s svojimi senzorji. Nastavili smo ga tako, da robot bere senzorje pečine in sledi črni poti

medtem ko true % while zanka traja, dokler se ne pojavi nekaj "false" (v tem primeru se nadaljuje neskončno) data = r.getCliffSensors; data2 = r.getBumpers; % neprestano pridobiva podatke o vrednostih senzorja pečine in jih dodeljuje spremenljivki % img = r.getImage; % Fotografira z nameščene kamere % image (img); % Prikazuje posneto sliko % red_mean = mean (mean (img (:,:, 1))); % Vzame povprečno vrednost za zeleno barvo, če je data.rightFront <2000 r.turnAngle (-2); % obrne Roombo za približno 0,2 stopinje CW, ko vrednost za desna sprednja senzorja pečine pade pod 2000 vrt.setDriveVelocity (, 05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % pove Roombi, naj nadaljuje s hitrostjo približno 0,2 m/s, če obe vrednosti iz desnega sprednjega in levega sprednjega senzorja padeta pod 2000 % r.turnAngle (0); % pove Roombi, naj se ne obrača, če so zgoraj omenjeni pogoji resnični

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

Po tej zanki while vstopimo v drugo zanko while, ki sproži podatke, pridobljene s kamero. V tej zanki while uporabljamo stavek if, ki s posebnim programom (alexnet) prepozna sliko, in ko prepozna sliko, takoj sproži daljinski upravljalnik mobilne naprave

anet = alexnet; % Dodeli alexnet poglobljeno učenje spremenljivki medtem ko je res % neskončno, medtem ko zanka img = r.getImage; img = imresize (img, [227, 227]); oznaka = razvrsti (anet, img); če je oznaka == "papirnata brisača" || label == "hladilnik" label = "voda"; končna slika (img); naslov (znak (oznaka)); vlečenje;

Zanka while, ki nam omogoča upravljanje naprave s telefonom, te podatke pridobi iz žiroskopa telefona in jih priključimo v matriko, ki nenehno pretaka podatke nazaj v MATLAB v računalniku. Uporabljamo stavek if, ki bere podatke matrike in daje izhod, ki premakne napravo na podlagi določenih vrednosti žiroskopa telefona. Pomembno je vedeti, da smo uporabili orientacijske senzorje mobilne naprave. Zgoraj omenjena matrika tri je kategorizirana glede na vsak element senzorjev orientacije telefona, ki je azimut, višina in stran. Če stavek ustvarila pogoje, ki navajajo, ko stran preseže vrednosti 50 ali pade pod -50, se robot premakne za določeno razdaljo naprej (pozitivno 50) ali nazaj (negativno 50). Enako velja za vrednost smole. Če vrednost višine tona preseže vrednost 25 padcev pod -25, se robot obrne pod kotom 1 stopinje (pozitivna 25) ali negativna 1 stopinja (negativna 25)

medtem ko je pravi premor (.1) % premor 0,5 sekunde pred vsako vrednostjo Controller = iphone. Orientation; % Dodeli matriko za vrednosti orientacije iPhone spremenljivki Azimuthal = Controller (1); % Dodeli prvo vrednost matrike spremenljivki Pitch = Controller (2); % Dodeli drugo vrednost matrike spremenljivki (nagnite naprej in nazaj, ko iPhone držite bočno) Side = Controller (3); % Dodeli tretjo vrednost matrike spremenljivki (nagib levo in desno, ko iPhone držite bočno) % Povzroči izhod glede na usmerjenost telefona, če je stran> 130 || Side 25 r.moveDistance (-. 1) % Premakne Roombo nazaj za približno 0,1 metra nazaj, če je iPhone nagnjen nazaj vsaj 25 stopinj, če stran 25 r.turnAngle (-1) % Obrne Roombo za približno 1 stopinjo CCW, če iPhone je nagnjen levo za najmanj 25 stopinj, če je Pitch <-25 r.turnAngle (1) % Obrne Roombo za približno 1 stopinjo CW, če je iPhone nagnjen vsaj za 25 stopinj

To so le poudarki glavnih delov naše kode, ki smo jih vključili, če morate hitro kopirati in prilepiti razdelek v svojo korist. Celotna koda pa je po potrebi priložena spodaj

5. korak: Zaključek

Ta koda, ki smo jo napisali, je posebej zasnovana za našega robota in celotno vizijo projekta. Naš cilj je bil uporabiti vse naše sposobnosti kodiranja MATLAB za izdelavo skripta za oblikovanje vodnjakov, ki uporablja večino funkcij robota. Uporaba krmilnika telefona ni tako težka, kot si mislite, in upamo, da vam bo naša koda pomagala bolje razumeti koncept kodiranja iRobota.

Priporočena: