ዝርዝር ሁኔታ:

ማርስ Roomba: 6 ደረጃዎች
ማርስ Roomba: 6 ደረጃዎች

ቪዲዮ: ማርስ Roomba: 6 ደረጃዎች

ቪዲዮ: ማርስ Roomba: 6 ደረጃዎች
ቪዲዮ: Mars rover has holes in its wheels 2024, ህዳር
Anonim
ማርስ ሮምባ
ማርስ ሮምባ

ይህ አስተማሪ በ Raspberry Pi ቁጥጥር የሚደረግበትን የ Roomba ቫክዩም ቦት ወደ ሥራ አቅጣጫ ይመራዎታል። እኛ የምንጠቀምበት ስርዓተ ክወና በ MATLAB በኩል ነው።

ደረጃ 1 - አቅርቦቶች

ይህንን ፕሮጀክት ለማካሄድ መሰብሰብ ያለብዎት-

  • የ iRobot Create2 Roomba ቫክዩም ክሊነር ቦት
  • Raspberry Pi
  • Raspberry Pi ካሜራ
  • የ MATLAB የቅርብ ጊዜ ስሪት
  • የ Roomba መጫኛ መሣሪያ ለ MATLAB
  • ለተንቀሳቃሽ መሣሪያ MATLAB ትግበራ

ደረጃ 2 - የችግሩ መግለጫ

የችግሩ መግለጫ
የችግሩ መግለጫ

የሳይንስ ሊቃውንት የፕላኔቷን መረጃ በመሰብሰብ ለማገዝ በማርስ ላይ ጥቅም ላይ ሊውል የሚችል ሮቨር ለማልማት MATLAB ን እንድንጠቀም ተልእኮ ተሰጥቶናል። በፕሮጀክታችን ውስጥ ያነጋገርናቸው ተግባራት የርቀት መቆጣጠሪያ ፣ የነገር ተፅእኖ ማወቂያ ፣ የውሃ ማወቂያ ፣ የሕይወት ዕውቅና እና የምስል ማቀነባበር ነበሩ። እነዚህን ግቦች ለማሳካት የ iRobot's Create2 Roomba ን በርካታ ተግባሮችን ለመቆጣጠር የ Roomba መሣሪያ ሳጥን ትዕዛዞችን በመጠቀም ኮድ አድርገናል።

ደረጃ 3 የብሉቱዝ የርቀት መቆጣጠሪያ

የብሉቱዝ የርቀት መቆጣጠሪያ
የብሉቱዝ የርቀት መቆጣጠሪያ

ይህ ተንሸራታች የስማርትፎን መሣሪያዎን የብሉቱዝ ችሎታዎች በመጠቀም የ Roomba ን እንቅስቃሴ ለመቆጣጠር በኮዱ ውስጥ ያልፋል። ለመጀመር ፣ የ MATLAB መተግበሪያን ወደ ዘመናዊ ስልክዎ ያውርዱ እና ወደ የሂሳብ ሥራዎች መለያዎ ይግቡ። አንዴ ከገቡ በኋላ ወደ “ተጨማሪ” ፣ “ቅንብሮች” ይሂዱ እና የአይፒ አድራሻውን በመጠቀም ከኮምፒዩተርዎ ጋር ይገናኙ። አንዴ ከተገናኙ በኋላ ወደ “ተጨማሪ” ይመለሱ እና “ዳሳሾች” ን ይምረጡ። በማያ ገጹ በላይኛው የመሳሪያ አሞሌ ላይ በሦስተኛው ዳሳሽ ላይ መታ ያድርጉ እና መጀመሪያ ላይ መታ ያድርጉ። አሁን የእርስዎ ዘመናዊ ስልክ የርቀት መቆጣጠሪያ ነው!

ኮዱ እንደሚከተለው ነው

0 == 0 እያለ

ለአፍታ አቁም (.5)

PhoneData = M. Orientation;

አዚ = PhoneData (1);

Pitch = PhoneData (2);

ጎን = PhoneData (3);

ጉብታዎች = r.getBumpers;

ከሆነ ጎን> 80 || ጎን <-80

r.stop

r.beep ('C ፣ E ፣ G ፣ C^፣ G ፣ E ፣ C')

ሰበር

elseif Side> 20 && Side <40

r.turnAngle (-5);

ሌላ ከሆነ ጎን> 40

r.turnAngle (-25);

ሌላ ከሆነ ጎን -40

r.turnAngle (5);

ሌላ ከሆነ ጎን <-40

r.turnAngle (25);

አበቃ

Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

አበቃ

አበቃ

ደረጃ 4 - ተጽዕኖ ዕውቅና

ተጽዕኖ ዕውቅና
ተጽዕኖ ዕውቅና

እኛ ተግባራዊ ያደረግነው ሌላው ተግባር የ Roomba ን ተፅእኖ ወደ አንድ ነገር መለየት እና የአሁኑን መንገድ ማረም ነበር። ይህንን ለማድረግ ፣ አንድ ነገር እንደተመታ ለማወቅ ከባምፐር አነፍናፊዎች ንባቦች ጋር ሁኔታዊ ሁኔታዎችን መጠቀም ነበረብን። ሮቦቱ አንድን ነገር ቢመታ ፣ ምትኬ ይይዛል ።2 ሜትር ፣ እና ባምፐር በተመታበት ማዕዘን ላይ ይሽከረከራል። አንድ ንጥል ከተመታ በኋላ “ኦፍ” የሚለውን ቃል የሚያሳይ ምናሌ ብቅ ይላል።

ኮዱ ከዚህ በታች ይታያል

0 == 0 እያለ

ጉብታዎች = r.getBumpers;

r.setDriveVelocity (.1)

bumps.left == 1

msgbox ('ኡፍ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r. TurnAngle (-35)

r.setDriveVelocity (.2)

ሌላ ከሆነ ጉብታዎች። ፊት == 1

msgbox ('ኡፍ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r. TurnAngle (90)

r.setDriveVelocity (.2)

ሌላ ከሆነ ጉብታዎች.እውቀት == 1

msgbox ('ኡፍ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

otherif bumps.leftWheelDrop == 1

msgbox ('ኡፍ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r. TurnAngle (-35)

r.setDriveVelocity (.2)

ሌላ ከሆነ ጉብታዎች.rightWheelDrop == 1

msgbox ('ኡፍ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r. TurnAngle (35)

r.setDriveVelocity (.2)

አበቃ

አበቃ

ደረጃ 5 የሕይወት ዕውቅና

የሕይወት ዕውቅና
የሕይወት ዕውቅና

ከፊት ለፊቱ የነገሮችን ቀለሞች ለማንበብ የህይወት ማወቂያ ስርዓትን ኮድ አድርገናል። እኛ ኮድ የሰጠናቸው ሦስቱ የሕይወት ዓይነቶች ዕፅዋት ፣ ውሃ እና መጻተኞች ናቸው። ይህንን ለማድረግ የቀይ ፣ ሰማያዊ ፣ አረንጓዴ ወይም ነጭ አማካይ እሴቶችን ለማስላት ዳሳሾችን ኮድ አድርገናል። እነዚህ እሴቶች ካሜራው የሚመለከተውን ቀለም ለመወሰን በእጅ ከተዘጋጁት ገደቦች ጋር ተነጻጽረዋል። ኮዱ እንዲሁ ወደ ነገሩ የሚወስደውን መንገድ ያቅዳል እና ካርታ ይፈጥራል።

ኮዱ እንደሚከተለው ነው

t = 10;

እኔ = 0;

t == 10 እያለ

img = r.getImage; imshow (img)

ለአፍታ አቁም (0.167)

i = i + 1;

red_mean = አማካይ (አማካይ (img (:,:, 1))));

blue_mean = አማካይ (አማካይ (img (:,:, 3))));

green_mean = አማካይ (አማካይ (img (:,:, 2))));

white_mean = (ሰማያዊ_ማለት + አረንጓዴ_ማዕድን + ቀይ_ማለት) / 3; %100 ይህንን ቫል ይፈልጋሉ

ዘጠኝ_plus_ten = 21;

አረንጓዴ_መድረሻ = 125;

ሰማያዊ_መድረሻ = 130;

white_threshold = 124;

red_threshold = 115;

ዘጠኝ_plus_ten == 21 %አረንጓዴ - ሕይወት

ከሆነ አረንጓዴ_ማለት> አረንጓዴ_መድረሻ && ሰማያዊ_መጠን <ሰማያዊ_መድረሻ && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('የሚቻል የሕይወት ምንጭ ተገኝቷል ፣ ቦታው ታቅዷል');

ለአፍታ አቁም (2)

ሰርዝ (ሀ)

[y2, Fs2] = audioread ('z_speak2.wav');

ድምጽ (y2 ፣ Fs2)

ለአፍታ አቁም (2)

%ተክል = r.getImage; %imshow (ተክል);

%አስቀምጥ ('plant_img.mat', ተክል ');

%የሴራ ቦታ በአረንጓዴ

i = 5;

ሰበር

ሌላ

ዘጠኝ_ፕላስ_ተን = 19;

አበቃ

አበቃ

ዘጠኝ_ፕላስ_ተን = 21;

ዘጠኝ_plus_ten == 21 %ሰማያዊ - woder

ከሆነ ሰማያዊ_ማለት> ሰማያዊ_መድረሻ && አረንጓዴ_መጠን <አረንጓዴ_መድረሻ && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('የውሃ ምንጭ ተገኝቷል ፣ ቦታው ታቅዷል');

ለአፍታ አቁም (2)

ሰርዝ (ሀ)

[y3, Fs3] = ኦዲዮ ንባብ ('z_speak3.wav');

ድምጽ (y3 ፣ Fs3);

%woder = r.getImage; %imshow (woder)

%አስቀምጥ ('water_img.mat', woder)

%የእቅድ ቦታ በሰማያዊ

i = 5;

ሰበር

ሌላ

ዘጠኝ_ፕላስ_ተን = 19;

አበቃ

አበቃ

ዘጠኝ_ፕላስ_ተን = 21;

ዘጠኝ_plus_ten == 21 %ነጭ - የውጭ ዜጎች monkaS

ከሆነ ነጭ_ማለት> ነጭ_መድረሻ && ሰማያዊ_መጠን <ሰማያዊ_መድረሻ && አረንጓዴ_መጠን <አረንጓዴ_መድረሻ

[y5, Fs5] = audioread ('z_speak5.wav');

ድምጽ (y5 ፣ Fs5);

ለአፍታ አቁም (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

ድምጽ (ys ፣ Fss);

ለአፍታ አቁም (3)

r.stop

% እንግዳ = r.getImage; %imshow (እንግዳ);

% አስቀምጥ ('alien_img.mat', መጻተኛ);

i = 5;

ሰበር

ሌላ

ዘጠኝ_ፕላስ_ተን = 19;

አበቃ

አበቃ

እኔ == 5 ከሆነ

ሀ = 1; %አንግል ያዞራል

t = 9; %ትልቅ ዙር ያቋርጡ

እኔ = 0;

አበቃ

አበቃ

ደረጃ 6: አሂድ

ሁሉም ኮዱ ከተፃፈ በኋላ ሁሉንም በአንድ ፋይል ውስጥ ያጣምሩ እና voila! የእርስዎ Roomba bot አሁን ሙሉ በሙሉ ይሠራል እና እንደ ማስታወቂያ ይሠራል! ሆኖም ፣ የብሉቱዝ መቆጣጠሪያው በተለየ ፋይል ውስጥ ወይም ከ %% ጋር ከሌላው ኮድ መለየት አለበት።

ሮቦትዎን በመጠቀም ይደሰቱ !!

የሚመከር: