Tartalomjegyzék:
- 1. lépés: Bevezetés
- 2. lépés: Szükséges anyagok és szoftverek
- 3. lépés: A Rover alváz építése
- 4. lépés: Az ultrahangos távolságmérő szerelvény építése
- 5. lépés: Vázlatok és elektromos csatlakozások
- 6. lépés: SSH és nyílt CV telepítés
- 7. lépés: A Python kód futtatása a Rover számára
Videó: Raspberry Pi - Autonóm Mars Rover OpenCV objektumkövetéssel: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
A Raspberry Pi 3, az Open CV objektumfelismerés, az ultrahangos érzékelők és a hajtóműves egyenáramú motorok hajtják. Ez a rover képes követni minden olyan tárgyat, amelyre kiképezték, és bármilyen terepen mozoghat.
1. lépés: Bevezetés
Ebben az utasításban egy Autonóm Mars Rover -t fogunk építeni, amely felismeri az objektumokat és nyomon követi őket a Raspberry Pi 3 -on futó Open CV szoftver segítségével, webkamera vagy eredeti málna pi kamera használatával. Fel van szerelve egy szervóra szerelt ultrahangos érzékelővel is, amely követi útját sötét környezetben, ahol a kamera nem működik. A Pi -től kapott jeleket a motorvezérlő IC (L293D) küldi, amely 4 x 150 RPM egyenáramú motort hajt meg, amelyek PVC csövekből épített testre vannak felszerelve.
2. lépés: Szükséges anyagok és szoftverek
Szükséges anyagok
- Raspberry Pi (bármilyen, de nulla)
- Málna PI kamera vagy webkamera
- L293D motorvezérlő IC
- Robot kerekek (7x4 cm) X 4
- Fogaskerék -egyenáramú motorok (150 fordulat / perc) X 4
- PVC csövek alvázhoz
Szoftver szükséges
- Gitt az SSH használatához a Pi
- Nyissa meg az önéletrajzot az objektumfelismeréshez
3. lépés: A Rover alváz építése
Ennek a PVC -háznak az elkészítéséhez szüksége lesz
- 2 X 8"
- 2 X 4"
- 4 T-ízületek
Rendezze el a PVC csöveket egy létraszerű szerkezetbe, és illessze be a T-ízületekbe. Használhatja a PVC tömítőanyagot, hogy az ízületek még erősebbek legyenek.
A fogaskerekű egyenáramú motorokat bilincsekkel, a kerekeket pedig a motorokkal csavarokkal kell a PVC csővázhoz csatlakoztatni.
4. lépés: Az ultrahangos távolságmérő szerelvény építése
Az ultrahangos távolságmérő szerelvényt egy HC-SR04 ultrahangos érzékelőből építették, amely Micro Servo motorral van összekötve. A kábeleket előre össze kell kötni az ultrahangos érzékelővel, mielőtt behelyezik a műanyag tokba, amely csavarokkal csatlakozik a szervomotorhoz.
5. lépés: Vázlatok és elektromos csatlakozások
Kérjük, csatlakoztassa az elektromos csatlakozásokat a mellékelt kapcsolási rajz szerint.
6. lépés: SSH és nyílt CV telepítés
Most be kell kapcsolnunk a raspberry pi -t a szükséges szoftver telepítéséhez. Kezdjük az SSHinggel a Raspberry Pi -vel. Győződjön meg arról, hogy a Pi ugyanahhoz az útválasztóhoz van csatlakoztatva, mint a számítógép, és tudja, hogy az útválasztója hozzárendelte az IP -címet. Most nyisson meg egy parancssort vagy a PUTTY parancsot, ha Windows operációs rendszert használ, és futtassa a következő parancsot.
A Pi IP -je eltérő lehet, az enyém 192.168.1.6.
Most írja be az alapértelmezett jelszót - "málna"
Most, hogy SSH van a Pi -ben, kezdjük a frissítéssel ezzel a paranccsal.
sudo apt-get update && sudo apt-get upgrade
Telepítsük most a szükséges fejlesztői eszközöket, sudo apt-get install build-essential cmake pkg-config
Ezután telepítenünk kell néhány képi I/O csomagot, amelyek segítenek a Pi -nek a különböző képformátumok lekérésében a lemezről.
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Most néhány csomag a videó letöltéséhez, az élő közvetítéshez és az OpenCV teljesítmény optimalizálásához
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
Telepítenünk kell a Python 2.7 és Python 3 fejlécfájlokat is, hogy le tudjuk fordítani az OpenCV -t python kötésekkel
sudo apt-get install python2.7-dev python3-dev
OpenCV forráskód letöltése
cd ~
wget -O opencv.zip
bontsa ki az opencv.zip fájlt
Az opencv_contrib adattár letöltése
wget -O opencv_contrib.zip
bontsa ki az opencv_contrib.zip fájlt
Az OpenCV telepítéséhez ajánlott virtuális környezetet is használni.
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
Most, hogy a virtualenv és a virtualenvwrapper telepítve van, frissítenünk kell a ~/.profilunkat, hogy a következő sorok szerepeljenek alul
export WORKON_HOME = $ HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Hozza létre a python virtuális környezetét
mkvirtualenv cv -p python2
váltás a létrehozott virtuális környezetre
forrás ~/.profile
workon cv
A NumPy telepítése
pip install numpy
Fordítsa le és telepítse az OpenCV -t
cd ~/opencv-3.3.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE = RELEASE / -D CMAKE_INSTALL_PREFIX =/usr/local / -D INSTALL_PYTHON_EXAMPLES = BE / -D OPENCV_EXTRA_MODULES_PATH = ~/opencv_contrib -3.3.0/modules..
Végül fordítsa le az OpenCV -t
hogy -j4
Miután ez a parancs befejeződött. Mindössze annyit kell tennie, hogy telepíti.
sudo make config
sudo ldconfig
7. lépés: A Python kód futtatása a Rover számára
Hozzon létre egy tracker.py nevű Python -fájlt, és adja hozzá a következő kódot.
sudo nano tracker.py
kód:-
#ASAR program
#Ez a program nyomon követ egy piros golyót, és utasítja egy málna pi -t, hogy kövesse azt. import sys sys.path.append ('/usr/local/lib/python2.7/site-package') import cv2 import numpy mint np import os import RPi. GPIO mint 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)#Jobb Motor Forward IO.output (15, 0) def bac (): IO.output (21, 0)#Bal motor visszafelé IO kimenet (22, 1) IO. kimenet (13, 0)#Jobb motor visszafelé IO kimenet (15, 1) def ryt (): IO. kimenet (21, 0) #Bal motor visszafelé IO. Kimenet (22, 1) IO. Kimenet (13, 1)#Jobb motor előre IO. Kimenet (15, 0) def lft (): IO. Kimenet (21, 1)#Bal motor előre IO.output (22, 0) IO.output (13, 0) #Right Motor backward IO.putput (15, 1) def stp (): IO.output (21, 0) #Left Motor stop IO.output (22, 0) IO.output (13, 0)#Jobb motorleállás IO.output (15, 0) ########################### ################################################### ##################### def main (): capWebcam = cv2. VideoCapture (0)#deklarálja a VideoCapture objektum és társítása a webkamerához, 0 => 1. webkamera használata # eredeti felbontás nyomtatása "alapértelmezett felbontás =" + 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) # módosítsa a felbontást 320x240 -re a gyorsabb feldolgozás érdekében) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) if capWebcam.isOpened () == Hamis: # ellenőrizze, hogy a VideoCapture objektum sikeresen kapcsolódott -e a webkamerához "error: capWebcam nem sikerült elérni / n / n" # ha nem, akkor nyomtassa ki a hibaüzenetet a std out os.system számára ("szünet") # szüneteltesse, amíg a felhasználó le nem nyom egy gombot, így a felhasználó láthatja a visszatérési hibaüzenetet és a kilépési funkciót (amely kilép a programból) # vége, ha közben cv2.waitKey (1)! = 27 and cap ully, imgOriginal = capWebcam.read () # olvassa el a következő keretet, ha nem blnFrameReadSuccessfully or imgOriginal is None: # ha a keretet nem sikerült elolvasni nyomtatás "error: frame not read from webcam / n" # print error message to std out os.system ("szünet") # szüneteltetés, amíg a felhasználó le nem nyom egy gombot, hogy a felhasználó láthassa a hibaüzenet break # kilépését, miközben a ciklus (amely kilép a programból) # vége, ha 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. tömb ([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 körök = cv2. HoughCircles (imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # töltse ki a változó köröket a körökkel a feldolgozott képen, ha körök nem Nincs: # ez a sor szükséges ahhoz, hogy a program ne essen össze a következő sorban, ha nem találunk kört. kitörés x, y és sugár nyomtatás "golyó pozíció x =" + str (x) + ", y =" + str (y) + ", sugár =" + str (sugár) # nyomtatási golyó helyzete és sugara obRadius = int (sugár) xAxis = int (x) ha obRadius> 0 & obRadius100 & xAxis180: print ("Jobbra halad") ryt () elif xAxis <100: print ("Mozgó bal") lft () else: stp () else: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # kis zöld kört rajzol az észlelt objektum közepére cv2.circle (imgOriginal, (x, y), sugar, (0, 0, 255), 3) # rajzoljon piros kört az észlelt objektum köré # vége # végére, ha más: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # ablakok létrehozása, használja a WINDOW_AUTOSIZE parancsot a rögzített ablakmérethez cv2.namedWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # vagy a WINDOW_NORMAL használatával engedélyezze az ablak átméretezését cv2.imshow ("imgOriginal", imgOri ginal)#show windows cv2.imshow ("imgThresh", imgThresh)#end míg cv2.destroyAllWindows ()#ablakok eltávolítása a memóriából return ##################### ################################################### ############################# if _name_ == "_main_": main ()
Most már csak a program futtatása van hátra
python tracker.py
Gratula! az önvezető rover készen áll! Az ultrahangos érzékelőn alapuló navigációs rész hamarosan elkészül, és frissítem ezt az utasítást.
Köszönöm, hogy elolvasta!
Ajánlott:
A Roomba átalakítása Mars Roverré: 5 lépés
A Roomba átalakítása Mars Roverré:
Mars Rover a Raspberry Pi használatával: 5 lépés
Mars Rover a Raspberry Pi használatával: Kedves Nagy Tanuló! Mindig kíváncsi vagyok a Mars roverre, amelynek 6 kereke van, amelyek képesek a Mars minden felszínére eljutni és felfedezni a Földről származó dolgokat. Azt is szeretném felfedezni, hogy a laptopomon ülök. Úgyhogy most úgy érzem, itt az ideje, hogy elkészítsem és
Csillagfelismerés a Computer Vision (OpenCV) segítségével: 11 lépés (képekkel)
Csillagfelismerés a Computer Vision (OpenCV) segítségével: Ez az oktatóanyag leírja, hogyan hozhat létre számítógépes látóprogramot a kép csillagmintáinak automatikus azonosítására. A módszer az OpenCV (Open-Source Computer Vision) könyvtárat használja fel egy képzett HAAR kaszkád készlet létrehozásához, amely
Mars Roomba Project UTK: 4 lépés
Mars Roomba Project UTK: NYILATKOZAT: EZ CSAK MŰKÖDIK, HA A ROOMBA NAGYON MEGHATÁROZOTT módon van beállítva, EZT AZ INSTRUKCIÓT LÉTREHOZTATTÁK ÉS SZÁNDÉKOLTÁK A TENNESSEE DIÁK UNIVERSITÁJA ÉS A FACULTY Ez a kód a beállításhoz használatos írt és s
IRobot Create-Mars Expedition Rover Mark I: 4 lépés
IRobot Create-Mars Expedition Rover Mark I: Ez az utasítás megtanítja az iRobot Create beállítását a MatLab kódolás használatával. A robot képes lesz ásványokat keresni az alakok megkülönböztetésével, sziklás szenzorok segítségével manőverezni a zord terepen, és képes