Tartalomjegyzék:

Roomba Explorer: 4 lépés
Roomba Explorer: 4 lépés

Videó: Roomba Explorer: 4 lépés

Videó: Roomba Explorer: 4 lépés
Videó: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, Július
Anonim
Roomba Explorer
Roomba Explorer

A MATLAB és az iRobot Create2 Robot használatával ez a projekt egy ismeretlen hely különböző területeit fogja felderíteni. A robot érzékelőit alkalmaztuk a veszélyes terep manőverezéséhez. A mellékelt Raspberry Pi fényképek és videócsatornák beszerzésével meg tudtuk határozni azokat az akadályokat, amelyekkel a Robotnak szembe kell néznie, és minősítésre kerülnek.

Alkatrészek és anyagok

Ehhez a projekthez szüksége lesz

-egy számítógép

-a MATLAB legújabb verziója (ehhez a projekthez a MATLAB R2018b -t használták)

- roombaInstall toolbox

-iRobot Create2 robotja

-Málna Pi kamerával

1. lépés: Inicializálás és érzékelők

Inicializálás és érzékelők
Inicializálás és érzékelők

A programozás megkezdése előtt letöltöttük a roombaInstall eszköztárat, amely lehetővé tette a robot különböző összetevőinek elérését.

Kezdetben létrehoztunk egy GUI -t bármely robot inicializálására. Ehhez be kell írnia a Robot számát bemenetként. Ez lehetővé teszi a program futtatását a robothoz. Dolgoztunk azon, hogy a robot manőverezzen a sok terepen, amelyekkel találkozni fog. Megvalósítottuk a sziklaérzékelőket, a fényütés -érzékelőket és a fizikai ütésérzékelőket, azok kimeneteinek felhasználásával, hogy leállítsuk a robotot, hogy megváltoztassuk sebességét vagy irányát. Amikor a hat fényütés -érzékelő közül bármelyik objektumot észlel, az általuk kibocsátott érték csökken, ami a robot sebességének csökkenéséhez vezet, hogy elkerülje a teljes sebességű ütközést. Amikor a Robot végre ütközik egy akadályba, a Physical Bump érzékelők nullánál nagyobb értéket jeleznek; emiatt a Robot leáll, így nem lesz további ütközés, és több funkció is működésbe léphet. A Cliff Sensors számára leolvassák a körülöttük lévő terület fényerejét. Ha az érték nagyobb, mint 2800, megállapítottuk, hogy a robot stabil talajon és biztonságban lesz. Ha azonban az érték 800 -nál kisebb, a sziklaérzékelők észlelnek egy sziklát, és azonnal megállnak, hogy ne essenek le. A köztük lévő értékeket a víz jelzi, és a robot leállítja működését. A fenti érzékelők használatával a robot sebessége megváltozik, így jobban meg tudjuk határozni, hogy van -e veszély.

Alább a kód (a MATLAB R2018b -ből)

%% Inicializálás

dlgPrompts = {'Roomba száma'};

dlgTitle = 'Válassza ki a szobáját';

dlgDefaults = {''};

opts. Resize = 'be';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Ablak létrehozása, amely felszólítja a felhasználót, hogy írja be a roomba számát

n = str2double (dlgout {1});

r = roomba (n); % Inicializálja a felhasználó által meghatározott Roomba %% Sebességmeghatározást a Light Bump érzékelőkből, míg true s = r.getLightBumpers; % kap fényütés érzékelőket

lbumpout_1 = kivonatmező (s, 'bal'); % veszi az érzékelők számértékeit és használhatóbbá teszi őket lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = kivonatmező (s, 'leftCenter');

lbumpout_4 = kivonatmező (k, 'rightCenter');

lbumpout_5 = kivonatmező (s, 'rightFront');

lbumpout_6 = kivonatmező (s, 'jobb');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % konvertálja az értékeket mátrixba

sLbump = rendezés (lbout); A %mátrixot a legalacsonyabb értékre rendezheti ki

lowLbump = sLbump (1); sebesség =.05+(lowLbump)*. 005 %a legalacsonyabb érték használatával, amely közeli akadályokat jelent, a sebesség, nagyobb sebesség meghatározásához, ha nem észlel semmit

r.setDriveVelocity (sebesség, sebesség)

vége

% Fizikai ütközők

b = r.getBumpers; %Kimenet igaz, hamis

bsen_1 = kivonatmező (b, 'bal')

bsen_2 = kivonatmező (b, 'jobb')

bsen_3 = kivonatmező (b, 'elülső')

bsen_4 = kivonatmező (b, 'leftWheelDrop')

bsen_5 = kivonatmező (b, 'rightWheelDrop')

dudorok = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = összeg (bumm)

ha tbump> 0 r.setDriveVelocity (0, 0)

vége

% Cliff érzékelők

c = r.getCliffSensors %% 2800 biztonságos, különben víz

csen_1 = kivonatmező (c, 'bal')

csen_2 = kivonatmező (c, 'jobb')

csen_3 = kivonatmező (c, 'leftFront')

csen_4 = kivonatmező (c, 'rightFront')

sziklák = [csen_1, csen_2, csen_3, csen_4]

ordcliff = rendezés (sziklák)

ha ordcliff (1) <2750

r.setDriveVelocity (0, 0)

ha a szikla <800

disp 'szikla'

más

„víz”

vége

r. TurnAngle (45)

vége

2. lépés: Adatok beszerzése

Miután a fizikai ütésérzékelők kioldottak, a robot megvalósítja a Raspberry Pi fedélzetén, hogy lefényképezze az akadályt. Fényképezés után, ha szövegfelismerést használ, ha szöveg van a képen, a Robot meghatározza, hogy mi az akadály és mit mond az akadály.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

fotó = imread ('imgfromcamera.jpg')

ocrResults = ocr (fotó)

atzīstText = ocrResults. Text;

ábra;

imshow (fotó) szöveg (220, 0, elismerett szöveg, 'BackgroundColor', [1 1 1]);

3. lépés: A küldetés befejezése

Amikor a Robot megállapítja, hogy az akadály OTTHON, akkor befejezi küldetését és otthon marad. A küldetés befejezése után a Robot e-mailben értesítést küld arról, hogy hazatért, és elküldi az út során készített képeket.

% E-mail küldése

setpref ('Internet', 'SMTP_szerver', 'smtp.gmail.com');

setpref ('Internet', 'E_mail', '[email protected]'); % mail fiók küldése a setpref -ből ('Internet', 'SMTP_Username', 'enter sender email'); % senders felhasználónév setpref ('Internet', 'SMTP_Password', 'adja meg a feladó jelszavát'); % Küldők jelszava

kellékek = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail ('Írja be a fogadó e -mailt', 'Roomba', 'Roomba hazatért !!', 'imgfromcamera.jpg') % mail account to send to

A robot ezután befejeződött.

4. lépés: Következtetés

Következtetés
Következtetés

A mellékelt MATLAB program el van választva a Robot által használt teljes szkripttől. A végső tervezetben ügyeljen arra, hogy az összes kódot az inicializálási lépés kivételével egy kis ciklusba helyezze, hogy megbizonyosodjon arról, hogy a lökhárítók folyamatosan működnek. Ez a program a felhasználó igényeinek megfelelően szerkeszthető. Robotunk konfigurációja látható.

*Emlékeztető: Ne felejtse el, hogy a roombaInstall eszköztár szükséges ahhoz, hogy a MATLAB kölcsönhatásba léphessen a Robottal és a fedélzeti Raspberry Pi -vel.

Ajánlott: