ዝርዝር ሁኔታ:

MATLAB ቁጥጥር የሚደረግበት Roomba: 5 ደረጃዎች
MATLAB ቁጥጥር የሚደረግበት Roomba: 5 ደረጃዎች

ቪዲዮ: MATLAB ቁጥጥር የሚደረግበት Roomba: 5 ደረጃዎች

ቪዲዮ: MATLAB ቁጥጥር የሚደረግበት Roomba: 5 ደረጃዎች
ቪዲዮ: ጥብቅ ቁጥጥር የሚደረግበት ትራማዶል መድኃኒት 2024, ህዳር
Anonim
MATLAB ቁጥጥር የሚደረግበት Roomba
MATLAB ቁጥጥር የሚደረግበት Roomba
MATLAB ቁጥጥር የሚደረግበት Roomba
MATLAB ቁጥጥር የሚደረግበት Roomba

የዚህ ፕሮጀክት ግብ MATLAB ን እና እንዲሁም የተቀየረውን iRobot ሊሠራ የሚችል ሮቦት መጠቀም ነው። የገደል አነፍናፊዎችን ፣ የመገጣጠሚያ ዳሳሾችን ፣ የብርሃን ዳሳሾችን እና ካሜራውን ጨምሮ በርካታ የ iRobot ተግባራትን የሚጠቀም የማቲላቢ ስክሪፕት ለመፍጠር ቡድናችን የኮድ ችሎታችንን አጣምሮ ነበር። እኛ MATLAB ኮድ ተግባሮችን እና ቀለበቶችን በመጠቀም የምንፈልጋቸውን የተወሰኑ ውጤቶችን እንድንፈጥር በመፍቀድ እነዚህን አነፍናፊ እና የካሜራ ንባቦችን እንደ ግብዓቶች ተጠቀምን። እንዲሁም ከአይሮቦቱ ጋር ለመገናኘት እና ለመቆጣጠር እንደ እኛ MATLAB ተንቀሳቃሽ መሣሪያ እና ጋይሮስኮፕን እንጠቀማለን።

ደረጃ 1: ክፍሎች እና ቁሳቁሶች

ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች

MATLAB 2018 ሀ

-የ 2018 የ MATLAB ስሪት በጣም ተመራጭ ስሪት ነው ፣ ብዙውን ጊዜ ከሞባይል መሳሪያው ጋር በሚገናኝ ኮድ በተሻለ ሁኔታ ስለሚሰራ። ሆኖም ፣ አብዛኛው የእኛ ኮድ በአብዛኛዎቹ የ MATLAB ስሪቶች ውስጥ ሊተረጎም ይችላል።

iRobot መሣሪያ ፍጠር

-ይህ መሣሪያ ብቸኛ ዓላማው ለፕሮግራም እና ለኮዲንግ ብቻ የተሠራ ልዩ የተሠራ መሣሪያ ነው። (እሱ እውነተኛ ባዶ አይደለም)

Raspberry Pi (ከካሜራ ጋር)

- ይህ እንደ iRobot አንጎል ሆኖ የሚሠራ ውድ ያልሆነ የኮምፒተር ሰሌዳ ነው። ትንሽ ሊሆን ይችላል ፣ ግን በብዙ ነገሮች ችሎታ አለው። ካሜራው ተጨማሪ ተጨማሪ ነው። እንዲሁም ሁሉንም ተግባሮቹን እና ትዕዛዞቹን ለማግኘት የራስበሪ ፒን ይጠቀማል። ከላይ የሚታየው ካሜራ በቴነሲ ዩኒቨርሲቲ በኢንጂነሪንግ መሠረታዊ ክፍሎች በተሠራው በ 3 ዲ የታተመ ማቆሚያ ላይ ተጭኗል።

ደረጃ 2 - Roomba የውሂብ ጎታ ፋይል

የ Roomba የውሂብ ጎታ ፋይል
የ Roomba የውሂብ ጎታ ፋይል

ለክፍልባዎ ተገቢውን ተግባራት እና ትዕዛዞችን ለመጠቀም እርስዎ የሚፈልጉት ዋና ፋይል አለ። የክፍልባዎን አሠራር የበለጠ ለማስተዳደር ይህ ኮድ እርስዎ የፃፉትን ኮድ ተግባሮችን የሚስሉበት ነው።

በዚህ አገናኝ ወይም ከዚህ በታች ሊወርድ በሚችል ፋይል ላይ ፋይሉን ማውረድ ይችላሉ

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

ደረጃ 3 ከ Roomba ጋር መገናኘት

በመጀመሪያ ፣ የማይክሮ ዩኤስቢ ተሰኪን በመጠቀም ሮቦትዎ ከሮዝቤሪ ፓይ ቦርድዎ ጋር መገናኘቱን ማረጋገጥ አለብዎት። ከዚያ ኮምፒተርዎን እና ሮቦትዎን ከተመሳሳይ WiFi ጋር በትክክል ማገናኘት ያስፈልግዎታል። አንዴ ይህ ከተደረገ ፣ በሮቦት የመረጃ ቋት ፋይል ውስጥ የተሰጠውን ትእዛዝ በመጠቀም በሮቦትዎ ላይ ማብራት እና ከእሱ ጋር መገናኘት ይችላሉ። (ከመጠቀምዎ በፊት እና በኋላ ሮቦትዎን ሁል ጊዜ እንደገና ያስጀምሩ)። ለምሳሌ ፣ እኛ ከሮቦታችን ጋር ለመገናኘት “r.roomba (19)” የሚለውን ትዕዛዝ እንጠቀማለን ፣ ተለዋዋጭ r ን ወደ መሣሪያችን በመመደብ። ይህ የእኛን ተለዋዋጭ በማንኛውም ጊዜ ልንጠቅሰው የምንችለውን መዋቅር ወደሚያዋቅረው የውሂብ ጎታ ፋይል ይመለሳል።

ደረጃ 4 - ኮዱ

ኮዱ
ኮዱ
ኮዱ
ኮዱ

እኛ ሙሉውን ኮድ ከዚህ በታች አያይዘናል ፣ ግን በስክሪፕታችን ውስጥ ያሉትን አስፈላጊ ክፍሎች የሚያጎላ አጭር መግለጫ እዚህ አለ። የሮቦታችንን አቅም ሙሉ በሙሉ ለማሳደግ ሁሉንም አነፍናፊዎች እንዲሁም ካሜራውን ተጠቅመንበታል። እንዲሁም ተንቀሳቃሽ መሣሪያን ከሮቦታችን ጋር ለማገናኘት እና ግሪዮስኮፕን በእጅ ለመቆጣጠር እንድንችል የሚያስችለንን ኮድ አካተናል።

የሮቦቱን ወደፊት ፍጥነት ወደ.06 ሜ/ሰ በሚያቀናብር በቀላል ትዕዛዝ “r.setDriveVelocity (.06)” ጀምረናል። ሮቦቱ ቀድሞ እንዲንቀሳቀስ ለማድረግ ይህ ብቻ ነው።

ከዚያ የእኛ ዋና ስክሪፕት ከዚህ በታች በሁኔታዊ መግለጫዎች ውስጥ ልንጠቅስባቸው እና ልንጠቀምባቸው የምንችላቸውን መዋቅሮችን በመፍጠር የተሰጠውን ሮቦት መረጃን በሚያገኝ ጥቂት ጊዜ (ሉፕ) ተጀምሯል ፣ ስለሆነም በመዋቅር ውሂቡ ላይ በመመርኮዝ አንድ ሮቦት የተወሰነ ትእዛዝ እንዲፈጽም ለመንገር ያስችለናል። ሮቦቱ ከአነፍናፊዎቹ ጋር ያነባል። ሮቦቱ የገደል ዳሳሾቹን እንዲያነብ እና ጥቁር መንገድን እንዲከተል አደረግነው።

“% ሐሰት” የሆነ ነገር እስኪከሰት ድረስ loop በሚሄድበት ጊዜ እውነት % እያለ (በዚህ ሁኔታ ያለገደብ ይቀጥላል) ውሂብ = r.getCliffSensors; data2 = r.getBumpers; % ስለ ገደል ዳሳሽ እሴቶች ያለማቋረጥ መረጃን ሰርስሮ ለተለዋዋጭ % img = r.getImage ይመድባል ፤ % ከተሰቀለው ካሜራ % ምስል (img) ፎቶ ያነሳል ፤ % የተወሰደውን ምስል ያሳያል % red_mean = አማካኝ (አማካኝ (img (:,:, 1))) ፤ % data.rightFront <2000 r.turnAngle (-2) ከሆነ የአረንጓዴውን ቀለም አማካይ ዋጋ ይወስዳል። % ለትክክለኛው የፊት ገደል ዳሳሾች ዋጋ አንዴ ከ 2000 r.setDriveVelocity (.05) በታች ከወደቀ በኋላ Roomba በግምት.2 ዲግሪ CW ይቀይረዋል። elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % ከቀኝ የፊት እና የግራ የፊት ዳሳሾች ሁለቱም እሴቶች ከ 2000 % r.turnAngle (0) በታች ከወደቁ በግምት ወደ.2 ሜ/ሰ ወደፊት እንዲቀጥል Roomba ን ይነግረዋል። % ከላይ የተጠቀሱት ሁኔታዎች እውነት ከሆኑ Roomba እንዳይዞሩ ይነግረዋል

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

ከዚህ በኋላ loop በሚሆንበት ጊዜ በካሜራው በኩል የተገኘውን መረጃ የሚቀሰቅስ ሌላ ጊዜ እንዞራለን። እና አንድ የተወሰነ ፕሮግራም (alexnet) በመጠቀም ምስልን የሚያውቅ loop በሚሆንበት ጊዜ በዚህ ውስጥ አንድ መግለጫ እንጠቀማለን ፣ እና አንዴ ምስሉን ከለየ ወዲያውኑ የተንቀሳቃሽ መሣሪያውን የርቀት መቆጣጠሪያ ያነቃቃል።

አኔት = alexnet; % Alexnet ጥልቅ ትምህርትን ለተለዋጭ እውነተኛ % ይመድባል % loop ሳለ img = r.getImage; img = imresize (img, [227, 227]); መለያ = መመደብ (አኔት ፣ img); መለያ ከሆነ == "የወረቀት ፎጣ" || መለያ == "ማቀዝቀዣ" መሰየሚያ = "ውሃ"; የመጨረሻ ምስል (img); ርዕስ (ቻር (መለያ)); drawow;

በእኛ ስልክ መሣሪያውን እንድንቆጣጠር የሚያስችለን የዚያ ጊዜ loop ያንን መረጃ ከስልኩ ጋይሮስኮፕ ያወጣል እና በኮምፒዩተር ላይ ወደ MATLAB ያለማቋረጥ መረጃን ወደ ሚመልሰው ማትሪክስ ውስጥ እንሰካለን። የማትሪክስ ውሂቡን የሚያነብ እና በስልኩ ጋይሮስኮፕ የተወሰኑ እሴቶችን መሠረት በማድረግ መሣሪያውን የሚያንቀሳቅስ ውጤት የሚሰጥ መግለጫ እንጠቀማለን። የተንቀሳቃሽ መሣሪያውን የአቀማመጥ ዳሳሾች እንደተጠቀምን ማወቅ አስፈላጊ ነው። ከላይ የተጠቀሰው አንድ በሶስት ማትሪክስ በእያንዳንዱ የስልኩ የአቀማመጥ ዳሳሾች (ኤለሚም) ፣ አዝሙድ ፣ ቅጥነት እና ጎን ነው። መግለጫዎቹ ከጎኑ እሴቶቹ 50 ሲበልጡ ወይም ከ 50 በታች ሲወድቁ የሚናገሩ ሁኔታዎችን ከፈጠሩ ሮቦቱ የተወሰነ ርቀት ወደ ፊት (አዎንታዊ 50) ወይም ወደ ኋላ (አሉታዊ 50) ያንቀሳቅሳል። እና ለቁጥሩ እሴት ተመሳሳይ ነው። የቅጥያው ዋጋ ከ 25 ውድቀቶች ዋጋ ከ 25 በታች ከሆነ ፣ ሮቦቱ በ 1 ዲግሪዎች (አዎንታዊ 25) ወይም አሉታዊ 1 ዲግሪዎች (አሉታዊ 25) ማዕዘን ላይ ይቀየራል።

እውነተኛ ለአፍታ ቆም (.1) % እያንዳንዱ እሴት ከመወሰዱ በፊት.5 ሰከንዶች ያቁሙ ተቆጣጣሪ = iphone. Orientation; % ለ iPhone የአቀማመጥ እሴቶች ማትሪክስ ለተለዋዋጭ Azimuthal = ተቆጣጣሪ (1) ይመድባል ፤ % የማትሪክስን የመጀመሪያ እሴት ለተለዋዋጭ ፒች = ተቆጣጣሪ (2) ይመድባል ፤ % የማትሪክስ ሁለተኛውን እሴት ለተለዋዋጭ ይመድባል (iPhone በጎን ሲይዝ ወደ ፊት እና ወደኋላ ያዘንብሉት) ጎን = ተቆጣጣሪ (3); % የማትሪክስ ሶስተኛውን እሴት ለተለዋዋጭ ይመድባል (አይፎን ወደ ጎን ሲይዝ ወደ ግራ እና ወደ ቀኝ ያጋድላል) % ከጎን ከሆነ 130 በስልኩ አቀማመጥ ላይ የተመሠረተ ውጤት ያስከትላል || ጎን 25 r.move ርቀት (-1 ቢያንስ 25 ዲግሪ ወደ ግራ ያጋደላል ፒች <-25 r.turnAngle (1) % iPhone ቢያንስ 25 ዲግሪ ካዘነበለ Roomba በግምት 1 ዲግሪ CW ይቀይረዋል።

ለጥቅማችን አንድን ክፍል በፍጥነት መቅዳት እና መለጠፍ ካስፈለግን ያካተቱትን የእኛ የኮድ ዋና ዋና ክፍሎች ድምቀቶች ብቻ ናቸው። ሆኖም ፣ ጠቅላላው ኮዳችን አስፈላጊ ከሆነ ከታች ተያይ attachedል።

ደረጃ 5 መደምደሚያ

ይህ የጻፍነው ኮድ ለሮቦታችን እንዲሁም ለፕሮጀክቱ አጠቃላይ እይታችን የተነደፈ ነው። ግባችን አብዛኞቹን የሮቦት ባህሪያትን የሚጠቀምበትን የንድፍ ስክሪፕት ለማዘጋጀት ሁሉንም የእኛን MATLAB ኮድ ችሎታዎችን መጠቀም ነበር። የስልክ መቆጣጠሪያውን መጠቀም እርስዎ እንደሚያስቡት ከባድ አይደለም ፣ እና አይሮቦትን ከኮድ በስተጀርባ ያለውን ፅንሰ -ሀሳብ በተሻለ ሁኔታ እንዲረዱ የእኛ ኮድ ይረዳዎታል ብለን ተስፋ እናደርጋለን።

የሚመከር: