Tartalomjegyzék:
- 1. lépés: Inicializálás és érzékelők
- 2. lépés: Adatok beszerzése
- 3. lépés: A küldetés befejezése
- 4. lépés: Következtetés
Videó: Roomba Explorer: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
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
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
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:
A Roomba átalakítása Mars Roverré: 5 lépés
A Roomba átalakítása Mars Roverré:
Roomba Bot the Bulider: 5 lépés (képekkel)
Roomba Bot the Bulider: A Bot the Builder egy roomba, amely " grabbers " az elejére rögzítve képes lesz tárgyakat mozgatni. A vele ellátott kód úgy van beállítva, hogy rögzítse az első mozdulatot egy GUI dobozzal, amelyet csak egérkattintással vezérelhet. Utána
MATLAB vezérelt Roomba: 5 lépés
MATLAB vezérelt Roomba: A projekt célja a MATLAB és egy módosított iRobot programozható robot használata. Csoportunk egyesítette kódolási készségeinket, hogy létrehozzon egy MATLAB szkriptet, amely az iRobot számos funkcióját használja, beleértve a sziklaérzékelőket, a lökhárító érzékelőt
Roomba Scout Explorer: 8 lépés
Roomba Scout Explorer: Mint az egyik legjobban várt és alaposan kutatott amerikai projekt, a Mars rover projektjei emberi eredmények lettek a csúcstechnológiájú autonóm rendszerek folyamatosan fejlődő gyártásában, kizárólag a nyomozás és az
Bus Pirate 3EEPROM Explorer Board: 5 lépés
Bus Pirate 3EEPROM Explorer Board: Ha van Hack a Day's Bus Pirates, akkor mit kezd vele? Ismerje meg az 1 vezetékes, I2C és SPI EEPROM-okat a 3EEPROM explorer táblával (ezt THR-EE-PROM-nak hívjuk). Az EEPROM egy olyan memóriachip, amely folyamatosan áram nélkül tárolja az adatokat