Sisukord:

MATLABi juhitav Roomba: 5 sammu
MATLABi juhitav Roomba: 5 sammu

Video: MATLABi juhitav Roomba: 5 sammu

Video: MATLABi juhitav Roomba: 5 sammu
Video: Diana and Roma playing Café 2024, Juuli
Anonim
MATLAB kontrollitav Roomba
MATLAB kontrollitav Roomba
MATLAB kontrollitav Roomba
MATLAB kontrollitav Roomba

Selle projekti eesmärk on kasutada MATLAB -i ja modifitseeritud programmeeritavat iRoboti robotit. Meie rühm ühendas meie kodeerimisoskused, et luua MATLAB -skript, mis kasutab paljusid iRoboti funktsioone, sealhulgas kaljuandureid, kaitserauaandureid, valgusandureid ja kaamerat. Kasutasime neid anduri ja kaamera näiteid sisenditena, võimaldades meil luua teatud väljundeid, mida soovime, kasutades MATLAB -koodi funktsioone ja silmuseid. Samuti kasutame iRobotiga ühenduse loomiseks ja juhtimiseks MATLAB mobiilseadet ja güroskoopi.

Samm: osad ja materjalid

Osad ja materjalid
Osad ja materjalid
Osad ja materjalid
Osad ja materjalid
Osad ja materjalid
Osad ja materjalid
Osad ja materjalid
Osad ja materjalid

MATLAB 2018a

-MATLABi 2018. aasta versioon on kõige eelistatum versioon, enamasti seetõttu, et see töötab kõige paremini mobiilseadmega ühendatava koodiga. Enamikku meie koodidest saab siiski tõlgendada enamikus MATLAB -i versioonides.

iRobot Loo seade

-See seade on spetsiaalselt valmistatud seade, mille ainus eesmärk on programmeerimine ja kodeerimine. (See pole tegelik vaakum)

Vaarika Pi (kaameraga)

- See on mitte kallis arvutiplaat, mis töötab iRoboti ajuna. See võib olla väike, kuid on võimeline paljudeks asjadeks. Kaamera on lisavarustus. Samuti kasutab see vaarika pi kõiki oma funktsioone ja käske. Ülaltoodud kaamera on paigaldatud 3D -trükitud alusele, mille on loonud Tennessee ülikooli inseneriteaduse alused.

2. samm: Roomba andmebaasifail

Roomba andmebaasifail
Roomba andmebaasifail

Roomba jaoks sobivate funktsioonide ja käskude kasutamiseks on teil vaja põhifaili. See fail on koht, kust kirjutasite koodi, mis juhib funktsioone, et muuta oma roomba kasutamine paremini hallatavaks.

Faili saate alla laadida sellel lingil või allalaaditava faili allpool

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

Samm: ühendage Roombaga

Esiteks peate mikro -USB -pistiku abil veenduma, et teie robot on teie vaarika pi -plaadiga ühendatud. Siis peate arvuti ja roboti korralikult ühendama sama WiFi -ga. Kui see on tehtud, saate oma roboti sisse lülitada ja sellega roboti andmebaasi failis antud käsu abil ühenduse luua. (Enne ja pärast selle kasutamist lähtestage robot alati kõvasti.) Näiteks kasutame oma robotiga ühenduse loomiseks käsku "r.roomba (19)", määrates meie seadmele muutuja r. See viitab tagasi andmebaasifailile, mis seab meie muutuja struktuuriks, millele saame igal hetkel viidata.

4. samm: kood

Kood
Kood
Kood
Kood

Oleme lisanud allpool täieliku koodi, kuid siin on lühike ülevaade, mis tõstab esile meie skripti olulised elemendid. Me kasutasime kõiki andureid ja kaamerat, et oma roboti potentsiaali täielikult maksimeerida. Lisasime ka koodi, mis võimaldas meil ühendada oma robotiga mobiilseadme ja kasutada selle gryoskoopi selle käsitsi juhtimiseks.

Alustasime lihtsa käsuga "r.setDriveVelocity (.06)", mis seab roboti edasikiiruseks 0,06 m/s. See on lihtsalt selleks, et robot eelnevalt liikuma saada

Seejärel alustatakse meie peamist skripti mõne aja tsükliga, mis otsib antud roboti andmed, luues struktuure, millele saame viidata ja kasutada allpool toodud tingimuslausetes, võimaldades seega robotil öelda, et ta täidab struktuuri andmete põhjal teatud käsu robot loeb oma anduritega. Seadsime selle nii, et robot loeks oma kaljuandureid ja järgiks musta rada

samas tõsi % while tsükkel läheb seni, kuni tekib midagi "vale" (antud juhul jätkub see lõpmatuseni) data = r.getCliffSensors; data2 = r.getBumpers; % otsib pidevalt kaljuanduri väärtuste kohta andmeid ja määrab need muutujale % img = r.getImage; % Pildistab paigaldatud kaamerast % image (img); % Näitab tehtud pilti % red_mean = keskmine (keskmine (img (:,:, 1))); % Võtab rohelise värvi keskmise väärtuse, kui andmed.rightFront <2000 r.turnAngle (-2); % pöörab Roomba umbes, 2 kraadi CW, kui parempoolse eesmise kaljuanduri väärtus langeb alla 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % käsib Roombal jätkata kiirust umbes 0,2 m/s, kui mõlemad parempoolsed ja vasakpoolsed esiandurid langevad alla 2000 % r.turnAngle (0); % käsib Roombal mitte pöörduda, kui ülaltoodud tingimused on tõesed

elseif data2.right == 1 r.moveDistance (-. 12); r.pöördenurk (160); r.setDriveVelocity (.05); elseif data2.vasak == 1 r.moveDistance (-. 2); r.pöördenurk (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.pöördenurk (160); r.setDriveVelocity (.05);

Pärast seda samasilmust sisestame teise samasilmuse, mis käivitab kaamera kaudu saadud andmed. Ja me kasutame selle while -tsükli sees if -lauset, mis tuvastab pildi kindla programmi (alexnet) abil, ja kui pilt on tuvastatud, käivitab see kohe mobiilseadme kaugjuhtimispuldi

anet = alexnet; % Määrab alexneti süvaõppe muutujale, samas kui tõene % Lõpmatu, samas kui silmus img = r.getImage; img = suur (img, [227, 227]); silt = klassifitseerima (anet, img); kui silt == "paberrätik" || silt == "külmik" silt = "vesi"; lõpppilt (img); pealkiri (sümbol (silt)); tõmmatud;

Kuigi loop, mis võimaldab meil seadet oma telefoniga juhtida, saab need andmed telefoni güroskoobist ja me ühendame need maatriksiga, mis voogesitab andmeid pidevalt arvutisse tagasi MATLAB -i. Kasutame if -lauset, mis loeb maatriksi andmeid ja annab väljundi, mis liigutab seadet telefoni güroskoobi teatud väärtuste alusel. Oluline on teada, et kasutasime mobiilseadme orientatsiooniandureid. Ülalmainitud üks kuni kolm maatriksit liigitatakse telefoni orientatsiooniandurite iga elemendi järgi, milleks on asimuut, samm ja külg. Kui avaldused lõid tingimused, mis teatasid, kui külg ületab väärtusi 50 või langeb alla -50, liigub robot teatud vahemaa edasi (positiivne 50) või tagasi (negatiivne 50). Ja sama kehtib ka pigi väärtuse kohta. Kui helikõrguse väärtus ületab 25 väärtust alla -25, pöördub robot 1 kraadi (positiivne 25) või negatiivse 1 kraadi (negatiivne 25) nurga all

samas tõeline paus (.1) % Paus.5 sekundit enne iga väärtuse võtmist Kontroller = iphone. Orientation; % Määrab maatriksi iPhone'i orientatsiooni väärtuste muutujale Azimuthal = Controller (1); % Määrab maatriksi esimese väärtuse muutujale Pitch = Controller (2); % Määrab maatriksi teise väärtuse muutujale (kallutage iPhone'i külili hoides ette ja taha) Side = Controller (3); % Määrab maatriksi kolmanda väärtuse muutujale (kallutage vasakule ja paremale, kui iPhone'i hoitakse külili) % Põhjustab väljundi telefoni orientatsiooni põhjal, kui külg> 130 || Külg 25 r.moveDistance (-. 1) % Liigutab Roomba umbes 0,1 meetrit tahapoole, kui iPhone on kallutatud tahapoole vähemalt 25 kraadi, kui külg 25 r.turnAngle (-1) % Pöörab Roomba umbes 1 kraadi CCW, kui iPhone on kallutatud vasakule vähemalt 25 kraadi muidu, kui kalle <-25 r.pööreNurk (1) % Pöörab Roomba umbes 1 kraadi CW, kui iPhone on kallutatud vähemalt 25 kraadi

Need on vaid meie koodi peamiste osade esiletõstmised, mille lisasime, kui teil on vaja jaotis kiiresti oma huvides kopeerida ja kleepida. Kogu meie kood on aga vajadusel allpool lisatud

5. samm: järeldus

See kood, mille me kirjutasime, on spetsiaalselt loodud meie roboti jaoks ja ka meie üldine visioon projektist. Meie eesmärk oli kasutada kõiki meie MATLAB -i kodeerimisoskusi, et koostada hästi kavandatud skript, mis kasutab ära enamiku roboti funktsioone. Telefonikontrolleri kasutamine pole nii keeruline, kui arvate, ja loodame, et meie kood aitab teil paremini mõista iRoboti kodeerimise kontseptsiooni.

Soovitan: