ዝርዝር ሁኔታ:

የአትክልት ረዳት Roomba Bot: 8 ደረጃዎች
የአትክልት ረዳት Roomba Bot: 8 ደረጃዎች

ቪዲዮ: የአትክልት ረዳት Roomba Bot: 8 ደረጃዎች

ቪዲዮ: የአትክልት ረዳት Roomba Bot: 8 ደረጃዎች
ቪዲዮ: AMA record with community manager Oleg. PARALLEL FINANCE 2024, ሀምሌ
Anonim
የአትክልት ረዳት Roomba Bot
የአትክልት ረዳት Roomba Bot

ኪያራ ማየርስ ፣ አህመድ አልጋዴር እና ማዲሰን ቲፕት

ዓላማ

በመማሪያቸው መጠን ለመምረጥ የበሰሉ ክብ ቅርጽ ያላቸው ፍራፍሬዎችን/አትክልቶችን በመለየት በአትክልቱ ውስጥ ለመጓዝ ፣ MATLAB ን በመጠቀም ፣ Roomba Bot ን እንዴት ፕሮግራም ማድረግ እንደሚችሉ ያስተምራል። ይህ ሮቦት ምን ያህል ፍሬ ለመምረጥ እና የተጓዘበትን መንገድ ለማሳወቅ ኢሜል ይልካል።

ዋና መለያ ጸባያት:

  • እንዳይመታ ለመከላከል ግድግዳዎችን ለመለየት እና በትንሹ ለመዞር የብርሃን ዳሳሾችን ይጠቀማል
  • በአትክልቱ መጨረሻ ላይ ዓለቱን ሲመታ ፕሮግራሙን ለማፍረስ የብልግና ዳሳሾችን ይጠቀማል
  • በአትክልቱ ውስጥ አንድ ክበብ ለመለየት እና ከዚያ ራዲየሱን ለመወሰን የምስል ማቀነባበሪያን ይጠቀማል
  • የፍራፍሬ መኖርን የሚያመለክት ባለቀለም ቴፕ ለመለየት የገደል ዳሳሾችን ይጠቀማል

ደረጃ 1 ቁሳቁሶች እና አቅርቦቶች

  • አንድ ላፕቶፕ
  • MATLAB 2017
  • Roomba ቫክዩም ክሊነር
  • Raspberry Pi
  • እንጨት ያግዳል
  • ነጭ ወረቀት
  • ጥቁር ወረቀት
  • ባለቀለም ወረቀት ባለቀለም ቴፕ/ቀጭን ንጣፍ
  • ትልቅ ሮክ

ደረጃ 2

ደረጃ 3 “የአትክልት ስፍራዎን” መሰብሰብ

የእርስዎን በመገጣጠም ላይ
የእርስዎን በመገጣጠም ላይ
  1. ጥቁር ወረቀትዎን ይውሰዱ እና የተለያየ መጠን ያላቸውን ክበቦች ይቁረጡ
  2. እነዚህን ጥቁር ክበቦች በትልቅ ነጭ ወረቀት ላይ ይለጥፉ

    ፍሬን በሚለዩበት ጊዜ ይህ ንፅፅር አስፈላጊ ይሆናል

  3. ለሮቦትዎ ለመዳሰስ እንደ ማይዝ የመሰለ የአትክልት መንገድ ለመገንባት የእንጨት መሰንጠቂያዎን ይጠቀሙ

    ከላይ በስዕሉ ላይ እንደሚታየው የ U ቅርጽ ያለው መንገድ መርጠናል

  4. በአትክልትዎ መጨረሻ ላይ ሮቦት መሠራቱን ለማወቅ ዐለት ወይም በር ወይም ሌላ ነገር ይጨምሩ
  5. ነጭ ወረቀቱን በክበቡ በአትክልቱ ግድግዳዎች ላይ ይለጥፉ

    ግድግዳዎቻችን ለካሜራ በጣም አጭር ስለነበሩ እኛ በቴፕ ባልዲዎችን እንጠቀማለን

  6. ከፍሬው ፊት መሬት ላይ ባለ ባለቀለም ቴፕ/ቀጫጭን ባለቀለም ወረቀት ያስቀምጡ

ደረጃ 4 - ኮዱን መጻፍ

የአትክልት ስፍራውን ማሰስ

የቦምብ ዳሳሾችን መጠቀም - ፕሮግራሙን ለማስኬድ ፣ ኮዱ እስኪሰበር ድረስ መግለጫዎችን ከተለየ በተለያዩ ጊዜያት የሚዘዋወር ኮዱን በአጭር ጊዜ ውስጥ እናስቀምጠዋለን። የትኛውም ባምፐርስ ከተመታ ፣ እሴታቸው እውነተኛ (በቦሊያን ውስጥ የ 1 እሴት ነው) ያስከትላል። አንደኛው እሴታቸው 1 እኩል በሚሆንበት ጊዜ ኮዱን ለመጣስ መግለጫ ከሆነ።

የገደል ዳሳሾችን መጠቀም - በአረፍተ ነገሩ ውስጥ ፣ አንድ ተክል የሚገኝበት ቦታ ላይ ሲደርስ Roomba ን ለመንገር የአረፍተ ነገር መግለጫ እንጠቀማለን። የ Roomba የገደል ዳሳሾች የሚያነሱትን የቀይ ደፍ በመመርመር ወለሉ ላይ ያለውን ባለቀለም ቴፕ ይለየዋል። የግራ ወይም የቀኝ ገደል አነፍናፊ ከመሬት የበለጠ ትልቅ ደፍ ያለው ቀለም ካገኘ ፣ ከዚያ ሮቦቱን ለ 2 ሰከንዶች ያቆማል (ለአፍታ ማቆም ትእዛዝን በመጠቀም)። በእነዚህ 2 ሰከንዶች ውስጥ Roomba የፍሬውን ምስል ይወስዳል እና ያሳያል። በትእዛዙ ውስጥ የተገነቡ የማይታወቁ ክበቦችን በመጠቀም ፣ ለክበቦችዎ ራዲዎች ክልል ያዘጋጁ ፣ እና የእርስዎ Roomba ፍሬ የሚባለውን ያገኛል።

የምስል ማቀነባበሪያን መጠቀም - በአረፍተ ነገሩ ውስጥ ፣ እኛ ራዲየስ ከተገኘ ፣ ራዲየስ 3 ፣ ከተጠበቀው የበሰለ ፍሬአችን ፣ r1 (እርስዎ ይወስኑታል) ከሚለው የእኛ መስፈርት ይበልጣል ወይም እኩል ከሆነ የሚገልጽ ከሆነ ሌላውን እናስገባለን ፣ ከዚያ ቆጥረው ያሳዩ Roomba ምን ያህል ፍራፍሬዎች ተዘጋጅተው በአትክልቱ ውስጥ ለመቀጠል ዘወር ይላሉ። ካልሆነ በአትክልቱ ውስጥ ለመቀጠል ተራው። ማሳሰቢያ -እያንዳንዱ Roomba የተለየ ስለሆነ የሚዞሩበትን አንግል ማስተካከል ሊያስፈልግዎት ይችላል

የብርሃን ባምፐሮችን መጠቀም - መግለጫ ከሆነ በሌላ ውስጥ ፣ የብርሃን ባምፐሮቹ የተተነተኑት አንዳቸውም ከተወሰነው ደፍያችን እንደማይበልጡ ነው። የግራ ፣ የቀኝ ፣ የግራ ማእከል ፣ የቀኝ ማእከል ፣ የግራ ፊት ወይም የቀኝ የፊት መብራት መከላከያ ከደጃፉ በላይ ከሄደ ታዲያ ሮምባ ግድግዳውን እንዳይመታ በተገቢው ማዕዘን ላይ በትንሹ ይታጠፋል። ስለዚህ ፣ ማዞሩን ማሰስ።

ቀሪው ኮዱ በ Roomba የወሰደውን መንገድ ለማሴር ከዚያም ውጤቱን ወደ ኢሜልዎ ለመላክ ያገለግላል

ደረጃ 5 - ኮዱን ይቅዱ

% ዓላማ - በክፍሎቻቸው ላይ በመመርኮዝ ክፍልባው በአትክልቱ ውስጥ ያልፋል እና ለመውሰድ ዝግጁ የሆኑ አትክልቶችን/ፍራፍሬዎችን ይለያል። % ግብዓቶች - የ Lightbump ዳሳሾች ፣ የገደል አነፍናፊዎች ፣ የቦምብ ዳሳሾች ፣ ምስል ከካሜራ % ውጤቶች - የብርሃን ዳሳሾች ከደረጃው በሚበልጡበት በማንኛውም ጊዜ ክፍልባው ዞሮ ምስል ይይዛል ፣ የ % አትክልቶች/ፍራፍሬዎች ራዲየስ በአንድ የተወሰነ ክልል መካከል ከሆነ ይጮኻል። ክፍልባ ወደ % ነገር ሲገባ ኮዱ ይሰብራል ፣ ጠፈርተኛውን ምን ያህል ፍሬዎች % ለመውሰድ ዝግጁ እንደሆኑ እና የክፍሉባ እንቅስቃሴ ካርታ በተመለከተ ኢሜል ይልካል። % አጠቃቀም - መግለጫዎች ካሉ እና እያሴሩ ከሆነ ፣ ትዕዛዞችን ማሴር ፣ የኢሜል ኮድ ከ MATLAB

k = 0

tic

timerVal = tic

እውነት እያለ

v =.2; % velocity r.setDriveVelocity (v ፣ v) ፤% roomba ወደፊት L = r.getLightBumpers; LC = L.leftCenter; Rr = L.right; Lf = L. ግራ; RC = L.rightCenter; LF = L.leftFront; RF = L.rightFront; ጥ = 75; % ደፍ። RTH = 30; %ከፍተኛ ቀይ ደፍ RTL = 10; %ዝቅተኛ ቀይ ደፍ B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; ከሆነ S.leftFront> PL1 || ኤስ. %ምስል imshow (img)%ማሳያ ምስል [ማእከላት 3 ፣ radii3] = imfindcircles (img ፣ [30 50] ፣ ‘ObjectPolarity’ ፣ ‘dark’ ፣ ‘Sensitivity’ ፣ 0.9); h = viscircles (ማእከላት 3 ፣ ራዲ 3); %radii3> = r1 T = 1 k = k+1 dist1 = 0.2 ከሆነ በምስል ውስጥ የራዲየስ ወ/ክበቦችን ይፈልጉ። ፣ ከዚያ ሮምባ ይህንን ፍሬ ሌላውን ይቆጥራል if radii3 <= r3 T = 0 ሌላ T = 0 dist2 = 0.2.*አልpsል ጊዜ %ካልሆነ ፣ ከዚያ የፍሬውን መጨረሻ አይቆጥርም

T == 1 r. elseif T == 2 r.turnAngle (78) %2 ፍሬዎች ከተገኙ ፣ ከዚያ በ %የአትክልት ቦታ ለመቀጠል ዞር ይበሉ አር. ከሆነ LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.stop r.turnAngle (-7) elseif RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) መጨረሻ %ማንኛውም የብርሃን ባምፐርስ እሴቶች ከደረጃው በላይ ከሄዱ ፣ ከዚያ %Roomba ግድግዳውን ከመምታቱ ለማስቀረት በተገቢው አቅጣጫ በትንሹ ወደ ጎን ይመለሳል

ቢ ቢኖር == 1 || ለ. ግራ == 1 || B.front == 1 dist3 = 0.2.*ElapsedTime r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') ባምቤሮች ተመትተዋል ፣ ከዚያ ክፍልባው ድምጽ ይጫወታል ፣ ዙሪያውን ይሽከረከራል ፣ እና ኮዱን ይሰብራል

የእረፍት መጨረሻ

መጨረሻ መበታተን (0.533 ፣ 0 ፣ ‘^’) በመበታተን ላይ ያዝ (0.533 ፣ dist1 ፣ ‘<’) በመበተን ላይ (-dist2 ፣ dist1 ፣ ‘v’) በመያዣ (-dist2 ፣ 0 ፣ ‘d’) ማስቀመጫዎች ላይ ያዝ (gcf ፣ 'Movement.png')

kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123#' host = 'smtp.gmail.com' port = '465'

setpref ('በይነመረብ' ፣ 'ኢ_ሜል' ፣ ሜይል) ፤ setpref ('በይነመረብ' ፣ 'SMTP_Server' ፣ አስተናጋጅ) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', አስተናጋጅ); props.setProperty ('mail.smtp.port', ወደብ); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', ወደብ); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback' ፣ 'ሐሰተኛ'); የመልዕክት መልእክት (ኢሜል ፣ ‹ሰላም የጠፈር ተመራማሪ! ይህ በአትክልቱ ውስጥ ብዙ ፍራፍሬዎች አሉ› ፣ kmsg ፣ {'movement.png'})

የሚመከር: