Orodha ya maudhui:

Roomba Explorer: 4 Hatua
Roomba Explorer: 4 Hatua

Video: Roomba Explorer: 4 Hatua

Video: Roomba Explorer: 4 Hatua
Video: Пылесос робот rr6825(4) 2024, Novemba
Anonim
Mtafiti wa Roomba
Mtafiti wa Roomba

Kwa kutumia MATLAB na iRobot's Create2 Robot, mradi huu utachunguza maeneo tofauti ya eneo lisilojulikana. Tulitumia sensorer kwenye Robot kusaidia kuendesha eneo lenye hatari. Kwa kupata picha na malisho ya video kutoka kwa Raspberry Pi ambayo imeambatishwa, tuliweza kubaini vizuizi ambavyo Robot atakabiliwa, na vitaainishwa.

Sehemu na Vifaa

Kwa mradi huu, utahitaji

-kompyuta

Toleo jipya zaidi la MATLAB (MATLAB R2018b ilitumika kwa mradi huu)

- sanduku la zana la roombaSanikisha

Kuunda2 Robot

-Raspberry Pi na Kamera

Hatua ya 1: Uanzishaji na sensorer

Uanzishaji na Sensorer
Uanzishaji na Sensorer

Kabla ya kuanza programu yoyote, tulipakua sanduku la zana la roombaInstall, ambalo liliruhusu ufikiaji wa vifaa anuwai vya Robot.

Hapo awali, tuliunda GUI ili kuanzisha Robot yoyote. Ili kufanya hivyo, unahitaji kuchapa idadi ya Robot kama pembejeo. Hii itaruhusu ufikiaji wa kuendesha programu yetu kwa Robot Tulifanya kazi kupata Robot kuendesha kupitia maeneo mengi ambayo ingekutana nayo. Tulitekeleza Sensorer za Cliff, sensorer Bump Light, na Sensors Bump Physical, kwa kutumia matokeo yao kusafiri Robot ili kubadilisha kasi na au mwelekeo. Wakati yoyote ya Sensorer sita za Bump Light zinapogundua kitu, thamani inayotolewa itapungua, na kusababisha kasi ya Robot kupungua ili kuzuia mgongano wa kasi kamili. Wakati Robot hatimaye inagongana na kikwazo, sensorer za Bump Physical zitaripoti thamani kubwa kuliko sifuri; kwa sababu ya hii, Robot itaacha, kwa hivyo hakutakuwa na migongano zaidi na kazi zaidi zinaweza kufanywa. Kwa Sensorer za Cliff, watasoma mwangaza wa eneo karibu nao. Ikiwa thamani ni kubwa kuliko 2800, tuliamua kuwa Robot itakuwa kwenye uwanja thabiti na salama. Lakini, ikiwa thamani ni chini ya 800, Sensorer za Cliff zitakuwa zikigundua mwamba, zikisimama mara moja ili zisianguke. Thamani yoyote katikati iliamuliwa kuwakilisha maji na itasababisha Robot kuacha hatua yake. Kwa kutumia sensorer hapo juu, kasi ya Robot inabadilishwa kuturuhusu kuamua vizuri ikiwa kuna hatari yoyote.

Chini ni nambari (kutoka MATLAB R2018b)

Uanzishaji wa %%

dlgPrompts = {'Nambari ya Roomba'};

dlgTitle = 'Chagua Roomba Yako';

dlgDefaults = {"";

punguza. Resize = 'on';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Unda dirisha ambayo inamshawishi mtumiaji kuingiza nambari ya roomba

n = str2double (dlgout {1});

r = roomba (n); % Inazindua uamuzi maalum wa Roomba %% wa kasi kutoka kwa Sensorer za Nuru wakati wa kweli s = r.getLightBumpers; % hupata sensorer za mapema

lbumpout_1 = uwanja wa dondoo (s, 'kushoto'); % inachukua nambari za sensorer na kuzifanya zitumike zaidi lbumpout_2 = uwanja wa dondoo, 'kushotoFront');

lbumpout_3 = uwanja wa dondoo (s, 'leftCenter');

lbumpout_4 = uwanja wa dondoo (s, 'rightCenter');

lbumpout_5 = uwanja wa dondoo (s, 'rightFront');

lbumpout_6 = uwanja wa dondoo (s, 'kulia');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% hubadilisha maadili kuwa matrix

sLbump = aina (lbout); Aina ya tumbo kwa thamani ya chini kabisa inaweza kutolewa

chiniLbump = sBump (1); kasi =.05 + (lowLbump) *. 005% ikitumia thamani ya chini kabisa, ambayo inawakilisha vizuizi vya karibu, kuamua kasi, kasi kubwa wakati hakuna kitu kiligunduliwa

r.setDriveVelocity (kasi, kasi)

mwisho

Bumpers wa Kimwili

b = r.getBumpers; Pato ni kweli, uwongo

bsen_1 = uwanja wa dondoo (b, 'kushoto')

bsen_2 = uwanja wa dondoo (b, 'kulia')

bsen_3 = uwanja wa dondoo (b, 'mbele')

bsen_4 = uwanja wa dondoo (b, 'leftWheelDrop')

bsen_5 = uwanja wa dondoo (b, 'rightWheelDrop')

matuta = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = jumla (bums)

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

mwisho

Sensorer za Mwamba

c = r.getCliffSensors %% 2800 salama, maji mengine

csen_1 = uwanja wa dondoo (c, 'kushoto')

csen_2 = uwanja wa dondoo (c, 'kulia')

csen_3 = uwanja wa dondoo (c, 'kushotoFront')

csen_4 = uwanja wa dondoo (c, 'rightFront')

miamba = [csen_1, csen_2, csen_3, csen_4]

ordcliff = aina (maporomoko)

ikiwa ordcliff (1) <2750

r.setDriveVelocity (0, 0)

ikiwa mwamba <800

'mwamba'

mwingine

disp 'maji'

mwisho

r. TurnAngle (45)

mwisho

Hatua ya 2: Kupata Takwimu

Baada ya sensorer za Bump za Kimwili kukwama, Robot itatekeleza yake kwenye bodi ya Raspberry Pi kuchukua picha ya kikwazo. Baada ya kupiga picha, kwa kutumia utambuzi wa maandishi ikiwa kuna maandishi kwenye picha, Roboti ataamua kikwazo ni nini na kikwazo kinasema nini.

img = r.getImage; imshow (img);

kuandika (img, 'imgfromcamera.jpg')

picha = imread ('imgfromcamera.jpg')

Matokeo = ocr (picha)

knownText = matokeo ya ocr. Text;

takwimu;

imshow (picha) maandishi (220, 0, Nakala inayotambuliwa, 'BackgroundColor', [1 1 1]);

Hatua ya 3: Kumaliza Ujumbe

Wakati Robot inapoamua kuwa kikwazo ni NYUMBANI, itakamilisha dhamira yake na kukaa nyumbani. Baada ya kumaliza utume, Robot atatuma arifa ya barua-pepe kuwa imerudi nyumbani, na itatuma picha ambazo zilichukua wakati wa safari yake.

Kutuma Barua pepe

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

setpref ('Mtandao', 'E_mail', '[email protected]'); Akaunti ya barua ya kutuma kutoka setpref ('Mtandao', 'SMTP_Username', 'ingiza barua pepe ya mtumaji'); % setpref ya watumaji ('Mtandao', 'SMTP_Password', 'ingiza nenosiri la mtumaji'); Nenosiri la watumaji

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

sendmail ('Ingiza kupokea barua pepe', 'Roomba', 'Roomba amerudi nyumbani !!', 'imgfromcamera.jpg')% akaunti ya kutuma kutuma kwa

Robot imekamilika.

Hatua ya 4: Hitimisho

Hitimisho
Hitimisho

Programu ya MATLAB iliyojumuishwa imetengwa kutoka kwa hati yote iliyotumiwa na Robot. Katika rasimu ya mwisho, hakikisha kuweka nambari yote, isipokuwa hatua ya uanzishaji, kwenye kitanzi cha muda ili kuhakikisha kuwa bumpers wanaendesha kila wakati. Programu hii inaweza kuhaririwa kukidhi mahitaji ya mtumiaji. Usanidi wa Robot yetu umeonyeshwa.

* Mawaidha: Usisahau kwamba sanduku la zana la roombaInstall linahitajika kwa MATLAB kuingiliana na Robot na kwenye bodi ya Raspberry Pi.

Ilipendekeza: