ዝርዝር ሁኔታ:

የኳስ መከታተያ ሮቦት 8 ደረጃዎች
የኳስ መከታተያ ሮቦት 8 ደረጃዎች

ቪዲዮ: የኳስ መከታተያ ሮቦት 8 ደረጃዎች

ቪዲዮ: የኳስ መከታተያ ሮቦት 8 ደረጃዎች
ቪዲዮ: በአንድ ደቂቃ ውስጥ የእናንተን ትክክለኛ ስም እገምታለሁ||I will guess your name in one minute||Kalianah||Ethiopia 2024, ሀምሌ
Anonim
የኳስ መከታተያ ሮቦት
የኳስ መከታተያ ሮቦት
የኳስ መከታተያ ሮቦት
የኳስ መከታተያ ሮቦት
የኳስ መከታተያ ሮቦት
የኳስ መከታተያ ሮቦት

ስለዚህ በዚህ ውስጥ እኔ ሮቦት የሆነውን የኳስ መከታተያ ሮቦት እንዴት እንደሚሠራ እነግርዎታለሁ። እሱ በዘመናዊው ዓለም ውስጥ ጥቅም ላይ ሊውል የሚችል አውቶማቲክ የክትትል ዘዴ ነው። ስለዚህ ዝም ብለን ወደ ውስጥ ገብተን መገንባት እንጀምር…

ማሳሰቢያ-ይህ ለዲአኪን ዩኒቨርሲቲ ፣ ለአይቲ ትምህርት ቤት ፣ ለ SIT-210 የተከተተ ሲስተም ልማት የቀረበው ክፍል ምደባ ነው።

አቅርቦቶች

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

ደረጃ 1 መግቢያ

መግቢያ
መግቢያ

የዛሬው ክትትል ዋና መሰናክልን ይሰጣል ይህም እኛ ሁላችንም እንደምናውቀው በቀላሉ ሊዘናጋ በሚችል በሰዎች ተሳትፎ ላይ የተመሠረተ ነው ፣ ስለሆነም ክልሎችን በራስ -ሰር እና ያለማቋረጥ የሚከታተል ስርዓትን መፈለግ ለእኛ በጣም አስፈላጊ ነበር። እንዲሁም እኛ በተመሳሳይ ጊዜ ውሳኔዎችን እያደረግን አስጸያፊ ወይም የማይፈለጉ ነገሮችን እና አደጋዎችን ለይቶ ማወቅ እና በዚህ መሠረት ምላሽ መስጠት እንፈልጋለን። ስለዚህ የማሰብ ችሎታ ስርዓቶችን እና ኮምፒተሮችን በመጠቀም የነገር መከታተልን በራስ -ሰር ክትትል ለማድረግ አስፈላጊ እና ወሳኝ ነው።

ማንኛውም የውጭ የክትትል ስርዓት በእይታ መስክ ውስጥ የሚንቀሳቀሱ ነገሮችን መከታተል ፣ እነዚህን ዕቃዎች መመደብ እና አንዳንድ እንቅስቃሴዎቻቸውን መለየት መቻል አለበት። በተጨባጭ ሁኔታዎች ውስጥ እነዚህን ዕቃዎች ለመከታተል እና ለመመደብ ዘዴ አዘጋጅቻለሁ። በአንድ ካሜራ ውስጥ የነገር መከታተያ የሚከናወነው የበስተጀርባ ቅነሳን በመጠቀም ፣ የክልል መልእክቶችን ተከትሎ ነው። ይህ የፍጥነት ፣ መጠኖች እና የታሰሩ ሳጥኖች ርቀቶችን ጨምሮ በርካታ ፍንጮችን ግምት ውስጥ ያስገባል።

ደረጃ 2-በዚህ ፕሮጀክት ውስጥ ጥቅም ላይ የዋሉ ቁሳቁሶች እና ለስላሳ ዕቃዎች

በዚህ ፕሮጀክት ውስጥ ያገለገሉ ቁሳቁሶች እና ለስላሳ ዕቃዎች
በዚህ ፕሮጀክት ውስጥ ያገለገሉ ቁሳቁሶች እና ለስላሳ ዕቃዎች
በዚህ ፕሮጀክት ውስጥ ያገለገሉ ቁሳቁሶች እና ለስላሳ ዕቃዎች
በዚህ ፕሮጀክት ውስጥ ያገለገሉ ቁሳቁሶች እና ለስላሳ ዕቃዎች
በዚህ ፕሮጀክት ውስጥ ያገለገሉ ቁሳቁሶች እና ለስላሳ ዕቃዎች
በዚህ ፕሮጀክት ውስጥ ያገለገሉ ቁሳቁሶች እና ለስላሳ ዕቃዎች

ያገለገሉ የሃርድዌር ክፍሎች

  • Raspberry Pi (x1)
  • Raspberry Pi ካሜራ ሞዱል (x1)
  • ለአልትራሳውንድ ዳሳሽ (x3)
  • SparkFun Dual H-Bridge ሞተር አሽከርካሪዎች L298 (x1)
  • የዲሲ ሞተር (x1)
  • የዳቦ ሰሌዳ (x1)
  • ሽቦዎችን በማገናኘት ላይ

ያገለገለ ሶፍትዌር

OpenCV

የእጅ መሣሪያዎች;

ፓይዘን

ደረጃ 3: ምን ማድረግ?

ማንኛውም የውጭ የክትትል ስርዓት በእይታ መስክ ውስጥ የሚንቀሳቀሱ ነገሮችን መከታተል ፣ እነዚህን ዕቃዎች መመደብ እና አንዳንድ እንቅስቃሴዎቻቸውን መለየት መቻል አለበት። በተጨባጭ ሁኔታዎች ውስጥ እነዚህን ዕቃዎች ለመከታተል እና ለመመደብ ዘዴ አዘጋጅቻለሁ። በአንድ ካሜራ ውስጥ የነገር መከታተያ የሚከናወነው የበስተጀርባ ቅነሳን በመጠቀም ነው ፣ ከዚያ የክልል መልእክቶችን ይከተላል። ይህ የታሰሩ ሳጥኖችን ፍጥነት ፣ መጠኖች እና ርቀቶችን ጨምሮ በርካታ ፍንጮችን ግምት ውስጥ ያስገባል።

በፍሬም ምስሎች ምስሎችን በፍሬም ሲለዩ በጣም አስፈላጊው ነገር ቦቱ በፍሬም ጠብታዎች ምክንያት የኳሱን እንቅስቃሴ አቅጣጫ ካላስተዋለ ቦቱ ወደ ሊምቦ ሁኔታ ሊገባ ስለሚችል ማንኛውንም የፍሬም ጠብታዎች ማስወገድ ነበር። ኳሱ ከካሜራው ክልል ከወጣ ፣ እኛ ሊምቦ ግዛት ወደምንለው ነገር ውስጥ ይገባል ፣ እንደዚያ ከሆነ ቦቱ ኳሱ በፍሬም ውስጥ እስኪመለስ ድረስ በዙሪያው ያለውን ቦታ ለማየት የ 360 ዲግሪ ዞር ያደርገዋል። ካሜራውን እና ከዚያ በእሱ አቅጣጫ መንቀሳቀስ ይጀምሩ።

ለምስሉ ትንተና እያንዳንዱን ክፈፍ እወስዳለሁ እና ከዚያ በሚያስፈልገው ቀለም እሸፍነዋለሁ። ከዚያ ሁሉንም ቅርፀቶች አገኘሁ እና ከመካከላቸው ትልቁን አገኘሁ እና በአራት ማዕዘን ውስጥ አስሬዋለሁ። እና በዋናው ምስል ላይ አራት ማዕዘኑን ያሳዩ እና የአራት ማዕዘን ማዕከሉን መጋጠሚያዎች ይፈልጉ።

በመጨረሻም ቦቱ የኳሱን መጋጠሚያዎች ወደ አስተባባሪ ዘንግ መሃል ለማምጣት ይሞክራል። ሮቦቱ የሚሠራው በዚህ መንገድ ነው። አንድ ነገር ሲገኝ እና ሮቦቱ እየተከተለ እንደሆነ ወይም ሮቦቱ ዱካውን ሲያጣ እና አሁን ወደ መሠረቱ ሲመለስ ለማሳወቅ የሚያስችል እንደ የፎቶን ቅንጣት የመሰለ የአይኦ መሣሪያን በመጠቀም ይህ የበለጠ ሊሻሻል ይችላል።.

ለምስል ማቀነባበር ዓላማ ለእኔ በጣም አስቸጋሪ በሆነው በ “raspberry pi” ላይ የ OpenCV ሶፍትዌርን መጫን ያስፈልግዎታል።

በዚህ አገናኝ በኩል OpenCV ን ለመጫን ማንኛውንም አስፈላጊ መረጃ ማግኘት ይችላሉ እዚህ ጠቅ ያድርጉ

ደረጃ 4: መርሃግብሮች

Image
Image
መርሃግብሮች
መርሃግብሮች
መርሃግብሮች
መርሃግብሮች

ከላይ ለፕሮጄጄቴ ንድፈ ሀሳቦችን ሰጥቻለሁ እና ከእሱ ጋር የታተመ የወረዳ ቦርድ (ፒሲቢ) ነው።

እና ማድረግ ያለብዎት አንዳንድ ዋና ግንኙነቶች እዚህ አሉ

• በመጀመሪያ Raspberry Pi ካሜራ ሞዱል በቀጥታ ከ Raspberry Pi ጋር ተገናኝቷል።

• የአልትራሳውንድ ዳሳሾች ቪሲሲ ከተለመደው ተርሚናል ጋር የተገናኘው ከ GND (መሬት) ጋር ሲሆን የቀሩት ሁለቱ የአልትራሳውንድ ዳሳሽ ወደቦች በ Raspberry Pi ላይ ከጂፒዮ ፒኖች ጋር ተገናኝተዋል።

• ሞተሮቹ በኤች-ድልድይ በመጠቀም ተገናኝተዋል።

• ኃይሉ የሚቀርበው ባትሪውን በመጠቀም ነው።

እኔ የአልትራሳውንድ ዳሳሽ ሥራን እና እንዴት እንደሚሰራ ግንዛቤን ሊረዳ የሚችል ቪዲዮም አክዬአለሁ።

እና ከዚህ በላይ ያለውን ቪዲዮ ማግኘት ካልቻሉ ይህንን አገናኝ መከተል ይችላሉ።

ደረጃ 5: እንዴት ማድረግ?

ይህንን ፕሮጀክት የሠራሁት ኳስ መከታተል የሚችል መሠረታዊ ሮቦት የሚያሳይ ነው። ሮቦቱ ፍሬሞችን በመውሰድ እና ኳሱን በመከታተል የምስል ማቀነባበሪያ ለማድረግ ካሜራ ይጠቀማል። ኳሱን እንደ ቀለም ፣ መጠን ፣ ቅርፅ ያሉ የተለያዩ ባህሪያትን ለመከታተል ጥቅም ላይ ይውላል።

ሮቦቱ ባለኮድ ኮድ ያለው ቀለም አግኝቶ ከዚያ ያንን ቀለም ኳስ ፈልጎ ይከተለዋል። በዚህ ፕሮጀክት ውስጥ Raspberry Pi ን እንደ ማይክሮ-ተቆጣጣሪ መርጫለሁ ምክንያቱም የካሜራ ሞዱሉን እንድንጠቀም ያስችለናል እና በጣም ለተጠቃሚ ምቹ የሆነውን የፓይዘን ቋንቋን ስለሚጠቀም እና በኮድ ውስጥ ታላቅ ተጣጣፊነትን ስለሚሰጥ እንዲሁም ምስሎቹን ለመተንተን የ OpenCV ቤተ-መጽሐፍትን እንድንጠቀም ያስችለናል።

ኤች-ድልድይ የሞተሮችን የማዞሪያ አቅጣጫ ለመቀየር ወይም ለማቆም ጥቅም ላይ ውሏል።

ለምስሉ ትንተና እያንዳንዱን ክፈፍ እወስዳለሁ እና ከዚያ በሚያስፈልገው ቀለም እሸፍነዋለሁ። ከዚያ ሁሉንም ቅርፀቶች አገኘሁ እና ከመካከላቸው ትልቁን አገኘሁ እና በአራት ማዕዘን ውስጥ አስሬዋለሁ። እና በዋናው ምስል ላይ አራት ማዕዘኑን ያሳዩ እና የአራት ማዕዘን ማዕከሉን መጋጠሚያዎች ይፈልጉ።

በመጨረሻም ቦቱ የኳሱን መጋጠሚያዎች ወደ አስተባባሪ ዘንግ መሃል ለማምጣት ይሞክራል። ሮቦቱ የሚሠራው በዚህ መንገድ ነው። አንድ ነገር ሲገኝ እና ሮቦቱ እየተከተለ እንደሆነ ወይም ሮቦቱ ዱካውን ሲያጣ እና አሁን ወደ መሠረቱ ሲመለስ ለማሳወቅ የሚያስችል እንደ የፎቶን ቅንጣት የመሰለ የአይኦ መሣሪያን በመጠቀም ይህ የበለጠ ሊሻሻል ይችላል።. እና ይህንን ለማድረግ መሣሪያዎቹን የሚያገናኝ እና IFTTT ቀስቅሴዎች በተወሰኑ ቀስቅሴዎች ላይ የተወሰኑ እርምጃዎችን እንዲያከናውን የሚፈቅድ የመስመር ላይ ሶፍትዌር መድረክን እንጠቀማለን።

ደረጃ 6-የውሸት ኮድ

አስመሳይ-ኮድ
አስመሳይ-ኮድ

ኳስ የምናገኝበትን OpenCV ን በመጠቀም ለይቶ ለማወቅ ክፍል የውሸት ኮድ እዚህ አለ።

ደረጃ 7 ኮድ

ኮድ
ኮድ
ኮድ
ኮድ
ኮድ
ኮድ
ኮድ
ኮድ

ከላይ የኮዱ ቅንጥቦች ናቸው እና ከዚህ በታች የኮዱ ዝርዝር መግለጫ ነው።

# አስፈላጊዎቹን ጥቅሎች ያስመጡ

እኛ የሚያስፈልጉትን ማሸጊያዎች ሁሉ እናስመጣለን

ከፒክሜራ.

ከፒክሜራ ማስመጣት PiCamera ማስመጣት RPi. GPIO እንደ GPIO የማስመጣት ጊዜ አስመጪ ቁጥርን እንደ np

አሁን ሃርድዌርን አዘጋጅተን በ RASPBERRY PI ላይ የተገናኙትን ፒኖች እንፈርማለን

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #የግራ የአልትራሳውንድ ዳሳሽ

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #ፊት ለፊት ለአልትራሳውንድ ዳሳሽ

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #ትክክለኛ የአልትራሳውንድ ዳሳሽ

GPIO_ECHO3 = 35

MOTOR1B = 18 #ግራ ሞተር

MOTOR1E = 22

MOTOR2B = 21 #ትክክለኛ ሞተር

MOTOR2E = 19

LED_PIN = 13 #ኳሱን ካገኘ ፣ ከዚያ መሪውን ያበራል

# ፒኖችን እንደ ውፅዓት እና ግብዓት ያዘጋጁ

GPIO.setup (GPIO_TRIGGER1 ፣ GPIO. OUT) # ቀስቅሴ GPIO.setup (GPIO_ECHO1 ፣ GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2 ፣ GPIO. OUT) # የሚያነቃቃ ጂፒኦ። GPIO_TRIGGER3 ፣ GPIO. OUT) # ቀስቅሴ GPIO.setup (GPIO_ECHO3 ፣ GPIO. IN) GPIO.setup (LED_PIN ፣ GPIO. OUT)

# ቀስቅሴ ወደ ሐሰት (ዝቅተኛ) ያቀናብሩ

GPIO.output (GPIO_TRIGGER1 ፣ ሐሰት) GPIO.output (GPIO_TRIGGER2 ፣ ሐሰት) GPIO.output (GPIO_TRIGGER3 ፣ ሐሰት)

ይህ ተግባር በዳቦቻችን ዙሪያ ካሉ ነገሮች ርቀቱን የሚሰበስቡትን ሁሉንም የግፍ ዳሳሾች ይጠቀማል።

# ሞዱል እንዲረጋጋ ይፍቀዱ

def sonar (GPIO_TRIGGER ፣ GPIO_ECHO): start = 0 stop = 0 # ፒኖችን እንደ ውፅዓት እና ግቤት GPIO.setup (GPIO_TRIGGER ፣ GPIO. OUT) (ዝቅተኛ) GPIO.output (GPIO_TRIGGER ፣ ሐሰተኛ) #ሞጁሉ ጊዜን እንዲያስተካክል ይፍቀዱ። እንቅልፍ (0.01) #እስከዚያ ርቀት> 5: #GPIO.output (GPIO_TRIGGER ፣ True) time.sleep (0.00001) GPIO ን ለመቀስቀስ 10us pulse ይልኩ። ውፅዓት (GPIO_TRIGGER ፣ ሐሰት) ይጀምራል = time.time () GPIO.input (GPIO_ECHO) == 0 እና time.time ()

ከ RASPBERRY PI ጋር ለመስራት የዲሲ ሞተሮችን ማግኘት

GPIO.setup (MOTOR1B ፣ GPIO. OUT)

GPIO.setup (MOTOR1E ፣ GPIO. OUT)

GPIO.setup (MOTOR2B ፣ GPIO. OUT) GPIO.setup (MOTOR2E ፣ GPIO. OUT)

ሮቦትን ለማስኬድ እና በተለያዩ አቅጣጫዎች እንዲንቀሳቀስ ለማድረግ ተግባራት

ፊት ለፊት ():

GPIO.output (MOTOR1B ፣ GPIO. HIGH) GPIO.output (MOTOR1E ፣ GPIO. LOW) ፣ GPIO. LOW) GPIO.output (MOTOR1E ፣ GPIO. HIGH) GPIO.output (MOTOR2B ፣ GPIO. LOW) GPIO.output (MOTOR2E ፣ GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B ፣ GPIO. B) GPIO.output (MOTOR1E ፣ GPIO. HIGH) GPIO.output (MOTOR2B ፣ GPIO. HIGH) GPIO.output (MOTOR2E ፣ GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B ፣ GPIO. HIGH) GPIO.out ፣ GPIO. LOW) GPIO.output (MOTOR2B ፣ GPIO. LOW) GPIO.output (MOTOR2E ፣ GPIO. HIGH)

def stop ():

GPIO.output (MOTOR1E ፣ GPIO. LOW) GPIO.output (MOTOR1B ፣ GPIO. LOW) GPIO.output (MOTOR2E ፣ GPIO. LOW) GPIO.output (MOTOR2B ፣ GPIO. LOW)

የካሜራውን ሞዱል ሥራ መሥራት እና ቅንብሮቹን ማስተካከል

#የካሜራ ካፕቴፕ

# ካሜራውን አነቃቂ እና ወደ ጥሬ ካሜራ መቅረጫ ካሜራ ማጣቀሻ ይያዙ = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (ካሜራ ፣ መጠን = (160 ፣ 120)) # ካሜራውን ይፍቀዱ ለማሞቅ ጊዜ። እንቅልፍ (0.001)

አሁን ቦቱ የተከተለበትን ዋና ነገር በመተግበር እና በመንገዱ ላይ ማንኛውንም እንቅፋት ያስወግዱ

(1 <10): { #ርቀት የሚመጣው ከፊት ከአልትራሳውንድ ዳሳሽ ርቀት ሲ = ሶናር (GPIO_TRIGGER2 ፣ GPIO_ECHO2) #ርቀት ከቀኝ የአልትራሳውንድ ዳሳሽ ርቀት R = ሶናር (GPIO_TRIGGER3 ፣ GPIO_ECHO3) #ርቀት ከግራ ከአልትራሳውንድ ዳሳሽ ርቀት L = sonar (GPIO) ፣ (GPIO_ECHO1) ከሆነ (ርቀት ሲ = 8 ፦ የቀኝ መዞር () ጊዜ። እንቅልፍ (0.00625) ካቆመ () ጊዜ.sleep (0.0125) ወደፊት () ጊዜ። እንቅልፍ (0.00625) ማቆሚያ () ጊዜ። እንቅልፍ (0.0125) 0: የግራ መዞር () ጊዜ.sleep (0.00625) elif distanceL> = 8: ግራኝ () ጊዜ (እንቅልፍ) (0.00625) ማቆሚያ () ጊዜ። (0.0125) የቀኝ መዞሪያ () ጊዜ.sleep (0.00625) ማቆሚያ () ጊዜ.sleep (0.0125) ሌላ: አቁም () ጊዜ.sleep (0.01) ሌላ - #አለበለዚያ ወደ ፊት () ጊዜ ወደፊት () ጊዜ. እንቅልፍ (0.00625) ከሆነ (distanceC> 10): #የኳሱን መጋጠሚያዎች ወደ ካሜራ ምናባዊ ዘንግ ማእከል ያመጣል። ((centre_x = 20): ከሆነ (centre_x0): ባንዲራ = 1 ግራኝ () ጊዜ። እንቅልፍ (0.025) ወደፊት () ጊዜ። እንቅልፍ (0.00003125)) አቁም () ጊዜ። እንቅልፍ (0.00625) ሌላ - አቁም () ጊዜ። እንቅልፍ (0.01)

ሌላ

#ኳሱን ካገኘ እና በጣም ቅርብ ከሆነ መሪውን ያበራል። GPIO.output (LED_PIN ፣ GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # ቀጣዩ ፍሬም}

አስፈላጊዎቹን ማጽጃዎች ያድርጉ

GPIO.cleanup () #ሁሉንም የ GPIO ፒኖች ነፃ

ደረጃ 8 የውጭ አገናኞች

ወደ ማሳያ ቪዲዮው አገናኝ እዚህ ጠቅ ያድርጉ (ዩቲዩብ)

በ Git-hub ላይ ካለው ኮድ ጋር አገናኝ እዚህ ጠቅ ያድርጉ (Git-Hub)

የሚመከር: