Sisukord:

Raspberry Pi - autonoomne Mars Rover koos OpenCV objektide jälgimisega: 7 sammu (koos piltidega)
Raspberry Pi - autonoomne Mars Rover koos OpenCV objektide jälgimisega: 7 sammu (koos piltidega)

Video: Raspberry Pi - autonoomne Mars Rover koos OpenCV objektide jälgimisega: 7 sammu (koos piltidega)

Video: Raspberry Pi - autonoomne Mars Rover koos OpenCV objektide jälgimisega: 7 sammu (koos piltidega)
Video: 20 automotive products from Aliexpress that will appeal to any car owner 2024, November
Anonim
Raspberry Pi - autonoomne Mars Rover koos OpenCV objektide jälgimisega
Raspberry Pi - autonoomne Mars Rover koos OpenCV objektide jälgimisega

Toiteallikaks on Raspberry Pi 3, avatud CV objektide tuvastamine, ultraheli andurid ja käigukastiga alalisvoolumootorid. See rover saab jälgida mis tahes objekti, mille jaoks ta on koolitatud, ja liikuda igal maastikul.

Samm 1: Sissejuhatus

Image
Image
Vajalikud materjalid ja tarkvara
Vajalikud materjalid ja tarkvara

Selles juhendis ehitame autonoomse Mars Roveri, mis tuvastab objekte ja jälgib neid, kasutades Raspberry Pi 3 -l töötavat Open CV tarkvara koos võimalusega kasutada veebikaamera seadet või originaalset vaarika pi kaamerat. See on varustatud ka servole paigaldatud ultrahelianduriga, mis jälgib teed pimedas keskkonnas, kus kaamera ei tööta. Pi -lt saadud signaalid saadetakse mootori juhi IC -le (L293D), mis juhib 4 x 150 p / min alalisvoolumootorit, mis on paigaldatud PVC -torudega ehitatud korpusele.

2. samm: vajalikud materjalid ja tarkvara

Vajalikud materjalid ja tarkvara
Vajalikud materjalid ja tarkvara
Vajalikud materjalid ja tarkvara
Vajalikud materjalid ja tarkvara

Vajalikud materjalid

  1. Vaarika Pi (kõik, kuid null)
  2. Vaarika PI -kaamera või veebikaamera
  3. L293D mootorijuhi IC
  4. Robotrattad (7x4cm) X 4
  5. Hammasülekandega alalisvoolumootorid (150 p / min) X 4
  6. PVC torud šassiile

Vajalik tarkvara

  1. Kitt SS -i jaoks
  2. Avage CV objektide tuvastamiseks

Samm: ehitage Roveri šassii

Roveri šassii ehitamine
Roveri šassii ehitamine
Roveri šassii ehitamine
Roveri šassii ehitamine
Roveri šassii ehitamine
Roveri šassii ehitamine

Selle PVC šassii ehitamiseks vajate

  • 2 X 8"
  • 2 X 4"
  • 4 T-liigest

Asetage PVC-torud redelitaolises konstruktsioonis ja sisestage T-liigestesse. Liigendite tugevamaks muutmiseks võite kasutada PVC hermeetikut.

Hammasülekandega alalisvoolumootorid ühendatakse klambrite abil PVC toru šassiiga ja seejärel rattad kruvidega mootoritega.

4. samm: ehitage ultraheli kaugusmõõtja koost

Ultraheli kaugusmõõtja koost
Ultraheli kaugusmõõtja koost

Ultraheli kaugusmõõtja koost on ehitatud Micro Servo mootoriga ühendatud ultraheli anduri HC-SR04 abil. Kaablid on eelnevalt ühendatud ultrahelianduriga, enne kui need pannakse plastkorpusesse, mis on kruvide abil servomootoriga ühendatud.

Samm: skeemid ja elektriühendused

Skeemid ja elektriühendused
Skeemid ja elektriühendused
Skeemid ja elektriühendused
Skeemid ja elektriühendused

Palun tehke elektriühendused vastavalt lisatud skeemile.

6. samm: SSH ja avatud CV installimine

SSH ja avatud CV installimine
SSH ja avatud CV installimine

Nüüd peame vajaliku tarkvara installimiseks oma vaarika pi sisse SSH -ga ühendama. Alustame SSHingist meie Raspberry Pi -le. Veenduge, et teie Pi on ühendatud sama ruuteriga nagu teie arvuti ja teate, et see on ruuteri poolt määratud IP -aadress. Nüüd avage käsuviip või PUTTY, kui olete Windowsis, ja käivitage järgmine käsk.

ssh [email protected]

Teie Pi IP võib olla erinev, minu oma on 192.168.1.6.

Nüüd sisestage oma vaikeparool - "vaarikas"

Nüüd, kui teil on oma Pi -s SSH, alustame selle käsuga värskendamisega.

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

Paigaldame kohe vajalikud arendustööriistad, sudo apt-get install build-essential cmake pkg-config

Järgmisena peame installima mõned kujutise I/O paketid, mis aitavad meie Pi -l kettale tuua erinevaid pildivorminguid.

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

Nüüd mõned paketid video hankimiseks, otseülekandeks ja OpenCV jõudluse optimeerimiseks

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

Peame installima ka päisefailid Python 2.7 ja Python 3, et saaksime koostada OpenCV koos Pythoni sidumistega

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

OpenCV lähtekoodi allalaadimine

cd ~

wget -O opencv.zip

pakkige lahti opencv.zip

Opencv_contrib hoidla allalaadimine

wget -O opencv_contrib.zip

pakkige lahti opencv_contrib.zip

Samuti on OpenCV installimiseks soovitatav kasutada virtuaalset keskkonda.

sudo pip install virtualenv virtualenvwrapper

sudo rm -rf ~/.cache/pip

Nüüd, kui virtualenv ja virtualenvwrapper on installitud, peame värskendama oma ~/.profiili, et see sisaldaks alljärgnevaid ridu

eksport WORKON_HOME = $ HOME/.virtualenvs eksport VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh

Looge oma python virtuaalne keskkond

mkvirtualenv cv -p python2

lülituda loodud virtuaalsele keskkonnale

allikas ~/.profiil

töö cv

NumPy installimine

pip install numpy

Kompileerige ja installige OpenCV

cd ~/opencv-3.3.0/

mkdir ehitada

cd ehitada

cmake -D CMAKE_BUILD_TYPE = VABASTUS

Lõpuks kompileerige OpenCV

teha -j4

Pärast selle käsu käivitamist. Kõik, mida pead tegema, on see installida.

sudo teha config

sudo ldconfig

Samm: käivitage Roveri jaoks Pythoni kood

Image
Image

Looge Pythoni fail nimega tracker.py ja lisage sellele järgmine kood.

sudo nano tracker.py

kood:-

#ASAR programm

#See programm jälgib punast palli ja käsib vaarika piil seda järgida. import sys sys.path.append ('/usr/local/lib/python2.7/site-package') import cv2 import numpy np import os import RPi. GPIO kui 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. väljund (21, 1)#Vasak mootor edasi (21, 0)#Vasak mootor tagurpidi IO väljund (22, 1) IO väljund (13, 0)#parema mootori tagumine IO väljund (15, 1) def ryt (): IO väljund (21, 0) #Vasakmootor tagasi IO. Väljund (22, 1) IO. Väljund (13, 1)#Paremmootor edasi IO. Väljund (15, 0) def lft (): IO. Väljund (21, 1)#Vasak mootor edasi IO.väljund (22, 0) IO.väljund (13, 0)#Paremmootori tagurpidi IO.väljund (15, 1) def stp (): IO.väljund (21, 0)#Vasakpoolne mootori seiskamine IO.väljund (22, 0) IO. Väljund (13, 0)#Mootori parem seiskamine IO. Väljund (15, 0) ################## ########################################### #################### def main (): capWebcam = cv2. VideoCapture (0)#deklareeri a VideoCapture objekt ja veebikaameraga seostamine, 0 => kasuta esimest veebikaamerat # näita algse eraldusvõimega printimist "vaikeresolutsioon =" + str (capWebcam.get (cv2. CAP_PROP_FRAME_WIDTH)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) capWebcam.set (cv2. CAP_PROP_FRAME_WIDTH, 320.0) # muutke eraldusvõime 320x240 kiiremaks töötlemiseks capWebcam.set (cv2. CAP_PROP_FRAME_HEIGHT, 240.0) # näita värskendatud eraldusvõimega print "uuendatud resolutsioon =" + str (capWebcam.get (cv2. CAP_PRW_FR)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)), kui capWebcam.isOpened () == Vale: # kontrollige, kas VideoCapture'i objekt on veebikaameraga edukalt trükitud "error: capWebcam ei õnnestunud / n / n" # kui ei, printige veateade std out os.system ("paus") # paus, kuni kasutaja vajutab klahvi, et kasutaja saaks näha veateate return # ja väljumisfunktsiooni (mis väljub programmist) # lõpp, kui cv2.waitKey (1)! = 27 ja capWebcam.isOpened (): # kuni Esc klahvi vajutatakse või veebikaamera ühendus katkeb blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # loe järgmist kaadrit, kui mitte blnFrameReadSuccessly or imgOriginal is None: # kui kaadrit ei õnnestunud lugeda, prinditakse "tõrge: raami ei loeta veebikaamerast / n" # prindi veateade std out os.system ("paus") # paus, kuni kasutaja vajutab klahvi, et kasutaja saaks näha veateadet break # exit, kui tsükkel (mis väljub programmist) # end, kui 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. massiiv ([179, 255, 255])) imgThresh = cv2.add (imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh, (3, 3), 2) imgThresh = cv2.dilate (imgThresh, np.ones 5, 5), np.uint8)) imgThresh = cv2.erode (imgThresh, np.ones ((5, 5), np.uint8)) intRows, intColumns = imgThresh.shape rings = cv2. HoughCircles (imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # täitke muutuvad ringid kõigi ringidega töödeldud pildil, kui ringid ei ole Puudub: # see rida on vajalik, et programm ei jookseks kokku järgmisel real, kui ringid ei leitud murda välja x, y ja raadius printida "palli asend x =" + str (x) + ", y =" + str (y) + ", raadius =" + str (raadius) # prindipalli asukoht ja raadius obRadius = int (raadius) xAxis = int (x) kui obRadius> 0 & obRadius100 & xAxis180: print ("Liigub paremale") ryt () elif xAxis <100: print ("Liigub vasakule") lft () else: stp () else: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # joonista väike roheline ring tuvastatud objekti cv2.circle keskele (imgOriginal, (x, y), radius, (0, 0, 255), 3) # joonista tuvastatud objekti ümber punane ring # lõpp # otsa jaoks, kui muidu: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # loo aknad, kasutage WINDOW_AUTOSIZE fikseeritud akna suuruse jaoks cv2.namedWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # või kasutage nuppu WINDOW_NORMAL, et lubada akna suuruse muutmine cv2.imshow ("imgOriginal", imgOri ginal)#show windows cv2.imshow ("imgThresh", imgThresh)#end while cv2.destroyAllWindows ()#eemalda aknad mälust tagastamine ##################### ########################################### ############################# kui _name_ == "_main_": main ()

Nüüd jääb üle ainult programm käivitada

python tracker.py

Palju õnne! teie isesõitev rover on valmis! Ultraheli anduritel põhinev navigeerimisosa valmib peagi ja uuendan seda juhendit.

Täname lugemise eest!

Soovitan: