ዝርዝር ሁኔታ:

Raspberry Pi - ገዝ የማርስ ሮቨር ከ OpenCV የነገር መከታተያ ጋር 7 ደረጃዎች (ከስዕሎች ጋር)
Raspberry Pi - ገዝ የማርስ ሮቨር ከ OpenCV የነገር መከታተያ ጋር 7 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: Raspberry Pi - ገዝ የማርስ ሮቨር ከ OpenCV የነገር መከታተያ ጋር 7 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: Raspberry Pi - ገዝ የማርስ ሮቨር ከ OpenCV የነገር መከታተያ ጋር 7 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: 35мм полное прохождение русская озвучка 2024, ህዳር
Anonim
Raspberry Pi - ገዝ የማርስ ሮቨር ከ OpenCV የነገር መከታተያ ጋር
Raspberry Pi - ገዝ የማርስ ሮቨር ከ OpenCV የነገር መከታተያ ጋር

በ Raspberry Pi 3 የተጎላበተው ፣ ክፍት የሲቪ ነገር ዕውቅና ፣ የአልትራሳውንድ ዳሳሾች እና የዲሲ ሞተሮች። ይህ ሮቨር የሰለጠነበትን ማንኛውንም ነገር መከታተል እና በማንኛውም መሬት ላይ መንቀሳቀስ ይችላል።

ደረጃ 1 መግቢያ

Image
Image
ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ
ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ

በዚህ አስተማሪዎች ውስጥ የድር ዕቃ መሣሪያን ወይም የመጀመሪያውን የራስቤሪ ፒ ካሜራ ለመጠቀም አማራጭ ባለው በ Raspberry Pi 3 ላይ የሚሰራውን ክፍት ሲቪ ሶፍትዌር በመጠቀም ነገሮችን ማወቅ እና መከታተል የሚችል አውቶማቲክ ማርስ ሮቨር እንገነባለን። እንዲሁም ካሜራ በማይሠራበት ጨለማ አካባቢዎች ውስጥ መንገዱን ለመከታተል በ ‹servo› ላይ የተጫነ የአልትራሳውንድ ዳሳሽ አለው። ከፒ የተቀበሉት ምልክቶች በ PVC ቧንቧዎች በተገነባ አካል ላይ ተጭነው 4 x 150RPM የዲሲ ሞተሮችን ወደሚያሽከረክረው የሞተር ሾፌር IC (L293D) ይላካሉ።

ደረጃ 2 - ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ

ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ
ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ
ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ
ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ

የሚያስፈልጉ ቁሳቁሶች

  1. Raspberry Pi (ማንኛውም ከዜሮ በስተቀር)
  2. Raspberry PI ካሜራ ወይም የድር ካሜራ
  3. L293D የሞተር ሾፌር አይሲ
  4. ሮቦት ዊልስ (7x4 ሴሜ) X 4
  5. Geared DC Motors (150RPM) X 4
  6. የ PVC ቧንቧዎች ለሻሲው

ሶፍትዌር ያስፈልጋል

  1. Tyቲ ለኤስኤስኤች በፓይ ውስጥ ለመግባት
  2. ለዕቃ ማወቂያ CV ይክፈቱ

ደረጃ 3 የሮቨር ቻሲስን መገንባት

የሮቨር ቻሲስን መገንባት
የሮቨር ቻሲስን መገንባት
የሮቨር ቻሲስን መገንባት
የሮቨር ቻሲስን መገንባት
የሮቨር ቻሲስን መገንባት
የሮቨር ቻሲስን መገንባት

ይህንን የፒ.ሲ.ሲ.ሲን ለመገንባት ፣ ያስፈልግዎታል

  • 2 X 8 ኢንች
  • 2 ኤክስ 4"
  • 4 ቲ-መገጣጠሚያዎች

የ PVC ቧንቧዎችን እንደ መሰላል መሰላል ውስጥ ያዘጋጁ እና ወደ ቲ-መገጣጠሚያዎች ያስገቡ። መገጣጠሚያዎቹ የበለጠ ጠንካራ እንዲሆኑ የ PVC ማሸጊያውን መጠቀም ይችላሉ።

የተገጣጠሙ የዲሲ ሞተሮች ማያያዣዎችን በመጠቀም ከፒ.ቪ.ፒ.ፒ.

ደረጃ 4: ለአልትራሳውንድ Rangefinder ስብሰባ መገንባት

Ultrasonic Rangefinder Assembly ን መገንባት
Ultrasonic Rangefinder Assembly ን መገንባት

ለአልትራሳውንድ ክልል መፈለጊያ ስብሰባ የተገነባው ከማይክሮ ሰርቮ ሞተር ጋር የተገናኘውን HC-SR04 Ultrasonic sensor በመጠቀም ነው። በመጠምዘዣዎች በኩል ከ servo ሞተር ጋር የተገናኘውን የፕላስቲክ መያዣ ውስጥ ከማስገባትዎ በፊት ኬብሎች ከአልትራሳውንድ ዳሳሽ ጋር ተገናኝተዋል።

ደረጃ 5 - መርሃግብሮች እና የኤሌክትሪክ ግንኙነቶች

መርሃግብሮች እና የኤሌክትሪክ ግንኙነቶች
መርሃግብሮች እና የኤሌክትሪክ ግንኙነቶች
መርሃግብሮች እና የኤሌክትሪክ ግንኙነቶች
መርሃግብሮች እና የኤሌክትሪክ ግንኙነቶች

እባክዎን በተያያዙት የወረዳ ዲያግራም መሠረት የኤሌክትሪክ ግንኙነቶችን ያድርጉ።

ደረጃ 6 SSH እና ክፍት CV ጭነት

ኤስኤስኤች እና ክፍት CV ጭነት
ኤስኤስኤች እና ክፍት CV ጭነት

አሁን አስፈላጊውን ሶፍትዌር ለመጫን ወደ ኤስ.ኤስ.ኤች.ኤች. እኛ ወደ እኛ እንጆሪ ፓይ ውስጥ መግባት አለብን። በኤስኤስኤችንግ ወደ የእኛ Raspberry Pi እንጀምራለን። የእርስዎ ፒ እንደ ፒሲዎ ከተመሳሳይ ራውተር ጋር መገናኘቱን ያረጋግጡ እና በእርስዎ ራውተር የተመደበው የአይፒ አድራሻ መሆኑን ያውቃሉ። አሁን በዊንዶውስ ላይ ከሆኑ እና የሚከተለውን ትዕዛዝ ካሄዱ የትእዛዝ ጥያቄን ወይም PUTTY ን ይክፈቱ።

ssh [email protected]

የእርስዎ ፒ አይ አይ የተለየ ሊሆን ይችላል ፣ የእኔ 192.168.1.6 ነው።

አሁን ፣ ነባሪ የይለፍ ቃልዎን ያስገቡ - “እንጆሪ”

አሁን ፣ ኤስ ኤስ ኤች ዲ በእርስዎ ፒ ውስጥ እንዳሉ ፣ በዚህ ትዕዛዝ በማዘመን እንጀምር።

sudo apt-get update && sudo apt-get ማሻሻል

አስፈላጊዎቹን የገንቢ መሣሪያዎች አሁን እንጫን ፣

sudo apt-get install ግንባታ-አስፈላጊ cmake pkg-config

በመቀጠል ፣ የእኛ ፒ የተለያዩ የምስል ቅርፀቶችን ከዲስክ ለማምጣት የሚረዳ አንዳንድ የምስል I/O ጥቅሎችን መጫን አለብን።

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

አሁን ፣ ቪዲዮ ለማምጣት ፣ ቀጥታ ዥረት እና የ OpenCV አፈፃፀምን ለማመቻቸት አንዳንድ ጥቅሎች

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

sudo apt-get install libxvidcore-dev libx264-dev

sudo apt-get install libgtk2.0-dev libgtk-3-dev

sudo apt-get install libatlas-base-dev gfortran ን ይጫኑ

እንዲሁም OpenCV ን ከፓይዘን ማሰሪያዎች ጋር ማሰባሰብ እንድንችል Python 2.7 እና Python 3 የራስጌ ፋይሎችን መጫን አለብን።

sudo apt-get install python2.7-dev python3-dev

የ OpenCV ምንጭ ኮድ በማውረድ ላይ

ሲዲ ~

wget -O opencv.zip

መክፈት opencv.zip

የ opencv_contrib ማከማቻን በማውረድ ላይ

wget -O opencv_contrib.zip

መበተን opencv_contrib.zip

እንዲሁም OpenCV ን ለመጫን ምናባዊ አከባቢን ለመጠቀም ይመከራል።

sudo pip ጫን virtualenv virtualenvwrapper

sudo rm -rf ~/. መሸጎጫ/pip

አሁን ፣ virtualenv እና virtualenvwrapper ተጭኗል ፣ የሚከተሉትን መስመሮች ከታች ለማካተት የእኛን ~/. መገለጫ ማዘመን አለብን።

ወደ ውጭ መላክ WORKON_HOME = $ HOME/.virtualenv ወደ ውጭ መላክ VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh

የእርስዎን የፓይዘን ምናባዊ አከባቢ ይፍጠሩ

mkvirtualenv cv -p python2

ወደተፈጠረው ምናባዊ አካባቢ ይቀይሩ

ምንጭ ~/. መገለጫ

ሥራን cv

NumPy ን በመጫን ላይ

pip ጫን numpy

OpenCV ን ያጠናቅሩ እና ይጫኑ

ሲዲ ~/opencv-3.3.0/

mkdir ግንባታ

ሲዲ ግንባታ

cmake -D CMAKE_BUILD_TYPE = RELEASE / -D CMAKE_INSTALL_PREFIX =/usr/local / -D INSTALL_PYTHON_EXAMPLES = በርቷል / -D OPENCV_EXTRA_MODULES_PATH = ~/opencv_contrib -3.3.0/modules

በመጨረሻም OpenCV ን ያጠናቅሩ

ማድረግ -j4

ይህ ትእዛዝ ሩጫውን ከጨረሰ በኋላ። ማድረግ ያለብዎት እሱን መጫን ብቻ ነው።

sudo make ማዋቀር

sudo ldconfig

ደረጃ 7 - ለሮቨር የፒቶን ኮድ ማሄድ

Image
Image

Tracker.py የተባለ የፓይዘን ፋይል ይፍጠሩ እና የሚከተለውን ኮድ ይጨምሩበት።

sudo nano tracker.py

ኮድ:-

#ASAR ፕሮግራም

#ይህ ፕሮግራም ቀይ ኳስ ይከታተላል እና እንጆሪ ፓይ እንዲከተለው ያስተምራል። ማስመጣት sys sys.path.append ('/usr/local/lib/python2.7/site-package') ማስመጣት cv2 ማስመጣት numpy እንደ np ማስመጣት os ማስመጣት RPi. GPIO እንደ IO IO.setmode (IO. BOARD) IO.setup (7 ፣ IO. OUT) IO.setup (15 ፣ IO. OUT) IO.setup (13 ፣ IO. OUT) IO.setup (21 ፣ IO. OUT) IO.setup (22 ፣ IO. OUT) def fwd (): IO.ututput (21, 1)#የግራ ሞተር ወደፊት IO.output (22, 0) IO.output (13, 1)#የቀኝ ሞተር ወደፊት IO.output (15, 0) def bac (): IO.ututput (21, 0)#የግራ ሞተር ወደ ኋላ IO.ututput (22, 1) IO.ututput (13, 0)#የቀኝ ሞተር ወደኋላ IO.output (15, 1) def ryt (): IO.ututput (21, 0) #የግራ ሞተር ወደ ኋላ IO.ututput (22, 1) IO.ututput (13, 1) #Right Motor forward IO.output (15, 0) def lft (): IO.ututput (21, 1) #Left Motor forward IO.output (22, 0) IO.ututput (13, 0)#የቀኝ ሞተር ወደ ኋላ IO.output (15, 1) def stp (): IO.ututput (21, 0)#የግራ ሞተር ማቆሚያ IO.output (22, 0) IO.ututput (13, 0)#የቀኝ ሞተር ማቆሚያ IO.output (15, 0) ################################ ##################################################### ####################### def ዋና (): capWebcam = cv2. VideoCapture (0)#a የቪዲዮ ቀረጻ ነገር እና ከድር ካሜራ ጋር ተጓዳኝ ፣ 0 => 1 ኛ የድር ካሜራ ይጠቀሙ # የመጀመሪያውን ጥራት ህትመት አሳይ “ነባሪ ጥራት =” + str (capWebcam.get (cv2. CAP_PROP_FRAME_WIDTH)) + “x” + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) capWebcam.set /) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) capWebcam.is ከተከፈተ () == ውሸት ፦ # የቪዲዮ ቀረጻ ነገር ከድር ካሜራ ጋር የተጎዳኘ መሆኑን # ይፈትሹ "ስህተት ፦ ካፕ ዌብካም በተሳካ ሁኔታ አልደረሰም / n / n" # ካልሆነ ፣ ተጠቃሚው የስህተት መልእክት መመለስን # እና የመውጫ ተግባርን (ከፕሮግራሙ የሚወጣውን) ማየት እንዲችል os.system (“ለአፍታ አቁም”) ለማቆም የስህተት መልዕክትን ያቁሙ cv2.waitKey (1))! = 27 እና capWebcam.is ተከፍቷል (): # የኤስ ኤስ ቁልፉ እስኪጫን ወይም የድር ካሜራ ግንኙነት እስኪጠፋ ድረስ blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # ካልሆነ ቀጣዩን ክፈፍ ያንብቡ blnFrameRead በስኬት ወይም imgOriginal የለም የለም # ፍሬም ካልተነበበ በተሳካ ሁኔታ ያትሙ "ስህተት ፍሬም ከድር ካሜራ አልተነበበም / n" os.system ን ለማውጣት የስህተት መልእክት ("ለአፍታ አቁም") ተጠቃሚው ቁልፍ በሚጫንበት ጊዜ ተጠቃሚው የስህተት መልእክት መቋረጥ # መውጫውን ለማየት (ከፕሮግራሙ የሚወጣ) # imgHSV = cv2.cvtColor (imgOriginal ፣ cv2. COLOR_BGR2HSV) imgThreshLow = cv2.inRange (imgHSV) ፣ np.array ([0, 135 ፣ 135]) ፣ np.array ([18 ፣ 255 ፣ 255])) imgThreshHigh = cv2.inRange (imgHSV ፣ np.array ([165 ፣ 135 ፣ 135]) ፣ ቁ. ድርድር ([179 ፣ 255 ፣ 255])) imgThresh = cv2.add (imgThreshLow ፣ imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh ፣ (3 ፣ 3) ፣ 2) imgThresh = cv2. ማስፋት (imgThresh (ቁ. 5 ፣ 5) ፣ np.uint8)) imgThresh = cv2.erode (imgThresh ፣ np.ones ((5 ፣ 5) ፣ np.uint8)) intRows ፣ intColumns = imgThresh.pepe circles = cv2. HoughCircles (imgThresh ፣ cv2. HOUGH_GRADIENT ፣ 5 ፣ intRows / 4) # ክበቦች ካሉ በተቀነባበረ ምስል ውስጥ ካሉ ሁሉም ክበቦች ጋር ተለዋዋጭ ክበቦችን ይሙሉ ምንም አይደለም # ክበቦች በክበብ ውስጥ IO.ututput (7, 1) በክበቦች ውስጥ ካልተገኙ ፕሮግራሙ በሚቀጥለው መስመር እንዳይሰናከል # ይህ መስመር አስፈላጊ ነው [0]: # ለእያንዳንዱ ክበብ x ፣ y ፣ ራዲየስ = ክበብ # x ፣ y እና ራዲየስ ህትመት “ኳስ አቀማመጥ x =” + str (x) +”፣ y =” + str (y) +”፣ ራዲየስ =” + str (ራዲየስ) # የህትመት ኳስ አቀማመጥ እና ራዲየስ obRadius = int (ራዲየስ) xAxis = int (x) ከሆነ obRadius> 0 & obRadius100 & xAxis180: ህትመት ("ወደ ቀኝ መንቀሳቀስ") ryt () elif xAxis <100: print ("Moving ግራ") lft () ሌላ: stp () ሌላ: stp () cv2. ክበብ (imgOriginal ፣ (x, y) ፣ 3 ፣ (0 ፣ 255 ፣ 0) ፣ -1) # በተገኘው ነገር መሃል ላይ ትንሽ አረንጓዴ ክበብ ይሳሉ cv2. ክበብ (imgOriginal ፣ (x, y) ፣ ራዲየስ) ፣ ((0 ፣ 0 ፣ 255) ፣ 3) # በተገኘው ነገር ዙሪያ ቀይ ክበብ ይሳሉ # ሌላ ለ # መጨረሻ ከሆነ IO.output (7 ፣ 0) cv2.namedWindow (“imgOriginal” ፣ cv2. WINDOW_AUTOSIZE) # መስኮቶችን ይፍጠሩ ፣ ለተወሰነ የመስኮት መጠን cv2.namedWindow (“imgThresh” ፣ cv2. WINDOW_AUTOSIZE) # ይጠቀሙ WINDOW_AUTOSIZE ወይም የመስኮት መጠን cv2.imshow (“imgOriginal” ፣ imgOri) መጠንን ለመለወጥ WINDOW_NORMAL ን ይጠቀሙ። ginal)#አሳይ windows cv2.imshow ("imgThresh", imgThresh) cv2.destroyAllWindow ()#መስኮቶችን ከማህደረ ትውስታ መመለስ ###################### ##################################################### ############################# _name_ == "_main_" ከሆነ ዋናው ()

አሁን ፕሮግራሙን ማካሄድ ብቻ ይቀራል

Python tracker.py

እንኳን ደስ አለዎት! የራስ-መንዳት ሮቨርዎ ዝግጁ ነው! በአልትራሳውንድ ዳሳሽ ላይ የተመሠረተ የአሰሳ ክፍል በቅርቡ ይጠናቀቃል እና ይህንን አስተማሪ አዘምነዋለሁ።

በማንበብዎ እናመሰግናለን!

የሚመከር: