Satura rādītājs:
- 1. darbība: inicializācija un sensori
- 2. darbība. Datu iegūšana
- 3. solis: Misijas pabeigšana
- 4. solis. Secinājums
Video: Roomba Explorer: 4 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Izmantojot MATLAB un iRobot izveidoto robotu Create2, šis projekts izpētīs dažādas nezināmas atrašanās vietas. Mēs izmantojām robota sensorus, lai palīdzētu manevrēt bīstamā apvidū. Iegūstot fotoattēlus un video plūsmu no pievienotā Raspberry Pi, mēs varējām noteikt šķēršļus, ar kuriem Robots saskarsies, un tie tiks klasificēti.
Daļas un materiāli
Šim projektam jums būs nepieciešams
-dators
-jaunākā MATLAB versija (šim projektam tika izmantota MATLAB R2018b)
- roombaInstall toolbox
-iRobota izveidotais robots
-Raspberry Pi ar kameru
1. darbība: inicializācija un sensori
Pirms programmēšanas uzsākšanas mēs lejupielādējām roombaInstall rīkkopu, kas ļāva piekļūt dažādām robota sastāvdaļām.
Sākotnēji mēs izveidojām GUI, lai inicializētu jebkuru robotu. Lai to izdarītu, ievadiet robota numuru. Tas ļaus piekļūt robotam, lai palaistu mūsu programmu. Mēs strādājām pie tā, lai robots varētu manevrēt daudzos reljefos. Mēs ieviesām klints sensorus, gaismas trieciena sensorus un fiziskos trieciena sensorus, izmantojot to izejas, lai iedarbinātu robotu un mainītu tā ātrumu vai virzienu. Kad kāds no sešiem gaismas trieciena sensoriem nosaka objektu, to izvadītā vērtība samazināsies, kā rezultātā samazinās robota ātrums, lai izvairītos no sadursmes ar pilnu ātrumu. Kad robots beidzot sadursies ar šķērsli, fiziskā trieciena sensori ziņos par vērtību, kas lielāka par nulli; šī iemesla dēļ robots apstāsies, tāpēc turpmākas sadursmes nenotiks, un darbībā var tikt izmantotas vairāk funkcijas. Klints sensoriem viņi nolasīs apkārtējās zonas spilgtumu. Ja vērtība ir lielāka par 2800, mēs noteicām, ka robots atradīsies uz stabilas zemes un būs drošībā. Bet, ja vērtība ir mazāka par 800, klints sensori atklās klinti un nekavējoties apstāsies, lai nenokristu. Jebkura vērtība starp tām tika noteikta kā ūdens un liks robotam apturēt savu darbību. Izmantojot iepriekš minētos sensorus, tiek mainīts robota ātrums, ļaujot mums labāk noteikt, vai pastāv briesmas.
Zemāk ir kods (no MATLAB R2018b)
%% Inicializācija
dlgPrompts = {'Roomba numurs'};
dlgTitle = 'Izvēlieties savu Roomba';
dlgDefaults = {''};
opts. Resize = 'ieslēgts';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Izveidot logu, kas liek lietotājam ievadīt savu Roomba numuru
n = str2double (dlgout {1});
r = roomba (n); % Inicializē lietotāja norādīto Roomba %% ātruma noteikšanu no gaismas trieciena sensoriem, kamēr patiess s = r.getLightBumpers; % iegūst gaismas trieciena sensorus
lbumpout_1 = ieguves lauks (s, 'pa kreisi'); % ņem sensoru skaitliskās vērtības un padara tos lietojamākus lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = izraksta lauks (s, 'leftCenter');
lbumpout_4 = izraksta lauks (s, 'rightCenter');
lbumpout_5 = izraksta lauks (s, 'rightFront');
lbumpout_6 = izraksta lauks (s, 'pa labi');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % pārvērš vērtības matricā
sLbump = kārtot (lbout); Var iegūt %matricas līdz zemākajai vērtībai
lowLbump = sLbump (1); ātrums =.05+(lowLbump)*. 005 %, izmantojot zemāko vērtību, kas apzīmē tuvus šķēršļus, lai noteiktu ātrumu, lielāku ātrumu, ja nekas nav konstatēts
r.setDriveVelocity (ātrums, ātrums)
beigas
Fiziskie buferi
b = r.getBamperi; %Izvade patiesa, nepatiesa
bsen_1 = izraksta lauks (b, 'pa kreisi')
bsen_2 = izraksta lauks (b, 'labi')
bsen_3 = izraksta lauks (b, 'priekšpuse')
bsen_4 = izraksta lauks (b, 'leftWheelDrop')
bsen_5 = izraksta lauks (b, 'rightWheelDrop')
izciļņi = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = summa (bums)
ja tbump> 0 r.setDriveVelocity (0, 0)
beigas
% Klints sensori
c = r.getCliffSensors %% 2800 drošs, citādi ūdens
csen_1 = izraksta lauks (c, 'pa kreisi')
csen_2 = izraksta lauks (c, 'pa labi')
csen_3 = izraksta lauks (c, 'leftFront')
csen_4 = izraksta lauks (c, 'rightFront')
klintis = [csen_1, csen_2, csen_3, csen_4]
ordcliff = kārtot (klintis)
ja ordcliff (1) <2750
r.setDriveVelocity (0, 0)
ja klints <800
disp 'klints'
citādi
izspiest "ūdeni"
beigas
r. pagrieziena leņķis (45)
beigas
2. darbība. Datu iegūšana
Pēc fizisko triecienu sensoru iedarbināšanas robots ieviesīs Raspberry Pi bortu, lai nofotografētu šķērsli. Pēc fotogrāfijas uzņemšanas, izmantojot teksta atpazīšanu, ja attēlā ir teksts, robots noteiks, kas ir šķērslis un ko saka šķērslis.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
foto = imread ('imgfromcamera.jpg')
ocrResults = ocr (foto)
atpazītsTeksts = ocrResults. Text;
figūra;
imshow (foto) teksts (220, 0, atpazīts teksts, 'BackgroundColor', [1 1 1]);
3. solis: Misijas pabeigšana
Kad robots noteiks, ka šķērslis ir MĀJĀS, tas pabeigs savu misiju un paliks mājās. Pēc misijas pabeigšanas robots nosūtīs e-pasta brīdinājumu par atgriešanos mājās un nosūtīs attēlus, kas uzņemti ceļojuma laikā.
% E-pasta sūtīšana
setpref ('Internets', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internets', 'E_mail', '[email protected]'); % pasta konts, kas jānosūta no setpref ('Internets', 'SMTP_Username', 'ievadiet sūtītāja e -pastu'); % sūtītāju lietotājvārds setpref ('Internets', 'SMTP_Password', 'ievadiet sūtītāja paroli'); % Sūtītāju parole
rekvizīti = 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 ('Ievadiet saņemto e -pastu', 'Roomba', 'Roomba ir atgriezies mājās !!', 'imgfromcamera.jpg') % pasta konts, lai nosūtītu
Pēc tam robots ir pabeigts.
4. solis. Secinājums
Iekļautā MATLAB programma ir atdalīta no visa skripta, kas tika izmantots kopā ar robotu. Galīgajā melnrakstā noteikti ievietojiet visu kodu, izņemot inicializācijas darbību, cikla cilpā, lai pārliecinātos, ka buferi nepārtraukti darbojas. Šo programmu var rediģēt atbilstoši lietotāja vajadzībām. Tiek parādīta mūsu robota konfigurācija.
*Atgādinājums: neaizmirstiet, ka roombaInstall rīkkopa ir nepieciešama, lai MATLAB varētu mijiedarboties ar robotu un Raspberry Pi.
Ieteicams:
Jūsu Roomba pārvēršana Mars Rover: 5 soļi
Pārvēršot savu Roomba par Mars Rover:
Roomba Bot the Bulider: 5 soļi (ar attēliem)
Roomba Bot the Bulider: Bot the Builder ir roomba, kas ar " grabbers " pievienots priekšpusē, varēs pārvietot objektus. Kods ar to ir iestatīts ierakstīt pirmo kustību ar GUI lodziņu, kuru varat kontrolēt tikai ar peles klikšķi. Pēc
Tastatūras īsceļi pārlūkprogrammai Internet Explorer !!: 4 soļi
Tastatūras īsceļi pārlūkprogrammai Internet Explorer !!: Šī pamācība parādīs dažus noderīgus īsinājumtaustiņus pārlūkam Internet Explorer Lūdzu, abonējiet manu kanāluPaldies
Roomba Scout Explorer: 8 soļi
Roomba Scout Explorer: Kā viens no visvairāk gaidītajiem un visvairāk pētītajiem amerikāņu projektiem Marsa roveru projekti ir kļuvuši par cilvēku sasniegumiem arvien progresīvākajā augsto tehnoloģiju autonomo sistēmu ražošanā, lai tikai izpētītu un integrētu
Autobusu pirātu 3EEPROM Explorer dēlis: 5 soļi
Autobusu pirātu 3EEPROM Explorer padome: ja jums ir kāds no Hack a Day's Bus Pirates, ko jūs ar to darāt? Uzziniet par 1 vadu, I2C un SPI EEPROM, izmantojot 3EEPROM pētnieku paneli (mēs to saucam par THR-EE-PROM). EEPROM ir atmiņas mikroshēmas veids, kas saglabā datus bez nepārtrauktas jaudas