ዝርዝር ሁኔታ:

Roomba Explorer: 4 ደረጃዎች
Roomba Explorer: 4 ደረጃዎች

ቪዲዮ: Roomba Explorer: 4 ደረጃዎች

ቪዲዮ: Roomba Explorer: 4 ደረጃዎች
ቪዲዮ: The Best Robot Vacuum Tier List 2024, ሀምሌ
Anonim
Roomba Explorer
Roomba Explorer

MATLAB እና iRobot's Create2 Robot ን በመጠቀም ፣ ይህ ፕሮጀክት ያልታወቀ ቦታ የተለያዩ ቦታዎችን ይመረምራል። አደገኛ የመሬት አቀማመጥን ለማንቀሳቀስ በሮቦት ላይ ያሉትን ዳሳሾች ቀጠርን። ከተያያዘው Raspberry Pi ፎቶግራፎች እና የቪዲዮ ምግብ በማግኘቱ ሮቦቱ የሚያጋጥማቸውን መሰናክሎች ለመወሰን ችለናል ፣ እነሱም ይመደባሉ።

ክፍሎች እና ቁሳቁሶች

ለዚህ ፕሮጀክት እርስዎ ያስፈልግዎታል

-ኮምፒተር

-የ MATLAB ምዕራብ ስሪት (MATLAB R2018b ለዚህ ፕሮጀክት ጥቅም ላይ ውሏል)

- roomba የመሳሪያ ሳጥን ጫን

-iRobot's Create2 Robot

-Raspberry Pi ከካሜራ ጋር

ደረጃ 1 - ተነሳሽነት እና ዳሳሾች

ተነሳሽነት እና ዳሳሾች
ተነሳሽነት እና ዳሳሾች

ማንኛውንም መርሃ ግብር ከመጀመራችን በፊት የሮቦት የተለያዩ ክፍሎች መዳረሻን የፈቀደውን የክፍልባ ጫን የመሳሪያ ሳጥን አውርደናል።

መጀመሪያ ላይ ማንኛውንም ሮቦት ለማስጀመር GUI ፈጠርን። ይህንን ለማድረግ የሮቦቱን ቁጥር እንደ ግብዓት መተየብ ያስፈልግዎታል። ይህ የእኛን ፕሮግራም ወደ ሮቦት ለማስኬድ መዳረሻ ይፈቅድለታል። ሮቦቱ በሚያጋጥማቸው ብዙ መልከዓ ምድሮች ውስጥ እንዲንቀሳቀስ ለማድረግ ሰርተናል። ፍጥነቱን እና አቅጣጫውን ለመለወጥ ሮቦቱን ለመጓዝ የገደል አነፍናፊዎችን ፣ ቀላል ቡም ዳሳሾችን እና አካላዊ ቡም ዳሳሾችን ተግባራዊ አድርገናል። ከስድስቱ የብርሃን ፍንዳታ ዳሳሾች ማናቸውንም ነገሮች ሲለዩ ፣ እነሱ የሚያመነጩት ዋጋ እየቀነሰ ይሄዳል ፣ ይህም የሮቦት ፍጥነት እንዲቀንስ ያደርጋል። ሮቦቱ በመጨረሻ ከእንቅፋት ጋር ሲጋጭ ፣ የፊዚካል ቡም ዳሳሾች ከዜሮ የሚበልጥ እሴት ያሳውቃሉ። በዚህ ምክንያት ሮቦቱ ይቆማል ፣ ስለዚህ ተጨማሪ ግጭቶች አይኖሩም እና ተጨማሪ ተግባራት ወደ ተግባር ሊገቡ ይችላሉ። ለገደል አነፍናፊዎች በዙሪያቸው ያለውን አካባቢ ብሩህነት ያነባሉ። እሴቱ ከ 2800 በላይ ከሆነ ፣ ሮቦቱ በተረጋጋ መሬት ላይ እና ደህንነቱ የተጠበቀ እንደሚሆን ወስነናል። ግን ፣ እሴቱ ከ 800 በታች ከሆነ ፣ የገደል አነፍናፊዎች ገደል እየለዩ ፣ እንዳይወድቁ ወዲያውኑ ያቆማሉ። በመካከላቸው ያለው ማንኛውም እሴት ውሃን ለመወከል ተወስኗል እናም ሮቦቱ ድርጊቱን እንዲያቆም ያደርገዋል። ከላይ የተጠቀሱትን ዳሳሾች በመጠቀም ፣ ማንኛውም አደጋ ካለ በተሻለ ለማወቅ እንድንችል የሮቦት ፍጥነት ተቀይሯል።

ከዚህ በታች ኮዱ (ከ MATLAB R2018b)

%% ማስጀመር

dlgPrompts = {'' Roomba Number '};

dlgTitle = 'የእርስዎ Roomba ይምረጡ';

dlgDefaults = {''};

opts. Resize = 'on';

dlgout = inputdlg (dlgPrompts ፣ dlgTitle ፣ 1 ፣ dlgDefaults ፣ opts) % ተጠቃሚ የክፍልባ ቁጥራቸውን እንዲያስገባ የሚጠይቅ መስኮት ይፍጠሩ።

n = str2double (dlgout {1});

r = roomba (n); % ተጠቃሚው የተገለጸውን Roomba %% የፍጥነት ውሳኔ ከ Light Bump Sensors እውነተኛ s = r.getLightBumpers; % የብርሃን ብልጭታ ዳሳሾችን ያግኙ

lbumpout_1 = Extractfield (ዎች ፣ 'ግራ'); % የአነፍናፊዎቹን የቁጥር እሴቶች በመውሰድ የበለጠ ጥቅም ላይ እንዲውሉ ያደርጋቸዋል lbumpout_2 = extractfieldfield (s ፣ 'leftFront') ፤

lbumpout_3 = Extractfield (ዎች ፣ 'leftCenter');

lbumpout_4 = Extractfield (ዎች ፣ 'rightCenter') ፤

lbumpout_5 = Extractfield (s, 'rightFront');

lbumpout_6 = Extractfield (s, 'right');

lbout = [lbumpout_1 ፣ lbumpout_2 ፣ lbumpout_3 ፣ lbumpout_4 ፣ lbumpout_5 ፣ lbumpout_6] % እሴቶችን ወደ ማትሪክስ ይለውጣል።

sLbump = መደርደር (ስለ) %ማትሪክስ ወደ ዝቅተኛ እሴት ሊወጣ ይችላል

lowLbump = sLbump (1); ፍጥነት =.05+(lowLbump)*.

r.setDriveVelocity (ፍጥነት ፣ ፍጥነት)

አበቃ

% አካላዊ ባምፐርስ

ለ = r.getBumpers; %ውጤት እውነት ፣ ሐሰት

bsen_1 = የማውጣት መስክ (ለ ፣ 'ግራ')

bsen_2 = የማውጣት መስክ (ለ ፣ 'ቀኝ')

bsen_3 = የማውጣት መስክ (ለ ፣ 'ፊት')

bsen_4 = Extractfield (ለ ፣ 'leftWheelDrop')

bsen_5 = Extractfield (ለ ፣ 'rightWheelDrop')

ጉብታዎች = [bsen_1 ፣ bsen_2 ፣ bsen_3 ፣ bsen_4 ፣ bsen_5] tbump = ድምር (ድመቶች)

tbump> 0 r.setDriveVelocity (0, 0)

አበቃ

% የገደል ዳሳሾች

ሐ = r.getCliffSensors %% 2800 ደህና ፣ ሌላ ውሃ

csen_1 = የማውጣት መስክ (ሐ ፣ 'ግራ')

csen_2 = Extractfield (c ፣ 'right')

csen_3 = Extractfield (ሐ ፣ 'leftFront')

csen_4 = Extractfield (ሐ ፣ 'rightFront')

ገደሎች = [csen_1 ፣ csen_2 ፣ csen_3 ፣ csen_4]

ordcliff = መደርደር (ገደሎች)

ordcliff (1) <2750

r.setDriveVelocity (0, 0)

ገደል ከሆነ <800

disp 'ገደል'

ሌላ

'ውሃ'

አበቃ

አር. TurnAngle (45)

አበቃ

ደረጃ 2 - መረጃን ማግኘት

አካላዊ ቡም ዳሳሾች ከተደናቀፉ በኋላ ሮቦቱ መሰናክሉን ፎቶግራፍ ለማንሳት በ Raspberry Pi ላይ በቦታው ላይ ተግባራዊ ያደርጋል። ፎቶግራፍ ካነሳ በኋላ ፣ በስዕሉ ውስጥ ጽሑፍ ካለ የጽሑፍ ማወቂያን በመጠቀም ፣ ሮቦቱ እንቅፋቱ ምን እንደሆነ እና እንቅፋቱ ምን እንደሚል ይወስናል።

img = r.getImage; imshow (img);

imwrite (img ፣ 'imgfromcamera.jpg')

ፎቶ = መፃፍ ('imgfromcamera.jpg')

ocrResults = ocr (ፎቶ)

ganeText = ocrResults. Text;

ምስል;

imshow (ፎቶ) ጽሑፍ (220 ፣ 0 ፣ የታወቀ ጽሑፍ ፣ ‹የጀርባ ቀለም› ፣ [1 1 1]);

ደረጃ 3 - የማጠናቀቂያ ተልዕኮ

ሮቦቱ እንቅፋቱ ቤት መሆኑን ሲወስን ተልዕኮውን አጠናቆ እቤት ይቆያል። ሮቦቱ ተልዕኮውን ከጨረሰ በኋላ ወደ ቤቱ የተመለሰውን የኢሜል ማስጠንቀቂያ ይልካል ፣ እና በጉዞው ላይ የወሰዳቸውን ምስሎች ይልካል።

% ኢ-ሜል በመላክ ላይ

setpref ('በይነመረብ' ፣ 'SMTP_Server' ፣ 'smtp.gmail.com');

setpref ('በይነመረብ' ፣ 'ኢ_ሜል' ፣ '[email protected]'); ከ setpref ('በይነመረብ' ፣ 'SMTP_Username' ፣ 'የላኪ ኢሜል ያስገቡ') ለመላክ % የኢሜይል መለያ ፤ % ላኪዎች የተጠቃሚ ስም setpref ('በይነመረብ' ፣ 'SMTP_Password' ፣ 'የላኪ የይለፍ ቃል ያስገቡ') ፤ % የላኪ የይለፍ ቃል

props = 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 ('ኢሜል መቀበልን ያስገቡ' ፣ 'ሮምባ' ፣ 'ሮምባ ወደ ቤት ተመለሰ !!' ፣ 'imgfromcamera.jpg') ለመላክ % የኢሜይል መለያ

ከዚያ ሮቦት ተጠናቅቋል።

ደረጃ 4 መደምደሚያ

መደምደሚያ
መደምደሚያ

የተካተተው የ MATLAB ፕሮግራም ከሮቦት ጋር ከተጠቀመበት አጠቃላይ ስክሪፕት ተለይቷል። በመጨረሻው ረቂቅ ውስጥ ፣ መከለያዎቹ ያለማቋረጥ መሄዳቸውን ለማረጋገጥ ከመነሻ ደረጃው በስተቀር ሁሉንም ኮዱን ማስገባትዎን ያረጋግጡ። ይህ ፕሮግራም ከተጠቃሚው ፍላጎት ጋር ሊስማማ ይችላል። የእኛ ሮቦት ውቅር ይታያል።

*አስታዋሽ -ለ MATLAB ከሮቦቱ እና ከተሳፈረው Raspberry Pi ጋር መስተጋብር ለመፍጠር የመጫኛ መጫኛ ሳጥኑ አስፈላጊ መሆኑን አይርሱ።

የሚመከር: