ዝርዝር ሁኔታ:
- ደረጃ 1 መግቢያ
- ደረጃ 2 - ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ
- ደረጃ 3 የሮቨር ቻሲስን መገንባት
- ደረጃ 4: ለአልትራሳውንድ Rangefinder ስብሰባ መገንባት
- ደረጃ 5 - መርሃግብሮች እና የኤሌክትሪክ ግንኙነቶች
- ደረጃ 6 SSH እና ክፍት CV ጭነት
- ደረጃ 7 - ለሮቨር የፒቶን ኮድ ማሄድ
ቪዲዮ: Raspberry Pi - ገዝ የማርስ ሮቨር ከ OpenCV የነገር መከታተያ ጋር 7 ደረጃዎች (ከስዕሎች ጋር)
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:30
በ Raspberry Pi 3 የተጎላበተው ፣ ክፍት የሲቪ ነገር ዕውቅና ፣ የአልትራሳውንድ ዳሳሾች እና የዲሲ ሞተሮች። ይህ ሮቨር የሰለጠነበትን ማንኛውንም ነገር መከታተል እና በማንኛውም መሬት ላይ መንቀሳቀስ ይችላል።
ደረጃ 1 መግቢያ
በዚህ አስተማሪዎች ውስጥ የድር ዕቃ መሣሪያን ወይም የመጀመሪያውን የራስቤሪ ፒ ካሜራ ለመጠቀም አማራጭ ባለው በ Raspberry Pi 3 ላይ የሚሰራውን ክፍት ሲቪ ሶፍትዌር በመጠቀም ነገሮችን ማወቅ እና መከታተል የሚችል አውቶማቲክ ማርስ ሮቨር እንገነባለን። እንዲሁም ካሜራ በማይሠራበት ጨለማ አካባቢዎች ውስጥ መንገዱን ለመከታተል በ ‹servo› ላይ የተጫነ የአልትራሳውንድ ዳሳሽ አለው። ከፒ የተቀበሉት ምልክቶች በ PVC ቧንቧዎች በተገነባ አካል ላይ ተጭነው 4 x 150RPM የዲሲ ሞተሮችን ወደሚያሽከረክረው የሞተር ሾፌር IC (L293D) ይላካሉ።
ደረጃ 2 - ቁሳቁሶች እና ሶፍትዌሮች ያስፈልጋሉ
የሚያስፈልጉ ቁሳቁሶች
- Raspberry Pi (ማንኛውም ከዜሮ በስተቀር)
- Raspberry PI ካሜራ ወይም የድር ካሜራ
- L293D የሞተር ሾፌር አይሲ
- ሮቦት ዊልስ (7x4 ሴሜ) X 4
- Geared DC Motors (150RPM) X 4
- የ PVC ቧንቧዎች ለሻሲው
ሶፍትዌር ያስፈልጋል
- Tyቲ ለኤስኤስኤች በፓይ ውስጥ ለመግባት
- ለዕቃ ማወቂያ CV ይክፈቱ
ደረጃ 3 የሮቨር ቻሲስን መገንባት
ይህንን የፒ.ሲ.ሲ.ሲን ለመገንባት ፣ ያስፈልግዎታል
- 2 X 8 ኢንች
- 2 ኤክስ 4"
- 4 ቲ-መገጣጠሚያዎች
የ PVC ቧንቧዎችን እንደ መሰላል መሰላል ውስጥ ያዘጋጁ እና ወደ ቲ-መገጣጠሚያዎች ያስገቡ። መገጣጠሚያዎቹ የበለጠ ጠንካራ እንዲሆኑ የ PVC ማሸጊያውን መጠቀም ይችላሉ።
የተገጣጠሙ የዲሲ ሞተሮች ማያያዣዎችን በመጠቀም ከፒ.ቪ.ፒ.ፒ.
ደረጃ 4: ለአልትራሳውንድ Rangefinder ስብሰባ መገንባት
ለአልትራሳውንድ ክልል መፈለጊያ ስብሰባ የተገነባው ከማይክሮ ሰርቮ ሞተር ጋር የተገናኘውን HC-SR04 Ultrasonic sensor በመጠቀም ነው። በመጠምዘዣዎች በኩል ከ servo ሞተር ጋር የተገናኘውን የፕላስቲክ መያዣ ውስጥ ከማስገባትዎ በፊት ኬብሎች ከአልትራሳውንድ ዳሳሽ ጋር ተገናኝተዋል።
ደረጃ 5 - መርሃግብሮች እና የኤሌክትሪክ ግንኙነቶች
እባክዎን በተያያዙት የወረዳ ዲያግራም መሠረት የኤሌክትሪክ ግንኙነቶችን ያድርጉ።
ደረጃ 6 SSH እና ክፍት CV ጭነት
አሁን አስፈላጊውን ሶፍትዌር ለመጫን ወደ ኤስ.ኤስ.ኤች.ኤች. እኛ ወደ እኛ እንጆሪ ፓይ ውስጥ መግባት አለብን። በኤስኤስኤችንግ ወደ የእኛ Raspberry Pi እንጀምራለን። የእርስዎ ፒ እንደ ፒሲዎ ከተመሳሳይ ራውተር ጋር መገናኘቱን ያረጋግጡ እና በእርስዎ ራውተር የተመደበው የአይፒ አድራሻ መሆኑን ያውቃሉ። አሁን በዊንዶውስ ላይ ከሆኑ እና የሚከተለውን ትዕዛዝ ካሄዱ የትእዛዝ ጥያቄን ወይም PUTTY ን ይክፈቱ።
የእርስዎ ፒ አይ አይ የተለየ ሊሆን ይችላል ፣ የእኔ 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 - ለሮቨር የፒቶን ኮድ ማሄድ
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
እንኳን ደስ አለዎት! የራስ-መንዳት ሮቨርዎ ዝግጁ ነው! በአልትራሳውንድ ዳሳሽ ላይ የተመሠረተ የአሰሳ ክፍል በቅርቡ ይጠናቀቃል እና ይህንን አስተማሪ አዘምነዋለሁ።
በማንበብዎ እናመሰግናለን!
የሚመከር:
ማይክሮ: ቢት MU ራዕይ ዳሳሽ - የነገር መከታተያ - 7 ደረጃዎች
ማይክሮ - ቢት የ MU ራዕይ ዳሳሽ - የነገር መከታተያ - ስለዚህ በዚህ አስተማሪ ውስጥ በዚህ አስተማሪ ውስጥ የምንገነባውን እና በዚህ አስተማሪ ውስጥ የ MU ራዕይ ዳሳሽ የጫንነውን ስማርት መኪናን መርሃ ግብር እንጀምራለን። በአንዳንድ ቀላል የነገር መከታተያ ትንሽ ፣ ስለዚህ
Opencv የነገር መከታተያ -3 ደረጃዎች
Opencv የነገር መከታተያ - የነገር ማወቂያን ማንቀሳቀስ በኮምፒተር እይታ እና በምስል ሂደት ውስጥ የሚያገለግል ዘዴ ነው። ማንኛውም ተንቀሳቃሽ ነገር መገኘቱን ለማወቅ ከቪዲዮ ብዙ ተከታታይ ክፈፎች በተለያዩ ዘዴዎች ተነጻጽረዋል። የነገሮችን ማንቀሳቀስ ለይቶ ማወቅ ለዊ
የጂፒኤስ የመኪና መከታተያ በኤስኤምኤስ ማሳወቂያ እና የነገር ንግግር ውሂብ ሰቀላ ፣ አርዱዲኖን መሠረት ያደረገ ፣ የቤት አውቶሜሽን - 5 ደረጃዎች (ከስዕሎች ጋር)
የጂፒኤስ የመኪና መከታተያ በኤስኤምኤስ ማሳወቂያ እና በ ‹‹Spepe› መረጃ ሰቀላ ፣ አርዱዲኖ ላይ የተመሠረተ ፣ የቤት አውቶማቲክ› - ይህንን የጂፒኤስ መከታተያ ባለፈው ዓመት አደረግሁት እና በጥሩ ሁኔታ ስለሚሠራ አሁን በአስተማሪ ላይ አተምኩት። በእኔ ግንድ ውስጥ ካለው መለዋወጫዎች መሰኪያ ጋር ተገናኝቷል። የጂፒኤስ መከታተያው በተንቀሳቃሽ ስልክ ውሂብ በኩል የመኪናውን አቀማመጥ ፣ ፍጥነት ፣ አቅጣጫ እና የሚለካውን የሙቀት መጠን ይሰቅላል
በቀለም መለየት ላይ የተመሠረተ የነገር መከታተያ - 10 ደረጃዎች
በቀለም መለየት ላይ የተመሠረተ የነገር ክትትል - ታሪክ ይህንን ፕሮጀክት ያደረግሁት Raspberry PI ን እና ክፍት CV ን በመጠቀም የምስል ማቀነባበርን ለመማር ነው። ይህንን ፕሮጀክት የበለጠ አስደሳች ለማድረግ ሁለት የ SG90 ሰርቮ ሞተሮችን እና ካሜራውን በላዩ ላይ እጠቀማለሁ። አንድ ሞተር በአግድም ለማንቀሳቀስ ያገለገለ ሲሆን ሁለተኛው ሞተር ደግሞ በአቀባዊ ለማንቀሳቀስ ያገለገለ
WalabotEye - ከሃፕቲክ ግብረመልስ ጋር የነገር መከታተያ -11 ደረጃዎች
ዋላቦት - በሃፕቲክ ግብረመልስ የነገር መከታተያ -ለዓይን ከባድ ፣ በዙሪያዎ ስላለው ዓለም የተሻለ ግንዛቤ እንዲኖርዎት ይህንን ይጠቀሙ።