ዝርዝር ሁኔታ:

የጠፈር ተመራማሪ ረዳቱ Roomba: 4 ደረጃዎች
የጠፈር ተመራማሪ ረዳቱ Roomba: 4 ደረጃዎች

ቪዲዮ: የጠፈር ተመራማሪ ረዳቱ Roomba: 4 ደረጃዎች

ቪዲዮ: የጠፈር ተመራማሪ ረዳቱ Roomba: 4 ደረጃዎች
ቪዲዮ: 🔵15 ሚስጥራዊና አስፈሪ የህዋ እውነታዎች!!!😱🔞 2024, ሀምሌ
Anonim
የጠፈር ተመራማሪ ረዳቱ Roomba
የጠፈር ተመራማሪ ረዳቱ Roomba

ይህ ፕሮጀክት የተሠራው በ RasPberry Pi 3 ላይ በ iRobot ፍጠር ስሪት 2. MATLAB ዳሳሾችን እና ካሜራውን በመጠቀም የተወሰኑ መመሪያዎችን እንዲከተል ሮቦትን ለማቀድ ነው። ጠቋሚዎችን እና ካሜራዎችን አንድ የጠፈር ተመራማሪን የሚከተሉ እና አንድ ነገር ከተሳሳተ ከቤታቸው መሠረት ጋር የመግባባት ችሎታ እንዲኖራቸው የተወሰኑ ተግባሮችን ለማከናወን ያገለግላሉ።

ደረጃ 1: የሚያስፈልጉ ክፍሎች

የሚያስፈልጉ ክፍሎች
የሚያስፈልጉ ክፍሎች
የሚያስፈልጉ ክፍሎች
የሚያስፈልጉ ክፍሎች
የሚያስፈልጉ ክፍሎች
የሚያስፈልጉ ክፍሎች
የሚያስፈልጉ ክፍሎች
የሚያስፈልጉ ክፍሎች

1. አይሮቦት ሥሪት 2 ን ይፍጠሩ

አይሮቦት ፍጠር በፕሮግራም ሊሠራ የሚችል ስለሆነ እና ጠፈርተኞችን ለሚከተል እና ለወደፊቱ ለሚረዳቸው እውነተኛ ሮቨር ታላቅ ውክልና ሊሆን ስለሚችል የዚህ ፕሮጀክት በጣም አስፈላጊ አካል ነው።

2. Raspberry Pi 3

Raspberry Pi ለዚህ ፕሮጀክት ያገለገለ ፕሮግራም ነበር። ኮዱ ለ Pi የተነደፈ ሲሆን የ Pi የተያያዘው ስሪት 3 (ሞዴል ለ) ነው። እንደ አርዱዲኖ ያሉ ሌሎች በፕሮግራም ሊሠሩ የሚችሉ ቦርዶች ጥቅም ላይ ሊውሉ ይችላሉ ፣ ሆኖም ግን አርዱዲኖ እና አብዛኛዎቹ ሌሎች ሰሌዳዎች በሌላ ደረጃ ከተገለፀው የተለየ ኮድ ይፈልጋሉ።

3. Raspberry Pi ካሜራ ሞዱል

ለዚህ ፕሮጀክት ከሚያስፈልገው ከ Raspberry Pi ጋር ያለው ብቸኛ ግንኙነት የካሜራ ሞዱል ነው። የክፍሉ ክፍሉ በካሜራው ውስጥ በሚያየው ላይ በመመሥረት ብቻ ተግባሮችን ስለሚያከናውን የካሜራ ሞጁሉ የዚህ ፕሮጀክት ዋና አካል ነው።

4. MATLAB 2018 ሀ

የ MATLAB ሁለተኛው በጣም የቅርብ ጊዜ ስሪት ፣ 2018a ፣ በዚህ ማዋቀር ውስጥ ለሚሳተፍ ኮድ ጥቅም ላይ ውሏል። የክፍልባ ፕሮግራሙ ለተወሰነ ጊዜ ስለነበረ ብዙ ሌሎች የ MATLAB ስሪቶች ከዚህ ጋር አብረው ይሠሩ ይሆናል

ደረጃ 2 - ፋይሎች እና የካሜራ ውቅር

ፋይሎች እና የካሜራ ውቅር
ፋይሎች እና የካሜራ ውቅር

1. Raspberry Pi እና የካሜራ ግንኙነቶች ወደ ክፍልባ

  • ፒው በቀጥታ ከ iRobot ጋር በማይክሮ ዩኤስቢ ሊገናኝ ይችላል። ለአገልግሎት ዝግጁ ለመሆን የሚያስፈልገው ያ ብቻ ነው። ሆኖም ፣ እስካሁን ባለው የዝግጅት አቀራረብ ውስጥ በስዕሎች ላይ እንደሚታየው በመኝታ ክፍሉ ላይ ደህንነቱ በተጠበቀ ሁኔታ እንዲቀመጥ ይመከራል።
  • ካሜራው ከ Raspberry Pi ጋር ቀጥተኛ ግንኙነት አለው እና ካሜራውን ቀጥታ ለመያዝ አንድ ነገር እንዲገዛ ወይም እንዲደረግ በጣም ይመከራል። ክፍሉን የሚያየውን ለማሳየት በቦታው መያዝ ካልተቻለ ለካሜራው ትክክለኛ ነጥብ የለም።

2. ፋይሎች

  • ሁሉም ነገር ከተዋቀረ እና ከተገናኘ በኋላ ሮቦቱ ዳግም መጀመሩን እና የ “ስፖት” እና “ዶክ” ቁልፎችን ለ 10 ሰከንዶች በአንድ ላይ በመያዝ ለመሄድ ዝግጁ መሆኑን ያረጋግጡ።
  • MATLAB መጀመሪያ የሚያስፈልገው እዚህ ነው። ለክፍልባው ፋይሎች መጀመሪያ መጫን አለባቸው እና ለእነዚህ ፋይሎች የሚፈለገው በዚህ አገናኝ ላይ የቀረበው ኮድ ነው።
  • https://ef.engr.utk.edu/ef230-2017-08// ፕሮጀክቶች/ro…

ደረጃ 3 የመጀመሪያ Roomba ሙከራ

እየሰራ መሆኑን ለማረጋገጥ በክፍልባው ላይ የሚደረጉ ብዙ የመጀመሪያ ቼኮች አሉ።

1. ከክፍልባው ጋር ከተመሳሳይ የ WiFi አውታረ መረብ ጋር መገናኘትዎን ያረጋግጡ። ያለዚህ ፣ በ MATLAB በኩል በጭራሽ አይገናኙም።

2. በተለይ እርስዎ ከመረጡት ክፍልባ ጋር መገናኘት እንዲችሉ የእርስዎ ክፍልባ የተመደበለትን ቁጥር ይወቁ። ለምሳሌ ፣ የእርስዎ ክፍልባ ቁጥር 30 ከሆነ ፣ MATLAB ውስጥ ባለው የትእዛዝ መስኮት ውስጥ ክፍልባ (30) በመተየብ ከእሱ ጋር ይገናኙታል።

3. ክፍሉን በ MATLAB ውስጥ በመቆጣጠሪያዎች መቆጣጠር ይቻላል። ለምሳሌ ፣ ለክፍልባ (30) ኮድዎን ወደ ተለዋዋጭ ‹r› ካዋቀሩት ሮቦቱ በትእዛዙ r.moveDistance (0.2 ፣ 0.1) ወደፊት ሊንቀሳቀስ ይችላል።

4. ከክፍልባው ጋር ሊነጋገሩ የሚችሉ ብዙ የተለያዩ ትዕዛዞች አሉ እና እነዚህ በትእዛዝ መስኮቱ ውስጥ 'doc roomba' ን በመተየብ ሊታዩ ይችላሉ።

5. ለብርሃን ፣ ለጉድጓድ እና ለገደል ንባብ ዳሳሾች ሁሉም በ ‹doc roomba› ውስጥ የታዩትን ትዕዛዞች በመጠቀም ሊነበቡ ይችላሉ ፣ ግን አነፍናፊ ውሂቡን ለማየት የማያቋርጥ ፣ ሥርዓታማ ምናሌ ያለው መንገድ ‹r.testSensors› ን በመጠቀም ሊታይ ይችላል። '.

6. ይህን ሁሉ ከፈተነ በኋላ የሮቦቱን ምስል የመሰብሰቢያ ሶፍትዌር ለማንበብ እና የተወሰዱ ፎቶዎችን ለማየት ሊያገለግል ይችላል። የዚህ መሠረታዊ ኮድ img = r.getImage እና imshow (img) ይሆናል።.

7. የስዕሉ አርጂቢ እሴቶች ከኮዶች ጋር ሊገኙ ይችላሉ red_mean = አማካይ (አማካይ (img (:,:, 1)));

green_mean = አማካይ (አማካይ (img (:,:, 2)))); እና ሰማያዊ_ማለት = አማካይ (አማካይ (img (:,:, 3))));.

ደረጃ 4 - ምሳሌ MATLAB ኮድ

ምሳሌ MATLAB ኮድ
ምሳሌ MATLAB ኮድ

በዚህ ጊዜ ፣ በሰው መርዳት ፕሮቶታይፕ ማርስ ሮቨር ላይ የራስዎን ሽክርክሪት ለመፍጠር አሁን ዳሳሾችን እና የምስል ማንሻ ሶፍትዌሮችን ለመጠቀም ዝግጁ ነዎት። የእኛ ምሳሌ ነጭውን ቀለም በመከታተል እና ወደ እሱ በመንቀሳቀስ ጠፈርተኛውን መከተል ነው። ጠፈርተኛው ሮቦቱ ከተጣበቀ ወይም ሄዶ ወስዶ አንስቶ በገደል ላይ ከተጣበቀ እንደገና እንዲያስተካክለው ዳሳሾች ከፍተኛ እሴቶችን እያነበቡ ከሆነ ይጮኻል። ሆኖም ፣ ነጭ እስኪያይ ድረስ እነዚህን ስህተቶች ብቻ ያነባል። ነጭውን ቀለም ማየት ሳይችል ፣ ሮቦቱ ወደ የስህተት ሁኔታ ይገባል። እሱ በሚያየው ላይ በመመስረት ሁለት የተለያዩ ኢሜሎችን ወደ መነሻ መሠረት ለመላክ ፕሮግራም ተይ is ል። የጠፈርተኛውን የቆዳ ቀለም ከተመለከተ ፣ ያ ጥሩ ጥሩ አይደለም ፣ ስለሆነም የጠፈር ተመራማሪው በአለባበስ ጉድለት የሚያሳይ ቆዳ ካለው የቤት መሠረትን ያስጠነቅቃል። ጠፈርተኛው በቀላሉ ከእይታ ከጠፋ ሌላኛው መልእክት ተዘጋጅቷል። ለካሜራዎቹ ምንም ነጭ ወይም የቆዳ ቀለም ከሌለ ሮቦቱ ይሽከረከራል እና ሌላ ፣ ግን የተለየ ኢሜል ይልካል። ክፍልዋ ጠፈርተኛውን ማየት የማትችልባቸው ምስሎች በኢሜይሎች ውስጥ ከመልዕክቱ ጋር አብረው ይላካሉ። የፕሮጀክታችን ኮድ ከዚህ በታች ይታያል

ለ i = 1:.1: 3 img = r.getImage; ምስል (img) red_mean = አማካይ (አማካይ (img (:,:, 1)))); green_mean = አማካይ (አማካይ (img (:,:, 2)))); blue_mean = አማካይ (አማካይ (img (:,:, 3)))); if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif ገደል.ግራ <10 || ገደል.ግራ ከፊት <10 || ገደል. ቀኝ ፊት <10 || ገደል. መብት 700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.step ሌላ ለ i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop መጨረሻ መጨረሻ መጨረሻ አረንጓዴ_ማለት <35 && blue_mean <35 %የቆዳ ቀለም እያሳየ (በጠፈርተኛ የቆዳ ቀለም ላይ በመመርኮዝ ማስተካከል ያስፈልጋል) r.beep (); r.beep (); r.beep (); ደብዳቤ = '[email protected]'; %ኢሜል ይልካል psswd = 'አዎ' የሚል ጠፍቷል። አስተናጋጅ = 'smtp.gmail.com'; ወደብ = '465'; emailto = '[email protected]'; m_subject = 'ርዕሰ ጉዳይ'; m_text = 'ሙከራ'; setpref ('በይነመረብ' ፣ 'ኢ_ሜል' ፣ ሜይል); setpref ('በይነመረብ' ፣ 'SMTP_Server' ፣ አስተናጋጅ); setpref ('በይነመረብ' ፣ 'SMTP_Username' ፣ ሜይል); setpref ('በይነመረብ' ፣ 'SMTP_Password' ፣ psswd); 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' ፣ 'ሐሰተኛ'); ኢሜል (ኢሜል ፣ ‘እርዳ!’ ፣ ‘የጠፈር ተመራማሪዎች ዩኒፎርም ጠፍቷል!’ ፣ img) ፤ ቀይ_ማለት ከሆነ 135 || አረንጓዴ_ማለት 135 || blue_mean 135 ለ j = 1: 2 %ሮቦቱ r.turnAngle (360) mail = '[email protected]' ማግኘት ካልቻለ; psswd = 'አዎ'; አስተናጋጅ = 'smtp.gmail.com'; ወደብ = '465'; emailto = '[email protected]'; m_subject = 'ርዕሰ ጉዳይ'; m_text = 'ሙከራ'; setpref ('በይነመረብ' ፣ 'ኢ_ሜል' ፣ ሜይል); setpref ('በይነመረብ' ፣ 'SMTP_Server' ፣ አስተናጋጅ); setpref ('በይነመረብ' ፣ 'SMTP_Username' ፣ ሜይል); setpref ('በይነመረብ' ፣ 'SMTP_Password' ፣ psswd); 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' ፣ 'ሐሰተኛ'); ኢሜል (ኢሜል ፣ ‹እርዳኝ!› ፣ ‹የጠፈር ተመራማሪው ሊገኝ አይችልም!› ፣ img) ፤ r.stop መጨረሻ መጨረሻ መጨረሻ

በእርግጥ እዚህ የተዝረከረከ ነው ፣ ግን አንዴ ከተገለበጠ በኋላ መበተን አለበት። ለዚህ የይለፍ ቃል እና ኢሜይሎች ይህንን ፕሮጀክት በሚሠሩ ሰዎች መቅረብ አለባቸው።

ሆኖም ፣ የእኛ ምሳሌ ለሁሉም ሰው የሚስማማ እንዲሆን በዚህ ሮቦት ለመበታተን ከብዙ መንገዶች አንዱ ነው። ለራስዎ የሚስማሙ ብዙ የተለያዩ ነገሮች አሉ።

የሚመከር: