Kazalo:
- 1. korak: Deli in materiali
- 2. korak: Datoteka zbirke podatkov Roomba
- 3. korak: Povežite se z Roombo
- 4. korak: Koda
- 5. korak: Zaključek
Video: MATLAB nadzorovana Roomba: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
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
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
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
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:
Superstock (zaloga nadzorovana s čitalnikom črtne kode): 5 korakov
Superstock (zaloga, ki jo nadzoruje čitalnik črtne kode): V tem priročniku vam bom povedal, kako sestaviti Superstock, moj šolski projekt za 1MCT v Howestu. Koncept ustvarja uporabniku prijazno bazo podatkov, do katere lahko dostopate prek spletnega mesta, da boste lahko šteli, kaj imate na zalogi (v mojem primeru oblačila za moje
Glasovno nadzorovana domača avtomatizacija z navdihom COVID-19: 5 korakov
Glasovno nadzorovana domača avtomatizacija, ki jo navdihuje COVID-19: V zadnjih štirih letih sem preizkusil 3 ali 4 različne različice nadzorov doma na osnovi Arduina. Za udobje vseh je tukaj kronološka zgodovina nekaterih mojih dosežkov. Navodilo 1 - oktobra 2015 je bilo uporabljeno IR in RF komuniciranje
DIY nizkonapetostna zunanja razsvetljava, nadzorovana z uporabo Raspberry Pi: 11 korakov (s slikami)
DIY nizkonapetostna zunanja razsvetljava, nadzorovana z uporabo Raspberry Pi: Zakaj? Moram priznati, da sem, tako kot mnogi drugi, velik oboževalec interneta stvari (ali IoT). Tudi jaz sem še vedno utrujen, da vse svoje luči, aparate, vhodna vrata, garažna vrata in kdo ve, kaj še povezujem z izpostavljenim internetom. Še posebej pri dogodkih, kot so
Glasovno nadzorovana avtomatizacija: 13 korakov
Glasovno nadzorovana avtomatizacija: Dandanes imajo ljudje ves čas s seboj pametne telefone. Zato jih je smiselno uporabljati za nadzor gospodinjskih aparatov. Tukaj je predstavljen sistem za avtomatizacijo doma s preprosto aplikacijo za Android, s katero lahko upravljate električne naprave s klikom
Servo nadzorovana protetična roka: 8 korakov
Servo nadzorovana protetična roka: Pozdravljeni, tukaj izdelujem protetično roko, ki jo upravljajo servomotorji, da se oprime. Delam desno, vendar sem vključil datoteke za tiskanje tudi leve dlani. Sestavljanje je enako za levo in desno roko