Turinys:
- 1 žingsnis: inicijavimas ir jutikliai
- 2 žingsnis: Duomenų gavimas
- 3 žingsnis: Užbaikite misiją
- 4 žingsnis: Išvada
Video: „Roomba Explorer“: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Naudojant MATLAB ir „iRobot“sukurtą robotą „Create2“, šis projektas ištirs įvairias nežinomos vietos sritis. Mes panaudojome roboto jutiklius, kad padėtų manevruoti pavojingoje vietovėje. Gavę nuotraukas ir vaizdo įrašus iš pridėto „Raspberry Pi“, mes sugebėjome nustatyti kliūtis, su kuriomis susidurs robotas, ir jos bus įslaptintos.
Dalys ir medžiagos
Šiam projektui jums reikės
-kompiuteris
-naujausia MATLAB versija (šiam projektui buvo naudojama MATLAB R2018b)
- „roombaInstall“įrankių rinkinys
„iRobot“sukurtas robotas „Create2“
-„Raspberry Pi“su fotoaparatu
1 žingsnis: inicijavimas ir jutikliai
Prieš pradėdami bet kokį programavimą, atsisiuntėme „roombaInstall“įrankių rinkinį, kuris leido pasiekti įvairius roboto komponentus.
Iš pradžių mes sukūrėme GUI, kad inicijuotume bet kurį robotą. Norėdami tai padaryti, įveskite roboto numerį. Tai suteiks prieigą paleisti mūsų programą robotui. Mes dirbome, kad robotas laviruotų daugelyje vietovių, su kuriomis jis susidurs. Mes įdiegėme uolų jutiklius, šviesos smūgio jutiklius ir fizinio smūgio jutiklius, naudodami jų išvestis, kad išjungtume robotą ir pakeistume jo greitį ir (arba) kryptį. Kai kuris iš šešių šviesos smūgių jutiklių aptinka objektą, jų išvesties vertė sumažės, todėl roboto greitis sumažės, kad būtų išvengta susidūrimo visu greičiu. Kai robotas pagaliau susidurs su kliūtimi, „Physical Bump“jutikliai praneš didesnę vertę nei nulis; dėl to robotas sustos, todėl nebus jokių kitų susidūrimų ir bus galima panaudoti daugiau funkcijų. „Cliff Senssors“jie skaitys aplinkui esančios srities ryškumą. Jei vertė didesnė nei 2800, mes nustatėme, kad robotas bus stabilioje vietoje ir saugus. Tačiau, jei vertė yra mažesnė nei 800, uolos jutikliai aptiks skardį ir nedelsdami sustos, kad nenukristų. Bet kokia tarpinė vertė buvo nustatyta kaip vanduo ir privers robotą sustabdyti savo veiksmus. Naudojant aukščiau pateiktus jutiklius, keičiamas roboto greitis, leidžiantis geriau nustatyti, ar yra pavojus.
Žemiau yra kodas (iš MATLAB R2018b)
%% Inicializavimas
dlgPrompts = {'Roomba Number'};
dlgTitle = 'Pasirinkite savo kambarį';
dlgDefaults = {''};
opts. Resize = 'įjungtas';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Sukurti langą, raginantį vartotoją įvesti savo „roomba“numerį
n = str2double (dlgout {1});
r = roomba (n); % Inicijuoja vartotojo nurodytą „Roomba“%% Greičio nustatymas pagal „Light Bump Sensors“, o tiesa s = r.getLightBumpers; % gauna šviesos smūgio jutiklius
lbumpout_1 = ištraukimo laukas (-ai, kairė); % paima jutiklių skaitines vertes ir padaro jas patogesnes naudoti lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = ištraukimo laukas (-ai, 'leftCenter');
lbumpout_4 = ištraukimo laukas (-ai, 'rightCenter');
lbumpout_5 = ištraukimo laukas (-ai, 'rightFront');
lbumpout_6 = ištraukimo laukas (-ai, 'dešinė');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % konvertuoja reikšmes į matricą
sLbump = rūšiuoti (lbout); Galima išgauti %matricą iki mažiausios vertės
lowLbump = sLbump (1); greitis =.05+(lowLbump)*. 005 %naudojant mažiausią reikšmę, kuri reiškia artimas kliūtis, norint nustatyti greitį, didesnį greitį, kai nieko neaptinkama
r.setDriveVelocity (greitis, greitis)
galas
Fiziniai buferiai
b = r.getBamperiai; %Išvestis teisinga, klaidinga
bsen_1 = ištraukimo laukas (b, „kairė“)
bsen_2 = ištraukimo laukas (b, „dešinė“)
bsen_3 = ištraukimo laukas (b, „priekis“)
bsen_4 = ištraukimo laukas (b, 'leftWheelDrop')
bsen_5 = ištraukimo laukas (b, 'rightWheelDrop')
smūgiai = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = suma (bums)
jei tbump> 0 r.setDriveVelocity (0, 0)
galas
% Uolų jutikliai
c = r.getCliffSensors %% 2800 saugus, kitaip vanduo
csen_1 = ištraukimo laukas (c, „kairė“)
csen_2 = ekstrakto laukas (c, 'dešinė')
csen_3 = ištraukimo laukas (c, 'leftFront')
csen_4 = ekstrakto laukas (c, 'rightFront')
uolos = [csen_1, csen_2, csen_3, csen_4]
ordcliff = rūšiuoti (uolos)
jei ordcliff (1) <2750
r.setDriveVelocity (0, 0)
jei skardis <800
disp 'skardis'
Kitas
išpilti „vandenį“
galas
r. „TurnAngle“(45)
galas
2 žingsnis: Duomenų gavimas
Po fizinių smūgių jutiklių suveikimo robotas įdiegs „Raspberry Pi“, kad nufotografuotų kliūtį. Nufotografavęs, naudodamas teksto atpažinimą, jei paveikslėlyje yra teksto, robotas nustatys, kas yra kliūtis ir ką sako kliūtis.
img = r.getImage; parodyti (img);
imwrite (img, 'imgfromcamera.jpg')
nuotrauka = imread ('imgfromcamera.jpg')
ocrResults = ocr (nuotrauka)
atpažintasTekstas = ocrResults. Text;
figūra;
„imshow“(nuotraukos) tekstas (220, 0, atpažintas tekstas, „BackgroundColor“, [1 1 1]);
3 žingsnis: Užbaikite misiją
Kai robotas nustato, kad kliūtis yra NAMAI, jis atliks savo misiją ir liks namuose. Baigęs misiją, robotas atsiųs el. Paštu įspėjimą, kad grįžo namo, ir atsiųs savo kelionės metu nufotografuotus vaizdus.
% Siunčiami el
setpref ('Internetas', 'SMTP_Server', 'smtp.gmail.com');
setpref („Internetas“, „El. paštas“, „[email protected]“); % pašto paskyra, kurią reikia siųsti iš setpref ('Internetas', 'SMTP_Username', 'enter sender email'); % siuntėjų vartotojo vardas setpref ('Internetas', 'SMTP_Password', 'įveskite siuntėjo slaptažodį'); % Siuntėjų slaptažodis
rekvizitai = 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 ('Įveskite gaunamą el. laišką', 'Roomba', 'Roomba grįžo namo !!', 'imgfromcamera.jpg') % pašto paskyra, kurią reikia siųsti
Tada robotas baigtas.
4 žingsnis: Išvada
Įtraukta MATLAB programa yra atskirta nuo viso scenarijaus, kuris buvo naudojamas su robotu. Paskutiniame juodraštyje būtinai įveskite visą kodą, išskyrus inicializavimo veiksmą, į laiko ciklą, kad įsitikintumėte, jog buferiai veikia nuolat. Ši programa gali būti redaguojama pagal vartotojo poreikius. Rodoma mūsų roboto konfigūracija.
*Priminimas: nepamirškite, kad „roombaInstall“įrankių rinkinys reikalingas tam, kad MATLAB galėtų sąveikauti su robotu ir „Raspberry Pi“.
Rekomenduojamas:
„Roomba“pavertimas „Mars Rover“: 5 žingsniai
„Roomba“pavertimas „Mars Rover“:
„Internet Explorer“spartieji klavišai !!: 4 veiksmai
„Internet Explorer“spartieji klavišai !!: Ši instrukcija parodys keletą naudingų „Internet Explorer“sparčiųjų klavišų. Prenumeruokite mano kanalą
„Roomba Scout Explorer“: 8 žingsniai
„Roomba Scout Explorer“: „Mars rover“projektai, kaip vienas laukiamiausių ir daugiausiai ištirtų amerikiečių projektų, tapo žmonių pasiekimais nuolat tobulėjančioje aukštųjų technologijų autonominių sistemų gamyboje, siekiant tik ištirti ir integruoti
Nuo „Roomba“iki „Rover“vos 5 žingsniai!: 5 žingsniai
Nuo „Roomba“iki „Rover“vos 5 žingsniai!: „Roomba“robotai yra įdomus ir paprastas būdas pasinerti į kojų pirštus robotikos pasaulyje. Šioje instrukcijoje mes išsamiai aprašysime, kaip paprastą „Roomba“paversti valdomu roveriu, kuris tuo pačiu metu analizuoja jo aplinką. Dalių sąrašas1.) MATLAB2.) Roomb
Autobusų piratų 3EEPROM Explorer lenta: 5 žingsniai
Autobusų piratų 3 „EEPROM Explorer Board“: ką turite daryti, jei turite vieną iš „Hack a Day's Bus Pirates“? Sužinokite apie 1 laidų, I2C ir SPI EEPROM su 3EEPROM explorer plokšte (mes ją vadiname THR-EE-PROM). EEPROM yra atminties mikroschemos tipas, kuriame saugomi duomenys be nuolatinio maitinimo