Sisällysluettelo:
- Vaihe 1: Johdanto
- Vaihe 2: Tarvittavat materiaalit ja ohjelmistot
- Vaihe 3: Rover -alustan rakentaminen
- Vaihe 4: Rakenna ultraääni -etäisyysmittari
- Vaihe 5: Kaaviot ja sähköliitännät
- Vaihe 6: SSH- ja avoimen CV -asennus
- Vaihe 7: Python -koodin suorittaminen Roverille
Video: Raspberry Pi - Autonomous Mars Rover with OpenCV Object Tracking: 7 askelta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Powered by Raspberry Pi 3, Open CV -objektin tunnistus, ultraääni -anturit ja vaihdemoottorit. Tämä rover voi seurata mitä tahansa koulutettua kohdetta ja liikkua missä tahansa maastossa.
Vaihe 1: Johdanto
Tässä ohjekirjassa aiomme rakentaa autonomisen Mars Roverin, joka voi tunnistaa esineitä ja seurata niitä käyttämällä Raspberry Pi 3: n käynnissä olevaa Open CV -ohjelmistoa sekä mahdollisuuden käyttää verkkokameralaitetta tai alkuperäistä vadelmapi -kameraa. Se on myös varustettu ultraääni -anturilla, joka on asennettu servoon seuratakseen tiensä pimeässä ympäristössä, jossa kamera ei toimi. Pi: ltä saadut signaalit lähetetään moottorin ohjaimelle IC (L293D), joka käyttää 4 x 150 rpm DC -moottoria, jotka on asennettu PVC -putkilla rakennettuun runkoon.
Vaihe 2: Tarvittavat materiaalit ja ohjelmistot
Tarvittavat materiaalit
- Raspberry Pi (mikä tahansa paitsi nolla)
- Vadelma PI -kamera tai verkkokamera
- L293D -moottorin ohjaimen IC
- Robottipyörät (7x4cm) X 4
- Vaihdemoottorit (150 kierrosta / min) X 4
- PVC -putket runkoon
Ohjelmisto vaaditaan
- Kitti SS: n liittämiseen Pi: hen
- Avaa CV kohteen tunnistamista varten
Vaihe 3: Rover -alustan rakentaminen
Tämän PVC -kotelon rakentamiseen tarvitset
- 2 X 8"
- 2 X 4"
- 4 T-nivelet
Järjestä PVC-putket tikkaiden kaltaiseen rakenteeseen ja aseta T-liitoksiin. Voit käyttää PVC -tiivistysainetta saumojen vahvistamiseen.
Vaihteelliset tasavirtamoottorit kytketään PVC -putkikoteloon puristimilla ja pyörät moottoriin ruuveilla.
Vaihe 4: Rakenna ultraääni -etäisyysmittari
Ultraääni-etäisyysmittari on rakennettu käyttämällä HC-SR04-ultraääni-anturia, joka on liitetty Micro Servo -moottoriin. Kaapelit on yhdistetty ultraäänianturiin ennen muovikoteloon asettamista, joka on liitetty servomoottoriin ruuveilla.
Vaihe 5: Kaaviot ja sähköliitännät
Tee sähköliitännät oheisen kytkentäkaavion mukaisesti.
Vaihe 6: SSH- ja avoimen CV -asennus
Nyt meidän on SSH osaksi vadelmapiämme, jotta tarvittava ohjelmisto voidaan asentaa. Aloitamme SSHingillä Raspberry Pi: lle. Varmista, että Pi on kytketty samaan reitittimeen kuin tietokoneesi ja tiedät, että se on reitittimen sille määrittämä IP -osoite. Avaa nyt komentokehote tai PUTTY, jos käytät Windowsia, ja suorita seuraava komento.
Pi: n IP -osoite voi olla erilainen, minun on 192.168.1.6.
Kirjoita nyt oletussalasanasi - "vadelma"
Nyt kun sinulla on SSH'd Pi -laitteeseesi, aloitetaan päivittämällä tällä komennolla.
sudo apt-get update && sudo apt-get update
Asennetaan tarvittavat kehittäjätyökalut nyt, sudo apt-get install build-essential cmake pkg-config
Seuraavaksi meidän on asennettava joitain kuvan I/O -paketteja, jotka auttavat Pi: tämme hakemaan erilaisia kuvamuotoja levyltä.
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Nyt joitakin paketteja videon hakemiseen, suoratoistoon ja OpenCV -suorituskyvyn optimointiin
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
Meidän on myös asennettava Python 2.7- ja Python 3 -otsikkotiedostot, jotta voimme kääntää OpenCV: n python -sidoksilla
sudo apt-get install python2.7-dev python3-dev
Ladataan OpenCV -lähdekoodia
cd ~
wget -O opencv.zip
purkaa opencv.zip
Ladataan opencv_contrib -arkistoa
wget -O opencv_contrib.zip
purkaa opencv_contrib.zip
On myös suositeltavaa käyttää virtuaalista ympäristöä OpenCV: n asentamiseen.
sudo pip asenna virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
Nyt kun virtualenv ja virtualenvwrapper on asennettu, meidän on päivitettävä ~/.profiilimme sisältämään seuraavat rivit alareunaan
vienti WORKON_HOME = $ HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Luo python -virtuaalinen ympäristö
mkvirtualenv cv -p python2
siirtyä luotuun virtuaaliseen ympäristöön
lähde ~/.profiili
workon cv
NumPyn asentaminen
pip asenna numpy
Käännä ja asenna OpenCV
cd ~/opencv-3.3.0/
mkdir rakentaa
cd rakentaa
cmake -D CMAKE_BUILD_TYPE = RELEASE / -D CMAKE_INSTALL_PREFIX =/usr/local / -D INSTALL_PYTHON_EXAMPLES = PÄÄLLÄ -D OPENCV_EXTRA_MODULES_PATH = ~/opencv_contrib -3.3.0/moduulit.. -D
Käännä lopuksi OpenCV
tee -j4
Tämän komennon suorittamisen jälkeen. Sinun tarvitsee vain asentaa se.
sudo make config
sudo ldconfig
Vaihe 7: Python -koodin suorittaminen Roverille
Luo Python -tiedosto nimeltä tracker.py ja lisää siihen seuraava koodi.
sudo nano tracker.py
koodi:-
#ASAR -ohjelma
#Tämä ohjelma seuraa punaista palloa ja neuvoo vadelmapiia seuraamaan sitä. tuonti sys sys.path.append ('/usr/local/lib/python2.7/site-package') tuonti cv2 tuonti numero np tuonti os tuonti 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)#Vasen moottori eteenpäin IO. Output (22, 0) IO. Output (13, 1)#Right Motor Forward IO. Output (15, 0) def bac (): IO. output (21, 0)#Vasen moottori taaksepäin IO -lähtö (22, 1) IO. -lähtö (13, 0)#Oikea moottori taaksepäin IO -lähtö (15, 1) def ryt (): IO -lähtö (21, 0) #Vasen moottori taaksepäin IO. Lähtö (22, 1) IO. Lähtö (13, 1)#Oikea moottori eteenpäin IO. Lähtö (15, 0) def lft (): IO. Lähtö (21, 1)#Vasen moottori eteenpäin IO. lähtö (22, 0) IO. lähtö (13, 0)#Oikea moottori taaksepäin IO. lähtö (15, 1) def stp (): IO. lähtö (21, 0)#Vasen moottorin pysäytys IO. lähtö (22, 0) IO. output (13, 0)#Oikea moottorin pysäytys IO. Output (15, 0) ############################ ################################################## #################### def main (): capWebcam = cv2. VideoCapture (0)#deklaroi VideoCapture -objekti ja yhdistäminen verkkokameraan, 0 => käytä ensimmäistä verkkokameraa # näytä alkuperäinen resoluutio tulosta "oletustarkkuus =" + 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) # muuta tarkkuudeksi 320x240 nopeampaa käsittelyä varten capWebcam.set (cv2. CAP_PROP_FRAME_HEIGHT, 240.0) # näytä päivitetty resoluutio print "updated resolution =" + str (capWebcam.get (cv2. CAP_PRW_FR)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)), jos capWebcam.isOpened () == Väärä: # tarkista, onko VideoCapture -objekti liitetty verkkokameraan tulostus onnistui "-virhe: capWebcam -yhteyttä ei saatu onnistuneesti / n / n" # jos ei, tulosta virheilmoitus std out os.system -järjestelmään ("tauko") # tauko, kunnes käyttäjä painaa näppäintä, jotta käyttäjä voi nähdä virheilmoituksen return # ja exit -toiminnon (joka sulkee ohjelman) # päättyy, jos cv2.waitKey (1)! = 27 ja capWebcam.isOpened (): # kunnes Esc -näppäintä painetaan tai verkkoyhteys katkeaa blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # lue seuraava kehys, jos ei blnFrameReadSuccessfully or imgOriginal is None: # jos kehystä ei luettu onnistuneesti print "error: frame not read from webcam / n" # print error message to std out os.system ("tauko") # tauko, kunnes käyttäjä painaa näppäintä, jotta käyttäjä voi nähdä virheilmoituksen break # exit, kun silmukka (joka sulkee ohjelman) # end jos 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. array ([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 ympyrät = cv2. HoughCircles (imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # täytä muuttuvat ympyrät kaikilla ympyröillä käsitellyssä kuvassa, jos ympyrät ei ole Ei mitään: # tämä rivi on välttämätön, jotta ohjelma ei kaatuisi seuraavalla rivillä, jos ympyröitä ei löydy. IO. lähtö (7, 1) ympyröille ympyröissä [0]: # jokaiselle ympyrälle x, y, säde = ympyrä # murtaa x, y ja säde tulosta "pallon sijainti x =" + str (x) + ", y =" + str (y) + ", säde =" + str (säde) # tulostuspallon sijainti ja säde obRadius = int (säde) xAxis = int (x) jos obRadius> 0 & obRadius100 & xAxis180: print ("Liikkuu oikealle") ryt () elif xAxis <100: print ("Moving Left") lft () else: stp () else: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # piirrä pieni vihreä ympyrä havaitun kohteen cv2.circle keskelle (imgOriginal, (x, y), säde, (0, 0, 255), 3) # piirrä punainen ympyrä havaitun objektin ympärille # loppu # päälle, jos muuten: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # luo ikkunat, käytä WINDOW_AUTOSIZE kiinteää ikkunakokoa cv2.namedWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # tai käytä WINDOW_NORMAL sallii ikkunan koon muuttamisen cv2.imshow ("imgOriginal", imgOri ginal)#näytä ikkunat cv2.imshow ("imgThresh", imgThresh)#loppu kun cv2.destroyAllWindows ()#poista ikkunat muistista palautus ##################### ################################################## ############################# jos _name_ == "_main_": main ()
Nyt on vain tehtävä ohjelma
python tracker.py
Onnittelut! itse ajava roverisi on valmis! Ultraäänianturiin perustuva navigointiosa valmistuu pian, ja päivitän tämän ohjeen.
Kiitos lukemisesta!
Suositeltava:
Videopuhelu Raspberry Pi: llä 3: 9 askelta (kuvilla)
Videopuhelu Raspberry Pi 3: Koska lähdin kotoani 5 vuotta sitten yliopisto -opintoihini, tajusin, kuinka vaikeaa on olla poissa perheestä. Videopuhelut ovat kuitenkin vaihtoehto useimmille ihmisille, mutta koska vanhempani eivät pysty opettamaan tietokoneen käyttöä, se on ainoa vaihtoehto
Virtuaalitodellisuus Raspberry Pi: llä BeYourHero !: 19 askelta (kuvilla)
Virtuaalitodellisuus Raspberry Pi: llä BeYourHero!: Tervetuloa " Ole sankarisi " projekti! Toivon, että olet valmis siirtymään seuraavan sukupolven virtuaalitodellisuuden upottamiseen! Tämä projekti antaa sinulle täydellisen eleohjauksen mistä tahansa haluamastasi virtuaalisankarista yksinkertaisella joukolla edullisia laitteita, jotka käyttävät
Mars Rover Raspberry Pi: n avulla: 5 vaihetta
Mars Rover Raspberry Pi: llä: Rakas kaikki suuri oppija, olen aina utelias tietämään mars -roverista, jolla on 6 pyörää, jotka voivat kulkea Marsin koko pinnalle ja tutkia asioita Maasta. Haluan myös tutkia asiaa istumalla kannettavalle tietokoneelleni. Joten nyt on mielestäni oikea aika tehdä se ja
Vähintään neljä X 12 voltin Rover -alusta GoBILDA: 10 askelta
Vähintään neljä X X 12 voltin Rover -alusta GoBILDAlla: Näytän sinulle, kuinka rakensin RC- tai itsenäisen rover -alustan goBILDA -komponenttien avulla. Minun on lisättävä tähän, että minulla ei ole mitään yhteyttä goBILDAan muuten kuin enimmäkseen tyytyväisenä asiakkaana. Olen sisällyttänyt täydellisen osaluettelon Tarvikkeet
IRobot Create-Mars Expedition Rover Mark I: 4 vaihetta
IRobot Create-Mars Expedition Rover Mark I: Tämä ohje opettaa sinulle, miten voit määrittää iRobot Createin käyttämällä MatLab-koodausta. Robotillasi on kyky etsiä mineraaleja erottamalla muodot, ohjata karua maastoa kallioanturien avulla ja