Përmbajtje:

Roomba e kontrolluar MATLAB: 5 hapa
Roomba e kontrolluar MATLAB: 5 hapa

Video: Roomba e kontrolluar MATLAB: 5 hapa

Video: Roomba e kontrolluar MATLAB: 5 hapa
Video: Roomba Control (ROS & MATLAB) 2024, Nëntor
Anonim
Roomba e kontrolluar nga MATLAB
Roomba e kontrolluar nga MATLAB
Roomba e kontrolluar nga MATLAB
Roomba e kontrolluar nga MATLAB

Qëllimi i këtij projekti është të përdorë MATLAB si dhe një robot të programueshëm të modifikuar iRobot. Grupi ynë kombinoi aftësitë tona të kodimit për të krijuar një skenar MATLAB që përdor shumë funksione të iRobot, duke përfshirë sensorët e shkëmbit, sensorët e parakolpit, sensorët e dritës dhe kamerën. Ne i përdorëm këto lexime të sensorit dhe kamerës si hyrje, duke na lejuar të krijojmë disa dalje që duam duke përdorur funksionet dhe sythe të kodit MATLAB. Ne gjithashtu përdorim pajisjen mobile dhe xhiroskopin MATLAB si një mënyrë për t'u lidhur me iRobot dhe për ta kontrolluar atë.

Hapi 1: Pjesët dhe materialet

Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet

MATLAB 2018a

-Variacioni 2018 i MATLAB është versioni më i preferuar, kryesisht sepse punon më së miri me kodin që lidhet me pajisjen celulare. Sidoqoftë, shumica e kodit tonë mund të interpretohet në shumicën e versioneve të MATLAB.

iRobot Krijo pajisje

-Kjo pajisje është një pajisje e bërë posaçërisht, qëllimi i vetëm është programimi dhe kodimi. (Nuk është një vakum aktual)

Raspberry Pi (me kamera)

- Ky është një bord kompjuterik jo i shtrenjtë që punon si truri i iRobot. Mund të jetë e vogël, por është e aftë për shumë gjëra. Kamera është një shtesë shtesë. Ai gjithashtu përdor mjedrën pi për të marrë të gjitha funksionet dhe komandat e tij. Kamera e fotografuar më sipër është montuar në një stendë të printuar 3D, krijuar nga departamentet e Bazave Inxhinierike në Universitetin e Tennessee

Hapi 2: Skedari i bazës së të dhënave Roomba

Skedari i bazës së të dhënave Roomba
Skedari i bazës së të dhënave Roomba

Ekziston një skedar kryesor që do t'ju nevojitet në mënyrë që të përdorni funksionet dhe komandat e duhura për dhomën tuaj. Ky skedar është vendi ku kodi i shkruar ju tërheq funksionet në mënyrë që ta bëni funksionimin e dhomës tuaj më të menaxhueshme.

Ju mund ta shkarkoni skedarin në këtë lidhje ose skedarin e shkarkueshëm më poshtë

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

Hapi 3: Lidhja me Roomba

Së pari, duhet të siguroheni që roboti juaj të jetë i lidhur me bordin tuaj të mjedrës pi duke përdorur një prizë mikro USB. Atëherë duhet të lidhni siç duhet kompjuterin dhe robotin tuaj me të njëjtin WiFi. Pasi të jetë bërë kjo, mund të ndizni robotin tuaj dhe të lidheni me të duke përdorur komandën e dhënë në skedarin e bazës së të dhënave robot. (Rivendosni gjithmonë robotin tuaj para dhe pasi ta përdorni). Për shembull, ne përdorim komandën "r.roomba (19)" për t'u lidhur me robotin tonë, duke i caktuar ndryshoren r pajisjes sonë. Kjo i referohet skedarit të bazës së të dhënave, e cila krijon variablin tonë si një strukturë që ne mund t'i referohemi në çdo moment të caktuar.

Hapi 4: Kodi

Kodi
Kodi
Kodi
Kodi

Ne i kemi bashkangjitur kodin e plotë më poshtë, por këtu është një përmbledhje e shkurtër që nxjerr në pah elementet e rëndësishme në shkrimin tonë. Ne kemi përdorur të gjithë sensorët, si dhe kamerën për të maksimizuar plotësisht potencialin e robotit tonë. Ne gjithashtu përfshinë kodin që na lejoi të lidhim një pajisje celulare me robotin tonë dhe të përdorim gryoskopin e tij për ta kontrolluar me dorë.

Filluam me komandën e thjeshtë "r.setDriveVelocity (.06)" që vendos shpejtësinë e përparuar të robotit në.06 m/s. Kjo është vetëm për ta bërë robotin të lëvizë paraprakisht

Pastaj, skenari ynë kryesor fillon me një lak while që merr të dhënat e robotit të dhënë duke krijuar struktura që ne mund t'i referojmë dhe përdorim në deklaratat e kushtëzuara më poshtë, duke na lejuar kështu që t'i themi robotit të ekzekutojë një komandë të caktuar bazuar në të dhënat e strukturës roboti lexon me sensorët e tij. Ne e vendosëm atë në mënyrë që roboti të lexojë sensorët e tij të shkëmbit dhe të ndjekë një rrugë të zezë

ndërsa % e vërtetë ndërsa lak shkon derisa të ndodhë diçka "false" (në këtë rast vazhdon pafundësisht) të dhëna = r.getCliffSensors; data2 = r.getBumpers; % merr të dhëna vazhdimisht për vlerat e sensorit të shkëmbit dhe i cakton ato në një ndryshore % img = r.getImage; % Merr një fotografi nga kamera e montuar % imazh (img); % Tregon imazhin që është marrë % red_mean = mesatare (mesatarja (img (:,, 1))); % Merr vlerën mesatare për ngjyrën e gjelbër nëse data.rightFront <2000 r.turnAngle (-2); % e kthen Roomba afërsisht.2 gradë CW sapo vlera për sensorët e shkëmbinjve të përparmë të djathtë të bjerë nën 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftF front && 2000> data.rightF front r.moveDistanca (.1); % i thotë Roomba të vazhdojë përpara me afërsisht.2 m/s nëse të dy vlerat nga sensorët e djathtë të përparmë dhe të majtë para bien nën 2000 % r.turnAngle (0); % i thotë Roomba të mos kthehet nëse kushtet e lartpërmendura janë të vërteta

elseif data2.djathtas == 1 r.moveDistanca (-. 12); r.tornAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistanca (-. 2); r. ktheseAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistanca (-. 12); r.tornAngle (160); r.setDriveVelocity (.05);

Pas këtij laku while, ne fusim një lak while tjetër që aktivizon të dhënat e marra përmes kamerës. Dhe ne përdorim një deklaratë if brenda këtij laku while që njeh një imazh duke përdorur një program specifik (alexnet), dhe pasi identifikon imazhin, menjëherë aktivizon telekomandën e pajisjes celulare

anet = alexnet; % Cakton mësimin e thellë alexnet te një ndryshore ndërkohë e vërtetë % Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); etiketë = klasifiko (anet, img); nëse etiketa == "peshqir letre" || etiketë == "frigorifer" label = "ujë"; imazhi i fundit (img); titulli (shenja (etiketa)); tërhiqem;

Cikli while që na lejon të kontrollojmë pajisjen me telefonin tonë i merr ato të dhëna nga xhiroskopi i telefonit dhe i lidhim në një matricë që vazhdimisht i kthen të dhënat përsëri në MATLAB në kompjuter. Ne përdorim një deklaratë if që lexon të dhënat e matricës dhe jep një dalje që lëviz pajisjen bazuar në vlera të caktuara të xhiroskopit të telefonit. Importantshtë e rëndësishme të dini se ne kemi përdorur sensorët e Orientimit të pajisjes celulare. Matrica një nga tre e përmendur më sipër kategorizohet sipas secilit element të sensorëve të orientimit të telefonit, i cili është azimut, katran dhe anë. Deklaratat if krijuan kushte që deklarojnë kur ana tejkalon vlerat 50 ose bie nën -50, atëherë roboti lëviz një distancë të caktuar përpara (pozitive 50) ose prapa (negative 50). Dhe e njëjta gjë vlen edhe për vlerën e katranit. Nëse vlera e katranit tejkalon vlerën 25 të nën -25, roboti kthehet në një kënd prej 1 gradë (pozitiv 25) ose negativ 1 gradë (negativ 25)

ndërsa pauzë e vërtetë (.1) % Pauzë prej.5 sekonda para se të merret secila vlerë Controller = iphone. Orientimi; % Cakton matricën për vlerat e orientimit të iPhone në një ndryshore Azimuthal = Kontrollues (1); % Cakton vlerën e parë të matricës në një ndryshore Pitch = Controller (2); % Cakton vlerën e dytë të matricës në një ndryshore (anojeni përpara dhe mbrapa kur iPhone mbahet anash) Anash = Kontrolluesi (3); % Cakton vlerën e tretë të matricës në një ndryshore (anojeni majtas dhe djathtas kur iPhone mbahet anash) % Shkakton një dalje bazuar në orientimin e telefonit nëse Side> 130 || Ana 25 r.moveDistanca (-. 1) % Zhvendos Roomba mbrapsht përafërsisht.1 metra nëse iPhone është i përkulur prapa së paku 25 zbresë tjetërpas anës 25 r.tornAngle (-1) % Kthen Roomba afërsisht 1 gradë CCW nëse iPhone është i përkulur majtas të paktën 25 gradë elseif Pitch <-25 r.turnAngle (1) % Kthen Roomba afërsisht 1 gradë CW nëse iPhone është i përkulur të paktën 25 gradë në fund

Këto janë vetëm pikat kryesore të pjesëve kryesore të kodit tonë, të cilat i kemi përfshirë nëse keni nevojë të kopjoni dhe ngjisni shpejt një seksion për përfitimin tuaj. Sidoqoftë, i gjithë kodi ynë është i bashkangjitur më poshtë nëse është e nevojshme

Hapi 5: Përfundimi

Ky kod që kemi shkruar është krijuar posaçërisht për robotin tonë, si dhe vizionin tonë të përgjithshëm të projektit. Qëllimi ynë ishte të përdorim të gjitha aftësitë tona të kodimit MATLAB në mënyrë që të krijojmë një skenar të dizajnuar mirë që përdor shumicën e veçorive të robotit. Përdorimi i kontrolluesit të telefonit nuk është aq i vështirë sa mund të mendoni, dhe ne shpresojmë që kodi ynë mund t'ju ndihmojë të kuptoni më mirë konceptin pas kodimit të një iRobot.

Recommended: