Orodha ya maudhui:
- Hatua ya 1: Utangulizi
- Hatua ya 2: Vifaa na Programu Inahitajika
- Hatua ya 3: Kujenga Chassis ya Rover
- Hatua ya 4: Kuunda Mkutano wa Rangefinder ya Ultrasonic
- Hatua ya 5: Skematiki na Muunganisho wa Umeme
- Hatua ya 6: SSH na Ufungaji wa CV wazi
- Hatua ya 7: Kuendesha Nambari ya Python ya Rover
Video: Raspberry Pi - Autonomous Mars Rover na Ufuatiliaji wa Kitu cha OpenCV: Hatua 7 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Inayoendeshwa na Raspberry Pi 3, utambuzi wa kitu cha CV wazi, sensorer za Ultrasonic na motors za DC. Rover hii inaweza kufuatilia kitu chochote ambacho imefundishwa na kuhamia kwenye eneo lolote.
Hatua ya 1: Utangulizi
Katika Maagizo haya, tutaunda Autonomous Mars Rover ambayo inaweza kutambua vitu na kuzifuatilia kwa kutumia programu ya Open CV inayoendesha Raspberry Pi 3 na chaguo la kutumia kifaa cha wavuti au kamera ya asili ya rasipberry. Pia ina vifaa vya sensorer ya Ultrasonic iliyowekwa kwenye servo kufuatilia njia yake katika mazingira ya giza ambapo kamera haiwezi kufanya kazi. Ishara zilizopokelewa kutoka kwa Pi zinatumwa kwa dereva wa gari IC (L293D) ambayo huendesha gari za 4 x 150RPM DC zilizowekwa kwenye mwili uliojengwa na mabomba ya PVC.
Hatua ya 2: Vifaa na Programu Inahitajika
Vifaa vinahitajika
- Raspberry Pi (Yoyote lakini sifuri)
- Kamera ya Raspberry PI au kamera ya wavuti
- L293D dereva wa gari IC
- Magurudumu ya Roboti (7x4cm) X 4
- Iliyotengenezwa Motors DC (150RPM) X 4
- Mabomba ya PVC kwa chasisi
Programu inahitajika
- Putty kwa SSH ing Pi
- Fungua CV kwa utambuzi wa kitu
Hatua ya 3: Kujenga Chassis ya Rover
Ili kujenga chasisi hii ya PVC, utahitaji
- 2 X 8"
- 2 X 4"
- 4 T-Viungo
Panga mabomba ya PVC kwenye ngazi kama muundo na ingiza kwenye viungo vya T. Unaweza kutumia PVC sealant ili kufanya viungo viwe na nguvu zaidi.
Magari yaliyopangwa ya DC yameunganishwa na chasisi ya bomba la PVC kwa kutumia clamp na kisha magurudumu yameunganishwa na motors kwa kutumia screws.
Hatua ya 4: Kuunda Mkutano wa Rangefinder ya Ultrasonic
Mkutano wa upataji wa anuwai ya ultrasonic umejengwa kwa kutumia HC-SR04 sensor ya Ultrasonic iliyounganishwa na motor Micro Servo. Cables zimeunganishwa kabla na kihisi cha ultrasonic kabla ya kuweka kwenye kasha la plastiki ambalo limeunganishwa na servo motor kupitia screws.
Hatua ya 5: Skematiki na Muunganisho wa Umeme
Tafadhali fanya unganisho la umeme kulingana na mchoro wa mzunguko ulioambatanishwa.
Hatua ya 6: SSH na Ufungaji wa CV wazi
Sasa, tunahitaji SSH kwenye pi raspberry yetu ili kusanikisha programu inayohitajika. Tutaanza kwa SSHing kwa Raspberry Pi yetu. Hakikisha Pi yako imeunganishwa na router sawa na PC yako na unajua ni anwani ya IP iliyopewa na router yako. Sasa, fungua kidokezo cha amri au PUTTY ikiwa uko kwenye Windows na endesha amri ifuatayo.
IP yako ya IP inaweza kuwa tofauti, yangu ni 192.168.1.6.
Sasa, ingiza nywila yako chaguomsingi - "rasiberi"
Sasa, kwa kuwa umeweka SSH kwenye Pi yako, Wacha tuanze kwa kusasisha na amri hii.
Sudo apt-pata sasisho && sudo apt-pata sasisho
Wacha tuweke zana za msanidi programu zinazohitajika sasa, Sudo apt-get install -ake muhimu cmake pkg-config
Ifuatayo, tunahitaji kusanikisha vifurushi vya picha ya I / O ambayo itasaidia Pi yetu kuchukua fomati anuwai za picha kutoka kwa diski.
Sudo apt-get kufunga libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Sasa, vifurushi kadhaa vya kutafuta video, kutiririsha moja kwa moja na kuboresha utendaji wa OpenCV
Sudo apt-get kufunga libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
Sudo apt-get kufunga libxvidcore-dev libx264-dev
Sudo apt-get kufunga libgtk2.0-dev libgtk-3-dev
Sudo apt-get kufunga libatlas-base-dev gfortran
Tunahitaji pia kusanikisha faili za kichwa cha Python 2.7 na Python 3 ili tuweze kukusanya OpenCV na vifungo vya chatu
Sudo apt-get kufunga python2.7-dev python3-dev
Inapakua msimbo wa chanzo wa OpenCV
cd ~
wget -O opencv.zip
unzip opencv.zip
Inapakua ghala la opencv_contrib
wget -O opencv_contrib.zip
unzip opencv_contrib.zip
Inashauriwa pia kutumia mazingira halisi ya kusanidi OpenCV.
Sudo pip sakinisha fadhila ya virtualenvwrapper
Sudo rm -rf ~ /.cache / pip
Sasa, hiyo fadhila na sifa nzuri imewekwa, tunahitaji kusasisha faili yetu ya ~ /.profile ili kujumuisha mistari ifuatayo chini
usafirishaji KAZI_HOME = $ NYUMBANI /.virtualenvs usafirishaji
Unda mazingira yako ya chatu
mkvirtualenv cv -p python2
badilisha kwa mazingira yaliyoundwa
chanzo ~ /.profile
workon cv
Inasakinisha NumPy
bomba kufunga numpy
Tunga na Sakinisha OpenCV
cd ~ / opencv-3.3.0 /
mkdir kujenga
cd kujenga
cmake -D CMAKE_BUILD_TYPE = KUACHA
Mwishowe tunga OpenCV
fanya -j4
Baada ya amri hii kumaliza kukimbia. Wote unahitaji kufanya ni kuiweka.
Sudo fanya usanidi
Sudo ldconfig
Hatua ya 7: Kuendesha Nambari ya Python ya Rover
Unda faili ya chatu inayoitwa tracker.py na ongeza nambari ifuatayo kwake.
sudo nano tracker.py
nambari: -
Programu ya #ASAR
#Programu hii inafuatilia mpira nyekundu na kuagiza pi ya rasipberry kuifuata. kuagiza sys sys.path.append ('/ usr / local / lib / python2.7 / package-site') kuagiza cv2 kuagiza numpy kama np kuagiza os kuagiza RPi. GPIO kama IO IO.setmode (IO. BOARD) IO.setup (7, IO. OUT) kuanzisha. Pato la IO (21, 1) # Mbio ya Kushoto Mbele IO. Pato (22, 0) Pato la IO (13, 1) #Right Motor Forward IO. (21, 0) # Magari ya kushoto kushoto IO. Pato (22, 1) IO. Pato (13, 0) # Haki ya Nyuma nyuma IO. #Lft kushoto nyuma pato (22, 0) IO. pato (13, 0) # Haki ya Magari nyuma IO. pato (15, 1) def stp (): IO. 0) Pato la IO (13, 0) # Haki ya kukomesha IO. Pato (15, 0) # # # # # # ############ # # # # # # # # # # # # # # # # # # # # # # # VideoCapture kitu na ushirikiane na kamera ya wavuti, 0 => tumia kamera ya wavuti ya kwanza # onyesha uchapishaji wa azimio asili "default resolution =" + str (capWebcam.get (cv2. CAP_PROP_FRAME_WIDTH)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT) capWebcam. + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) ikiwa capWebcam.isOpened () == Uongo: # angalia ikiwa kitu cha VideoCapture kilihusishwa na kamera ya wavuti ilichapisha "kosa: capWebcam haikupatikana kwa mafanikio / n / n" # ikiwa sivyo, chapisha ujumbe wa makosa ili kusanikisha mfumo wa os (mfumo wa "pause") # pumzika hadi mtumiaji atakapobonyeza kitufe ili mtumiaji aweze kuona ujumbe wa makosa unarudi # na kazi ya kutoka (ambayo hutoka kwa mpango) # mwisho ikiwa wakati cv2.waitKey (1 = 27 na capWebcam.is Imefunguliwa (): # mpaka kitufe cha Esc kibonye au unganisho la kamera ya wavuti limepotea blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # soma fremu inayofuata ikiwa sio blnFrameReadSuccessful or imgOriginal is None: # ikiwa fremu haikusomwa kwa mafanikio chapa "error: frame not read from webcam / n" # print message message to std out os.system ("pause") # pause mpaka mtumiaji abonyeze kitufe ili mtumiaji aone kosa la kuvunja ujumbe # kutoka wakati kitanzi (ambacho kinatoka kwenye mpango) # mwisho ikiwa 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. safu ([179, 255, 255])) imgThresh = cv2.add (imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh, (3, 3), 2) imgThresh = cv2.dilate (imgThresh, np. (5, 5), np. HOUGH_GRADIENT, 5, intRows / 4) # jaza miduara inayobadilika na miduara yote kwenye picha iliyosindika ikiwa miduara hakuna: # mstari huu ni muhimu kuzuia programu kutoka kwa kugonga kwenye mstari unaofuata ikiwa hakuna miduara iliyopatikana IO. kuvunja x, y, na uchapishaji wa radius "nafasi ya mpira x =" + str (x) + ", y =" + str (y) + ", radius =" + str (radius) # nafasi ya mpira wa kuchapisha na eneo obRadius = int (radius) xAxis = int (x) ikiwa obRadius> 0 & obRadius100 & xAxis180: chapa ("Kusonga Kulia") ryt () elif xAxis <100: chapa ("Kusonga Kushoto") lft () mwingine: stp () mwingine: stp () cv2. duara (imgOriginal, (x, y), 3, (0, 255, 0), -1) # chora mduara mdogo wa kijani katikati ya kitu kilichogunduliwa cv2. duara (imgOriginal, (x, y), radius, (0, 0, 255), 3) # chora duara nyekundu kuzunguka kitu kimegunduliwa # mwisho wa # mwisho ikiwa ni vinginevyo:, tumia WINDOW_AUTOSIZE kwa saizi ya dirisha iliyosasishwa cv2. inayoitwaWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # au tumia WINDOW_NORMAL kuruhusu kurekebisha ukubwa wa dirisha cv2.imshow ("imgOriginal", imgOri ginal) # onyesha windows cv2.imshow ("imgThresh", imgThresh) # mwisho wakati cv2.destroyAllWindows () # ondoa windows kutoka kwa kumbukumbu ya kurudi # # # # # # ############ # # # # # # # # # #
Sasa, kilichobaki kufanya ni kuendesha programu
chatu tracker.py
Hongera! rover yako ya kujiendesha iko tayari! Sehemu ya urambazaji ya sensa ya Ultrasonic itakamilika hivi karibuni na nitasasisha hii inayoweza kufundishwa.
Asante kwa kusoma!
Ilipendekeza:
KITU CHA kichwa cha VR ya DIY KWA $ 80: Hatua 10 (na Picha)
DIY VR HEADSET KWA $ 80: Lengo langu la kwanza lilikuwa kufanya hii chini ya $ 150 (USD), hata hivyo baada ya kununua karibu na kubadilisha sehemu zingine kwa njia mbadala niliweza kuipeleka hadi $ 80. Basi wacha tuanze. Sehemu zinazohitajika ni: Geuza Flick switch2x LED1x resisto
Ufuatiliaji wa Kitu cha Opencv: Hatua 3
Ufuatiliaji wa kitu cha Opencv: Kugundua kugundua kitu ni mbinu inayotumika katika maono ya kompyuta na usindikaji wa picha. Fremu nyingi mfululizo kutoka kwa video zinalinganishwa na njia anuwai za kubaini ikiwa kitu chochote cha kusonga kimegunduliwa.Ugunduzi wa vitu vya kusonga umetumika kwa wi
Ufuatiliaji wa Chassis ya Ufuatiliaji wa Kijijini cha Rugged: Hatua 7 (na Picha)
Ufuatiliaji wa Chassis Remote Tracked Bot: Utangulizi: Kwa hivyo huu ulikuwa mradi ambao mwanzoni nilitaka kuanza na kukamilisha nyuma mnamo 2016, hata hivyo kwa sababu ya kazi na wingi wa vitu vingine nimeweza tu kuanza na kukamilisha mradi huu katika mwaka mpya 2018! Ilichukua kama wee 3
Ufuatiliaji wa Joto la Chumba cha Raspberry Pi na Ufuatiliaji wa Picha ya Gnuplot na Uwezo wa Tahadhari ya Barua pepe: Hatua 7
Ufuatiliaji wa Chumba cha Raspberry Pi Udhibiti wa Joto na Pato la Picha ya Gnuplot na Uwezo wa Tahadhari ya Barua Pepe: Pale ninapofanya kazi, kuna chumba muhimu sana ambacho kina kompyuta nyingi. Joto la kawaida la chumba hiki lazima liwe baridi sana ili kuongeza utendaji wa mifumo hii. Niliulizwa kuja na mfumo wa ufuatiliaji ambao una uwezo wa
Badilisha Kidude cha kawaida cha Plastiki kuwa Kitu Nzuri Zaidi: Hatua 14 (na Picha)
Badilisha Kidude cha kawaida cha Plastiki kuwa Kitu Nzuri Zaidi: Motisha: Wakati wa msimu wa joto ninaweza kutumia au kufanya kazi kwenye miradi karibu na bustani / shamba yetu ndogo. Baridi iko juu yetu hapa Boston na niko tayari kuanza kushambulia orodha ndefu ya miradi ambayo nimeahirisha kwa "miezi ya ndani". Walakini, nina