Talaan ng mga Nilalaman:

Roomba Explorer: 4 na Hakbang
Roomba Explorer: 4 na Hakbang

Video: Roomba Explorer: 4 na Hakbang

Video: Roomba Explorer: 4 na Hakbang
Video: Не заряжается робот пылесос Mi Robot vacuum mop//РЕМОНТ 2024, Nobyembre
Anonim
Roomba Explorer
Roomba Explorer

Sa pamamagitan ng paggamit ng MATLAB at Create2 Robot ng iRobot, tuklasin ng proyektong ito ang iba't ibang mga lugar ng isang hindi kilalang lokasyon. Ginamit namin ang mga sensor sa Robot upang matulungan ang mapaglalangan ang isang mapanganib na lupain. Sa pamamagitan ng pagkuha ng mga litrato at feed ng video mula sa isang naka-attach na Raspberry Pi, natukoy namin ang mga hadlang na kakaharapin ng Robot, at maiuuri sila.

Mga Bahagi at Kagamitan

Para sa proyektong ito, kakailanganin mo

-isang kompyuter

-pinakabagong bersyon ng MATLAB (ginamit ang MATLAB R2018b para sa proyektong ito)

- roombaInstall toolbox

Gumawa ng Robot2 ng -iRobot

-Raspberry Pi na may Camera

Hakbang 1: Initialization at Sensors

Initialization at Sensors
Initialization at Sensors

Bago simulan ang anumang programa, na-download namin ang toolba ng roombaInstall toolbox, na pinapayagan ang pag-access sa iba't ibang mga bahagi ng Robot.

Sa una, lumikha kami ng isang GUI upang mapasimulan ang anumang Robot. Upang magawa ito, kailangan mong i-type ang bilang ng Robot bilang isang input. Papayagan nito ang pag-access upang patakbuhin ang aming programa sa Robot Nagtrabaho kami sa pagkuha ng Robot sa maneuver sa pamamagitan ng maraming mga terrain na makakaharap nito. Ipinatupad namin ang Cliff Sensors, Light Bump Sensors, at Physical Bump Sensors, sa pamamagitan ng paggamit ng kanilang mga output upang maglakbay sa Robot upang mabago ang bilis at o direksyon nito. Kapag ang alinman sa anim na Light Bump Sensors ay nakakakita ng isang bagay, ang halagang inilalabas nila ay bababa, na magiging sanhi ng pagbawas ng bilis ng Robot upang maiwasan ang isang ganap na banggaan. Kapag ang Robot ay tuluyang nakabangga sa isang balakid, ang mga Physical Bump sensors ay mag-uulat ng halagang higit sa zero; dahil dito, titigil ang Robot, kaya't wala nang mga karagdagang banggaan at maraming mga pag-andar ang maaaring maisagawa. Para sa Cliff Sensors, babasahin nila ang ningning ng lugar sa kanilang paligid. Kung ang halaga ay higit sa 2800, natukoy namin na ang Robot ay nasa matatag na lupa at ligtas. Ngunit, Kung ang halaga ay mas mababa sa 800, ang Cliff Sensors ay makakakita ng isang bangin, huminto kaagad upang hindi mahulog. Ang anumang halaga sa pagitan ay tinutukoy upang kumatawan sa tubig at magiging sanhi ng Robot na ihinto ang pagkilos nito. Sa pamamagitan ng paggamit ng mga sensor sa itaas, ang bilis ng Robot ay nabago na nagpapahintulot sa amin na mas mahusay na matukoy kung mayroong anumang panganib.

Nasa ibaba ang code (mula sa MATLAB R2018b)

%% Pauna

dlgPrompts = {'Roomba Number'};

dlgTitle = 'Piliin ang Iyong Roomba';

dlgDefaults = {''};

opts. Resize = 'on';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Lumikha ng window na mag-uudyok sa gumagamit na i-input ang kanilang roomba number

n = str2double (dlgout {1});

r = roomba (n); % Pinasimulan ang tinukoy ng gumagamit Roomba %% Ang pagpapasiya ng bilis mula sa Light Bump Sensors habang ang tunay na s = r.getLightBumpers; % nakakakuha ng mga light bump sensor

lbumpout_1 = extractfield (s, 'left'); Kinukuha ng% ang mga numerong halaga ng mga sensor at ginagawang mas magagamit ang mga ito lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = extractfield (s, 'kanan');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% nagko-convert ng mga halaga sa matrix

sLbump = pag-uuri (lbout); % sort matrix sa pinakamababang halaga ay maaaring makuha

lowLbump = sLbump (1); bilis =.05 + (lowLbump) *. 005% gamit ang pinakamababang halaga, na kumakatawan sa mga malapit na hadlang, upang matukoy ang bilis, mas mataas na bilis kapag walang napansin

r.setDriveVelocity (bilis, bilis)

magtapos

% Mga Physical Bumper

b = r.getBumpers; % Output totoo, hindi totoo

bsen_1 = extractfield (b, 'left')

bsen_2 = extractfield (b, 'kanan')

bsen_3 = extractfield (b, 'harap')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

mga bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)

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

magtapos

% Mga Cliff Sensor

c = r.getCliffSensors %% 2800 ligtas, iba pang tubig

csen_1 = extractfield (c, 'kaliwa')

csen_2 = extractfield (c, 'kanan')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

cliff = [csen_1, csen_2, csen_3, csen_4]

ordcliff = pag-uri-uriin (mga bangin)

kung ordcliff (1) <2750

r.setDriveVelocity (0, 0)

kung bangin <800

disp 'cliff'

iba pa

disp 'tubig'

magtapos

r. TurnAngle (45)

magtapos

Hakbang 2: Pagkuha ng Data

Matapos mapalampas ang Physical Bump Sensors, ipapatupad ito ng Robot sa board na Raspberry Pi upang kumuha ng litrato ng balakid. Matapos kumuha ng litrato, gamit ang pagkilala sa teksto kung mayroong teksto sa larawan, matutukoy ng Robot kung ano ang balakid at kung ano ang sinasabi ng balakid.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

larawan = imread ('imgfromcamera.jpg')

ocrResult = ocr (larawan)

kinikilalangTeksto = ocrResult. Txt;

pigura;

teksto ng imshow (larawan) (220, 0, kinikilalangTeksto, 'BackgroundColor', [1 1 1]);

Hakbang 3: Finishing Mission

Kapag natukoy ng Robot na ang balakid ay HOME, makukumpleto nito ang misyon at manatili sa bahay. Matapos makumpleto ang misyon, magpapadala ang Robot ng isang alerto sa e-mail na bumalik na ito sa bahay, at magpapadala ito ng mga imaheng kinuha sa paglalakbay nito.

% Nagpapadala ng E-mail

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

setpref ('Internet', 'E_mail', '[email protected]'); % mail account upang maipadala mula sa setpref ('Internet', 'SMTP_Username', 'ipasok ang email ng nagpadala'); % mga nagpadala username setpref ('Internet', 'SMTP_Password', 'ipasok ang nagpadala password'); % Password ng Mga Nagpadala

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

sendmail ('Ipasok ang pagtanggap ng email', 'Roomba', 'Roomba ay bumalik sa bahay !!', 'imgfromcamera.jpg')% mail account upang maipadala sa

Ang Robot ay tapos na.

Hakbang 4: Konklusyon

Konklusyon
Konklusyon

Ang isinama na programa ng MATLAB ay nahiwalay mula sa buong script na ginamit sa Robot. Sa huling draft, tiyaking ilagay ang lahat ng code, maliban sa hakbang sa pagsisimula, sa isang habang loop upang matiyak na ang mga bumper ay patuloy na tumatakbo. Ang program na ito ay maaaring mai-edit upang umangkop sa mga pangangailangan ng gumagamit. Ipinapakita ang pagsasaayos ng aming Robot.

* Paalala: Huwag kalimutan na ang toolba ng roombaInstall ay kinakailangan para sa MATLAB upang makipag-ugnay sa Robot at sa board Raspberry Pi.

Inirerekumendang: