Satura rādītājs:

Roomba Explorer: 4 soļi
Roomba Explorer: 4 soļi

Video: Roomba Explorer: 4 soļi

Video: Roomba Explorer: 4 soļi
Video: Ты ОБЯЗАН это знать , если у тебя есть РОБОТ-ПЫЛЕСОС 💭#shorts 2024, Novembris
Anonim
Roomba Explorer
Roomba Explorer

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

Inicializācija un sensori
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

Secinājums
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: