Агуулгын хүснэгт:

Raspberry Pi - Автономит Марс Ровер нь OpenCV объектын хяналт: 7 алхам (зурагтай)
Raspberry Pi - Автономит Марс Ровер нь OpenCV объектын хяналт: 7 алхам (зурагтай)

Видео: Raspberry Pi - Автономит Марс Ровер нь OpenCV объектын хяналт: 7 алхам (зурагтай)

Видео: Raspberry Pi - Автономит Марс Ровер нь OpenCV объектын хяналт: 7 алхам (зурагтай)
Видео: ЭБУ на Ардуино!? ДА! Когда сгорел блок управления, а денег нет 2024, Арваннэгдүгээр
Anonim
Raspberry Pi - OpenCV объектын хяналт бүхий Автономит Ангараг гараг
Raspberry Pi - OpenCV объектын хяналт бүхий Автономит Ангараг гараг

Raspberry Pi 3, Нээлттэй CV объектыг таних, хэт авианы мэдрэгч, араагаар тэжээгддэг DC мотороор ажилладаг. Энэхүү ровер нь бэлтгэгдсэн аливаа объектоо хянаж, ямар ч газар хөдлөх боломжтой.

Алхам 1: Танилцуулга

Image
Image
Материал ба програм хангамж шаардлагатай
Материал ба програм хангамж шаардлагатай

Энэхүү зааварчилгаанд бид Raspberry Pi 3 дээр ажиллаж буй Open CV програмыг ашиглан вэб камер эсвэл анхны бөөрөлзгөнө пи камер ашиглах боломжтой объектуудыг таньж, тэдгээрийг хянах чадвартай Ангараг гарагтай Rover бүтээх гэж байна. Энэ нь камер ажиллахгүй байгаа харанхуй орчинд замыг хянах зорилгоор servo дээр суурилуулсан хэт авианы мэдрэгчтэй. Pi -аас хүлээн авсан дохиог PVC хоолойгоор хийсэн биед суурилуулсан 4 x 150RPM тогтмол гүйдлийн хөдөлгүүрийг жолоодогч IC (L293D) руу илгээдэг.

Алхам 2: Шаардлагатай материал, програм хангамж

Материал ба програм хангамж шаардлагатай
Материал ба програм хангамж шаардлагатай
Материал ба програм хангамж шаардлагатай
Материал ба програм хангамж шаардлагатай

Шаардлагатай материал

  1. Raspberry Pi (тэгээс бусад)
  2. Raspberry PI камер эсвэл вэб камер
  3. L293D мотор драйвер IC
  4. Робот дугуй (7х4см) X 4
  5. Араагаар тэжээгддэг DC мотор (150 эрг / мин) X 4
  6. Явах эд ангийн зориулалттай PVC хоолой

Програм хангамж шаардлагатай

  1. SSH -ийг ашиглах зориулалттай шаваас
  2. Объект танихын тулд CV нээнэ үү

Алхам 3: Rover явах эд анги бүтээх

Rover явах эд анги бүтээх
Rover явах эд анги бүтээх
Rover явах эд анги бүтээх
Rover явах эд анги бүтээх
Rover явах эд анги бүтээх
Rover явах эд анги бүтээх

Энэхүү PVC явах эд ангиудыг бүтээхийн тулд танд хэрэгтэй болно

  • 2 X 8"
  • 2 X 4"
  • 4 үе мөч

PVC хоолойг шат шиг бүтэцтэй байрлуулж, Т-холболт руу оруулна. Холбоосыг илүү бат бөх болгохын тулд та PVC чигжээсийг ашиглаж болно.

Араагаар ажилладаг DC моторыг хавчаар ашиглан PVC хоолойн явах эд анги руу холбож, дараа нь дугуйг боолт ашиглан мотортой холбодог.

Алхам 4: Хэт авианы хүрээ хэмжигчийг угсрах

Хэт авианы хүрээ хэмжигч угсрах
Хэт авианы хүрээ хэмжигч угсрах

Хэт авианы хүрээ хайгчийг угсрах ажлыг микро Servo мотортой холбогдсон HC-SR04 хэт авианы мэдрэгч ашиглан бүтээжээ. Кабелийг servo моторт боолтоор холбосон хуванцар хайрцагт хийхээс өмнө хэт авианы мэдрэгчээр урьдчилан холбодог.

Алхам 5: Схем ба цахилгаан холболт

Схем ба цахилгаан холболт
Схем ба цахилгаан холболт
Схем ба цахилгаан холболт
Схем ба цахилгаан холболт

Цахилгааны холболтыг хавсаргасан хэлхээний дагуу хийнэ үү.

Алхам 6: SSH ба нээлттэй CV суурилуулалт

SSH ба нээлттэй CV суурилуулалт
SSH ба нээлттэй CV суурилуулалт

Одоо бид шаардлагатай програм хангамжийг суулгахын тулд бөөрөлзгөнө pi дээрээ SSH оруулах хэрэгтэй. Бид SSHing -аас Raspberry Pi руугаа эхлэх болно. Таны Pi нь таны компьютертэй ижил чиглүүлэгчтэй холбогдсон байх ёстой бөгөөд таны чиглүүлэгчээс түүнд өгсөн IP хаягийг мэдэж байгаа эсэхээ шалгаарай. Хэрэв та Windows дээр байгаа бол командын мөр эсвэл PUTTY -ийг нээгээд дараах тушаалыг ажиллуулна уу.

ssh [email protected]

Таны Pi -ийн IP өөр байж магадгүй, минийх 192.168.1.6.

Одоо анхдагч нууц үгээ оруулна уу - "бөөрөлзгөнө"

Одоо та Pi -д SSH -ийг суулгасан тул энэ тушаалыг шинэчилж эхэлье.

sudo apt-get update && sudo apt-get upgrade

Хөгжүүлэгчийн шаардлагатай хэрэгслүүдийг одоо суулгацгаая.

sudo apt-get install build-essential cmake pkg-config-ийг суулгаарай

Дараа нь бид дискэндээ янз бүрийн зургийн форматыг татаж авахад туслах Pi/I/O багцыг суулгах хэрэгтэй.

sudo apt-get libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev суулгах

Одоо видео татаж авах, шууд дамжуулах, OpenCV -ийн ажиллагааг оновчтой болгох зарим багцууд байна

sudo apt-get суулгах libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

sudo apt-get libxvidcore-dev libx264-dev суулгаарай

sudo apt-get libgtk2.0-dev libgtk-3-dev суулгана уу

sudo apt-get libatlas-base-dev gfortran суулгана уу

Бид мөн Python 2.7 ба Python 3 толгой файлуудыг суулгах хэрэгтэй бөгөөд ингэснээр бид OpenCV -ийг python холбоосоор хөрвүүлэх боломжтой болно.

sudo apt-get python2.7-dev python3-dev суулгаарай

OpenCV эх кодыг татаж байна

cd ~

wget -O opencv.zip

задлах opencv.zip

Opencv_contrib репозиторыг татаж байна

wget -O opencv_contrib.zip

opencv_contrib.zip -ийг задлах

Мөн OpenCV суулгах виртуал орчныг ашиглахыг зөвлөж байна.

sudo pip virtualenv virtualenvwrapper суулгах

sudo rm -rf ~/.cache/pip

Одоо тэр virtualenv болон virtualenvwrapper суулгагдсан байгаа тул бид доорх мөрүүдийг оруулахын тулд ~/.profile -ээ шинэчлэх хэрэгтэй.

экспорт WORKON_HOME = $ HOME/.virtualenvs экспорт VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh

Python виртуал орчноо бий болго

mkvirtualenv cv -p python2

үүсгэсэн виртуал орчинд шилжих

эх сурвалж ~/.профайл

workon cv

NumPy суулгаж байна

pip суулгах numpy

OpenCV -ийг эмхэтгэх, суулгах

cd ~/opencv-3.3.0/

mkdir бүтээх

cd бүтээх

cmake -D CMAKE_BUILD_TYPE = RELEASE / -D CMAKE_INSTALL_PREFIX =/usr/local / -D INSTALL_PYTHON_EXAMPLES = ON / -D OPENCV_EXTRA_MODULES_PATH = ~/opencv_contrib -3.3.0//

Эцэст нь OpenCV -ийг эмхэтгээрэй

хийх -j4

Энэ командын ажиллуулж дууссаны дараа. Таны хийх ёстой зүйл бол үүнийг суулгах явдал юм.

sudo тохиргоо хийх

sudo ldconfig

Алхам 7: Rover -д зориулсан Python кодыг ажиллуулах

Image
Image

Tracker.py нэртэй Python файл үүсгээд дараах кодыг нэмнэ үү.

sudo nano tracker.py

код:-

#ASAR хөтөлбөр

#Энэ програм нь улаан бөмбөгийг мөрдөж, бөөрөлзгөнө пи -ийг дагахыг зааж өгдөг. sys sys.path.append импортлох ('/usr/local/lib/python2.7/site-packages') cv2 импортлох numpy-ийг np импортоор импортлох 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.output (21, 1)#Left Motor Forward IO.output (22, 0) IO.output (13, 1)#Right Motor Forward IO.output (15, 0) def bac (): IO.output (21, 0)#Зүүн моторын арын IO. гаралт (22, 1) IO.output (13, 0)#Баруун моторын арагш IO.output (15, 1) def ryt (): IO.output (21, 0) #Зүүн мотор арагшаа IO. гаралт (22, 1) IO. гаралт (13, 1)#Баруун мотор урагш IO. гаралт (15, 0) def lft (): IO. гаралт (21, 1)#Зүүн мотор урагш IO.output (22, 0) IO.output (13, 0)#Баруун мотор хоцрогдсон IO.output (15, 1) def stp (): IO.output (21, 0)#Зүүн мотор IO.output (22, 0) IO.output (13, 0)#Баруун моторын зогсолт IO.output (15, 0) ############################# ##################################################### ###################### def main (): capWebcam = cv2. VideoCapture (0)#зарлах VideoCapture объект ба вэбкамертай холбогдож, 0 => 1 -р вэбкамер ашиглана уу) capWebcam.set (cv2. CAP_PROP_FRAME_WIDTH, 320.0) # нарийвчлалыг 320x240 болгож өөрчил.) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) хэрэв capWebcam.isOpened () == Худал: # VideoCapture объект вэбкамертай амжилттай холбогдсон эсэхийг шалга "алдаа: capWebcam -д амжилттай хандаагүй / n / n" # үгүй бол алдааны мессежийг хэвлэх os.system ("түр зогсоох"))! = 27 ба capWebcam.isOpened (): # Esc товчлуур дарагдах эсвэл вэбкамер холболт тасрах хүртэл blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # blnFrameReadSuccessful эсвэл 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]), np. массив ([179, 255, 255])) imgThresh = cv2.add (imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh, (3, 3), 2) imgThresh = cv2.dilate (imgThresh (np) 5, 5), np.uint8)) imgThresh = cv2.erode (imgThresh, np.ones ((5, 5), np.uint8)) intRows, intColumns = imgThresh.shape circle = cv2. HoughCircles (imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # хувьсах тойргийг боловсруулсан зурган дээрх бүх дугуйлангаар бөглөнө үү биш Аль нь ч биш: # энэ мөр нь тойрог олдоогүй тохиолдолд програмыг дараагийн мөрөнд сүйрэхээс урьдчилан сэргийлэхийн тулд зайлшгүй шаардлагатай. IO.output (7, 1) тойрог доторх тойрог [0]: # тойрог бүрийн хувьд x, y, радиус = тойрог # x, y, радиус хэвлэх "бөмбөгний байрлал x =" + str (x) + ", y =" + str (y) + ", радиус =" + str (радиус) # хэвлэх бөмбөгний байрлал ба радиус obRadius = int (радиус) xAxis = int (x) if obRadius> 0 & obRadius100 & xAxis180: print ("Баруун тийш шилжих") ryt () elif xAxis <100: print ("Зүүн тийш шилжих") lft () өөр: stp () өөр: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # илрүүлсэн объектын төвд жижиг ногоон тойрог зурах cv2.circle (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 -ийг ашиглана уу эсвэл цонхны хэмжээг өөрчлөхийг зөвшөөрөхийн тулд WINDOW_NORMAL -ийг ашиглаарай cv2.imshow ("imgOriginal", imgOri ginal)#харуулах цонх cv2.imshow ("imgThresh", imgThresh)#end байхад cv2.destroyAllWindows ()#санах ой буцаах цонхыг устгах ###################### ###################################################### ############################### Хэрэв _name_ == "_main_": main ()

Одоо зөвхөн програмыг ажиллуулах л үлдлээ

python tracker.py

Баяр хүргэе! Таны өөрөө жолооддог ровер бэлэн боллоо! Хэт авианы мэдрэгч дээр суурилсан навигацийн хэсэг удахгүй дуусах бөгөөд би үүнийг зааж өгөх болно.

Уншсанд баярлалаа!

Зөвлөмж болгож буй: