ዝርዝር ሁኔታ:

IRobot Create-Mars Expedition Rover Mark I: 4 ደረጃዎች
IRobot Create-Mars Expedition Rover Mark I: 4 ደረጃዎች

ቪዲዮ: IRobot Create-Mars Expedition Rover Mark I: 4 ደረጃዎች

ቪዲዮ: IRobot Create-Mars Expedition Rover Mark I: 4 ደረጃዎች
ቪዲዮ: Домино Робот с Мировым Рекордом (100k домино за 24 часа) 2024, ሀምሌ
Anonim
IRobot ፍጠር-ማርስ ጉዞ ሮቨር ማርክ I
IRobot ፍጠር-ማርስ ጉዞ ሮቨር ማርክ I

ይህ አስተማሪ የማትላብን ኮድ በመጠቀም የ iRobot ፍጠርን እንዴት እንደሚያዋቅሩ ያስተምርዎታል። የእርስዎ ሮቦት ቅርጾችን በመለየት ማዕድንን የመፈለግ ችሎታ ይኖረዋል ፣ በገደል አነፍናፊዎች በመጠቀም ረግረጋማ ቦታን ያንቀሳቅሳል ፣ እና በቀጥታ ምግብ በኩል በእጅ የመቆጣጠር ችሎታ ይኖረዋል።

ደረጃ 1 - አቅርቦቶች

አቅርቦቶች
አቅርቦቶች

ለዚህ ፕሮጀክት ፣ የ Roomba ሮቦት ቫክዩም ክሊነር በፕሮግራም ሊሠራ የሚችል iRobot ፍጠር ያስፈልግዎታል። ሮቦቱ ለዚህ ፕሮጀክት የሚያስፈልጉትን ሁሉንም አነፍናፊዎች ፣ በተለይም የቦምብ ዳሳሾችን ፣ የገደል ዳሳሾችን እና “ቀላል ቡም” ዳሳሾችን የያዘ ነው። እንዲሁም ለገመድ አልባ ግንኙነት ፣ ለፕሮግራም እና ለቀጥታ የቪዲዮ ምግብ የሚያገለግል Raspberry Pi እና ቪዲዮ ካሜራ ያስፈልግዎታል። በመጨረሻም ፣ ለ Raspberry Pi እና ለካሜራ 3 ዲ የታተመ ተራራ ያስፈልግዎታል።

ደረጃ 2: ተፈላጊውን ውጤት ለማርካት ኮዲንግን ያዘጋጁ

ተፈላጊውን ውጤት ለማርካት ኮዲንግ ያዘጋጁ
ተፈላጊውን ውጤት ለማርካት ኮዲንግ ያዘጋጁ

አንዴ Roomba ን ካገናኙ በኋላ ፣ ከተፈለጓቸው ግብዓቶች በኋላ የሚፈልጓቸውን ውጤቶች የሚሰጥዎትን የማትላብ ኮድ መፍጠር ያስፈልግዎታል።

ኮዱ እዚህ ሊታይ ይችላል-

%Roomba ፕሮጀክት%ብሬንተን አርኖልድ (barnol15); ጁሊያን ኮርን (qdp218); ማይክ ፈውስ (ሜኸል) %4/11/19 %የችግር መግለጫ - በማርስ ፍለጋ/መኖሪያ በሚኖርበት ጊዜ ሰዎችን ለመርዳት ሮቨር ይፍጠሩ። %የመፍትሔ ዘዴ - ኦርጋኒክ ቁስልን ለመመርመር በ %ብርሃን ባምፖች ፣ በገደል ዳሳሾች እና በካሜራ በመጠቀም ኦርጋኒክ (አረንጓዴ) ጉዳይን ይፈልጉ። ባምፐርስ ፣ ገደል %ዳሳሾች እና የጎማ ቁመት ዳሳሾችን በመጠቀም ሸካራውን መሬት ለመዳሰስ %rover ይፍቀዱ። ደህንነቱ የተጠበቀ ርቀት ከ %ሮቨርን ለመቆጣጠር እና ማዕድናትን በእጅ ለመፈለግ ሰዎች እንዲችሉ ያስችላቸዋል። ምርጫዎች = {'' ሕይወት '' 'ROUGH TERRAIN' '' USER CONTROL '}; በንግግር ምናሌ ውስጥ ሶስት አማራጮች ቅንብር = ምናሌ ('' ፣ ምርጫዎች) ከሆነ ቅንብር> 0 %ከተመረጠ የተጠቃሚ ማረጋገጫ ምርጫዎችን ይጠይቁ 2 = {'አዎ' ፣ 'አይደለም'} %ለ "አዎ" ወይም "አይ" የሕዋስ ድርድር ይፍጠሩ "ምርጫ አረጋግጥ = ምናሌ (['እርስዎ የመረጡት' 'ምርጫዎች {Setting}'" "ሁነታ። '] ፣ ምርጫዎች 2) %ከተረጋገጠ የተጠቃሚ ቅንብር ምርጫን ያረጋግጡ == 1 ከሆነ ቅንብር == 1 %የ" LIFE "ቅንብር ከተመረጠ ያረጋግጡ = 0 ሳለ i == 0 r.setLEDDigits (num2str ('LIFE')) %ለ 'i' 1: 100 r.setDriveVelocity (0.05) %Roomba በ 0.05 ሜ/ሲ = r.getCliffSensors ላይ በኤልዲ ላይ ያሳዩ። %የገደል አነፍናፊ እሴቶችን በሴል መዋቅር ውስጥ "y" l = r.getLightBumpers %ሰርስሮ በማውጣት በ "f" ውስጥ የብርሃን ፍንዳታ እሴቶችን ከ l.left> 100 %ይመልከቱ።) %Roomba ወደ ኋላ 0.05 ሜትር r.turnAngle (20) %Roba roomba 20 ዲግሪ CCW img = r.getImage %ምስል ከ rasberry pie ካሜራ በ roomba rect = [100 0 150 150] ላይ ያግኙ። img = imcrop (img ፣ rect) %የሰብል ምስል በማዕከላዊ ቀይ = አማካኝ (አማካኝ (img (:,:, 1)))) %አማካይ ቀይ ጥንካሬ አረንጓዴ = አማካይ (አማካይ (img (:,:, 2))) %አማካይ አረንጓዴ ጥንካሬ ሰማያዊ = አማካኝ (አማካኝ (img (:,:, 3))) %አረንጓዴ ከሆነ ሰማያዊ> ቀይ && አረንጓዴ> ሰማያዊ %ተክል በስዕሉ ውስጥ መሆኑን ያረጋግጡ d = msgbox (['ሕይወት ተገኝቷል! ']); %"ሕይወት ተገኘ!" የሚል የመልእክት ሳጥን ያሳዩ። ተጠባባቂ (መ); end elseif l.leftFront> 100 %ቼክ ቀርቷል/የፊት መብራት መከላከያ ተሸፍኗል r.move ርቀት (-0.05) %ሮቤባን ወደ ኋላ 0.05 ሜትር img = r.getImage %ከሪቤሪ ፓይ ካሜራ ምስል በ roomba ላይ ያግኙ እና በተለዋዋጭ 'img ውስጥ ያከማቹ 'rect = [100 0 150 150]; img = imcrop (img ፣ rect) %የሰብል ምስል በማዕከላዊ ቀይ = አማካይ (አማካኝ (img (:,:, 1)))) %አማካይ ቀይ ጥንካሬ አረንጓዴ = አማካይ (አማካይ (img (:,:, 2))) %አማካይ አረንጓዴ ጥንካሬ ሰማያዊ = አማካኝ (አማካኝ (img (:,:, 3))) %አረንጓዴ ከሆነ አረንጓዴ> ቀይ እና & አረንጓዴ> ሰማያዊ %ተክል በስዕሉ ውስጥ መሆኑን ያረጋግጡ d = msgbox (['ሕይወት ተገኝቷል! ']); %"ሕይወት ተገኘ!" የሚል የመልእክት ሳጥን ያሳዩ። ተጠባባቂ (መ); end elseif l.leftCenter> 100 %ግራ/መሃከል የመብራት መከላከያ (ሽፋን) ከተሸፈነ ይፈትሹ r.moveDistance (-0.05) %Roomba ወደ ኋላ 0.05 ሜትር img = r.getImage %በሪባባ ላይ ካለው ራቤሪ ኬክ ካሜራ ምስል ያግኙ እና በተለዋዋጭ 'img ውስጥ ያከማቹ 'rect = [100 0 150 150]; img = imcrop (img ፣ rect) %የሰብል ምስል በማዕከላዊ ቀይ = አማካኝ (አማካኝ (img (:,:, 1)))) %አማካይ ቀይ ጥንካሬ አረንጓዴ = አማካይ (አማካይ (img (:,:, 2))) %አማካይ አረንጓዴ ጥንካሬ ሰማያዊ = አማካኝ (አማካኝ (img (:,:, 3))) %አረንጓዴ ከሆነ አረንጓዴ> ቀይ እና & አረንጓዴ> ሰማያዊ %ተክል በስዕሉ ውስጥ መሆኑን ያረጋግጡ d = msgbox (['ሕይወት ተገኝቷል! ']); %“ሕይወት ተገኘ!” የሚል የመልእክት ሳጥን ያሳዩ። ተጠባባቂ (መ); መጨረሻ ሌላ ከሆነ l.rightCenter> 100 %የቀኝ/የመሃል ብርሃን መከላከያ (ሽፋን) ከተሸፈነ ያረጋግጡ r.moveDistance (-0.05) %Roomba ወደ ኋላ 0.05 ሜትር img = r.getImage %በሪባባ ላይ ካለው ራቤሪ ኬክ ካሜራ ምስል ያግኙ እና በተለዋዋጭ 'img ውስጥ ያከማቹ 'rect = [100 0 150 150]; img = imcrop (img ፣ rect) %የሰብል ምስል በማዕከላዊ ቀይ = አማካኝ (አማካኝ (img (:,:, 1)))) %አማካይ ቀይ ጥንካሬ አረንጓዴ = አማካይ (አማካይ (img (:,:, 2))) %አማካይ አረንጓዴ ጥንካሬ ሰማያዊ = አማካኝ (አማካኝ (img (:,:, 3))) %አረንጓዴ ከሆነ አረንጓዴ> ቀይ እና & አረንጓዴ> ሰማያዊ %ተክል በስዕሉ ውስጥ መሆኑን ያረጋግጡ d = msgbox (['ሕይወት ተገኝቷል! ']); %"ሕይወት ተገኘ!" የሚል የመልእክት ሳጥን ያሳዩ። ተጠባባቂ (መ); መጨረሻ ሌላ ከሆነ l.rightFront> 100 %የቀኝ/የፊት መብራት መከላከያ (ሽፋን) ከተሸፈነ ያረጋግጡ r.moveDistance (-0.05) %Roomba ወደኋላ 0.05 ሜትር img = r.getImage %ከሪቤሪ ፓይ ካሜራ ምስል በሪባባ ላይ ያግኙ እና በተለዋዋጭ 'img ውስጥ ያከማቹ 'rect = [100 0 150 150]; img = imcrop (img ፣ rect) %የሰብል ምስል በማዕከላዊ ቀይ = አማካኝ (አማካኝ (img (:,:, 1)))) %አማካይ ቀይ ጥንካሬ አረንጓዴ = አማካይ (አማካይ (img (:,:, 2))) %አማካይ አረንጓዴ ጥንካሬ ሰማያዊ = አማካኝ (አማካኝ (img (:,:, 3))) %አረንጓዴ ከሆነ ሰማያዊ> ቀይ && አረንጓዴ> ሰማያዊ %ተክል በስዕሉ ውስጥ መሆኑን ያረጋግጡ d = msgbox (['ሕይወት ተገኝቷል! ']); %“ሕይወት ተገኘ!” የሚል የመልእክት ሳጥን ያሳዩ። ተጠባባቂ (መ); end elseif l.right> 100 %ትክክለኛው የብርሃን መከላከያ (ሽፋን) ከተሸፈነ ይፈትሹ ራ. በሪባባ ላይ rasberry pie ካሜራ እና በተለዋዋጭ 'img' rect = [100 0 150 150] ውስጥ ያከማቹ። img = imcrop (img ፣ rect) %የሰብል ምስል በማዕከላዊ ቀይ = አማካይ (አማካኝ (img (:,:, 1)))) %አማካይ ቀይ ጥንካሬ አረንጓዴ = አማካይ (አማካይ (img (:,:, 2))) %አማካይ አረንጓዴ ጥንካሬ ሰማያዊ = አማካኝ (አማካኝ (img (:,:, 3))) %አረንጓዴ ከሆነ አረንጓዴ> ቀይ እና & አረንጓዴ> ሰማያዊ %ተክል በስዕሉ ውስጥ መሆኑን ያረጋግጡ d = msgbox (['ሕይወት ተገኝቷል! ']); %"ሕይወት ተገኘ!" የሚል የመልእክት ሳጥን ያሳዩ። ተጠባባቂ (መ); መጨረሻ elseif y.left ከፊት <1500 %የግራ/የፊት ክፍል ክፍልባ ከገደል ውጭ ከሆነ r.move ርቀትን (-0.1 ፣ 0.05) %ክፍልባን ወደ 0.1 ሜትር በ 0.05 ሜ/ሰ r.turnAngle (-5) %Roomba 5 አሽከርክር ዲግሪ CW ሌላ ከሆነ y. ዲግሪዎች CCW ሌላ ከሆነ y.left <1000 %ከክፍሉ ግራ በስተግራ ከገደል ውጭ ከሆነ ያረጋግጡ። ርቀትን (-0.05 ፣ 0.05) %ክፍልባን ወደ ኋላ 0.05 ሜትር በ 0.05 ሜ/ሰ r.turnAngle (-10) %Roomba 10 ዲግሪ ያሽከርክሩ CW ሌላ ከሆነ y. i = 0 ሳለ i == 0 r.setLEDDigits (num2str ('RGH')) %ለ 'i' 1: 1000 r.setDriveVelocity (0.05) %Roomba drive velocity ወደ 0.05 ሜ/sx = ያዘጋጁ r CliffSensors %የገደል አነፍናፊ እሴቶችን በመዋቅር "y" ውስጥ x.right == 1 %ቀኝ መከለያ ተጭኖ ከሆነ ያረጋግጡ r.turnAngle (10) %Roomba 10 ዲግሪ CCW elseif x.left == 1 %ግራ ካለ ያረጋግጡ መከለያ ተጭኗል r.turnAngle (-10) %Roomba 10 ዲግሪ CW ሌላ አሽከርክር x.front == 1 %የፊት መከላከያ ተጭኖ እንደሆነ ይፈትሹ r.turnAngle (20) %Roomba 20 ዲግሪ CCW elseif x.rightWheelDrop == 1 % የቀኝ መንኮራኩሩ r.turnAngle (-20) %እንደወረደ ይፈትሹ roomba 20 ዲግሪ CW elseif x.leftWheelDrop == 1 %ቼክ ግራ ጎማ ወድቋል r.turnAngle (20) %Roomba 20 ዲግሪ CCW ሌላን ያሽከርክሩ <small> y.leftFront < 1500 %የፊት ክፍል ግራባ ክፍል ከገደል ውጭ ከሆነ r.moveDistance (-0.05 ፣ 0.05) %Roomba ወደ 0.05 ሜትር በ 0.05 ሜ/ሰ r.turnAngle (-5) %Roomba 5 ዲግሪ CW ን ያሽከርክሩ ሌላ ከሆነ y.rightFront < 1500 %ትክክለኛው የፊት ክፍል ክፍልባ ከገደል ውጭ መሆኑን r.moveDistance (-0.05 ፣ 0.05) %Roomba ወደ 0.05 ሜትር በ 0.05 ሜ/ሰ r.turnAngle (5) %Roomba 5 ዲግሪ CCW ሌላን ያሽከረክሩ ከሆነ y.left <1000 %የግራ ክፍል ከሆነ ያረጋግጡ f roomba ከገደል ጠፍቷል r.moveDistance (-0.05 ፣ 0.05)%Roomba ወደኋላ 0.05 ሜትር በ 0.05 ሜ/ሰ r.turnAngle (-10)%Roomba 10 ዲግሪ CW ያሽከርክሩ ሌላ ከሆነ y.right0 ከቀጠለ == 1 i = 0 %ሸካራ መሬት ቀጥል ሌላ i = 1 %ጨካኝ የመሬት አቀማመጥ መጨረሻ መጨረሻ መጨረሻ ሌላ %Manual Mode i = 0 r.setLEDDigits (num2str ('USER')) %'USER' በ LED ማሳያ d = msgbox (['ቀስት ቁልፎች - ተንቀሳቀስ; ኤስ - ሮቨር አቁም; ESC - የመጨረሻ የተጠቃሚ ቁጥጥር; ሀ - ሀብትን ይፈልጉ ']); ተጠባባቂ (መ); i == 0 r.showCamera %በተለየ መስኮት ውስጥ የ rasberry pie ካሜራ የቀጥታ ምግብን ይክፈቱ D = getkey (1) %በተጠቃሚ የተጫነውን ቁልፍ ሰርስረው ያውጡ ፣ የ ASCII ን እሴት እንደ ተለዋዋጭ D ያከማቹ D == 30 %‹ወደ ላይ› ቀስት እንዳለው ያረጋግጡ ተጭኗል። ፣ 0.05) %roomba 45 ዲግሪ CCW በ 0.05 ሜ/ሰ ሌላ አሽከርክር D == 31 %“ታች” ቀስት ተጭኖ እንደሆነ ያረጋግጡ። "ቀኝ" ቀስት ተጭኖ እንደሆነ ያረጋግጡ። “esc” (ማምለጫ) ቁልፉ ተጭኗል i = 1 %ከ lp d = msgbox ('' የተጠቃሚ ቁጥጥር '' ') ለመውጣት የሚለዋወጥ የ "i" ዋጋን ይለውጡ % %በእጅ ሞድ (ሞድ) ሁነታ እየወጣ መሆኑን ለተጠቃሚው ያሳውቁ D == 115 %የ "s" ቁልፍ ተጭኖ እንደሆነ ያረጋግጡ r.setDriveVelocity (0) %roomba ከ ወደ ፊት ወይም ወደ ኋላ ሌላ ከሆነ D == 97 %"ሀ" ተጭኖ ከሆነ ምስል = r.getImage; imwrite (ምስል ፣ 'image.png') W = ይመድቡ (ምስል) K = mode (W) K == 3 d = msgbox ('Resource found') %አራት ማዕዘን ሃብት ተጠባባቂ (መ) ከተገኘ ያሳዩ ፤ %ተጠቃሚው የመልእክት ሳጥኑን “መ” እንዲዘጋ ይጠብቁif K == 0 d = msgbox ('ሀብት አይደለም ((')) %አራት ማዕዘን ሃብት ካልተጠባባቂ (መ) ካልታየ ፤ %ተጠቃሚው የመልእክት ሳጥኑን "መ" እስኪዘጋ ይጠብቁ። መጨረሻ ሌላ d = msgbox ('ልክ ያልሆነ የቁልፍ ግብዓት አይደለም።') %ተጠቃሚ “ቅንብርን ይምረጡ” ምናሌ ተጠባባቂ (መ) ከዘጋ ፣ %ተጠቃሚው የመልእክት ሳጥኑን ለመዝጋት ይጠብቁ "መ" መጨረሻ ተጠባባቂ (መ) ፤ %ይጠብቁ ተጠቃሚ ለመልእክት ሳጥን ለመዝጋት “መ” መጨረሻ መጨረሻ መጨረሻ ሌላ d = msgbox ('ደህና ሁን') %አማራጮች ከተዘጉ መጨረሻ መጠባበቂያ (መ);

ደረጃ 3: ሙከራ

ሙከራ
ሙከራ

አንዴ ኮድዎ ከተፃፈ በኋላ የእርስዎን Roomba መሞከር ያስፈልግዎታል። ምንም እንኳን ኮድዎ ትክክል መስሎ ቢታይም ፣ የእርስዎ Roomba እንዲለዩዋቸው የሚፈልጓቸውን ነገሮች በትክክል ለመለየት ብዙ እሴቶችዎ ፣ በተለይም ለቀለም ወይም ቅርፅ ፣ መለወጥ ያስፈልጋቸዋል።

ደረጃ 4 የእይታ ውጤቶችን ይመልከቱ

የእይታ ውጤቶችን ይመልከቱ
የእይታ ውጤቶችን ይመልከቱ
የእይታ ውጤቶችን ይመልከቱ
የእይታ ውጤቶችን ይመልከቱ

በእይታ ውጤቶች ላይ በመመርኮዝ የእርስዎን Roomba በተሳካ ሁኔታ መርሃግብር ቢያደርጉም ባይሆኑም በጣም ግልፅ ይሆናል።

የውጤት ውጤቶች የሚከተሉትን ያካትታሉ:

  • የቅርጽ ለይቶ ማወቅ - ትክክለኛ ማዕድናት ለማግኘት የ Roomba ቅርጾችን በትክክል የመለየት ችሎታ
  • ሻካራ የመሬት መንሸራተቻዎች - ገደሎችን ወይም ጨለማ ቦታዎችን ያስወግዳል
  • በእጅ ሞድ - የቀጥታ ምግብ እና Roomba ን የመቆጣጠር ችሎታ
  • ስዕሎች: ማዕድናት ስዕሎች
  • ሕይወት ተገኝቷል! - የእርስዎ ተክል የኦርጋኒክ ሕይወትን ለይቶ ማወቅን የሚያመለክት የ MatLab የጽሑፍ ሳጥን።

የማጠናከሪያ ትምህርታችን ያበቃል ፣ በአዲሱ የማርስ ጉዞ ሮቨር ይደሰቱ!

የሚመከር: