Mündəricat:
- Addım 1: Giriş
- Addım 2: Lazım olan materiallar və proqram təminatı
- Addım 3: Rover Şassisinin qurulması
- Addım 4: Ultrasonik Rangefinder Assambleyasının qurulması
- Addım 5: Şemalar və Elektrik Bağlantıları
- Addım 6: SSH və Açıq CV Quraşdırması
- Addım 7: Rover üçün Python Kodunu Çalışdırın
Video: Raspberry Pi - OpenCV Obyekt İzləmə ilə Avtonom Mars Rover: 7 Addım (Şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Raspberry Pi 3, Açıq CV obyekt tanıma, Ultrasonik sensorlar və dişli DC mühərrikləri ilə təchiz edilmişdir. Bu rover təlim aldığı hər hansı bir obyekti izləyə və istənilən ərazidə hərəkət edə bilər.
Addım 1: Giriş
Bu Təlimatlarda, veb kamerası cihazı və ya orijinal moruq pi kamerası istifadə etmək imkanı ilə Raspberry Pi 3 -də işləyən Açıq CV proqramından istifadə edərək obyektləri tanıya bilən və onları izləyə bilən Muxtar Mars Rover quracağıq. Kameranın işləməyəcəyi qaranlıq mühitlərdə yolunu izləmək üçün servoya quraşdırılmış Ultrasonik sensorla da təchiz edilmişdir. Pi -dən alınan siqnallar, PVC borularla qurulmuş bir gövdəyə quraşdırılmış 4 x 150RPM DC mühərrikləri idarə edən IC (L293D) motor sürücüsünə göndərilir.
Addım 2: Lazım olan materiallar və proqram təminatı
Tələb olunan materiallar
- Raspberry Pi (sıfırdan başqa)
- Raspberry PI Kamera və ya veb kamera
- L293D motor sürücü IC
- Robot Təkərlər (7x4 sm) X 4
- Dişli DC Motorlar (150RPM) X 4
- Şassi üçün PVC borular
Proqram tələb olunur
- SSH üçün Pi macunu
- Obyektin tanınması üçün CV -ni açın
Addım 3: Rover Şassisinin qurulması
Bu PVC şassini qurmaq üçün sizə lazım olacaq
- 2 X 8"
- 2 X 4"
- 4 T-birləşmə
PVC boruları nərdivan kimi bir quruluşa yerləşdirin və T-oynaqlarına daxil edin. Derzləri daha da gücləndirmək üçün PVC mastik istifadə edə bilərsiniz.
Dişli DC mühərrikləri sıxaclardan istifadə edərək PVC boru şassisi ilə bağlanır və sonra təkərlər mühərriklərə vintlər ilə bağlanır.
Addım 4: Ultrasonik Rangefinder Assambleyasının qurulması
Ultrasonik diapazon tapma qurğusu, mikro Servo mühərriki ilə əlaqəli HC-SR04 Ultrasonik sensoru istifadə edərək qurulmuşdur. Vidalar vasitəsilə servo mühərrikə bağlanan plastik qutuya qoymadan əvvəl kabellər ultrasəs sensoru ilə əvvəlcədən bağlanır.
Addım 5: Şemalar və Elektrik Bağlantıları
Zəhmət olmasa elektrik əlaqələrini əlavə edilmiş sxemə uyğun olaraq edin.
Addım 6: SSH və Açıq CV Quraşdırması
İndi lazımi proqramı qurmaq üçün moruq pi -yə SSH etməliyik. Raspberry Pi -ə SSHing -dən başlayacağıq. Pi'nizin PC ilə eyni yönləndiriciyə qoşulduğundan və marşrutlaşdırıcınızın ona təyin etdiyi IP ünvanını bildiyinizdən əmin olun. İndi Windows -da bir əmr istəyi və ya PUTTY açın və aşağıdakı əmri işlədin.
Pi'nizin IP ünvanı fərqli ola bilər, mənimki 192.168.1.6.
İndi standart parolunuzu daxil edin - "moruq"
İndi Pi -yə SSH daxil etdiyinizə görə, bu əmrlə yeniləməklə başlayaq.
sudo apt-get update && sudo apt-get upgrade
İndi lazım olan geliştirici vasitələrini quraşdıraq, sudo apt-get install-essential cmake pkg-config qurun
Sonra, Pi -yə diskdən müxtəlif şəkil formatlarını almağa kömək edəcək bir neçə görüntü G/Ç paketini quraşdırmalıyıq.
sudo apt-get libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev quraşdırın
İndi video əldə etmək, canlı yayım və OpenCV performansını optimallaşdırmaq üçün bəzi paketlər
sudo apt-get libavcodec-dev libavformat-dev libswscale-dev libv4l-dev quraşdırın
sudo apt-get libxvidcore-dev libx264-dev qurun
sudo apt-get libgtk2.0-dev libgtk-3-dev qurun
sudo apt-get libatlas-base-dev gfortran quraşdırın
Python cildləri ilə OpenCV -ni tərtib edə biləcəyimiz üçün Python 2.7 və Python 3 başlıq fayllarını da quraşdırmalıyıq.
sudo apt-get install python2.7-dev python3-dev
OpenCV mənbə kodu yüklənir
cd ~
wget -O opencv.zip
opencv.zip açın
Opencv_contrib anbarı endirilir
wget -O opencv_contrib.zip
opencv_contrib.zip açın
OpenCV qurmaq üçün virtual mühitdən istifadə etmək də tövsiyə olunur.
sudo pip virtualenv virtualenvwrapper qurun
sudo rm -rf ~/.cache/pip
İndi bu virtualenv və virtualenvwrapper quraşdırılıbsa, aşağıdakı sətirləri aşağıya daxil etmək üçün ~/.profile faylımızı yeniləməliyik.
ixrac WORKON_HOME = $ HOME/.virtualenvs ixrac VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Python virtual mühitinizi yaradın
mkvirtualenv cv -p python2
yaradılan virtual mühitə keçin
mənbə ~/.profil
iş cv
NumPy quraşdırılır
pip qurmaq numpy
OpenCV tərtib edin və quraşdırın
cd ~/opencv-3.3.0/
mkdir qurmaq
cd qurmaq
cmake -D CMAKE_BUILD_TYPE = RELEASE / -D CMAKE_INSTALL_PREFIX =/usr/local / -D INSTALL_PYTHON_EXAMPLES = ON / -D OPENCV_EXTRA_MODULES_PATH = ~/opencv_contrib --DD_PD_PDF = 3.3.0/
Nəhayət OpenCV tərtib edin
etmək -j4
Bu əmr işlədildikdən sonra. Etməyiniz lazım olan tək şey onu quraşdırmaqdır.
sudo konfiqurasiya edin
sudo ldconfig
Addım 7: Rover üçün Python Kodunu Çalışdırın
Tracker.py adlı bir Python faylı yaradın və ona aşağıdakı kodu əlavə edin.
sudo nano tracker.py
kod:-
#ASAR Proqramı
#Bu proqram qırmızı topu izləyir və ona moruq pi -ni izləməyi tapşırır. sys sys.path.append ('/usr/local/lib/python2.7/site-packages') idxal cv2 idxal numpy kimi np import os idxal RPi. GPIO kimi 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. çıxışı (21, 1)#Sol Motor İrəli IO. çıxışı (22, 0) IO. çıxışı (13, 1)#Sağ Motor İrəli IO. çıxışı (15, 0) def bac (): IO.çıxış (21, 0)#Sol Motor geriyə IO. çıxışı (22, 1) IO. çıxışı (13, 0)#Sağ Motor geriyə IO. çıxışı (15, 1) def ryt (): IO.çıxış (21, 0) #Sol Motor geriyə IO.çıxış (22, 1) IO.çıxış (13, 1)#Sağ Motor irəli Çıxış (15, 0) def lft (): IO.çıxış (21, 1)#Sol Motor irəli IO.output (22, 0) IO.output (13, 0)#Sağ Motor geriyə IO.output (15, 1) def stp (): IO.put (21, 0)#Sol Motor stop IO.output (22, 0) IO.output (13, 0)#Sağ Motor stop IO.output (15, 0) ########################### ################################################### ##################### def main (): capWebcam = cv2. VideoCapture (0)#elan edin VideoCapture obyekti və veb kamerası ilə əlaqəli, 0 => 1 -ci veb kameradan istifadə edin # orijinal qətnaməni göstər "standart qətnamə =" + 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) # daha sürətli işlənmək üçün qətnaməni 320x240 olaraq dəyişdirin capWebcam.set (cv2. CAP_PROP_FRAME_HEIGHT, 240.0) # yenilənmiş qətnamə çapını göstər "yenilənmiş qətnamə =" + str (capWebcam.get (cv2_FRAME)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)), əgər capWebcam.isOpened () == Yanlış: # VideoCapture obyektinin veb kamerası ilə uğurla əlaqəli olub olmadığını yoxlayın "xətası: capWebcam'a uğurla daxil edilmədi / n / n" # deyilsə, səhv mesajını yazın os.system ("pause") # istifadəçi bir düyməni basana qədər durdurun ki, istifadəçi səhv mesajının qaytarılması # və çıxış funksiyasını (proqramdan çıxan) # sonda cv2.waitKey (1))! = 27 və capWebcam.isOpened (): # Esc düyməsinə basılana və ya veb kamera bağlantısı kəsilənə qədər blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # blnFrameReadSuccessfully yoxsa növbəti çərçivəni oxuyun və ya imgOriginal Heç biri deyil: # əgər çərçivə uğurla oxunmadısa "xəta: çərçivə veb kameradan oxunmadı / n" # os.systemi çıxarmaq üçün çap xətası mesajı yazın ("pauza") İstifadəçi bir düyməni basana qədər fasilə, istifadəçi səhv mesajını görə bilər # döngə zamanı çıxın (proqramdan çıxan) # son əgər 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) 5, 5), np.uint8)) imgThresh = cv2.erode (imgThresh, np.ones ((5, 5), np.uint8)) intRows, intColumns = imgThresh.shape çevrələri = cv2. HoughCircles (imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # dəyişən dairələri işlənmiş şəkildəki bütün dairələrlə doldurun yoxdur: # bu xətt, heç bir dairə tapılmadığı təqdirdə, proqramın növbəti sətirdə çökməsinin qarşısını almaq üçün lazımdır [0]: dairələrdəki dairə üçün IO.output (7, 1): # hər dairə üçün x, y, radius = dairə # x, y və radius çapını çıxarın "top mövqeyi x =" + str (x) + ", y =" + str (y) + ", radius =" + str (radius) # çap topunun mövqeyi və radiusu obRadius = int (radius) xAxis = int (x) if obRadius> 0 & obRadius100 & xAxis180: print ("Sağda Hərəkətdə") ryt () elif xAxis <100: print ("Solda Hərəkətdə") lft () başqa: stp () başqa: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # aşkar edilmiş obyektin mərkəzində kiçik yaşıl dairə cv2.circle (imgOriginal, (x, y), radius, (0, 0, 255), 3) # aşkar edildikdə obyektin ətrafında # qırmızı dairə çəkin # əgər başqa bir şey varsa: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # pəncərələr yaradın, cv2.namedWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # sabit pəncərə ölçüsü üçün WINDOW_AUTOSIZE istifadə edin və ya pəncərənin ölçüsünü dəyişmək üçün WINDOW_NORMAL istifadə edin cv2.imshow ("imgOriginal", imgOri ginal)#pəncərələri göstər cv2.imshow ("imgThresh", imgThresh)#end isə cv2.destroyAllWindows ()#pəncərələri yaddaşın qaytarılmasından sil ##################### ################################################### ############################## _ == "_main_": main ()
İndi yalnız proqramı işlətmək qalır
python tracker.py
Təbriklər! özüyeriyən rover hazırdır! Ultrasonik sensora əsaslanan naviqasiya hissəsi tezliklə tamamlanacaq və bu təlimatı yeniləyəcəyəm.
Oxuduğunuz üçün təşəkkürlər!
Tövsiyə:
Mikro: bit MU Vision Sensor - Obyekt İzləmə: 7 Addım
Micro: bit MU Vision Sensor - Object Tracking: Beləliklə, bu təlimatda, bu təlimatda qurduğumuz və bu MU -da bir MU görmə sensoru quraşdırdığımız Smart Car -ı proqramlaşdırmağa başlayacağıq. bir az sadə obyekt izləmə ilə, buna görə də
ATtiny85 Geyinilə bilən Titrəmə Aktivliyi İzləmə İzləmə və Proqramlaşdırma Arduino Uno ilə ATtiny85: 4 addım (şəkillərlə)
ATtiny85 Geyinilə bilən Titrəmə Aktivliyi İzləmə Saatı və Proqramlaşdırılması Arduino Uno ilə ATtiny85: Geyinilə bilən fəaliyyət izləmə saatı necə edilir? Bu, durğunluq algıladıqda titrəmək üçün hazırlanmış geyilə bilən bir gadgetdır. Vaxtınızın çoxunu mənim kimi kompüterdə keçirirsinizmi? Özünüz də bilmədən saatlarla oturursunuz? Sonra bu cihaz f
Rəng Algılamaya əsaslanan Obyekt İzləmə: 10 addım
Rəng Algılamaya əsaslanan Obyekt İzləmə: Hekayə Raspberry PI və açıq CV istifadə edərək görüntü işlənməsini öyrənmək üçün bu layihəni etdim. Bu layihəni daha maraqlı etmək üçün iki SG90 Servo mühərriki və üzərinə kamera quraşdırdım. Yatay olaraq hərəkət edən bir motor, şaquli olaraq hərəkət etmək üçün ikinci motor
Fırlanma Eksenli Obyekt İzləmə Kamerası Sürgüsü. RoboClaw DC Motor Controller və Arduino üzərində 3D Çap və Quraşdırma: 5 Addım (Şəkillərlə birlikdə)
Fırlanma Eksenli Obyekt İzləmə Kamerası Sürgüsü. RoboClaw DC Motor Controller və Arduino üzərində 3D Çap və Quraşdırma: Video çəkmə marağımı DIY ilə birləşdirməli olduğumdan bəri bu layihə ən çox sevdiyim layihələrdən biridir. Həmişə baxdım və izləmək üçün ekranı sürüşdürərkən bir kameranın ekranda hərəkət etdiyi filmlərdə o kinematik kadrları təqlid etmək istədim
Obyekt İzləmə - Kamera Montajına Nəzarət: 4 Addım
Obyekt İzləmə - Kamera Montajına Nəzarət: Hamıya salam, Bu Təlimat kitabında sizə Obyekt İzləmə Layihəmdə əldə etdiyiniz irəliləyişləri göstərəcəyəm. Burada əvvəlki Təlimatçını tapa bilərsiniz: https://www.instructables.com/id/Object-Tracking/ və burada hər şeyi ehtiva edən bir youtube çalğı siyahıları tapa bilərsiniz